<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_v2.html">Drive API</a> . <a href="drive_v2.revisions.html">revisions</a></h1>
<h2>Instance Methods</h2>
<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, 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)</a></code></p>
<p class="firstline">Gets a specific revision.</p>
<p class="toc_element">
  <code><a href="#list">list(fileId, maxResults=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="#patch">patch(fileId, revisionId, body=None)</a></code></p>
<p class="firstline">Updates a revision.</p>
<p class="toc_element">
  <code><a href="#update">update(fileId, revisionId, body=None)</a></code></p>
<p class="firstline">Updates a revision.</p>
<h3>Method Details</h3>
<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, 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)</code>
  <pre>Gets a specific revision.

Args:
  fileId: string, The ID of the file. (required)
  revisionId: string, The ID of the revision. (required)

Returns:
  An object of the form:

    { # A revision of a file.
    &quot;downloadUrl&quot;: &quot;A String&quot;,
    &quot;etag&quot;: &quot;A String&quot;, # The ETag of the revision.
    &quot;exportLinks&quot;: { # Links for exporting Google Docs to specific formats.
      &quot;a_key&quot;: &quot;A String&quot;, # A mapping from export format to URL
    },
    &quot;fileSize&quot;: &quot;A String&quot;, # The size of the revision in bytes. This will only be populated on files with content stored in Drive.
    &quot;id&quot;: &quot;A String&quot;, # The ID of the revision.
    &quot;kind&quot;: &quot;drive#revision&quot;, # This is always drive#revision.
    &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.
      &quot;isAuthenticatedUser&quot;: True or False, # Whether this user is the same as the authenticated user for whom the request was made.
      &quot;kind&quot;: &quot;drive#user&quot;, # This is always drive#user.
      &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in the permissions collection.
      &quot;picture&quot;: { # The user&#x27;s profile picture.
        &quot;url&quot;: &quot;A String&quot;, # A URL that points to a profile picture of this user.
      },
    },
    &quot;lastModifyingUserName&quot;: &quot;A String&quot;, # Name of the last user to modify this revision.
    &quot;md5Checksum&quot;: &quot;A String&quot;, # An MD5 checksum for the content of this revision. This will only be populated on files with content stored in Drive.
    &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the revision.
    &quot;modifiedDate&quot;: &quot;A String&quot;, # Last time this revision was modified (formatted RFC 3339 timestamp).
    &quot;originalFilename&quot;: &quot;A String&quot;, # The original filename when this revision was created. This will only be populated on files with content stored in Drive.
    &quot;pinned&quot;: True or False, # Whether this revision is pinned to prevent automatic purging. This will only be populated and can only be modified on files with content stored in Drive which are not Google Docs. Revisions can also be pinned when they are created through the drive.files.insert/update/copy by using the pinned query parameter. Pinned revisions are stored indefinitely using additional storage quota, up to a maximum of 200 revisions.
    &quot;publishAuto&quot;: True or False, # Whether subsequent revisions will be automatically republished. This is only populated and can only be modified for Google Docs.
    &quot;published&quot;: True or False, # Whether this revision is published. This is only populated and can only be modified for Google Docs.
    &quot;publishedLink&quot;: &quot;A String&quot;, # A link to the published revision.
    &quot;publishedOutsideDomain&quot;: True or False, # Whether this revision is published outside the domain. This is only populated and can only be modified for Google Docs.
    &quot;selfLink&quot;: &quot;A String&quot;, # A link back to this revision.
  }</pre>
</div>

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

Args:
  fileId: string, The ID of the file. (required)
  maxResults: integer, Maximum number of revisions to return.
  pageToken: string, Page token for revisions. To get the next page of results, set this parameter to the value of &quot;nextPageToken&quot; from the previous response.

Returns:
  An object of the form:

    { # A list of revisions of a file.
    &quot;etag&quot;: &quot;A String&quot;, # The ETag of the list.
    &quot;items&quot;: [ # The list of revisions. If nextPageToken is populated, then this list may be incomplete and an additional page of results should be fetched.
      { # A revision of a file.
        &quot;downloadUrl&quot;: &quot;A String&quot;,
        &quot;etag&quot;: &quot;A String&quot;, # The ETag of the revision.
        &quot;exportLinks&quot;: { # Links for exporting Google Docs to specific formats.
          &quot;a_key&quot;: &quot;A String&quot;, # A mapping from export format to URL
        },
        &quot;fileSize&quot;: &quot;A String&quot;, # The size of the revision in bytes. This will only be populated on files with content stored in Drive.
        &quot;id&quot;: &quot;A String&quot;, # The ID of the revision.
        &quot;kind&quot;: &quot;drive#revision&quot;, # This is always drive#revision.
        &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.
          &quot;isAuthenticatedUser&quot;: True or False, # Whether this user is the same as the authenticated user for whom the request was made.
          &quot;kind&quot;: &quot;drive#user&quot;, # This is always drive#user.
          &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in the permissions collection.
          &quot;picture&quot;: { # The user&#x27;s profile picture.
            &quot;url&quot;: &quot;A String&quot;, # A URL that points to a profile picture of this user.
          },
        },
        &quot;lastModifyingUserName&quot;: &quot;A String&quot;, # Name of the last user to modify this revision.
        &quot;md5Checksum&quot;: &quot;A String&quot;, # An MD5 checksum for the content of this revision. This will only be populated on files with content stored in Drive.
        &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the revision.
        &quot;modifiedDate&quot;: &quot;A String&quot;, # Last time this revision was modified (formatted RFC 3339 timestamp).
        &quot;originalFilename&quot;: &quot;A String&quot;, # The original filename when this revision was created. This will only be populated on files with content stored in Drive.
        &quot;pinned&quot;: True or False, # Whether this revision is pinned to prevent automatic purging. This will only be populated and can only be modified on files with content stored in Drive which are not Google Docs. Revisions can also be pinned when they are created through the drive.files.insert/update/copy by using the pinned query parameter. Pinned revisions are stored indefinitely using additional storage quota, up to a maximum of 200 revisions.
        &quot;publishAuto&quot;: True or False, # Whether subsequent revisions will be automatically republished. This is only populated and can only be modified for Google Docs.
        &quot;published&quot;: True or False, # Whether this revision is published. This is only populated and can only be modified for Google Docs.
        &quot;publishedLink&quot;: &quot;A String&quot;, # A link to the published revision.
        &quot;publishedOutsideDomain&quot;: True or False, # Whether this revision is published outside the domain. This is only populated and can only be modified for Google Docs.
        &quot;selfLink&quot;: &quot;A String&quot;, # A link back to this revision.
      },
    ],
    &quot;kind&quot;: &quot;drive#revisionList&quot;, # This is always drive#revisionList.
    &quot;nextPageToken&quot;: &quot;A String&quot;, # The page token for the next page of revisions. This field 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;selfLink&quot;: &quot;A String&quot;, # A link back to this list.
  }</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="patch">patch(fileId, revisionId, body=None)</code>
  <pre>Updates a revision.

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

{ # A revision of a file.
  &quot;downloadUrl&quot;: &quot;A String&quot;,
  &quot;etag&quot;: &quot;A String&quot;, # The ETag of the revision.
  &quot;exportLinks&quot;: { # Links for exporting Google Docs to specific formats.
    &quot;a_key&quot;: &quot;A String&quot;, # A mapping from export format to URL
  },
  &quot;fileSize&quot;: &quot;A String&quot;, # The size of the revision in bytes. This will only be populated on files with content stored in Drive.
  &quot;id&quot;: &quot;A String&quot;, # The ID of the revision.
  &quot;kind&quot;: &quot;drive#revision&quot;, # This is always drive#revision.
  &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.
    &quot;isAuthenticatedUser&quot;: True or False, # Whether this user is the same as the authenticated user for whom the request was made.
    &quot;kind&quot;: &quot;drive#user&quot;, # This is always drive#user.
    &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in the permissions collection.
    &quot;picture&quot;: { # The user&#x27;s profile picture.
      &quot;url&quot;: &quot;A String&quot;, # A URL that points to a profile picture of this user.
    },
  },
  &quot;lastModifyingUserName&quot;: &quot;A String&quot;, # Name of the last user to modify this revision.
  &quot;md5Checksum&quot;: &quot;A String&quot;, # An MD5 checksum for the content of this revision. This will only be populated on files with content stored in Drive.
  &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the revision.
  &quot;modifiedDate&quot;: &quot;A String&quot;, # Last time this revision was modified (formatted RFC 3339 timestamp).
  &quot;originalFilename&quot;: &quot;A String&quot;, # The original filename when this revision was created. This will only be populated on files with content stored in Drive.
  &quot;pinned&quot;: True or False, # Whether this revision is pinned to prevent automatic purging. This will only be populated and can only be modified on files with content stored in Drive which are not Google Docs. Revisions can also be pinned when they are created through the drive.files.insert/update/copy by using the pinned query parameter. Pinned revisions are stored indefinitely using additional storage quota, up to a maximum of 200 revisions.
  &quot;publishAuto&quot;: True or False, # Whether subsequent revisions will be automatically republished. This is only populated and can only be modified for Google Docs.
  &quot;published&quot;: True or False, # Whether this revision is published. This is only populated and can only be modified for Google Docs.
  &quot;publishedLink&quot;: &quot;A String&quot;, # A link to the published revision.
  &quot;publishedOutsideDomain&quot;: True or False, # Whether this revision is published outside the domain. This is only populated and can only be modified for Google Docs.
  &quot;selfLink&quot;: &quot;A String&quot;, # A link back to this revision.
}


Returns:
  An object of the form:

    { # A revision of a file.
    &quot;downloadUrl&quot;: &quot;A String&quot;,
    &quot;etag&quot;: &quot;A String&quot;, # The ETag of the revision.
    &quot;exportLinks&quot;: { # Links for exporting Google Docs to specific formats.
      &quot;a_key&quot;: &quot;A String&quot;, # A mapping from export format to URL
    },
    &quot;fileSize&quot;: &quot;A String&quot;, # The size of the revision in bytes. This will only be populated on files with content stored in Drive.
    &quot;id&quot;: &quot;A String&quot;, # The ID of the revision.
    &quot;kind&quot;: &quot;drive#revision&quot;, # This is always drive#revision.
    &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.
      &quot;isAuthenticatedUser&quot;: True or False, # Whether this user is the same as the authenticated user for whom the request was made.
      &quot;kind&quot;: &quot;drive#user&quot;, # This is always drive#user.
      &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in the permissions collection.
      &quot;picture&quot;: { # The user&#x27;s profile picture.
        &quot;url&quot;: &quot;A String&quot;, # A URL that points to a profile picture of this user.
      },
    },
    &quot;lastModifyingUserName&quot;: &quot;A String&quot;, # Name of the last user to modify this revision.
    &quot;md5Checksum&quot;: &quot;A String&quot;, # An MD5 checksum for the content of this revision. This will only be populated on files with content stored in Drive.
    &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the revision.
    &quot;modifiedDate&quot;: &quot;A String&quot;, # Last time this revision was modified (formatted RFC 3339 timestamp).
    &quot;originalFilename&quot;: &quot;A String&quot;, # The original filename when this revision was created. This will only be populated on files with content stored in Drive.
    &quot;pinned&quot;: True or False, # Whether this revision is pinned to prevent automatic purging. This will only be populated and can only be modified on files with content stored in Drive which are not Google Docs. Revisions can also be pinned when they are created through the drive.files.insert/update/copy by using the pinned query parameter. Pinned revisions are stored indefinitely using additional storage quota, up to a maximum of 200 revisions.
    &quot;publishAuto&quot;: True or False, # Whether subsequent revisions will be automatically republished. This is only populated and can only be modified for Google Docs.
    &quot;published&quot;: True or False, # Whether this revision is published. This is only populated and can only be modified for Google Docs.
    &quot;publishedLink&quot;: &quot;A String&quot;, # A link to the published revision.
    &quot;publishedOutsideDomain&quot;: True or False, # Whether this revision is published outside the domain. This is only populated and can only be modified for Google Docs.
    &quot;selfLink&quot;: &quot;A String&quot;, # A link back to this revision.
  }</pre>
</div>

<div class="method">
    <code class="details" id="update">update(fileId, revisionId, body=None)</code>
  <pre>Updates a revision.

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

{ # A revision of a file.
  &quot;downloadUrl&quot;: &quot;A String&quot;,
  &quot;etag&quot;: &quot;A String&quot;, # The ETag of the revision.
  &quot;exportLinks&quot;: { # Links for exporting Google Docs to specific formats.
    &quot;a_key&quot;: &quot;A String&quot;, # A mapping from export format to URL
  },
  &quot;fileSize&quot;: &quot;A String&quot;, # The size of the revision in bytes. This will only be populated on files with content stored in Drive.
  &quot;id&quot;: &quot;A String&quot;, # The ID of the revision.
  &quot;kind&quot;: &quot;drive#revision&quot;, # This is always drive#revision.
  &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.
    &quot;isAuthenticatedUser&quot;: True or False, # Whether this user is the same as the authenticated user for whom the request was made.
    &quot;kind&quot;: &quot;drive#user&quot;, # This is always drive#user.
    &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in the permissions collection.
    &quot;picture&quot;: { # The user&#x27;s profile picture.
      &quot;url&quot;: &quot;A String&quot;, # A URL that points to a profile picture of this user.
    },
  },
  &quot;lastModifyingUserName&quot;: &quot;A String&quot;, # Name of the last user to modify this revision.
  &quot;md5Checksum&quot;: &quot;A String&quot;, # An MD5 checksum for the content of this revision. This will only be populated on files with content stored in Drive.
  &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the revision.
  &quot;modifiedDate&quot;: &quot;A String&quot;, # Last time this revision was modified (formatted RFC 3339 timestamp).
  &quot;originalFilename&quot;: &quot;A String&quot;, # The original filename when this revision was created. This will only be populated on files with content stored in Drive.
  &quot;pinned&quot;: True or False, # Whether this revision is pinned to prevent automatic purging. This will only be populated and can only be modified on files with content stored in Drive which are not Google Docs. Revisions can also be pinned when they are created through the drive.files.insert/update/copy by using the pinned query parameter. Pinned revisions are stored indefinitely using additional storage quota, up to a maximum of 200 revisions.
  &quot;publishAuto&quot;: True or False, # Whether subsequent revisions will be automatically republished. This is only populated and can only be modified for Google Docs.
  &quot;published&quot;: True or False, # Whether this revision is published. This is only populated and can only be modified for Google Docs.
  &quot;publishedLink&quot;: &quot;A String&quot;, # A link to the published revision.
  &quot;publishedOutsideDomain&quot;: True or False, # Whether this revision is published outside the domain. This is only populated and can only be modified for Google Docs.
  &quot;selfLink&quot;: &quot;A String&quot;, # A link back to this revision.
}


Returns:
  An object of the form:

    { # A revision of a file.
    &quot;downloadUrl&quot;: &quot;A String&quot;,
    &quot;etag&quot;: &quot;A String&quot;, # The ETag of the revision.
    &quot;exportLinks&quot;: { # Links for exporting Google Docs to specific formats.
      &quot;a_key&quot;: &quot;A String&quot;, # A mapping from export format to URL
    },
    &quot;fileSize&quot;: &quot;A String&quot;, # The size of the revision in bytes. This will only be populated on files with content stored in Drive.
    &quot;id&quot;: &quot;A String&quot;, # The ID of the revision.
    &quot;kind&quot;: &quot;drive#revision&quot;, # This is always drive#revision.
    &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.
      &quot;isAuthenticatedUser&quot;: True or False, # Whether this user is the same as the authenticated user for whom the request was made.
      &quot;kind&quot;: &quot;drive#user&quot;, # This is always drive#user.
      &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in the permissions collection.
      &quot;picture&quot;: { # The user&#x27;s profile picture.
        &quot;url&quot;: &quot;A String&quot;, # A URL that points to a profile picture of this user.
      },
    },
    &quot;lastModifyingUserName&quot;: &quot;A String&quot;, # Name of the last user to modify this revision.
    &quot;md5Checksum&quot;: &quot;A String&quot;, # An MD5 checksum for the content of this revision. This will only be populated on files with content stored in Drive.
    &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the revision.
    &quot;modifiedDate&quot;: &quot;A String&quot;, # Last time this revision was modified (formatted RFC 3339 timestamp).
    &quot;originalFilename&quot;: &quot;A String&quot;, # The original filename when this revision was created. This will only be populated on files with content stored in Drive.
    &quot;pinned&quot;: True or False, # Whether this revision is pinned to prevent automatic purging. This will only be populated and can only be modified on files with content stored in Drive which are not Google Docs. Revisions can also be pinned when they are created through the drive.files.insert/update/copy by using the pinned query parameter. Pinned revisions are stored indefinitely using additional storage quota, up to a maximum of 200 revisions.
    &quot;publishAuto&quot;: True or False, # Whether subsequent revisions will be automatically republished. This is only populated and can only be modified for Google Docs.
    &quot;published&quot;: True or False, # Whether this revision is published. This is only populated and can only be modified for Google Docs.
    &quot;publishedLink&quot;: &quot;A String&quot;, # A link to the published revision.
    &quot;publishedOutsideDomain&quot;: True or False, # Whether this revision is published outside the domain. This is only populated and can only be modified for Google Docs.
    &quot;selfLink&quot;: &quot;A String&quot;, # A link back to this revision.
  }</pre>
</div>

</body></html>