<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_v2.html">Google Cloud Support API</a> . <a href="cloudsupport_v2.cases.html">cases</a> . <a href="cloudsupport_v2.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 a case. The comment must have the following fields set: `body`. EXAMPLES: cURL: ```shell case="projects/some-project/cases/43591344" curl \ --request POST \ --header "Authorization: Bearer $(gcloud auth print-access-token)" \ --header 'Content-Type: application/json' \ --data '{ "body": "This is a test comment." }' \ "https://cloudsupport.googleapis.com/v2/$case/comments" ``` Python: ```python import googleapiclient.discovery api_version = "v2" supportApiService = googleapiclient.discovery.build( serviceName="cloudsupport", version=api_version, discoveryServiceUrl=f"https://cloudsupport.googleapis.com/$discovery/rest?version={api_version}", ) request = ( supportApiService.cases() .comments() .create( parent="projects/some-project/cases/43595344", body={"body": "This is a test comment."}, ) ) print(request.execute()) ```</p>
<p class="toc_element">
  <code><a href="#list">list(parent, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">List all the comments associated with a case. EXAMPLES: cURL: ```shell case="projects/some-project/cases/43595344" curl \ --header "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://cloudsupport.googleapis.com/v2/$case/comments" ``` Python: ```python import googleapiclient.discovery api_version = "v2" supportApiService = googleapiclient.discovery.build( serviceName="cloudsupport", version=api_version, discoveryServiceUrl=f"https://cloudsupport.googleapis.com/$discovery/rest?version={api_version}", ) request = ( supportApiService.cases() .comments() .list(parent="projects/some-project/cases/43595344") ) print(request.execute()) ```</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>
<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 a case. The comment must have the following fields set: `body`. EXAMPLES: cURL: ```shell case=&quot;projects/some-project/cases/43591344&quot; curl \ --request POST \ --header &quot;Authorization: Bearer $(gcloud auth print-access-token)&quot; \ --header &#x27;Content-Type: application/json&#x27; \ --data &#x27;{ &quot;body&quot;: &quot;This is a test comment.&quot; }&#x27; \ &quot;https://cloudsupport.googleapis.com/v2/$case/comments&quot; ``` Python: ```python import googleapiclient.discovery api_version = &quot;v2&quot; supportApiService = googleapiclient.discovery.build( serviceName=&quot;cloudsupport&quot;, version=api_version, discoveryServiceUrl=f&quot;https://cloudsupport.googleapis.com/$discovery/rest?version={api_version}&quot;, ) request = ( supportApiService.cases() .comments() .create( parent=&quot;projects/some-project/cases/43595344&quot;, body={&quot;body&quot;: &quot;This is a test comment.&quot;}, ) ) print(request.execute()) ```

Args:
  parent: string, Required. The name of the case to which the 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 12800 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;name&quot;: &quot;A String&quot;, # Output only. The resource name for the comment.
  &quot;plainTextBody&quot;: &quot;A String&quot;, # Output only. DEPRECATED. 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 12800 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;name&quot;: &quot;A String&quot;, # Output only. The resource name for the comment.
  &quot;plainTextBody&quot;: &quot;A String&quot;, # Output only. DEPRECATED. 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>List all the comments associated with a case. EXAMPLES: cURL: ```shell case=&quot;projects/some-project/cases/43595344&quot; curl \ --header &quot;Authorization: Bearer $(gcloud auth print-access-token)&quot; \ &quot;https://cloudsupport.googleapis.com/v2/$case/comments&quot; ``` Python: ```python import googleapiclient.discovery api_version = &quot;v2&quot; supportApiService = googleapiclient.discovery.build( serviceName=&quot;cloudsupport&quot;, version=api_version, discoveryServiceUrl=f&quot;https://cloudsupport.googleapis.com/$discovery/rest?version={api_version}&quot;, ) request = ( supportApiService.cases() .comments() .list(parent=&quot;projects/some-project/cases/43595344&quot;) ) print(request.execute()) ```

Args:
  parent: string, Required. The name of the case for which to list comments. (required)
  pageSize: integer, The maximum number of comments to fetch. Defaults to 10.
  pageToken: string, A token identifying the page of results to return. If unspecified, the first page is returned.
  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;: [ # List of the comments associated with the case.
    { # A comment associated with a support case.
      &quot;body&quot;: &quot;A String&quot;, # The full comment body. Maximum of 12800 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;name&quot;: &quot;A String&quot;, # Output only. The resource name for the comment.
      &quot;plainTextBody&quot;: &quot;A String&quot;, # Output only. DEPRECATED. 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. Set this in the `page_token` field of subsequent `cases.comments.list` requests. If unspecified, there are no more results to retrieve.
}</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>

</body></html>