<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.replies.html">replies</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#create">create(fileId, commentId, body)</a></code></p>
<p class="firstline">Creates a new reply to a comment.</p>
<p class="toc_element">
  <code><a href="#delete">delete(fileId, commentId, replyId)</a></code></p>
<p class="firstline">Deletes a reply.</p>
<p class="toc_element">
  <code><a href="#get">get(fileId, commentId, replyId, includeDeleted=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, pageToken=None, pageSize=None)</a></code></p>
<p class="firstline">Lists a comment's replies.</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, replyId, body)</a></code></p>
<p class="firstline">Updates a reply with patch semantics.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="create">create(fileId, commentId, body)</code>
  <pre>Creates a new 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. (required)
    The object takes the form of:

{ # A reply to a comment on a file.
  "kind": "drive#reply", # Identifies what kind of resource this is. Value: the fixed string "drive#reply".
  "modifiedTime": "A String", # The last time the reply was modified (RFC 3339 date-time).
  "author": { # Information about a Drive user. # The user who created the reply.
    "me": True or False, # Whether this user is the requesting user.
    "kind": "drive#user", # Identifies what kind of resource this is. Value: the fixed string "drive#user".
    "displayName": "A String", # A plain text displayable name for this user.
    "permissionId": "A String", # The user's ID as visible in Permission resources.
    "emailAddress": "A String", # 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.
    "photoLink": "A String", # A link to the user's profile photo, if available.
  },
  "deleted": True or False, # Whether the reply has been deleted. A deleted reply has no content.
  "htmlContent": "A String", # The content of the reply with HTML formatting.
  "content": "A String", # 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.
  "createdTime": "A String", # The time at which the reply was created (RFC 3339 date-time).
  "action": "A String", # The action the reply performed to the parent comment. Valid values are:
      # - resolve
      # - reopen
  "id": "A String", # The ID of the reply.
}


Returns:
  An object of the form:

    { # A reply to a comment on a file.
    "kind": "drive#reply", # Identifies what kind of resource this is. Value: the fixed string "drive#reply".
    "modifiedTime": "A String", # The last time the reply was modified (RFC 3339 date-time).
    "author": { # Information about a Drive user. # The user who created the reply.
      "me": True or False, # Whether this user is the requesting user.
      "kind": "drive#user", # Identifies what kind of resource this is. Value: the fixed string "drive#user".
      "displayName": "A String", # A plain text displayable name for this user.
      "permissionId": "A String", # The user's ID as visible in Permission resources.
      "emailAddress": "A String", # 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.
      "photoLink": "A String", # A link to the user's profile photo, if available.
    },
    "deleted": True or False, # Whether the reply has been deleted. A deleted reply has no content.
    "htmlContent": "A String", # The content of the reply with HTML formatting.
    "content": "A String", # 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.
    "createdTime": "A String", # The time at which the reply was created (RFC 3339 date-time).
    "action": "A String", # The action the reply performed to the parent comment. Valid values are:
        # - resolve
        # - reopen
    "id": "A String", # The ID of the reply.
  }</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(fileId, commentId, replyId)</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)
</pre>
</div>

<div class="method">
    <code class="details" id="get">get(fileId, commentId, replyId, includeDeleted=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.

Returns:
  An object of the form:

    { # A reply to a comment on a file.
    "kind": "drive#reply", # Identifies what kind of resource this is. Value: the fixed string "drive#reply".
    "modifiedTime": "A String", # The last time the reply was modified (RFC 3339 date-time).
    "author": { # Information about a Drive user. # The user who created the reply.
      "me": True or False, # Whether this user is the requesting user.
      "kind": "drive#user", # Identifies what kind of resource this is. Value: the fixed string "drive#user".
      "displayName": "A String", # A plain text displayable name for this user.
      "permissionId": "A String", # The user's ID as visible in Permission resources.
      "emailAddress": "A String", # 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.
      "photoLink": "A String", # A link to the user's profile photo, if available.
    },
    "deleted": True or False, # Whether the reply has been deleted. A deleted reply has no content.
    "htmlContent": "A String", # The content of the reply with HTML formatting.
    "content": "A String", # 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.
    "createdTime": "A String", # The time at which the reply was created (RFC 3339 date-time).
    "action": "A String", # The action the reply performed to the parent comment. Valid values are:
        # - resolve
        # - reopen
    "id": "A String", # The ID of the reply.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(fileId, commentId, includeDeleted=None, pageToken=None, pageSize=None)</code>
  <pre>Lists a comment'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.
  pageToken: string, The token for continuing a previous list request on the next page. This should be set to the value of 'nextPageToken' from the previous response.
  pageSize: integer, The maximum number of replies to return per page.

Returns:
  An object of the form:

    { # A list of replies to a comment on a file.
    "nextPageToken": "A String", # 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.
    "kind": "drive#replyList", # Identifies what kind of resource this is. Value: the fixed string "drive#replyList".
    "replies": [ # 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.
        "kind": "drive#reply", # Identifies what kind of resource this is. Value: the fixed string "drive#reply".
        "modifiedTime": "A String", # The last time the reply was modified (RFC 3339 date-time).
        "author": { # Information about a Drive user. # The user who created the reply.
          "me": True or False, # Whether this user is the requesting user.
          "kind": "drive#user", # Identifies what kind of resource this is. Value: the fixed string "drive#user".
          "displayName": "A String", # A plain text displayable name for this user.
          "permissionId": "A String", # The user's ID as visible in Permission resources.
          "emailAddress": "A String", # 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.
          "photoLink": "A String", # A link to the user's profile photo, if available.
        },
        "deleted": True or False, # Whether the reply has been deleted. A deleted reply has no content.
        "htmlContent": "A String", # The content of the reply with HTML formatting.
        "content": "A String", # 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.
        "createdTime": "A String", # The time at which the reply was created (RFC 3339 date-time).
        "action": "A String", # The action the reply performed to the parent comment. Valid values are:
            # - resolve
            # - reopen
        "id": "A String", # The ID of the reply.
      },
    ],
  }</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="update">update(fileId, commentId, replyId, body)</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. (required)
    The object takes the form of:

{ # A reply to a comment on a file.
  "kind": "drive#reply", # Identifies what kind of resource this is. Value: the fixed string "drive#reply".
  "modifiedTime": "A String", # The last time the reply was modified (RFC 3339 date-time).
  "author": { # Information about a Drive user. # The user who created the reply.
    "me": True or False, # Whether this user is the requesting user.
    "kind": "drive#user", # Identifies what kind of resource this is. Value: the fixed string "drive#user".
    "displayName": "A String", # A plain text displayable name for this user.
    "permissionId": "A String", # The user's ID as visible in Permission resources.
    "emailAddress": "A String", # 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.
    "photoLink": "A String", # A link to the user's profile photo, if available.
  },
  "deleted": True or False, # Whether the reply has been deleted. A deleted reply has no content.
  "htmlContent": "A String", # The content of the reply with HTML formatting.
  "content": "A String", # 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.
  "createdTime": "A String", # The time at which the reply was created (RFC 3339 date-time).
  "action": "A String", # The action the reply performed to the parent comment. Valid values are:
      # - resolve
      # - reopen
  "id": "A String", # The ID of the reply.
}


Returns:
  An object of the form:

    { # A reply to a comment on a file.
    "kind": "drive#reply", # Identifies what kind of resource this is. Value: the fixed string "drive#reply".
    "modifiedTime": "A String", # The last time the reply was modified (RFC 3339 date-time).
    "author": { # Information about a Drive user. # The user who created the reply.
      "me": True or False, # Whether this user is the requesting user.
      "kind": "drive#user", # Identifies what kind of resource this is. Value: the fixed string "drive#user".
      "displayName": "A String", # A plain text displayable name for this user.
      "permissionId": "A String", # The user's ID as visible in Permission resources.
      "emailAddress": "A String", # 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.
      "photoLink": "A String", # A link to the user's profile photo, if available.
    },
    "deleted": True or False, # Whether the reply has been deleted. A deleted reply has no content.
    "htmlContent": "A String", # The content of the reply with HTML formatting.
    "content": "A String", # 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.
    "createdTime": "A String", # The time at which the reply was created (RFC 3339 date-time).
    "action": "A String", # The action the reply performed to the parent comment. Valid values are:
        # - resolve
        # - reopen
    "id": "A String", # The ID of the reply.
  }</pre>
</div>

</body></html>