<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">Google Drive API</a> . <a href="drive_v3.replies.html">replies</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#create">create(fileId, commentId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a reply to a comment.</p>
<p class="toc_element">
  <code><a href="#delete">delete(fileId, commentId, replyId, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes a reply.</p>
<p class="toc_element">
  <code><a href="#get">get(fileId, commentId, replyId, includeDeleted=None, x__xgafv=None)</a></code></p>
<p class="firstline">Gets a reply by ID.</p>
<p class="toc_element">
  <code><a href="#list">list(fileId, commentId, includeDeleted=None, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists a comment's replies.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next()</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#update">update(fileId, commentId, replyId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates a reply with patch semantics.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="create">create(fileId, commentId, body=None, x__xgafv=None)</code>
  <pre>Creates a reply to a 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 reply to a comment on a file. Some resource methods (such as `replies.update`) require a `replyId`. Use the `replies.list` method to retrieve the ID for a reply.
  &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. # Output only. 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;, # Output only. A plain text displayable name for this user.
    &quot;emailAddress&quot;: &quot;A String&quot;, # Output only. 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;, # Output only. Identifies what kind of resource this is. Value: the fixed string `&quot;drive#user&quot;`.
    &quot;me&quot;: True or False, # Output only. Whether this user is the requesting user.
    &quot;permissionId&quot;: &quot;A String&quot;, # Output only. The user&#x27;s ID as visible in Permission resources.
    &quot;photoLink&quot;: &quot;A String&quot;, # Output only. 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, # Output only. Whether the reply has been deleted. A deleted reply has no content.
  &quot;htmlContent&quot;: &quot;A String&quot;, # Output only. The content of the reply with HTML formatting.
  &quot;id&quot;: &quot;A String&quot;, # Output only. The ID of the reply.
  &quot;kind&quot;: &quot;drive#reply&quot;, # Output only. 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).
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A reply to a comment on a file. Some resource methods (such as `replies.update`) require a `replyId`. Use the `replies.list` method to retrieve the ID for a reply.
  &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. # Output only. 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;, # Output only. A plain text displayable name for this user.
    &quot;emailAddress&quot;: &quot;A String&quot;, # Output only. 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;, # Output only. Identifies what kind of resource this is. Value: the fixed string `&quot;drive#user&quot;`.
    &quot;me&quot;: True or False, # Output only. Whether this user is the requesting user.
    &quot;permissionId&quot;: &quot;A String&quot;, # Output only. The user&#x27;s ID as visible in Permission resources.
    &quot;photoLink&quot;: &quot;A String&quot;, # Output only. 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, # Output only. Whether the reply has been deleted. A deleted reply has no content.
  &quot;htmlContent&quot;: &quot;A String&quot;, # Output only. The content of the reply with HTML formatting.
  &quot;id&quot;: &quot;A String&quot;, # Output only. The ID of the reply.
  &quot;kind&quot;: &quot;drive#reply&quot;, # Output only. 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).
}</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(fileId, commentId, replyId, x__xgafv=None)</code>
  <pre>Deletes a reply.

Args:
  fileId: string, The ID of the file. (required)
  commentId: string, The ID of the comment. (required)
  replyId: string, The ID of the reply. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format
</pre>
</div>

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

Args:
  fileId: string, The ID of the file. (required)
  commentId: string, The ID of the comment. (required)
  replyId: string, The ID of the reply. (required)
  includeDeleted: boolean, Whether to return deleted replies. Deleted replies will not include their original content.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A reply to a comment on a file. Some resource methods (such as `replies.update`) require a `replyId`. Use the `replies.list` method to retrieve the ID for a reply.
  &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. # Output only. 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;, # Output only. A plain text displayable name for this user.
    &quot;emailAddress&quot;: &quot;A String&quot;, # Output only. 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;, # Output only. Identifies what kind of resource this is. Value: the fixed string `&quot;drive#user&quot;`.
    &quot;me&quot;: True or False, # Output only. Whether this user is the requesting user.
    &quot;permissionId&quot;: &quot;A String&quot;, # Output only. The user&#x27;s ID as visible in Permission resources.
    &quot;photoLink&quot;: &quot;A String&quot;, # Output only. 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, # Output only. Whether the reply has been deleted. A deleted reply has no content.
  &quot;htmlContent&quot;: &quot;A String&quot;, # Output only. The content of the reply with HTML formatting.
  &quot;id&quot;: &quot;A String&quot;, # Output only. The ID of the reply.
  &quot;kind&quot;: &quot;drive#reply&quot;, # Output only. 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).
}</pre>
</div>

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

Args:
  fileId: string, The ID of the file. (required)
  commentId: string, The ID of the comment. (required)
  includeDeleted: boolean, Whether to include deleted replies. Deleted replies will not include their original content.
  pageSize: integer, The maximum number of replies 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.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A list of replies to a comment on a file.
  &quot;kind&quot;: &quot;drive#replyList&quot;, # Identifies what kind of resource this is. Value: the fixed string `&quot;drive#replyList&quot;`.
  &quot;nextPageToken&quot;: &quot;A String&quot;, # The page token for the next page of replies. This will be absent if the end of the replies 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. The page token is typically valid for several hours. However, if new items are added or removed, your expected results might differ.
  &quot;replies&quot;: [ # The list of replies. If nextPageToken is populated, then this list may be incomplete and an additional page of results should be fetched.
    { # A reply to a comment on a file. Some resource methods (such as `replies.update`) require a `replyId`. Use the `replies.list` method to retrieve the ID for a reply.
      &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. # Output only. 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;, # Output only. A plain text displayable name for this user.
        &quot;emailAddress&quot;: &quot;A String&quot;, # Output only. 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;, # Output only. Identifies what kind of resource this is. Value: the fixed string `&quot;drive#user&quot;`.
        &quot;me&quot;: True or False, # Output only. Whether this user is the requesting user.
        &quot;permissionId&quot;: &quot;A String&quot;, # Output only. The user&#x27;s ID as visible in Permission resources.
        &quot;photoLink&quot;: &quot;A String&quot;, # Output only. 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, # Output only. Whether the reply has been deleted. A deleted reply has no content.
      &quot;htmlContent&quot;: &quot;A String&quot;, # Output only. The content of the reply with HTML formatting.
      &quot;id&quot;: &quot;A String&quot;, # Output only. The ID of the reply.
      &quot;kind&quot;: &quot;drive#reply&quot;, # Output only. 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).
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next()</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, replyId, body=None, x__xgafv=None)</code>
  <pre>Updates a reply with patch semantics.

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

{ # A reply to a comment on a file. Some resource methods (such as `replies.update`) require a `replyId`. Use the `replies.list` method to retrieve the ID for a reply.
  &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. # Output only. 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;, # Output only. A plain text displayable name for this user.
    &quot;emailAddress&quot;: &quot;A String&quot;, # Output only. 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;, # Output only. Identifies what kind of resource this is. Value: the fixed string `&quot;drive#user&quot;`.
    &quot;me&quot;: True or False, # Output only. Whether this user is the requesting user.
    &quot;permissionId&quot;: &quot;A String&quot;, # Output only. The user&#x27;s ID as visible in Permission resources.
    &quot;photoLink&quot;: &quot;A String&quot;, # Output only. 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, # Output only. Whether the reply has been deleted. A deleted reply has no content.
  &quot;htmlContent&quot;: &quot;A String&quot;, # Output only. The content of the reply with HTML formatting.
  &quot;id&quot;: &quot;A String&quot;, # Output only. The ID of the reply.
  &quot;kind&quot;: &quot;drive#reply&quot;, # Output only. 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).
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A reply to a comment on a file. Some resource methods (such as `replies.update`) require a `replyId`. Use the `replies.list` method to retrieve the ID for a reply.
  &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. # Output only. 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;, # Output only. A plain text displayable name for this user.
    &quot;emailAddress&quot;: &quot;A String&quot;, # Output only. 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;, # Output only. Identifies what kind of resource this is. Value: the fixed string `&quot;drive#user&quot;`.
    &quot;me&quot;: True or False, # Output only. Whether this user is the requesting user.
    &quot;permissionId&quot;: &quot;A String&quot;, # Output only. The user&#x27;s ID as visible in Permission resources.
    &quot;photoLink&quot;: &quot;A String&quot;, # Output only. 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, # Output only. Whether the reply has been deleted. A deleted reply has no content.
  &quot;htmlContent&quot;: &quot;A String&quot;, # Output only. The content of the reply with HTML formatting.
  &quot;id&quot;: &quot;A String&quot;, # Output only. The ID of the reply.
  &quot;kind&quot;: &quot;drive#reply&quot;, # Output only. 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).
}</pre>
</div>

</body></html>