<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.comments.html">comments</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, commentId)</a></code></p>
<p class="firstline">Deletes a comment.</p>
<p class="toc_element">
  <code><a href="#get">get(fileId, commentId, includeDeleted=None)</a></code></p>
<p class="firstline">Gets a comment by ID.</p>
<p class="toc_element">
  <code><a href="#insert">insert(fileId, body=None)</a></code></p>
<p class="firstline">Creates a new comment on the given file.</p>
<p class="toc_element">
  <code><a href="#list">list(fileId, includeDeleted=None, maxResults=None, pageToken=None, updatedMin=None)</a></code></p>
<p class="firstline">Lists a file's comments.</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, commentId, body=None)</a></code></p>
<p class="firstline">Updates an existing comment.</p>
<p class="toc_element">
  <code><a href="#update">update(fileId, commentId, body=None)</a></code></p>
<p class="firstline">Updates an existing comment.</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, commentId)</code>
  <pre>Deletes a comment.

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

<div class="method">
    <code class="details" id="get">get(fileId, commentId, includeDeleted=None)</code>
  <pre>Gets a comment by ID.

Args:
  fileId: string, The ID of the file. (required)
  commentId: string, The ID of the comment. (required)
  includeDeleted: boolean, If set, this will succeed when retrieving a deleted comment, and will include any deleted replies.

Returns:
  An object of the form:

    { # A comment on a file in Google Drive.
  &quot;anchor&quot;: &quot;A String&quot;, # A region of the document represented as a JSON string. For details on defining anchor properties, refer to  Add comments and replies.
  &quot;author&quot;: { # Information about a Drive user. # The author of the comment. The author&#x27;s email address and permission ID will not be populated.
    &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;commentId&quot;: &quot;A String&quot;, # The ID of the comment.
  &quot;content&quot;: &quot;A String&quot;, # The plain text content used to create this comment. This is not HTML safe and should only be used as a starting point to make edits to a comment&#x27;s content.
  &quot;context&quot;: { # The context of the file which is being commented on.
    &quot;type&quot;: &quot;A String&quot;, # The MIME type of the context snippet.
    &quot;value&quot;: &quot;A String&quot;, # Data representation of the segment of the file being commented on. In the case of a text file for example, this would be the actual text that the comment is about.
  },
  &quot;createdDate&quot;: &quot;A String&quot;, # The date when this comment was first created.
  &quot;deleted&quot;: True or False, # Whether this comment has been deleted. If a comment has been deleted the content will be cleared and this will only represent a comment that once existed.
  &quot;fileId&quot;: &quot;A String&quot;, # The file which this comment is addressing.
  &quot;fileTitle&quot;: &quot;A String&quot;, # The title of the file which this comment is addressing.
  &quot;htmlContent&quot;: &quot;A String&quot;, # HTML formatted content for this comment.
  &quot;kind&quot;: &quot;drive#comment&quot;, # This is always drive#comment.
  &quot;modifiedDate&quot;: &quot;A String&quot;, # The date when this comment or any of its replies were last modified.
  &quot;replies&quot;: [ # Replies to this post.
    { # A comment on a file in Google Drive.
      &quot;author&quot;: { # Information about a Drive user. # The author of the reply. The author&#x27;s email address and permission ID will not be populated.
        &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;content&quot;: &quot;A String&quot;, # The plain text content used to create this reply. This is not HTML safe and should only be used as a starting point to make edits to a reply&#x27;s content. This field is required on inserts if no verb is specified (resolve/reopen).
      &quot;createdDate&quot;: &quot;A String&quot;, # The date when this reply was first created.
      &quot;deleted&quot;: True or False, # Whether this reply has been deleted. If a reply has been deleted the content will be cleared and this will only represent a reply that once existed.
      &quot;htmlContent&quot;: &quot;A String&quot;, # HTML formatted content for this reply.
      &quot;kind&quot;: &quot;drive#commentReply&quot;, # This is always drive#commentReply.
      &quot;modifiedDate&quot;: &quot;A String&quot;, # The date when this reply was last modified.
      &quot;replyId&quot;: &quot;A String&quot;, # The ID of the reply.
      &quot;verb&quot;: &quot;A String&quot;, # The action this reply performed to the parent comment. When creating a new reply this is the action to be perform to the parent comment. Possible values are:
          # - &quot;resolve&quot; - To resolve a comment.
          # - &quot;reopen&quot; - To reopen (un-resolve) a comment.
    },
  ],
  &quot;selfLink&quot;: &quot;A String&quot;, # A link back to this comment.
  &quot;status&quot;: &quot;A String&quot;, # The status of this comment. Status can be changed by posting a reply to a comment with the desired status.
      # - &quot;open&quot; - The comment is still open.
      # - &quot;resolved&quot; - The comment has been resolved by one of its replies.
}</pre>
</div>

<div class="method">
    <code class="details" id="insert">insert(fileId, body=None)</code>
  <pre>Creates a new comment on the given file.

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

{ # A comment on a file in Google Drive.
  &quot;anchor&quot;: &quot;A String&quot;, # A region of the document represented as a JSON string. For details on defining anchor properties, refer to  Add comments and replies.
  &quot;author&quot;: { # Information about a Drive user. # The author of the comment. The author&#x27;s email address and permission ID will not be populated.
    &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;commentId&quot;: &quot;A String&quot;, # The ID of the comment.
  &quot;content&quot;: &quot;A String&quot;, # The plain text content used to create this comment. This is not HTML safe and should only be used as a starting point to make edits to a comment&#x27;s content.
  &quot;context&quot;: { # The context of the file which is being commented on.
    &quot;type&quot;: &quot;A String&quot;, # The MIME type of the context snippet.
    &quot;value&quot;: &quot;A String&quot;, # Data representation of the segment of the file being commented on. In the case of a text file for example, this would be the actual text that the comment is about.
  },
  &quot;createdDate&quot;: &quot;A String&quot;, # The date when this comment was first created.
  &quot;deleted&quot;: True or False, # Whether this comment has been deleted. If a comment has been deleted the content will be cleared and this will only represent a comment that once existed.
  &quot;fileId&quot;: &quot;A String&quot;, # The file which this comment is addressing.
  &quot;fileTitle&quot;: &quot;A String&quot;, # The title of the file which this comment is addressing.
  &quot;htmlContent&quot;: &quot;A String&quot;, # HTML formatted content for this comment.
  &quot;kind&quot;: &quot;drive#comment&quot;, # This is always drive#comment.
  &quot;modifiedDate&quot;: &quot;A String&quot;, # The date when this comment or any of its replies were last modified.
  &quot;replies&quot;: [ # Replies to this post.
    { # A comment on a file in Google Drive.
      &quot;author&quot;: { # Information about a Drive user. # The author of the reply. The author&#x27;s email address and permission ID will not be populated.
        &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;content&quot;: &quot;A String&quot;, # The plain text content used to create this reply. This is not HTML safe and should only be used as a starting point to make edits to a reply&#x27;s content. This field is required on inserts if no verb is specified (resolve/reopen).
      &quot;createdDate&quot;: &quot;A String&quot;, # The date when this reply was first created.
      &quot;deleted&quot;: True or False, # Whether this reply has been deleted. If a reply has been deleted the content will be cleared and this will only represent a reply that once existed.
      &quot;htmlContent&quot;: &quot;A String&quot;, # HTML formatted content for this reply.
      &quot;kind&quot;: &quot;drive#commentReply&quot;, # This is always drive#commentReply.
      &quot;modifiedDate&quot;: &quot;A String&quot;, # The date when this reply was last modified.
      &quot;replyId&quot;: &quot;A String&quot;, # The ID of the reply.
      &quot;verb&quot;: &quot;A String&quot;, # The action this reply performed to the parent comment. When creating a new reply this is the action to be perform to the parent comment. Possible values are:
          # - &quot;resolve&quot; - To resolve a comment.
          # - &quot;reopen&quot; - To reopen (un-resolve) a comment.
    },
  ],
  &quot;selfLink&quot;: &quot;A String&quot;, # A link back to this comment.
  &quot;status&quot;: &quot;A String&quot;, # The status of this comment. Status can be changed by posting a reply to a comment with the desired status.
      # - &quot;open&quot; - The comment is still open.
      # - &quot;resolved&quot; - The comment has been resolved by one of its replies.
}


Returns:
  An object of the form:

    { # A comment on a file in Google Drive.
  &quot;anchor&quot;: &quot;A String&quot;, # A region of the document represented as a JSON string. For details on defining anchor properties, refer to  Add comments and replies.
  &quot;author&quot;: { # Information about a Drive user. # The author of the comment. The author&#x27;s email address and permission ID will not be populated.
    &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;commentId&quot;: &quot;A String&quot;, # The ID of the comment.
  &quot;content&quot;: &quot;A String&quot;, # The plain text content used to create this comment. This is not HTML safe and should only be used as a starting point to make edits to a comment&#x27;s content.
  &quot;context&quot;: { # The context of the file which is being commented on.
    &quot;type&quot;: &quot;A String&quot;, # The MIME type of the context snippet.
    &quot;value&quot;: &quot;A String&quot;, # Data representation of the segment of the file being commented on. In the case of a text file for example, this would be the actual text that the comment is about.
  },
  &quot;createdDate&quot;: &quot;A String&quot;, # The date when this comment was first created.
  &quot;deleted&quot;: True or False, # Whether this comment has been deleted. If a comment has been deleted the content will be cleared and this will only represent a comment that once existed.
  &quot;fileId&quot;: &quot;A String&quot;, # The file which this comment is addressing.
  &quot;fileTitle&quot;: &quot;A String&quot;, # The title of the file which this comment is addressing.
  &quot;htmlContent&quot;: &quot;A String&quot;, # HTML formatted content for this comment.
  &quot;kind&quot;: &quot;drive#comment&quot;, # This is always drive#comment.
  &quot;modifiedDate&quot;: &quot;A String&quot;, # The date when this comment or any of its replies were last modified.
  &quot;replies&quot;: [ # Replies to this post.
    { # A comment on a file in Google Drive.
      &quot;author&quot;: { # Information about a Drive user. # The author of the reply. The author&#x27;s email address and permission ID will not be populated.
        &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;content&quot;: &quot;A String&quot;, # The plain text content used to create this reply. This is not HTML safe and should only be used as a starting point to make edits to a reply&#x27;s content. This field is required on inserts if no verb is specified (resolve/reopen).
      &quot;createdDate&quot;: &quot;A String&quot;, # The date when this reply was first created.
      &quot;deleted&quot;: True or False, # Whether this reply has been deleted. If a reply has been deleted the content will be cleared and this will only represent a reply that once existed.
      &quot;htmlContent&quot;: &quot;A String&quot;, # HTML formatted content for this reply.
      &quot;kind&quot;: &quot;drive#commentReply&quot;, # This is always drive#commentReply.
      &quot;modifiedDate&quot;: &quot;A String&quot;, # The date when this reply was last modified.
      &quot;replyId&quot;: &quot;A String&quot;, # The ID of the reply.
      &quot;verb&quot;: &quot;A String&quot;, # The action this reply performed to the parent comment. When creating a new reply this is the action to be perform to the parent comment. Possible values are:
          # - &quot;resolve&quot; - To resolve a comment.
          # - &quot;reopen&quot; - To reopen (un-resolve) a comment.
    },
  ],
  &quot;selfLink&quot;: &quot;A String&quot;, # A link back to this comment.
  &quot;status&quot;: &quot;A String&quot;, # The status of this comment. Status can be changed by posting a reply to a comment with the desired status.
      # - &quot;open&quot; - The comment is still open.
      # - &quot;resolved&quot; - The comment has been resolved by one of its replies.
}</pre>
</div>

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

Args:
  fileId: string, The ID of the file. (required)
  includeDeleted: boolean, If set, all comments and replies, including deleted comments and replies (with content stripped) will be returned.
  maxResults: integer, The maximum number of discussions to include in the response, used for paging.
  pageToken: string, The continuation token, used to page through large result sets. To get the next page of results, set this parameter to the value of &quot;nextPageToken&quot; from the previous response.
  updatedMin: string, Only discussions that were updated after this timestamp will be returned. Formatted as an RFC 3339 timestamp.

Returns:
  An object of the form:

    { # A list of comments on a file in Google Drive.
  &quot;items&quot;: [ # The list of comments. If nextPageToken is populated, then this list may be incomplete and an additional page of results should be fetched.
    { # A comment on a file in Google Drive.
      &quot;anchor&quot;: &quot;A String&quot;, # A region of the document represented as a JSON string. For details on defining anchor properties, refer to  Add comments and replies.
      &quot;author&quot;: { # Information about a Drive user. # The author of the comment. The author&#x27;s email address and permission ID will not be populated.
        &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;commentId&quot;: &quot;A String&quot;, # The ID of the comment.
      &quot;content&quot;: &quot;A String&quot;, # The plain text content used to create this comment. This is not HTML safe and should only be used as a starting point to make edits to a comment&#x27;s content.
      &quot;context&quot;: { # The context of the file which is being commented on.
        &quot;type&quot;: &quot;A String&quot;, # The MIME type of the context snippet.
        &quot;value&quot;: &quot;A String&quot;, # Data representation of the segment of the file being commented on. In the case of a text file for example, this would be the actual text that the comment is about.
      },
      &quot;createdDate&quot;: &quot;A String&quot;, # The date when this comment was first created.
      &quot;deleted&quot;: True or False, # Whether this comment has been deleted. If a comment has been deleted the content will be cleared and this will only represent a comment that once existed.
      &quot;fileId&quot;: &quot;A String&quot;, # The file which this comment is addressing.
      &quot;fileTitle&quot;: &quot;A String&quot;, # The title of the file which this comment is addressing.
      &quot;htmlContent&quot;: &quot;A String&quot;, # HTML formatted content for this comment.
      &quot;kind&quot;: &quot;drive#comment&quot;, # This is always drive#comment.
      &quot;modifiedDate&quot;: &quot;A String&quot;, # The date when this comment or any of its replies were last modified.
      &quot;replies&quot;: [ # Replies to this post.
        { # A comment on a file in Google Drive.
          &quot;author&quot;: { # Information about a Drive user. # The author of the reply. The author&#x27;s email address and permission ID will not be populated.
            &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;content&quot;: &quot;A String&quot;, # The plain text content used to create this reply. This is not HTML safe and should only be used as a starting point to make edits to a reply&#x27;s content. This field is required on inserts if no verb is specified (resolve/reopen).
          &quot;createdDate&quot;: &quot;A String&quot;, # The date when this reply was first created.
          &quot;deleted&quot;: True or False, # Whether this reply has been deleted. If a reply has been deleted the content will be cleared and this will only represent a reply that once existed.
          &quot;htmlContent&quot;: &quot;A String&quot;, # HTML formatted content for this reply.
          &quot;kind&quot;: &quot;drive#commentReply&quot;, # This is always drive#commentReply.
          &quot;modifiedDate&quot;: &quot;A String&quot;, # The date when this reply was last modified.
          &quot;replyId&quot;: &quot;A String&quot;, # The ID of the reply.
          &quot;verb&quot;: &quot;A String&quot;, # The action this reply performed to the parent comment. When creating a new reply this is the action to be perform to the parent comment. Possible values are:
              # - &quot;resolve&quot; - To resolve a comment.
              # - &quot;reopen&quot; - To reopen (un-resolve) a comment.
        },
      ],
      &quot;selfLink&quot;: &quot;A String&quot;, # A link back to this comment.
      &quot;status&quot;: &quot;A String&quot;, # The status of this comment. Status can be changed by posting a reply to a comment with the desired status.
          # - &quot;open&quot; - The comment is still open.
          # - &quot;resolved&quot; - The comment has been resolved by one of its replies.
    },
  ],
  &quot;kind&quot;: &quot;drive#commentList&quot;, # This is always drive#commentList.
  &quot;nextLink&quot;: &quot;A String&quot;, # A link to the next page of comments.
  &quot;nextPageToken&quot;: &quot;A String&quot;, # The page token for the next page of comments. This will be absent if the end of the comments 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, commentId, body=None)</code>
  <pre>Updates an existing comment.

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

{ # A comment on a file in Google Drive.
  &quot;anchor&quot;: &quot;A String&quot;, # A region of the document represented as a JSON string. For details on defining anchor properties, refer to  Add comments and replies.
  &quot;author&quot;: { # Information about a Drive user. # The author of the comment. The author&#x27;s email address and permission ID will not be populated.
    &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;commentId&quot;: &quot;A String&quot;, # The ID of the comment.
  &quot;content&quot;: &quot;A String&quot;, # The plain text content used to create this comment. This is not HTML safe and should only be used as a starting point to make edits to a comment&#x27;s content.
  &quot;context&quot;: { # The context of the file which is being commented on.
    &quot;type&quot;: &quot;A String&quot;, # The MIME type of the context snippet.
    &quot;value&quot;: &quot;A String&quot;, # Data representation of the segment of the file being commented on. In the case of a text file for example, this would be the actual text that the comment is about.
  },
  &quot;createdDate&quot;: &quot;A String&quot;, # The date when this comment was first created.
  &quot;deleted&quot;: True or False, # Whether this comment has been deleted. If a comment has been deleted the content will be cleared and this will only represent a comment that once existed.
  &quot;fileId&quot;: &quot;A String&quot;, # The file which this comment is addressing.
  &quot;fileTitle&quot;: &quot;A String&quot;, # The title of the file which this comment is addressing.
  &quot;htmlContent&quot;: &quot;A String&quot;, # HTML formatted content for this comment.
  &quot;kind&quot;: &quot;drive#comment&quot;, # This is always drive#comment.
  &quot;modifiedDate&quot;: &quot;A String&quot;, # The date when this comment or any of its replies were last modified.
  &quot;replies&quot;: [ # Replies to this post.
    { # A comment on a file in Google Drive.
      &quot;author&quot;: { # Information about a Drive user. # The author of the reply. The author&#x27;s email address and permission ID will not be populated.
        &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;content&quot;: &quot;A String&quot;, # The plain text content used to create this reply. This is not HTML safe and should only be used as a starting point to make edits to a reply&#x27;s content. This field is required on inserts if no verb is specified (resolve/reopen).
      &quot;createdDate&quot;: &quot;A String&quot;, # The date when this reply was first created.
      &quot;deleted&quot;: True or False, # Whether this reply has been deleted. If a reply has been deleted the content will be cleared and this will only represent a reply that once existed.
      &quot;htmlContent&quot;: &quot;A String&quot;, # HTML formatted content for this reply.
      &quot;kind&quot;: &quot;drive#commentReply&quot;, # This is always drive#commentReply.
      &quot;modifiedDate&quot;: &quot;A String&quot;, # The date when this reply was last modified.
      &quot;replyId&quot;: &quot;A String&quot;, # The ID of the reply.
      &quot;verb&quot;: &quot;A String&quot;, # The action this reply performed to the parent comment. When creating a new reply this is the action to be perform to the parent comment. Possible values are:
          # - &quot;resolve&quot; - To resolve a comment.
          # - &quot;reopen&quot; - To reopen (un-resolve) a comment.
    },
  ],
  &quot;selfLink&quot;: &quot;A String&quot;, # A link back to this comment.
  &quot;status&quot;: &quot;A String&quot;, # The status of this comment. Status can be changed by posting a reply to a comment with the desired status.
      # - &quot;open&quot; - The comment is still open.
      # - &quot;resolved&quot; - The comment has been resolved by one of its replies.
}


Returns:
  An object of the form:

    { # A comment on a file in Google Drive.
  &quot;anchor&quot;: &quot;A String&quot;, # A region of the document represented as a JSON string. For details on defining anchor properties, refer to  Add comments and replies.
  &quot;author&quot;: { # Information about a Drive user. # The author of the comment. The author&#x27;s email address and permission ID will not be populated.
    &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;commentId&quot;: &quot;A String&quot;, # The ID of the comment.
  &quot;content&quot;: &quot;A String&quot;, # The plain text content used to create this comment. This is not HTML safe and should only be used as a starting point to make edits to a comment&#x27;s content.
  &quot;context&quot;: { # The context of the file which is being commented on.
    &quot;type&quot;: &quot;A String&quot;, # The MIME type of the context snippet.
    &quot;value&quot;: &quot;A String&quot;, # Data representation of the segment of the file being commented on. In the case of a text file for example, this would be the actual text that the comment is about.
  },
  &quot;createdDate&quot;: &quot;A String&quot;, # The date when this comment was first created.
  &quot;deleted&quot;: True or False, # Whether this comment has been deleted. If a comment has been deleted the content will be cleared and this will only represent a comment that once existed.
  &quot;fileId&quot;: &quot;A String&quot;, # The file which this comment is addressing.
  &quot;fileTitle&quot;: &quot;A String&quot;, # The title of the file which this comment is addressing.
  &quot;htmlContent&quot;: &quot;A String&quot;, # HTML formatted content for this comment.
  &quot;kind&quot;: &quot;drive#comment&quot;, # This is always drive#comment.
  &quot;modifiedDate&quot;: &quot;A String&quot;, # The date when this comment or any of its replies were last modified.
  &quot;replies&quot;: [ # Replies to this post.
    { # A comment on a file in Google Drive.
      &quot;author&quot;: { # Information about a Drive user. # The author of the reply. The author&#x27;s email address and permission ID will not be populated.
        &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;content&quot;: &quot;A String&quot;, # The plain text content used to create this reply. This is not HTML safe and should only be used as a starting point to make edits to a reply&#x27;s content. This field is required on inserts if no verb is specified (resolve/reopen).
      &quot;createdDate&quot;: &quot;A String&quot;, # The date when this reply was first created.
      &quot;deleted&quot;: True or False, # Whether this reply has been deleted. If a reply has been deleted the content will be cleared and this will only represent a reply that once existed.
      &quot;htmlContent&quot;: &quot;A String&quot;, # HTML formatted content for this reply.
      &quot;kind&quot;: &quot;drive#commentReply&quot;, # This is always drive#commentReply.
      &quot;modifiedDate&quot;: &quot;A String&quot;, # The date when this reply was last modified.
      &quot;replyId&quot;: &quot;A String&quot;, # The ID of the reply.
      &quot;verb&quot;: &quot;A String&quot;, # The action this reply performed to the parent comment. When creating a new reply this is the action to be perform to the parent comment. Possible values are:
          # - &quot;resolve&quot; - To resolve a comment.
          # - &quot;reopen&quot; - To reopen (un-resolve) a comment.
    },
  ],
  &quot;selfLink&quot;: &quot;A String&quot;, # A link back to this comment.
  &quot;status&quot;: &quot;A String&quot;, # The status of this comment. Status can be changed by posting a reply to a comment with the desired status.
      # - &quot;open&quot; - The comment is still open.
      # - &quot;resolved&quot; - The comment has been resolved by one of its replies.
}</pre>
</div>

<div class="method">
    <code class="details" id="update">update(fileId, commentId, body=None)</code>
  <pre>Updates an existing comment.

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

{ # A comment on a file in Google Drive.
  &quot;anchor&quot;: &quot;A String&quot;, # A region of the document represented as a JSON string. For details on defining anchor properties, refer to  Add comments and replies.
  &quot;author&quot;: { # Information about a Drive user. # The author of the comment. The author&#x27;s email address and permission ID will not be populated.
    &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;commentId&quot;: &quot;A String&quot;, # The ID of the comment.
  &quot;content&quot;: &quot;A String&quot;, # The plain text content used to create this comment. This is not HTML safe and should only be used as a starting point to make edits to a comment&#x27;s content.
  &quot;context&quot;: { # The context of the file which is being commented on.
    &quot;type&quot;: &quot;A String&quot;, # The MIME type of the context snippet.
    &quot;value&quot;: &quot;A String&quot;, # Data representation of the segment of the file being commented on. In the case of a text file for example, this would be the actual text that the comment is about.
  },
  &quot;createdDate&quot;: &quot;A String&quot;, # The date when this comment was first created.
  &quot;deleted&quot;: True or False, # Whether this comment has been deleted. If a comment has been deleted the content will be cleared and this will only represent a comment that once existed.
  &quot;fileId&quot;: &quot;A String&quot;, # The file which this comment is addressing.
  &quot;fileTitle&quot;: &quot;A String&quot;, # The title of the file which this comment is addressing.
  &quot;htmlContent&quot;: &quot;A String&quot;, # HTML formatted content for this comment.
  &quot;kind&quot;: &quot;drive#comment&quot;, # This is always drive#comment.
  &quot;modifiedDate&quot;: &quot;A String&quot;, # The date when this comment or any of its replies were last modified.
  &quot;replies&quot;: [ # Replies to this post.
    { # A comment on a file in Google Drive.
      &quot;author&quot;: { # Information about a Drive user. # The author of the reply. The author&#x27;s email address and permission ID will not be populated.
        &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;content&quot;: &quot;A String&quot;, # The plain text content used to create this reply. This is not HTML safe and should only be used as a starting point to make edits to a reply&#x27;s content. This field is required on inserts if no verb is specified (resolve/reopen).
      &quot;createdDate&quot;: &quot;A String&quot;, # The date when this reply was first created.
      &quot;deleted&quot;: True or False, # Whether this reply has been deleted. If a reply has been deleted the content will be cleared and this will only represent a reply that once existed.
      &quot;htmlContent&quot;: &quot;A String&quot;, # HTML formatted content for this reply.
      &quot;kind&quot;: &quot;drive#commentReply&quot;, # This is always drive#commentReply.
      &quot;modifiedDate&quot;: &quot;A String&quot;, # The date when this reply was last modified.
      &quot;replyId&quot;: &quot;A String&quot;, # The ID of the reply.
      &quot;verb&quot;: &quot;A String&quot;, # The action this reply performed to the parent comment. When creating a new reply this is the action to be perform to the parent comment. Possible values are:
          # - &quot;resolve&quot; - To resolve a comment.
          # - &quot;reopen&quot; - To reopen (un-resolve) a comment.
    },
  ],
  &quot;selfLink&quot;: &quot;A String&quot;, # A link back to this comment.
  &quot;status&quot;: &quot;A String&quot;, # The status of this comment. Status can be changed by posting a reply to a comment with the desired status.
      # - &quot;open&quot; - The comment is still open.
      # - &quot;resolved&quot; - The comment has been resolved by one of its replies.
}


Returns:
  An object of the form:

    { # A comment on a file in Google Drive.
  &quot;anchor&quot;: &quot;A String&quot;, # A region of the document represented as a JSON string. For details on defining anchor properties, refer to  Add comments and replies.
  &quot;author&quot;: { # Information about a Drive user. # The author of the comment. The author&#x27;s email address and permission ID will not be populated.
    &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;commentId&quot;: &quot;A String&quot;, # The ID of the comment.
  &quot;content&quot;: &quot;A String&quot;, # The plain text content used to create this comment. This is not HTML safe and should only be used as a starting point to make edits to a comment&#x27;s content.
  &quot;context&quot;: { # The context of the file which is being commented on.
    &quot;type&quot;: &quot;A String&quot;, # The MIME type of the context snippet.
    &quot;value&quot;: &quot;A String&quot;, # Data representation of the segment of the file being commented on. In the case of a text file for example, this would be the actual text that the comment is about.
  },
  &quot;createdDate&quot;: &quot;A String&quot;, # The date when this comment was first created.
  &quot;deleted&quot;: True or False, # Whether this comment has been deleted. If a comment has been deleted the content will be cleared and this will only represent a comment that once existed.
  &quot;fileId&quot;: &quot;A String&quot;, # The file which this comment is addressing.
  &quot;fileTitle&quot;: &quot;A String&quot;, # The title of the file which this comment is addressing.
  &quot;htmlContent&quot;: &quot;A String&quot;, # HTML formatted content for this comment.
  &quot;kind&quot;: &quot;drive#comment&quot;, # This is always drive#comment.
  &quot;modifiedDate&quot;: &quot;A String&quot;, # The date when this comment or any of its replies were last modified.
  &quot;replies&quot;: [ # Replies to this post.
    { # A comment on a file in Google Drive.
      &quot;author&quot;: { # Information about a Drive user. # The author of the reply. The author&#x27;s email address and permission ID will not be populated.
        &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;content&quot;: &quot;A String&quot;, # The plain text content used to create this reply. This is not HTML safe and should only be used as a starting point to make edits to a reply&#x27;s content. This field is required on inserts if no verb is specified (resolve/reopen).
      &quot;createdDate&quot;: &quot;A String&quot;, # The date when this reply was first created.
      &quot;deleted&quot;: True or False, # Whether this reply has been deleted. If a reply has been deleted the content will be cleared and this will only represent a reply that once existed.
      &quot;htmlContent&quot;: &quot;A String&quot;, # HTML formatted content for this reply.
      &quot;kind&quot;: &quot;drive#commentReply&quot;, # This is always drive#commentReply.
      &quot;modifiedDate&quot;: &quot;A String&quot;, # The date when this reply was last modified.
      &quot;replyId&quot;: &quot;A String&quot;, # The ID of the reply.
      &quot;verb&quot;: &quot;A String&quot;, # The action this reply performed to the parent comment. When creating a new reply this is the action to be perform to the parent comment. Possible values are:
          # - &quot;resolve&quot; - To resolve a comment.
          # - &quot;reopen&quot; - To reopen (un-resolve) a comment.
    },
  ],
  &quot;selfLink&quot;: &quot;A String&quot;, # A link back to this comment.
  &quot;status&quot;: &quot;A String&quot;, # The status of this comment. Status can be changed by posting a reply to a comment with the desired status.
      # - &quot;open&quot; - The comment is still open.
      # - &quot;resolved&quot; - The comment has been resolved by one of its replies.
}</pre>
</div>

</body></html>