<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="drive_v3.html">Drive API</a> . <a href="drive_v3.comments.html">comments</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#create">create(fileId, body=None)</a></code></p>
<p class="firstline">Creates a new comment on a file.</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="#list">list(fileId, includeDeleted=None, pageSize=None, pageToken=None, startModifiedTime=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="#update">update(fileId, commentId, body=None)</a></code></p>
<p class="firstline">Updates a comment with patch semantics.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="create">create(fileId, body=None)</code>
  <pre>Creates a new comment on a 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.
    &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. This may not be present in certain contexts if the user has not made their email address visible to the requester.
      &quot;kind&quot;: &quot;drive#user&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;drive#user&quot;.
      &quot;me&quot;: True or False, # Whether this user is the requesting user.
      &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in Permission resources.
      &quot;photoLink&quot;: &quot;A String&quot;, # A link to the user&#x27;s profile photo, if available.
    },
    &quot;content&quot;: &quot;A String&quot;, # The plain text content of the comment. This field is used for setting the content, while htmlContent should be displayed.
    &quot;createdTime&quot;: &quot;A String&quot;, # The time at which the comment was created (RFC 3339 date-time).
    &quot;deleted&quot;: True or False, # Whether the comment has been deleted. A deleted comment has no content.
    &quot;htmlContent&quot;: &quot;A String&quot;, # The content of the comment with HTML formatting.
    &quot;id&quot;: &quot;A String&quot;, # The ID of the comment.
    &quot;kind&quot;: &quot;drive#comment&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;drive#comment&quot;.
    &quot;modifiedTime&quot;: &quot;A String&quot;, # The last time the comment or any of its replies was modified (RFC 3339 date-time).
    &quot;quotedFileContent&quot;: { # The file content to which the comment refers, typically within the anchor region. For a text file, for example, this would be the text at the location of the comment.
      &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the quoted content.
      &quot;value&quot;: &quot;A String&quot;, # The quoted content itself. This is interpreted as plain text if set through the API.
    },
    &quot;replies&quot;: [ # The full list of replies to the comment in chronological order.
      { # A reply to a comment on a file.
        &quot;action&quot;: &quot;A String&quot;, # The action the reply performed to the parent comment. Valid values are:
            # - resolve
            # - reopen
        &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. This may not be present in certain contexts if the user has not made their email address visible to the requester.
          &quot;kind&quot;: &quot;drive#user&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;drive#user&quot;.
          &quot;me&quot;: True or False, # Whether this user is the requesting user.
          &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in Permission resources.
          &quot;photoLink&quot;: &quot;A String&quot;, # A link to the user&#x27;s profile photo, if available.
        },
        &quot;content&quot;: &quot;A String&quot;, # The plain text content of the reply. This field is used for setting the content, while htmlContent should be displayed. This is required on creates if no action is specified.
        &quot;createdTime&quot;: &quot;A String&quot;, # The time at which the reply was created (RFC 3339 date-time).
        &quot;deleted&quot;: True or False, # Whether the reply has been deleted. A deleted reply has no content.
        &quot;htmlContent&quot;: &quot;A String&quot;, # The content of the reply with HTML formatting.
        &quot;id&quot;: &quot;A String&quot;, # The ID of the reply.
        &quot;kind&quot;: &quot;drive#reply&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;drive#reply&quot;.
        &quot;modifiedTime&quot;: &quot;A String&quot;, # The last time the reply was modified (RFC 3339 date-time).
      },
    ],
    &quot;resolved&quot;: True or False, # Whether the comment has been resolved by one of its replies.
  }


Returns:
  An object of the form:

    { # A comment on a file.
      &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. This may not be present in certain contexts if the user has not made their email address visible to the requester.
        &quot;kind&quot;: &quot;drive#user&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;drive#user&quot;.
        &quot;me&quot;: True or False, # Whether this user is the requesting user.
        &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in Permission resources.
        &quot;photoLink&quot;: &quot;A String&quot;, # A link to the user&#x27;s profile photo, if available.
      },
      &quot;content&quot;: &quot;A String&quot;, # The plain text content of the comment. This field is used for setting the content, while htmlContent should be displayed.
      &quot;createdTime&quot;: &quot;A String&quot;, # The time at which the comment was created (RFC 3339 date-time).
      &quot;deleted&quot;: True or False, # Whether the comment has been deleted. A deleted comment has no content.
      &quot;htmlContent&quot;: &quot;A String&quot;, # The content of the comment with HTML formatting.
      &quot;id&quot;: &quot;A String&quot;, # The ID of the comment.
      &quot;kind&quot;: &quot;drive#comment&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;drive#comment&quot;.
      &quot;modifiedTime&quot;: &quot;A String&quot;, # The last time the comment or any of its replies was modified (RFC 3339 date-time).
      &quot;quotedFileContent&quot;: { # The file content to which the comment refers, typically within the anchor region. For a text file, for example, this would be the text at the location of the comment.
        &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the quoted content.
        &quot;value&quot;: &quot;A String&quot;, # The quoted content itself. This is interpreted as plain text if set through the API.
      },
      &quot;replies&quot;: [ # The full list of replies to the comment in chronological order.
        { # A reply to a comment on a file.
          &quot;action&quot;: &quot;A String&quot;, # The action the reply performed to the parent comment. Valid values are:
              # - resolve
              # - reopen
          &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. This may not be present in certain contexts if the user has not made their email address visible to the requester.
            &quot;kind&quot;: &quot;drive#user&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;drive#user&quot;.
            &quot;me&quot;: True or False, # Whether this user is the requesting user.
            &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in Permission resources.
            &quot;photoLink&quot;: &quot;A String&quot;, # A link to the user&#x27;s profile photo, if available.
          },
          &quot;content&quot;: &quot;A String&quot;, # The plain text content of the reply. This field is used for setting the content, while htmlContent should be displayed. This is required on creates if no action is specified.
          &quot;createdTime&quot;: &quot;A String&quot;, # The time at which the reply was created (RFC 3339 date-time).
          &quot;deleted&quot;: True or False, # Whether the reply has been deleted. A deleted reply has no content.
          &quot;htmlContent&quot;: &quot;A String&quot;, # The content of the reply with HTML formatting.
          &quot;id&quot;: &quot;A String&quot;, # The ID of the reply.
          &quot;kind&quot;: &quot;drive#reply&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;drive#reply&quot;.
          &quot;modifiedTime&quot;: &quot;A String&quot;, # The last time the reply was modified (RFC 3339 date-time).
        },
      ],
      &quot;resolved&quot;: True or False, # Whether the comment has been resolved by one of its replies.
    }</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, Whether to return deleted comments. Deleted comments will not include their original content.

Returns:
  An object of the form:

    { # A comment on a file.
      &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. This may not be present in certain contexts if the user has not made their email address visible to the requester.
        &quot;kind&quot;: &quot;drive#user&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;drive#user&quot;.
        &quot;me&quot;: True or False, # Whether this user is the requesting user.
        &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in Permission resources.
        &quot;photoLink&quot;: &quot;A String&quot;, # A link to the user&#x27;s profile photo, if available.
      },
      &quot;content&quot;: &quot;A String&quot;, # The plain text content of the comment. This field is used for setting the content, while htmlContent should be displayed.
      &quot;createdTime&quot;: &quot;A String&quot;, # The time at which the comment was created (RFC 3339 date-time).
      &quot;deleted&quot;: True or False, # Whether the comment has been deleted. A deleted comment has no content.
      &quot;htmlContent&quot;: &quot;A String&quot;, # The content of the comment with HTML formatting.
      &quot;id&quot;: &quot;A String&quot;, # The ID of the comment.
      &quot;kind&quot;: &quot;drive#comment&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;drive#comment&quot;.
      &quot;modifiedTime&quot;: &quot;A String&quot;, # The last time the comment or any of its replies was modified (RFC 3339 date-time).
      &quot;quotedFileContent&quot;: { # The file content to which the comment refers, typically within the anchor region. For a text file, for example, this would be the text at the location of the comment.
        &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the quoted content.
        &quot;value&quot;: &quot;A String&quot;, # The quoted content itself. This is interpreted as plain text if set through the API.
      },
      &quot;replies&quot;: [ # The full list of replies to the comment in chronological order.
        { # A reply to a comment on a file.
          &quot;action&quot;: &quot;A String&quot;, # The action the reply performed to the parent comment. Valid values are:
              # - resolve
              # - reopen
          &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. This may not be present in certain contexts if the user has not made their email address visible to the requester.
            &quot;kind&quot;: &quot;drive#user&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;drive#user&quot;.
            &quot;me&quot;: True or False, # Whether this user is the requesting user.
            &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in Permission resources.
            &quot;photoLink&quot;: &quot;A String&quot;, # A link to the user&#x27;s profile photo, if available.
          },
          &quot;content&quot;: &quot;A String&quot;, # The plain text content of the reply. This field is used for setting the content, while htmlContent should be displayed. This is required on creates if no action is specified.
          &quot;createdTime&quot;: &quot;A String&quot;, # The time at which the reply was created (RFC 3339 date-time).
          &quot;deleted&quot;: True or False, # Whether the reply has been deleted. A deleted reply has no content.
          &quot;htmlContent&quot;: &quot;A String&quot;, # The content of the reply with HTML formatting.
          &quot;id&quot;: &quot;A String&quot;, # The ID of the reply.
          &quot;kind&quot;: &quot;drive#reply&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;drive#reply&quot;.
          &quot;modifiedTime&quot;: &quot;A String&quot;, # The last time the reply was modified (RFC 3339 date-time).
        },
      ],
      &quot;resolved&quot;: True or False, # Whether the comment has been resolved by one of its replies.
    }</pre>
</div>

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

Args:
  fileId: string, The ID of the file. (required)
  includeDeleted: boolean, Whether to include deleted comments. Deleted comments will not include their original content.
  pageSize: integer, The maximum number of comments to return per page.
  pageToken: string, The token for continuing a previous list request on the next page. This should be set to the value of &#x27;nextPageToken&#x27; from the previous response.
  startModifiedTime: string, The minimum value of &#x27;modifiedTime&#x27; for the result comments (RFC 3339 date-time).

Returns:
  An object of the form:

    { # A list of comments on a file.
    &quot;comments&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.
          &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. This may not be present in certain contexts if the user has not made their email address visible to the requester.
            &quot;kind&quot;: &quot;drive#user&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;drive#user&quot;.
            &quot;me&quot;: True or False, # Whether this user is the requesting user.
            &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in Permission resources.
            &quot;photoLink&quot;: &quot;A String&quot;, # A link to the user&#x27;s profile photo, if available.
          },
          &quot;content&quot;: &quot;A String&quot;, # The plain text content of the comment. This field is used for setting the content, while htmlContent should be displayed.
          &quot;createdTime&quot;: &quot;A String&quot;, # The time at which the comment was created (RFC 3339 date-time).
          &quot;deleted&quot;: True or False, # Whether the comment has been deleted. A deleted comment has no content.
          &quot;htmlContent&quot;: &quot;A String&quot;, # The content of the comment with HTML formatting.
          &quot;id&quot;: &quot;A String&quot;, # The ID of the comment.
          &quot;kind&quot;: &quot;drive#comment&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;drive#comment&quot;.
          &quot;modifiedTime&quot;: &quot;A String&quot;, # The last time the comment or any of its replies was modified (RFC 3339 date-time).
          &quot;quotedFileContent&quot;: { # The file content to which the comment refers, typically within the anchor region. For a text file, for example, this would be the text at the location of the comment.
            &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the quoted content.
            &quot;value&quot;: &quot;A String&quot;, # The quoted content itself. This is interpreted as plain text if set through the API.
          },
          &quot;replies&quot;: [ # The full list of replies to the comment in chronological order.
            { # A reply to a comment on a file.
              &quot;action&quot;: &quot;A String&quot;, # The action the reply performed to the parent comment. Valid values are:
                  # - resolve
                  # - reopen
              &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. This may not be present in certain contexts if the user has not made their email address visible to the requester.
                &quot;kind&quot;: &quot;drive#user&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;drive#user&quot;.
                &quot;me&quot;: True or False, # Whether this user is the requesting user.
                &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in Permission resources.
                &quot;photoLink&quot;: &quot;A String&quot;, # A link to the user&#x27;s profile photo, if available.
              },
              &quot;content&quot;: &quot;A String&quot;, # The plain text content of the reply. This field is used for setting the content, while htmlContent should be displayed. This is required on creates if no action is specified.
              &quot;createdTime&quot;: &quot;A String&quot;, # The time at which the reply was created (RFC 3339 date-time).
              &quot;deleted&quot;: True or False, # Whether the reply has been deleted. A deleted reply has no content.
              &quot;htmlContent&quot;: &quot;A String&quot;, # The content of the reply with HTML formatting.
              &quot;id&quot;: &quot;A String&quot;, # The ID of the reply.
              &quot;kind&quot;: &quot;drive#reply&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;drive#reply&quot;.
              &quot;modifiedTime&quot;: &quot;A String&quot;, # The last time the reply was modified (RFC 3339 date-time).
            },
          ],
          &quot;resolved&quot;: True or False, # Whether the comment has been resolved by one of its replies.
        },
    ],
    &quot;kind&quot;: &quot;drive#commentList&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;drive#commentList&quot;.
    &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.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
  <pre>Retrieves the next page of results.

Args:
  previous_request: The request for the previous page. (required)
  previous_response: The response from the request for the previous page. (required)

Returns:
  A request object that you can call &#x27;execute()&#x27; on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

<div class="method">
    <code class="details" id="update">update(fileId, commentId, body=None)</code>
  <pre>Updates a comment with patch semantics.

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.
    &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. This may not be present in certain contexts if the user has not made their email address visible to the requester.
      &quot;kind&quot;: &quot;drive#user&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;drive#user&quot;.
      &quot;me&quot;: True or False, # Whether this user is the requesting user.
      &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in Permission resources.
      &quot;photoLink&quot;: &quot;A String&quot;, # A link to the user&#x27;s profile photo, if available.
    },
    &quot;content&quot;: &quot;A String&quot;, # The plain text content of the comment. This field is used for setting the content, while htmlContent should be displayed.
    &quot;createdTime&quot;: &quot;A String&quot;, # The time at which the comment was created (RFC 3339 date-time).
    &quot;deleted&quot;: True or False, # Whether the comment has been deleted. A deleted comment has no content.
    &quot;htmlContent&quot;: &quot;A String&quot;, # The content of the comment with HTML formatting.
    &quot;id&quot;: &quot;A String&quot;, # The ID of the comment.
    &quot;kind&quot;: &quot;drive#comment&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;drive#comment&quot;.
    &quot;modifiedTime&quot;: &quot;A String&quot;, # The last time the comment or any of its replies was modified (RFC 3339 date-time).
    &quot;quotedFileContent&quot;: { # The file content to which the comment refers, typically within the anchor region. For a text file, for example, this would be the text at the location of the comment.
      &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the quoted content.
      &quot;value&quot;: &quot;A String&quot;, # The quoted content itself. This is interpreted as plain text if set through the API.
    },
    &quot;replies&quot;: [ # The full list of replies to the comment in chronological order.
      { # A reply to a comment on a file.
        &quot;action&quot;: &quot;A String&quot;, # The action the reply performed to the parent comment. Valid values are:
            # - resolve
            # - reopen
        &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. This may not be present in certain contexts if the user has not made their email address visible to the requester.
          &quot;kind&quot;: &quot;drive#user&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;drive#user&quot;.
          &quot;me&quot;: True or False, # Whether this user is the requesting user.
          &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in Permission resources.
          &quot;photoLink&quot;: &quot;A String&quot;, # A link to the user&#x27;s profile photo, if available.
        },
        &quot;content&quot;: &quot;A String&quot;, # The plain text content of the reply. This field is used for setting the content, while htmlContent should be displayed. This is required on creates if no action is specified.
        &quot;createdTime&quot;: &quot;A String&quot;, # The time at which the reply was created (RFC 3339 date-time).
        &quot;deleted&quot;: True or False, # Whether the reply has been deleted. A deleted reply has no content.
        &quot;htmlContent&quot;: &quot;A String&quot;, # The content of the reply with HTML formatting.
        &quot;id&quot;: &quot;A String&quot;, # The ID of the reply.
        &quot;kind&quot;: &quot;drive#reply&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;drive#reply&quot;.
        &quot;modifiedTime&quot;: &quot;A String&quot;, # The last time the reply was modified (RFC 3339 date-time).
      },
    ],
    &quot;resolved&quot;: True or False, # Whether the comment has been resolved by one of its replies.
  }


Returns:
  An object of the form:

    { # A comment on a file.
      &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. This may not be present in certain contexts if the user has not made their email address visible to the requester.
        &quot;kind&quot;: &quot;drive#user&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;drive#user&quot;.
        &quot;me&quot;: True or False, # Whether this user is the requesting user.
        &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in Permission resources.
        &quot;photoLink&quot;: &quot;A String&quot;, # A link to the user&#x27;s profile photo, if available.
      },
      &quot;content&quot;: &quot;A String&quot;, # The plain text content of the comment. This field is used for setting the content, while htmlContent should be displayed.
      &quot;createdTime&quot;: &quot;A String&quot;, # The time at which the comment was created (RFC 3339 date-time).
      &quot;deleted&quot;: True or False, # Whether the comment has been deleted. A deleted comment has no content.
      &quot;htmlContent&quot;: &quot;A String&quot;, # The content of the comment with HTML formatting.
      &quot;id&quot;: &quot;A String&quot;, # The ID of the comment.
      &quot;kind&quot;: &quot;drive#comment&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;drive#comment&quot;.
      &quot;modifiedTime&quot;: &quot;A String&quot;, # The last time the comment or any of its replies was modified (RFC 3339 date-time).
      &quot;quotedFileContent&quot;: { # The file content to which the comment refers, typically within the anchor region. For a text file, for example, this would be the text at the location of the comment.
        &quot;mimeType&quot;: &quot;A String&quot;, # The MIME type of the quoted content.
        &quot;value&quot;: &quot;A String&quot;, # The quoted content itself. This is interpreted as plain text if set through the API.
      },
      &quot;replies&quot;: [ # The full list of replies to the comment in chronological order.
        { # A reply to a comment on a file.
          &quot;action&quot;: &quot;A String&quot;, # The action the reply performed to the parent comment. Valid values are:
              # - resolve
              # - reopen
          &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. This may not be present in certain contexts if the user has not made their email address visible to the requester.
            &quot;kind&quot;: &quot;drive#user&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;drive#user&quot;.
            &quot;me&quot;: True or False, # Whether this user is the requesting user.
            &quot;permissionId&quot;: &quot;A String&quot;, # The user&#x27;s ID as visible in Permission resources.
            &quot;photoLink&quot;: &quot;A String&quot;, # A link to the user&#x27;s profile photo, if available.
          },
          &quot;content&quot;: &quot;A String&quot;, # The plain text content of the reply. This field is used for setting the content, while htmlContent should be displayed. This is required on creates if no action is specified.
          &quot;createdTime&quot;: &quot;A String&quot;, # The time at which the reply was created (RFC 3339 date-time).
          &quot;deleted&quot;: True or False, # Whether the reply has been deleted. A deleted reply has no content.
          &quot;htmlContent&quot;: &quot;A String&quot;, # The content of the reply with HTML formatting.
          &quot;id&quot;: &quot;A String&quot;, # The ID of the reply.
          &quot;kind&quot;: &quot;drive#reply&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;drive#reply&quot;.
          &quot;modifiedTime&quot;: &quot;A String&quot;, # The last time the reply was modified (RFC 3339 date-time).
        },
      ],
      &quot;resolved&quot;: True or False, # Whether the comment has been resolved by one of its replies.
    }</pre>
</div>

</body></html>