<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)</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, pageToken=None, updatedMin=None, maxResults=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)</a></code></p>
<p class="firstline">Updates an existing comment. This method supports patch semantics.</p>
<p class="toc_element">
  <code><a href="#update">update(fileId, commentId, body)</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 JSON representation of a comment on a file in Google Drive.
      "status": "A String", # The status of this comment. Status can be changed by posting a reply to a comment with the desired status.
          # - "open" - The comment is still open.
          # - "resolved" - The comment has been resolved by one of its replies.
      "selfLink": "A String", # A link back to this comment.
      "kind": "drive#comment", # This is always drive#comment.
      "author": { # The JSON template for a user. # The user who wrote this comment.
        "picture": { # The user's profile picture.
          "url": "A String", # A URL that points to a profile picture of this user.
        },
        "kind": "drive#user", # This is always drive#user.
        "displayName": "A String", # A plain text displayable name for this user.
        "permissionId": "A String", # The user's ID as visible in the permissions collection.
        "isAuthenticatedUser": True or False, # Whether this user is the same as the authenticated user for whom the request was made.
        "emailAddress": "A String", # The email address of the user.
      },
      "deleted": 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.
      "replies": [ # Replies to this post.
        { # A JSON representation of a reply to a comment on a file in Google Drive.
          "kind": "drive#commentReply", # This is always drive#commentReply.
          "author": { # The JSON template for a user. # The user who wrote this reply.
            "picture": { # The user's profile picture.
              "url": "A String", # A URL that points to a profile picture of this user.
            },
            "kind": "drive#user", # This is always drive#user.
            "displayName": "A String", # A plain text displayable name for this user.
            "permissionId": "A String", # The user's ID as visible in the permissions collection.
            "isAuthenticatedUser": True or False, # Whether this user is the same as the authenticated user for whom the request was made.
            "emailAddress": "A String", # The email address of the user.
          },
          "deleted": 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.
          "htmlContent": "A String", # HTML formatted content for this reply.
          "content": "A String", # 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's content. This field is required on inserts if no verb is specified (resolve/reopen).
          "verb": "A String", # 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:
              # - "resolve" - To resolve a comment.
              # - "reopen" - To reopen (un-resolve) a comment.
          "replyId": "A String", # The ID of the reply.
          "modifiedDate": "A String", # The date when this reply was last modified.
          "createdDate": "A String", # The date when this reply was first created.
        },
      ],
      "htmlContent": "A String", # HTML formatted content for this comment.
      "content": "A String", # 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's content.
      "modifiedDate": "A String", # The date when this comment or any of its replies were last modified.
      "context": { # The context of the file which is being commented on.
        "type": "A String", # The MIME type of the context snippet.
        "value": "A String", # 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.
      },
      "createdDate": "A String", # The date when this comment was first created.
      "commentId": "A String", # The ID of the comment.
      "anchor": "A String", # A region of the document represented as a JSON string. See anchor documentation for details on how to define and interpret anchor properties.
      "fileTitle": "A String", # The title of the file which this comment is addressing.
      "fileId": "A String", # The file which this comment is addressing.
    }</pre>
</div>

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

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

{ # A JSON representation of a comment on a file in Google Drive.
    "status": "A String", # The status of this comment. Status can be changed by posting a reply to a comment with the desired status.
        # - "open" - The comment is still open.
        # - "resolved" - The comment has been resolved by one of its replies.
    "selfLink": "A String", # A link back to this comment.
    "kind": "drive#comment", # This is always drive#comment.
    "author": { # The JSON template for a user. # The user who wrote this comment.
      "picture": { # The user's profile picture.
        "url": "A String", # A URL that points to a profile picture of this user.
      },
      "kind": "drive#user", # This is always drive#user.
      "displayName": "A String", # A plain text displayable name for this user.
      "permissionId": "A String", # The user's ID as visible in the permissions collection.
      "isAuthenticatedUser": True or False, # Whether this user is the same as the authenticated user for whom the request was made.
      "emailAddress": "A String", # The email address of the user.
    },
    "deleted": 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.
    "replies": [ # Replies to this post.
      { # A JSON representation of a reply to a comment on a file in Google Drive.
        "kind": "drive#commentReply", # This is always drive#commentReply.
        "author": { # The JSON template for a user. # The user who wrote this reply.
          "picture": { # The user's profile picture.
            "url": "A String", # A URL that points to a profile picture of this user.
          },
          "kind": "drive#user", # This is always drive#user.
          "displayName": "A String", # A plain text displayable name for this user.
          "permissionId": "A String", # The user's ID as visible in the permissions collection.
          "isAuthenticatedUser": True or False, # Whether this user is the same as the authenticated user for whom the request was made.
          "emailAddress": "A String", # The email address of the user.
        },
        "deleted": 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.
        "htmlContent": "A String", # HTML formatted content for this reply.
        "content": "A String", # 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's content. This field is required on inserts if no verb is specified (resolve/reopen).
        "verb": "A String", # 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:
            # - "resolve" - To resolve a comment.
            # - "reopen" - To reopen (un-resolve) a comment.
        "replyId": "A String", # The ID of the reply.
        "modifiedDate": "A String", # The date when this reply was last modified.
        "createdDate": "A String", # The date when this reply was first created.
      },
    ],
    "htmlContent": "A String", # HTML formatted content for this comment.
    "content": "A String", # 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's content.
    "modifiedDate": "A String", # The date when this comment or any of its replies were last modified.
    "context": { # The context of the file which is being commented on.
      "type": "A String", # The MIME type of the context snippet.
      "value": "A String", # 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.
    },
    "createdDate": "A String", # The date when this comment was first created.
    "commentId": "A String", # The ID of the comment.
    "anchor": "A String", # A region of the document represented as a JSON string. See anchor documentation for details on how to define and interpret anchor properties.
    "fileTitle": "A String", # The title of the file which this comment is addressing.
    "fileId": "A String", # The file which this comment is addressing.
  }


Returns:
  An object of the form:

    { # A JSON representation of a comment on a file in Google Drive.
      "status": "A String", # The status of this comment. Status can be changed by posting a reply to a comment with the desired status.
          # - "open" - The comment is still open.
          # - "resolved" - The comment has been resolved by one of its replies.
      "selfLink": "A String", # A link back to this comment.
      "kind": "drive#comment", # This is always drive#comment.
      "author": { # The JSON template for a user. # The user who wrote this comment.
        "picture": { # The user's profile picture.
          "url": "A String", # A URL that points to a profile picture of this user.
        },
        "kind": "drive#user", # This is always drive#user.
        "displayName": "A String", # A plain text displayable name for this user.
        "permissionId": "A String", # The user's ID as visible in the permissions collection.
        "isAuthenticatedUser": True or False, # Whether this user is the same as the authenticated user for whom the request was made.
        "emailAddress": "A String", # The email address of the user.
      },
      "deleted": 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.
      "replies": [ # Replies to this post.
        { # A JSON representation of a reply to a comment on a file in Google Drive.
          "kind": "drive#commentReply", # This is always drive#commentReply.
          "author": { # The JSON template for a user. # The user who wrote this reply.
            "picture": { # The user's profile picture.
              "url": "A String", # A URL that points to a profile picture of this user.
            },
            "kind": "drive#user", # This is always drive#user.
            "displayName": "A String", # A plain text displayable name for this user.
            "permissionId": "A String", # The user's ID as visible in the permissions collection.
            "isAuthenticatedUser": True or False, # Whether this user is the same as the authenticated user for whom the request was made.
            "emailAddress": "A String", # The email address of the user.
          },
          "deleted": 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.
          "htmlContent": "A String", # HTML formatted content for this reply.
          "content": "A String", # 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's content. This field is required on inserts if no verb is specified (resolve/reopen).
          "verb": "A String", # 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:
              # - "resolve" - To resolve a comment.
              # - "reopen" - To reopen (un-resolve) a comment.
          "replyId": "A String", # The ID of the reply.
          "modifiedDate": "A String", # The date when this reply was last modified.
          "createdDate": "A String", # The date when this reply was first created.
        },
      ],
      "htmlContent": "A String", # HTML formatted content for this comment.
      "content": "A String", # 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's content.
      "modifiedDate": "A String", # The date when this comment or any of its replies were last modified.
      "context": { # The context of the file which is being commented on.
        "type": "A String", # The MIME type of the context snippet.
        "value": "A String", # 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.
      },
      "createdDate": "A String", # The date when this comment was first created.
      "commentId": "A String", # The ID of the comment.
      "anchor": "A String", # A region of the document represented as a JSON string. See anchor documentation for details on how to define and interpret anchor properties.
      "fileTitle": "A String", # The title of the file which this comment is addressing.
      "fileId": "A String", # The file which this comment is addressing.
    }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(fileId, includeDeleted=None, pageToken=None, updatedMin=None, maxResults=None)</code>
  <pre>Lists a file'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.
  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 "nextPageToken" from the previous response.
  updatedMin: string, Only discussions that were updated after this timestamp will be returned. Formatted as an RFC 3339 timestamp.
  maxResults: integer, The maximum number of discussions to include in the response, used for paging.

Returns:
  An object of the form:

    { # A JSON representation of a list of comments on a file in Google Drive.
    "nextPageToken": "A String", # The token to use to request the next page of results.
    "items": [ # List of comments.
      { # A JSON representation of a comment on a file in Google Drive.
          "status": "A String", # The status of this comment. Status can be changed by posting a reply to a comment with the desired status.
              # - "open" - The comment is still open.
              # - "resolved" - The comment has been resolved by one of its replies.
          "selfLink": "A String", # A link back to this comment.
          "kind": "drive#comment", # This is always drive#comment.
          "author": { # The JSON template for a user. # The user who wrote this comment.
            "picture": { # The user's profile picture.
              "url": "A String", # A URL that points to a profile picture of this user.
            },
            "kind": "drive#user", # This is always drive#user.
            "displayName": "A String", # A plain text displayable name for this user.
            "permissionId": "A String", # The user's ID as visible in the permissions collection.
            "isAuthenticatedUser": True or False, # Whether this user is the same as the authenticated user for whom the request was made.
            "emailAddress": "A String", # The email address of the user.
          },
          "deleted": 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.
          "replies": [ # Replies to this post.
            { # A JSON representation of a reply to a comment on a file in Google Drive.
              "kind": "drive#commentReply", # This is always drive#commentReply.
              "author": { # The JSON template for a user. # The user who wrote this reply.
                "picture": { # The user's profile picture.
                  "url": "A String", # A URL that points to a profile picture of this user.
                },
                "kind": "drive#user", # This is always drive#user.
                "displayName": "A String", # A plain text displayable name for this user.
                "permissionId": "A String", # The user's ID as visible in the permissions collection.
                "isAuthenticatedUser": True or False, # Whether this user is the same as the authenticated user for whom the request was made.
                "emailAddress": "A String", # The email address of the user.
              },
              "deleted": 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.
              "htmlContent": "A String", # HTML formatted content for this reply.
              "content": "A String", # 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's content. This field is required on inserts if no verb is specified (resolve/reopen).
              "verb": "A String", # 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:
                  # - "resolve" - To resolve a comment.
                  # - "reopen" - To reopen (un-resolve) a comment.
              "replyId": "A String", # The ID of the reply.
              "modifiedDate": "A String", # The date when this reply was last modified.
              "createdDate": "A String", # The date when this reply was first created.
            },
          ],
          "htmlContent": "A String", # HTML formatted content for this comment.
          "content": "A String", # 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's content.
          "modifiedDate": "A String", # The date when this comment or any of its replies were last modified.
          "context": { # The context of the file which is being commented on.
            "type": "A String", # The MIME type of the context snippet.
            "value": "A String", # 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.
          },
          "createdDate": "A String", # The date when this comment was first created.
          "commentId": "A String", # The ID of the comment.
          "anchor": "A String", # A region of the document represented as a JSON string. See anchor documentation for details on how to define and interpret anchor properties.
          "fileTitle": "A String", # The title of the file which this comment is addressing.
          "fileId": "A String", # The file which this comment is addressing.
        },
    ],
    "kind": "drive#commentList", # This is always drive#commentList.
    "selfLink": "A String", # A link back to this list.
    "nextLink": "A String", # A link to the next page of comments.
  }</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 'execute()' 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)</code>
  <pre>Updates an existing comment. This method supports patch semantics.

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

{ # A JSON representation of a comment on a file in Google Drive.
    "status": "A String", # The status of this comment. Status can be changed by posting a reply to a comment with the desired status.
        # - "open" - The comment is still open.
        # - "resolved" - The comment has been resolved by one of its replies.
    "selfLink": "A String", # A link back to this comment.
    "kind": "drive#comment", # This is always drive#comment.
    "author": { # The JSON template for a user. # The user who wrote this comment.
      "picture": { # The user's profile picture.
        "url": "A String", # A URL that points to a profile picture of this user.
      },
      "kind": "drive#user", # This is always drive#user.
      "displayName": "A String", # A plain text displayable name for this user.
      "permissionId": "A String", # The user's ID as visible in the permissions collection.
      "isAuthenticatedUser": True or False, # Whether this user is the same as the authenticated user for whom the request was made.
      "emailAddress": "A String", # The email address of the user.
    },
    "deleted": 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.
    "replies": [ # Replies to this post.
      { # A JSON representation of a reply to a comment on a file in Google Drive.
        "kind": "drive#commentReply", # This is always drive#commentReply.
        "author": { # The JSON template for a user. # The user who wrote this reply.
          "picture": { # The user's profile picture.
            "url": "A String", # A URL that points to a profile picture of this user.
          },
          "kind": "drive#user", # This is always drive#user.
          "displayName": "A String", # A plain text displayable name for this user.
          "permissionId": "A String", # The user's ID as visible in the permissions collection.
          "isAuthenticatedUser": True or False, # Whether this user is the same as the authenticated user for whom the request was made.
          "emailAddress": "A String", # The email address of the user.
        },
        "deleted": 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.
        "htmlContent": "A String", # HTML formatted content for this reply.
        "content": "A String", # 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's content. This field is required on inserts if no verb is specified (resolve/reopen).
        "verb": "A String", # 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:
            # - "resolve" - To resolve a comment.
            # - "reopen" - To reopen (un-resolve) a comment.
        "replyId": "A String", # The ID of the reply.
        "modifiedDate": "A String", # The date when this reply was last modified.
        "createdDate": "A String", # The date when this reply was first created.
      },
    ],
    "htmlContent": "A String", # HTML formatted content for this comment.
    "content": "A String", # 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's content.
    "modifiedDate": "A String", # The date when this comment or any of its replies were last modified.
    "context": { # The context of the file which is being commented on.
      "type": "A String", # The MIME type of the context snippet.
      "value": "A String", # 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.
    },
    "createdDate": "A String", # The date when this comment was first created.
    "commentId": "A String", # The ID of the comment.
    "anchor": "A String", # A region of the document represented as a JSON string. See anchor documentation for details on how to define and interpret anchor properties.
    "fileTitle": "A String", # The title of the file which this comment is addressing.
    "fileId": "A String", # The file which this comment is addressing.
  }


Returns:
  An object of the form:

    { # A JSON representation of a comment on a file in Google Drive.
      "status": "A String", # The status of this comment. Status can be changed by posting a reply to a comment with the desired status.
          # - "open" - The comment is still open.
          # - "resolved" - The comment has been resolved by one of its replies.
      "selfLink": "A String", # A link back to this comment.
      "kind": "drive#comment", # This is always drive#comment.
      "author": { # The JSON template for a user. # The user who wrote this comment.
        "picture": { # The user's profile picture.
          "url": "A String", # A URL that points to a profile picture of this user.
        },
        "kind": "drive#user", # This is always drive#user.
        "displayName": "A String", # A plain text displayable name for this user.
        "permissionId": "A String", # The user's ID as visible in the permissions collection.
        "isAuthenticatedUser": True or False, # Whether this user is the same as the authenticated user for whom the request was made.
        "emailAddress": "A String", # The email address of the user.
      },
      "deleted": 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.
      "replies": [ # Replies to this post.
        { # A JSON representation of a reply to a comment on a file in Google Drive.
          "kind": "drive#commentReply", # This is always drive#commentReply.
          "author": { # The JSON template for a user. # The user who wrote this reply.
            "picture": { # The user's profile picture.
              "url": "A String", # A URL that points to a profile picture of this user.
            },
            "kind": "drive#user", # This is always drive#user.
            "displayName": "A String", # A plain text displayable name for this user.
            "permissionId": "A String", # The user's ID as visible in the permissions collection.
            "isAuthenticatedUser": True or False, # Whether this user is the same as the authenticated user for whom the request was made.
            "emailAddress": "A String", # The email address of the user.
          },
          "deleted": 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.
          "htmlContent": "A String", # HTML formatted content for this reply.
          "content": "A String", # 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's content. This field is required on inserts if no verb is specified (resolve/reopen).
          "verb": "A String", # 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:
              # - "resolve" - To resolve a comment.
              # - "reopen" - To reopen (un-resolve) a comment.
          "replyId": "A String", # The ID of the reply.
          "modifiedDate": "A String", # The date when this reply was last modified.
          "createdDate": "A String", # The date when this reply was first created.
        },
      ],
      "htmlContent": "A String", # HTML formatted content for this comment.
      "content": "A String", # 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's content.
      "modifiedDate": "A String", # The date when this comment or any of its replies were last modified.
      "context": { # The context of the file which is being commented on.
        "type": "A String", # The MIME type of the context snippet.
        "value": "A String", # 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.
      },
      "createdDate": "A String", # The date when this comment was first created.
      "commentId": "A String", # The ID of the comment.
      "anchor": "A String", # A region of the document represented as a JSON string. See anchor documentation for details on how to define and interpret anchor properties.
      "fileTitle": "A String", # The title of the file which this comment is addressing.
      "fileId": "A String", # The file which this comment is addressing.
    }</pre>
</div>

<div class="method">
    <code class="details" id="update">update(fileId, commentId, body)</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. (required)
    The object takes the form of:

{ # A JSON representation of a comment on a file in Google Drive.
    "status": "A String", # The status of this comment. Status can be changed by posting a reply to a comment with the desired status.
        # - "open" - The comment is still open.
        # - "resolved" - The comment has been resolved by one of its replies.
    "selfLink": "A String", # A link back to this comment.
    "kind": "drive#comment", # This is always drive#comment.
    "author": { # The JSON template for a user. # The user who wrote this comment.
      "picture": { # The user's profile picture.
        "url": "A String", # A URL that points to a profile picture of this user.
      },
      "kind": "drive#user", # This is always drive#user.
      "displayName": "A String", # A plain text displayable name for this user.
      "permissionId": "A String", # The user's ID as visible in the permissions collection.
      "isAuthenticatedUser": True or False, # Whether this user is the same as the authenticated user for whom the request was made.
      "emailAddress": "A String", # The email address of the user.
    },
    "deleted": 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.
    "replies": [ # Replies to this post.
      { # A JSON representation of a reply to a comment on a file in Google Drive.
        "kind": "drive#commentReply", # This is always drive#commentReply.
        "author": { # The JSON template for a user. # The user who wrote this reply.
          "picture": { # The user's profile picture.
            "url": "A String", # A URL that points to a profile picture of this user.
          },
          "kind": "drive#user", # This is always drive#user.
          "displayName": "A String", # A plain text displayable name for this user.
          "permissionId": "A String", # The user's ID as visible in the permissions collection.
          "isAuthenticatedUser": True or False, # Whether this user is the same as the authenticated user for whom the request was made.
          "emailAddress": "A String", # The email address of the user.
        },
        "deleted": 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.
        "htmlContent": "A String", # HTML formatted content for this reply.
        "content": "A String", # 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's content. This field is required on inserts if no verb is specified (resolve/reopen).
        "verb": "A String", # 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:
            # - "resolve" - To resolve a comment.
            # - "reopen" - To reopen (un-resolve) a comment.
        "replyId": "A String", # The ID of the reply.
        "modifiedDate": "A String", # The date when this reply was last modified.
        "createdDate": "A String", # The date when this reply was first created.
      },
    ],
    "htmlContent": "A String", # HTML formatted content for this comment.
    "content": "A String", # 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's content.
    "modifiedDate": "A String", # The date when this comment or any of its replies were last modified.
    "context": { # The context of the file which is being commented on.
      "type": "A String", # The MIME type of the context snippet.
      "value": "A String", # 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.
    },
    "createdDate": "A String", # The date when this comment was first created.
    "commentId": "A String", # The ID of the comment.
    "anchor": "A String", # A region of the document represented as a JSON string. See anchor documentation for details on how to define and interpret anchor properties.
    "fileTitle": "A String", # The title of the file which this comment is addressing.
    "fileId": "A String", # The file which this comment is addressing.
  }


Returns:
  An object of the form:

    { # A JSON representation of a comment on a file in Google Drive.
      "status": "A String", # The status of this comment. Status can be changed by posting a reply to a comment with the desired status.
          # - "open" - The comment is still open.
          # - "resolved" - The comment has been resolved by one of its replies.
      "selfLink": "A String", # A link back to this comment.
      "kind": "drive#comment", # This is always drive#comment.
      "author": { # The JSON template for a user. # The user who wrote this comment.
        "picture": { # The user's profile picture.
          "url": "A String", # A URL that points to a profile picture of this user.
        },
        "kind": "drive#user", # This is always drive#user.
        "displayName": "A String", # A plain text displayable name for this user.
        "permissionId": "A String", # The user's ID as visible in the permissions collection.
        "isAuthenticatedUser": True or False, # Whether this user is the same as the authenticated user for whom the request was made.
        "emailAddress": "A String", # The email address of the user.
      },
      "deleted": 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.
      "replies": [ # Replies to this post.
        { # A JSON representation of a reply to a comment on a file in Google Drive.
          "kind": "drive#commentReply", # This is always drive#commentReply.
          "author": { # The JSON template for a user. # The user who wrote this reply.
            "picture": { # The user's profile picture.
              "url": "A String", # A URL that points to a profile picture of this user.
            },
            "kind": "drive#user", # This is always drive#user.
            "displayName": "A String", # A plain text displayable name for this user.
            "permissionId": "A String", # The user's ID as visible in the permissions collection.
            "isAuthenticatedUser": True or False, # Whether this user is the same as the authenticated user for whom the request was made.
            "emailAddress": "A String", # The email address of the user.
          },
          "deleted": 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.
          "htmlContent": "A String", # HTML formatted content for this reply.
          "content": "A String", # 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's content. This field is required on inserts if no verb is specified (resolve/reopen).
          "verb": "A String", # 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:
              # - "resolve" - To resolve a comment.
              # - "reopen" - To reopen (un-resolve) a comment.
          "replyId": "A String", # The ID of the reply.
          "modifiedDate": "A String", # The date when this reply was last modified.
          "createdDate": "A String", # The date when this reply was first created.
        },
      ],
      "htmlContent": "A String", # HTML formatted content for this comment.
      "content": "A String", # 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's content.
      "modifiedDate": "A String", # The date when this comment or any of its replies were last modified.
      "context": { # The context of the file which is being commented on.
        "type": "A String", # The MIME type of the context snippet.
        "value": "A String", # 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.
      },
      "createdDate": "A String", # The date when this comment was first created.
      "commentId": "A String", # The ID of the comment.
      "anchor": "A String", # A region of the document represented as a JSON string. See anchor documentation for details on how to define and interpret anchor properties.
      "fileTitle": "A String", # The title of the file which this comment is addressing.
      "fileId": "A String", # The file which this comment is addressing.
    }</pre>
</div>

</body></html>