<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="cloudsupport_v2beta.html">Google Cloud Support API</a> . <a href="cloudsupport_v2beta.cases.html">cases</a> . <a href="cloudsupport_v2beta.cases.comments.html">comments</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(parent, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Add a new comment to the specified Case.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Retrieve all Comments associated with the Case object.</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>
<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(parent, body=None, x__xgafv=None)</code>
  <pre>Add a new comment to the specified Case.

Args:
  parent: string, Required. The resource name of Case to which this comment should be added. (required)
  body: object, The request body.
    The object takes the form of:

{ # A comment associated with a support case.
  &quot;body&quot;: &quot;A String&quot;, # The full comment body. Maximum of 120000 characters. This can contain rich text syntax.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time when this comment was created.
  &quot;creator&quot;: { # An object containing information about the effective user and authenticated principal responsible for an action. # Output only. The user or Google Support agent created this comment.
    &quot;displayName&quot;: &quot;A String&quot;, # The name to display for the actor. If not provided, it is inferred from credentials supplied during case creation. When an email is provided, a display name must also be provided. This will be obfuscated if the user is a Google Support agent.
    &quot;email&quot;: &quot;A String&quot;, # The email address of the actor. If not provided, it is inferred from credentials supplied during case creation. If the authenticated principal does not have an email address, one must be provided. When a name is provided, an email must also be provided. This will be obfuscated if the user is a Google Support agent.
    &quot;googleSupport&quot;: True or False, # Output only. Whether the actor is a Google support actor.
    &quot;principalId&quot;: &quot;A String&quot;, # Output only. An ID representing the user that was authenticated when the corresponding action was taken. This will be an email address, if one is available, or some other unique ID. See https://cloud.google.com/docs/authentication for more information on types of authentication.
  },
  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name for the comment.
  &quot;plainTextBody&quot;: &quot;A String&quot;, # Output only. An automatically generated plain text version of body with all rich text syntax stripped.
}

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

Returns:
  An object of the form:

    { # A comment associated with a support case.
  &quot;body&quot;: &quot;A String&quot;, # The full comment body. Maximum of 120000 characters. This can contain rich text syntax.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time when this comment was created.
  &quot;creator&quot;: { # An object containing information about the effective user and authenticated principal responsible for an action. # Output only. The user or Google Support agent created this comment.
    &quot;displayName&quot;: &quot;A String&quot;, # The name to display for the actor. If not provided, it is inferred from credentials supplied during case creation. When an email is provided, a display name must also be provided. This will be obfuscated if the user is a Google Support agent.
    &quot;email&quot;: &quot;A String&quot;, # The email address of the actor. If not provided, it is inferred from credentials supplied during case creation. If the authenticated principal does not have an email address, one must be provided. When a name is provided, an email must also be provided. This will be obfuscated if the user is a Google Support agent.
    &quot;googleSupport&quot;: True or False, # Output only. Whether the actor is a Google support actor.
    &quot;principalId&quot;: &quot;A String&quot;, # Output only. An ID representing the user that was authenticated when the corresponding action was taken. This will be an email address, if one is available, or some other unique ID. See https://cloud.google.com/docs/authentication for more information on types of authentication.
  },
  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name for the comment.
  &quot;plainTextBody&quot;: &quot;A String&quot;, # Output only. An automatically generated plain text version of body with all rich text syntax stripped.
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Retrieve all Comments associated with the Case object.

Args:
  parent: string, Required. The resource name of Case object for which comments should be listed. (required)
  pageSize: integer, The maximum number of comments fetched with each request. Defaults to 10.
  pageToken: string, A token identifying the page of results to return. If unspecified, the first page is retrieved.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The response message for the ListComments endpoint.
  &quot;comments&quot;: [ # The list of Comments associated with the given Case.
    { # A comment associated with a support case.
      &quot;body&quot;: &quot;A String&quot;, # The full comment body. Maximum of 120000 characters. This can contain rich text syntax.
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time when this comment was created.
      &quot;creator&quot;: { # An object containing information about the effective user and authenticated principal responsible for an action. # Output only. The user or Google Support agent created this comment.
        &quot;displayName&quot;: &quot;A String&quot;, # The name to display for the actor. If not provided, it is inferred from credentials supplied during case creation. When an email is provided, a display name must also be provided. This will be obfuscated if the user is a Google Support agent.
        &quot;email&quot;: &quot;A String&quot;, # The email address of the actor. If not provided, it is inferred from credentials supplied during case creation. If the authenticated principal does not have an email address, one must be provided. When a name is provided, an email must also be provided. This will be obfuscated if the user is a Google Support agent.
        &quot;googleSupport&quot;: True or False, # Output only. Whether the actor is a Google support actor.
        &quot;principalId&quot;: &quot;A String&quot;, # Output only. An ID representing the user that was authenticated when the corresponding action was taken. This will be an email address, if one is available, or some other unique ID. See https://cloud.google.com/docs/authentication for more information on types of authentication.
      },
      &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name for the comment.
      &quot;plainTextBody&quot;: &quot;A String&quot;, # Output only. An automatically generated plain text version of body with all rich text syntax stripped.
    },
  ],
  &quot;nextPageToken&quot;: &quot;A String&quot;, # A token to retrieve the next page of results. This should be set in the `page_token` field of subsequent `ListCommentsRequest` message that is issued. If unspecified, there are no more results to retrieve.
}</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>

</body></html>