<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="drive_v3.html">Drive API</a> . <a href="drive_v3.revisions.html">revisions</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="#delete">delete(fileId, revisionId)</a></code></p>
<p class="firstline">Permanently deletes a file version. You can only delete revisions for files with binary content in Google Drive, like images or videos. Revisions for other files, like Google Docs or Sheets, and the last remaining file version can't be deleted.</p>
<p class="toc_element">
  <code><a href="#get">get(fileId, revisionId, acknowledgeAbuse=None)</a></code></p>
<p class="firstline">Gets a revision's metadata or content by ID.</p>
<p class="toc_element">
  <code><a href="#get_media">get_media(fileId, revisionId, acknowledgeAbuse=None)</a></code></p>
<p class="firstline">Gets a revision's metadata or content by ID.</p>
<p class="toc_element">
  <code><a href="#list">list(fileId, pageSize=None, pageToken=None)</a></code></p>
<p class="firstline">Lists a file's revisions.</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>
<p class="toc_element">
  <code><a href="#update">update(fileId, revisionId, body=None)</a></code></p>
<p class="firstline">Updates a revision with patch semantics.</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="delete">delete(fileId, revisionId)</code>
  <pre>Permanently deletes a file version. You can only delete revisions for files with binary content in Google Drive, like images or videos. Revisions for other files, like Google Docs or Sheets, and the last remaining file version can&#x27;t be deleted.

Args:
  fileId: string, The ID of the file. (required)
  revisionId: string, The ID of the revision. (required)
</pre>
</div>

<div class="method">
    <code class="details" id="get">get(fileId, revisionId, acknowledgeAbuse=None)</code>
  <pre>Gets a revision&#x27;s metadata or content by ID.

Args:
  fileId: string, The ID of the file. (required)
  revisionId: string, The ID of the revision. (required)
  acknowledgeAbuse: boolean, Whether the user is acknowledging the risk of downloading known malware or other abusive files. This is only applicable when alt=media.

Returns:
  An object of the form:

    { # The metadata for a revision to a file.
  &quot;exportLinks&quot;: { # Links for exporting Docs Editors files to specific formats.
    &quot;a_key&quot;: &quot;A String&quot;, # A mapping from export format to URL
  },
  &quot;id&quot;: &quot;A String&quot;, # The ID of the revision.
  &quot;keepForever&quot;: True or False, # Whether to keep this revision forever, even if it is no longer the head revision. If not set, the revision will be automatically purged 30 days after newer content is uploaded. This can be set on a maximum of 200 revisions for a file.
      # This field is only applicable to files with binary content in Drive.
  &quot;kind&quot;: &quot;drive#revision&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;drive#revision&quot;.
  &quot;lastModifyingUser&quot;: { # Information about a Drive user. # The last user to modify this revision.
    &quot;displayName&quot;: &quot;A String&quot;, # A plain text displayable name for this user.
    &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user. This may not be present in certain contexts if the user has not made their email address visible to the requester.
    &quot;kind&quot;: &quot;drive#user&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;drive#user&quot;.
    &quot;me&quot;: True or False, # Whether this user is the requesting user.
    &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in Permission resources.
    &quot;photoLink&quot;: &quot;A String&quot;, # A link to the user&#x27;s profile photo, if available.
  },
  &quot;md5Checksum&quot;: &quot;A String&quot;, # The MD5 checksum of the revision&#x27;s content. This is only applicable to files with binary content in Drive.
  &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the revision.
  &quot;modifiedTime&quot;: &quot;A String&quot;, # The last time the revision was modified (RFC 3339 date-time).
  &quot;originalFilename&quot;: &quot;A String&quot;, # The original filename used to create this revision. This is only applicable to files with binary content in Drive.
  &quot;publishAuto&quot;: True or False, # Whether subsequent revisions will be automatically republished. This is only applicable to Docs Editors files.
  &quot;published&quot;: True or False, # Whether this revision is published. This is only applicable to Docs Editors files.
  &quot;publishedLink&quot;: &quot;A String&quot;, # A link to the published revision. This is only populated for Google Sites files.
  &quot;publishedOutsideDomain&quot;: True or False, # Whether this revision is published outside the domain. This is only applicable to Docs Editors files.
  &quot;size&quot;: &quot;A String&quot;, # The size of the revision&#x27;s content in bytes. This is only applicable to files with binary content in Drive.
}</pre>
</div>

<div class="method">
    <code class="details" id="get_media">get_media(fileId, revisionId, acknowledgeAbuse=None)</code>
  <pre>Gets a revision&#x27;s metadata or content by ID.

Args:
  fileId: string, The ID of the file. (required)
  revisionId: string, The ID of the revision. (required)
  acknowledgeAbuse: boolean, Whether the user is acknowledging the risk of downloading known malware or other abusive files. This is only applicable when alt=media.

Returns:
  The media object as a string.

    </pre>
</div>

<div class="method">
    <code class="details" id="list">list(fileId, pageSize=None, pageToken=None)</code>
  <pre>Lists a file&#x27;s revisions.

Args:
  fileId: string, The ID of the file. (required)
  pageSize: integer, The maximum number of revisions to return per page.
  pageToken: string, The token for continuing a previous list request on the next page. This should be set to the value of &#x27;nextPageToken&#x27; from the previous response.

Returns:
  An object of the form:

    { # A list of revisions of a file.
  &quot;kind&quot;: &quot;drive#revisionList&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;drive#revisionList&quot;.
  &quot;nextPageToken&quot;: &quot;A String&quot;, # The page token for the next page of revisions. This will be absent if the end of the revisions list has been reached. If the token is rejected for any reason, it should be discarded, and pagination should be restarted from the first page of results.
  &quot;revisions&quot;: [ # The list of revisions. If nextPageToken is populated, then this list may be incomplete and an additional page of results should be fetched.
    { # The metadata for a revision to a file.
      &quot;exportLinks&quot;: { # Links for exporting Docs Editors files to specific formats.
        &quot;a_key&quot;: &quot;A String&quot;, # A mapping from export format to URL
      },
      &quot;id&quot;: &quot;A String&quot;, # The ID of the revision.
      &quot;keepForever&quot;: True or False, # Whether to keep this revision forever, even if it is no longer the head revision. If not set, the revision will be automatically purged 30 days after newer content is uploaded. This can be set on a maximum of 200 revisions for a file.
          # This field is only applicable to files with binary content in Drive.
      &quot;kind&quot;: &quot;drive#revision&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;drive#revision&quot;.
      &quot;lastModifyingUser&quot;: { # Information about a Drive user. # The last user to modify this revision.
        &quot;displayName&quot;: &quot;A String&quot;, # A plain text displayable name for this user.
        &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user. This may not be present in certain contexts if the user has not made their email address visible to the requester.
        &quot;kind&quot;: &quot;drive#user&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;drive#user&quot;.
        &quot;me&quot;: True or False, # Whether this user is the requesting user.
        &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in Permission resources.
        &quot;photoLink&quot;: &quot;A String&quot;, # A link to the user&#x27;s profile photo, if available.
      },
      &quot;md5Checksum&quot;: &quot;A String&quot;, # The MD5 checksum of the revision&#x27;s content. This is only applicable to files with binary content in Drive.
      &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the revision.
      &quot;modifiedTime&quot;: &quot;A String&quot;, # The last time the revision was modified (RFC 3339 date-time).
      &quot;originalFilename&quot;: &quot;A String&quot;, # The original filename used to create this revision. This is only applicable to files with binary content in Drive.
      &quot;publishAuto&quot;: True or False, # Whether subsequent revisions will be automatically republished. This is only applicable to Docs Editors files.
      &quot;published&quot;: True or False, # Whether this revision is published. This is only applicable to Docs Editors files.
      &quot;publishedLink&quot;: &quot;A String&quot;, # A link to the published revision. This is only populated for Google Sites files.
      &quot;publishedOutsideDomain&quot;: True or False, # Whether this revision is published outside the domain. This is only applicable to Docs Editors files.
      &quot;size&quot;: &quot;A String&quot;, # The size of the revision&#x27;s content in bytes. This is only applicable to files with binary content in Drive.
    },
  ],
}</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 &#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="update">update(fileId, revisionId, body=None)</code>
  <pre>Updates a revision with patch semantics.

Args:
  fileId: string, The ID of the file. (required)
  revisionId: string, The ID of the revision. (required)
  body: object, The request body.
    The object takes the form of:

{ # The metadata for a revision to a file.
  &quot;exportLinks&quot;: { # Links for exporting Docs Editors files to specific formats.
    &quot;a_key&quot;: &quot;A String&quot;, # A mapping from export format to URL
  },
  &quot;id&quot;: &quot;A String&quot;, # The ID of the revision.
  &quot;keepForever&quot;: True or False, # Whether to keep this revision forever, even if it is no longer the head revision. If not set, the revision will be automatically purged 30 days after newer content is uploaded. This can be set on a maximum of 200 revisions for a file.
      # This field is only applicable to files with binary content in Drive.
  &quot;kind&quot;: &quot;drive#revision&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;drive#revision&quot;.
  &quot;lastModifyingUser&quot;: { # Information about a Drive user. # The last user to modify this revision.
    &quot;displayName&quot;: &quot;A String&quot;, # A plain text displayable name for this user.
    &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user. This may not be present in certain contexts if the user has not made their email address visible to the requester.
    &quot;kind&quot;: &quot;drive#user&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;drive#user&quot;.
    &quot;me&quot;: True or False, # Whether this user is the requesting user.
    &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in Permission resources.
    &quot;photoLink&quot;: &quot;A String&quot;, # A link to the user&#x27;s profile photo, if available.
  },
  &quot;md5Checksum&quot;: &quot;A String&quot;, # The MD5 checksum of the revision&#x27;s content. This is only applicable to files with binary content in Drive.
  &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the revision.
  &quot;modifiedTime&quot;: &quot;A String&quot;, # The last time the revision was modified (RFC 3339 date-time).
  &quot;originalFilename&quot;: &quot;A String&quot;, # The original filename used to create this revision. This is only applicable to files with binary content in Drive.
  &quot;publishAuto&quot;: True or False, # Whether subsequent revisions will be automatically republished. This is only applicable to Docs Editors files.
  &quot;published&quot;: True or False, # Whether this revision is published. This is only applicable to Docs Editors files.
  &quot;publishedLink&quot;: &quot;A String&quot;, # A link to the published revision. This is only populated for Google Sites files.
  &quot;publishedOutsideDomain&quot;: True or False, # Whether this revision is published outside the domain. This is only applicable to Docs Editors files.
  &quot;size&quot;: &quot;A String&quot;, # The size of the revision&#x27;s content in bytes. This is only applicable to files with binary content in Drive.
}


Returns:
  An object of the form:

    { # The metadata for a revision to a file.
  &quot;exportLinks&quot;: { # Links for exporting Docs Editors files to specific formats.
    &quot;a_key&quot;: &quot;A String&quot;, # A mapping from export format to URL
  },
  &quot;id&quot;: &quot;A String&quot;, # The ID of the revision.
  &quot;keepForever&quot;: True or False, # Whether to keep this revision forever, even if it is no longer the head revision. If not set, the revision will be automatically purged 30 days after newer content is uploaded. This can be set on a maximum of 200 revisions for a file.
      # This field is only applicable to files with binary content in Drive.
  &quot;kind&quot;: &quot;drive#revision&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;drive#revision&quot;.
  &quot;lastModifyingUser&quot;: { # Information about a Drive user. # The last user to modify this revision.
    &quot;displayName&quot;: &quot;A String&quot;, # A plain text displayable name for this user.
    &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user. This may not be present in certain contexts if the user has not made their email address visible to the requester.
    &quot;kind&quot;: &quot;drive#user&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;drive#user&quot;.
    &quot;me&quot;: True or False, # Whether this user is the requesting user.
    &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in Permission resources.
    &quot;photoLink&quot;: &quot;A String&quot;, # A link to the user&#x27;s profile photo, if available.
  },
  &quot;md5Checksum&quot;: &quot;A String&quot;, # The MD5 checksum of the revision&#x27;s content. This is only applicable to files with binary content in Drive.
  &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the revision.
  &quot;modifiedTime&quot;: &quot;A String&quot;, # The last time the revision was modified (RFC 3339 date-time).
  &quot;originalFilename&quot;: &quot;A String&quot;, # The original filename used to create this revision. This is only applicable to files with binary content in Drive.
  &quot;publishAuto&quot;: True or False, # Whether subsequent revisions will be automatically republished. This is only applicable to Docs Editors files.
  &quot;published&quot;: True or False, # Whether this revision is published. This is only applicable to Docs Editors files.
  &quot;publishedLink&quot;: &quot;A String&quot;, # A link to the published revision. This is only populated for Google Sites files.
  &quot;publishedOutsideDomain&quot;: True or False, # Whether this revision is published outside the domain. This is only applicable to Docs Editors files.
  &quot;size&quot;: &quot;A String&quot;, # The size of the revision&#x27;s content in bytes. This is only applicable to files with binary content in Drive.
}</pre>
</div>

</body></html>