<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="#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="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. See anchor documentation for details on how to define and interpret anchor properties.
    &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. See anchor documentation for details on how to define and interpret anchor properties.
  &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. See anchor documentation for details on how to define and interpret anchor properties.
    &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. See anchor documentation for details on how to define and interpret anchor properties.
        &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. See anchor documentation for details on how to define and interpret anchor properties.
  &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. See anchor documentation for details on how to define and interpret anchor properties.
    &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. See anchor documentation for details on how to define and interpret anchor properties.
  &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. See anchor documentation for details on how to define and interpret anchor properties.
    &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>