<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></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="cloudsupport_v2.cases.attachments.html">attachments()</a></code>
</p>
<p class="firstline">Returns the attachments Resource.</p>

<p class="toc_element">
  <code><a href="cloudsupport_v2.cases.comments.html">comments()</a></code>
</p>
<p class="firstline">Returns the comments Resource.</p>

<p class="toc_element">
  <code><a href="#close">close(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Close a case. EXAMPLES: cURL: ```shell case="projects/some-project/cases/43595344" curl \ --request POST \ --header "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://cloudsupport.googleapis.com/v2/$case:close" ``` 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().close( name="projects/some-project/cases/43595344" ) print(request.execute()) ```</p>
<p class="toc_element">
  <code><a href="#create">create(parent, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Create a new case and associate it with a parent. It must have the following fields set: `display_name`, `description`, `classification`, and `priority`. If you're just testing the API and don't want to route your case to an agent, set `testCase=true`. EXAMPLES: cURL: ```shell parent="projects/some-project" curl \ --request POST \ --header "Authorization: Bearer $(gcloud auth print-access-token)" \ --header 'Content-Type: application/json' \ --data '{ "display_name": "Test case created by me.", "description": "a random test case, feel free to close", "classification": { "id": "100IK2AKCLHMGRJ9CDGMOCGP8DM6UTB4BT262T31BT1M2T31DHNMENPO6KS36CPJ786L2TBFEHGN6NPI64R3CDHN8880G08I1H3MURR7DHII0GRCDTQM8" }, "time_zone": "-07:00", "subscriber_email_addresses": [ "foo@domain.com", "bar@domain.com" ], "testCase": true, "priority": "P3" }' \ "https://cloudsupport.googleapis.com/v2/$parent/cases" ``` 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().create( parent="projects/some-project", body={ "displayName": "A Test Case", "description": "This is a test case.", "testCase": True, "priority": "P2", "classification": { "id": "100IK2AKCLHMGRJ9CDGMOCGP8DM6UTB4BT262T31BT1M2T31DHNMENPO6KS36CPJ786L2TBFEHGN6NPI64R3CDHN8880G08I1H3MURR7DHII0GRCDTQM8" }, }, ) print(request.execute()) ```</p>
<p class="toc_element">
  <code><a href="#escalate">escalate(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Escalate a case, starting the Google Cloud Support escalation management process. This operation is only available for some support services. Go to https://cloud.google.com/support and look for 'Technical support escalations' in the feature list to find out which ones let you do that. EXAMPLES: cURL: ```shell case="projects/some-project/cases/43595344" curl \ --request POST \ --header "Authorization: Bearer $(gcloud auth print-access-token)" \ --header "Content-Type: application/json" \ --data '{ "escalation": { "reason": "BUSINESS_IMPACT", "justification": "This is a test escalation." } }' \ "https://cloudsupport.googleapis.com/v2/$case:escalate" ``` 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().escalate( name="projects/some-project/cases/43595344", body={ "escalation": { "reason": "BUSINESS_IMPACT", "justification": "This is a test escalation.", }, }, ) print(request.execute()) ```</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Retrieve a case. EXAMPLES: cURL: ```shell case="projects/some-project/cases/16033687" curl \ --header "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://cloudsupport.googleapis.com/v2/$case" ``` 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().get( name="projects/some-project/cases/43595344", ) print(request.execute()) ```</p>
<p class="toc_element">
  <code><a href="#list">list(parent, filter=None, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Retrieve all cases under a parent, but not its children. For example, listing cases under an organization only returns the cases that are directly parented by that organization. To retrieve cases under an organization and its projects, use `cases.search`. EXAMPLES: cURL: ```shell parent="projects/some-project" curl \ --header "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://cloudsupport.googleapis.com/v2/$parent/cases" ``` 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().list(parent="projects/some-project") 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>
<p class="toc_element">
  <code><a href="#patch">patch(name, body=None, updateMask=None, x__xgafv=None)</a></code></p>
<p class="firstline">Update a case. Only some fields can be updated. EXAMPLES: cURL: ```shell case="projects/some-project/cases/43595344" curl \ --request PATCH \ --header "Authorization: Bearer $(gcloud auth print-access-token)" \ --header "Content-Type: application/json" \ --data '{ "priority": "P1" }' \ "https://cloudsupport.googleapis.com/v2/$case?updateMask=priority" ``` 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().patch( name="projects/some-project/cases/43112854", body={ "displayName": "This is Now a New Title", "priority": "P2", }, ) print(request.execute()) ```</p>
<p class="toc_element">
  <code><a href="#search">search(parent, pageSize=None, pageToken=None, query=None, x__xgafv=None)</a></code></p>
<p class="firstline">Search for cases using a query. EXAMPLES: cURL: ```shell parent="projects/some-project" curl \ --header "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://cloudsupport.googleapis.com/v2/$parent/cases:search" ``` 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().search( parent="projects/some-project", query="state=OPEN" ) print(request.execute()) ```</p>
<p class="toc_element">
  <code><a href="#search_next">search_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(name, body=None, x__xgafv=None)</code>
  <pre>Close a case. EXAMPLES: cURL: ```shell case=&quot;projects/some-project/cases/43595344&quot; curl \ --request POST \ --header &quot;Authorization: Bearer $(gcloud auth print-access-token)&quot; \ &quot;https://cloudsupport.googleapis.com/v2/$case:close&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().close( name=&quot;projects/some-project/cases/43595344&quot; ) print(request.execute()) ```

Args:
  name: string, Required. The name of the case to close. (required)
  body: object, The request body.
    The object takes the form of:

{ # The request message for the CloseCase endpoint.
}

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

Returns:
  An object of the form:

    { # A support case.
  &quot;classification&quot;: { # A classification object with a product type and value. # The issue classification applicable to this case.
    &quot;displayName&quot;: &quot;A String&quot;, # A display name for the classification. The display name is not static and can change. To uniquely and consistently identify classifications, use the `CaseClassification.id` field.
    &quot;id&quot;: &quot;A String&quot;, # The unique ID for a classification. Must be specified for case creation. To retrieve valid classification IDs for case creation, use `caseClassifications.search`. Classification IDs returned by `caseClassifications.search` are guaranteed to be valid for at least 6 months. If a given classification is deactiveated, it will immediately stop being returned. After 6 months, `case.create` requests using the classification ID will fail.
  },
  &quot;contactEmail&quot;: &quot;A String&quot;, # A user-supplied email address to send case update notifications for. This should only be used in BYOID flows, where we cannot infer the user&#x27;s email address directly from their EUCs.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time this case was created.
  &quot;creator&quot;: { # An object containing information about the effective user and authenticated principal responsible for an action. # The user who created the case. Note: The name and email will be obfuscated if the case was created by Google Support.
    &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;description&quot;: &quot;A String&quot;, # A broad description of the issue.
  &quot;displayName&quot;: &quot;A String&quot;, # The short summary of the issue reported in this case.
  &quot;escalated&quot;: True or False, # Whether the case is currently escalated.
  &quot;languageCode&quot;: &quot;A String&quot;, # The language the user has requested to receive support in. This should be a BCP 47 language code (e.g., `&quot;en&quot;`, `&quot;zh-CN&quot;`, `&quot;zh-TW&quot;`, `&quot;ja&quot;`, `&quot;ko&quot;`). If no language or an unsupported language is specified, this field defaults to English (en). Language selection during case creation may affect your available support options. For a list of supported languages and their support working hours, see: https://cloud.google.com/support/docs/language-working-hours
  &quot;name&quot;: &quot;A String&quot;, # The resource name for the case.
  &quot;priority&quot;: &quot;A String&quot;, # The priority of this case.
  &quot;state&quot;: &quot;A String&quot;, # Output only. The current status of the support case.
  &quot;subscriberEmailAddresses&quot;: [ # The email addresses to receive updates on this case.
    &quot;A String&quot;,
  ],
  &quot;testCase&quot;: True or False, # Whether this case was created for internal API testing and should not be acted on by the support team.
  &quot;timeZone&quot;: &quot;A String&quot;, # The timezone of the user who created the support case. It should be in a format IANA recognizes: https://www.iana.org/time-zones. There is no additional validation done by the API.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time this case was last updated.
}</pre>
</div>

<div class="method">
    <code class="details" id="create">create(parent, body=None, x__xgafv=None)</code>
  <pre>Create a new case and associate it with a parent. It must have the following fields set: `display_name`, `description`, `classification`, and `priority`. If you&#x27;re just testing the API and don&#x27;t want to route your case to an agent, set `testCase=true`. EXAMPLES: cURL: ```shell parent=&quot;projects/some-project&quot; curl \ --request POST \ --header &quot;Authorization: Bearer $(gcloud auth print-access-token)&quot; \ --header &#x27;Content-Type: application/json&#x27; \ --data &#x27;{ &quot;display_name&quot;: &quot;Test case created by me.&quot;, &quot;description&quot;: &quot;a random test case, feel free to close&quot;, &quot;classification&quot;: { &quot;id&quot;: &quot;100IK2AKCLHMGRJ9CDGMOCGP8DM6UTB4BT262T31BT1M2T31DHNMENPO6KS36CPJ786L2TBFEHGN6NPI64R3CDHN8880G08I1H3MURR7DHII0GRCDTQM8&quot; }, &quot;time_zone&quot;: &quot;-07:00&quot;, &quot;subscriber_email_addresses&quot;: [ &quot;foo@domain.com&quot;, &quot;bar@domain.com&quot; ], &quot;testCase&quot;: true, &quot;priority&quot;: &quot;P3&quot; }&#x27; \ &quot;https://cloudsupport.googleapis.com/v2/$parent/cases&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().create( parent=&quot;projects/some-project&quot;, body={ &quot;displayName&quot;: &quot;A Test Case&quot;, &quot;description&quot;: &quot;This is a test case.&quot;, &quot;testCase&quot;: True, &quot;priority&quot;: &quot;P2&quot;, &quot;classification&quot;: { &quot;id&quot;: &quot;100IK2AKCLHMGRJ9CDGMOCGP8DM6UTB4BT262T31BT1M2T31DHNMENPO6KS36CPJ786L2TBFEHGN6NPI64R3CDHN8880G08I1H3MURR7DHII0GRCDTQM8&quot; }, }, ) print(request.execute()) ```

Args:
  parent: string, Required. The name of the parent under which the case should be created. (required)
  body: object, The request body.
    The object takes the form of:

{ # A support case.
  &quot;classification&quot;: { # A classification object with a product type and value. # The issue classification applicable to this case.
    &quot;displayName&quot;: &quot;A String&quot;, # A display name for the classification. The display name is not static and can change. To uniquely and consistently identify classifications, use the `CaseClassification.id` field.
    &quot;id&quot;: &quot;A String&quot;, # The unique ID for a classification. Must be specified for case creation. To retrieve valid classification IDs for case creation, use `caseClassifications.search`. Classification IDs returned by `caseClassifications.search` are guaranteed to be valid for at least 6 months. If a given classification is deactiveated, it will immediately stop being returned. After 6 months, `case.create` requests using the classification ID will fail.
  },
  &quot;contactEmail&quot;: &quot;A String&quot;, # A user-supplied email address to send case update notifications for. This should only be used in BYOID flows, where we cannot infer the user&#x27;s email address directly from their EUCs.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time this case was created.
  &quot;creator&quot;: { # An object containing information about the effective user and authenticated principal responsible for an action. # The user who created the case. Note: The name and email will be obfuscated if the case was created by Google Support.
    &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;description&quot;: &quot;A String&quot;, # A broad description of the issue.
  &quot;displayName&quot;: &quot;A String&quot;, # The short summary of the issue reported in this case.
  &quot;escalated&quot;: True or False, # Whether the case is currently escalated.
  &quot;languageCode&quot;: &quot;A String&quot;, # The language the user has requested to receive support in. This should be a BCP 47 language code (e.g., `&quot;en&quot;`, `&quot;zh-CN&quot;`, `&quot;zh-TW&quot;`, `&quot;ja&quot;`, `&quot;ko&quot;`). If no language or an unsupported language is specified, this field defaults to English (en). Language selection during case creation may affect your available support options. For a list of supported languages and their support working hours, see: https://cloud.google.com/support/docs/language-working-hours
  &quot;name&quot;: &quot;A String&quot;, # The resource name for the case.
  &quot;priority&quot;: &quot;A String&quot;, # The priority of this case.
  &quot;state&quot;: &quot;A String&quot;, # Output only. The current status of the support case.
  &quot;subscriberEmailAddresses&quot;: [ # The email addresses to receive updates on this case.
    &quot;A String&quot;,
  ],
  &quot;testCase&quot;: True or False, # Whether this case was created for internal API testing and should not be acted on by the support team.
  &quot;timeZone&quot;: &quot;A String&quot;, # The timezone of the user who created the support case. It should be in a format IANA recognizes: https://www.iana.org/time-zones. There is no additional validation done by the API.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time this case was last updated.
}

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

Returns:
  An object of the form:

    { # A support case.
  &quot;classification&quot;: { # A classification object with a product type and value. # The issue classification applicable to this case.
    &quot;displayName&quot;: &quot;A String&quot;, # A display name for the classification. The display name is not static and can change. To uniquely and consistently identify classifications, use the `CaseClassification.id` field.
    &quot;id&quot;: &quot;A String&quot;, # The unique ID for a classification. Must be specified for case creation. To retrieve valid classification IDs for case creation, use `caseClassifications.search`. Classification IDs returned by `caseClassifications.search` are guaranteed to be valid for at least 6 months. If a given classification is deactiveated, it will immediately stop being returned. After 6 months, `case.create` requests using the classification ID will fail.
  },
  &quot;contactEmail&quot;: &quot;A String&quot;, # A user-supplied email address to send case update notifications for. This should only be used in BYOID flows, where we cannot infer the user&#x27;s email address directly from their EUCs.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time this case was created.
  &quot;creator&quot;: { # An object containing information about the effective user and authenticated principal responsible for an action. # The user who created the case. Note: The name and email will be obfuscated if the case was created by Google Support.
    &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;description&quot;: &quot;A String&quot;, # A broad description of the issue.
  &quot;displayName&quot;: &quot;A String&quot;, # The short summary of the issue reported in this case.
  &quot;escalated&quot;: True or False, # Whether the case is currently escalated.
  &quot;languageCode&quot;: &quot;A String&quot;, # The language the user has requested to receive support in. This should be a BCP 47 language code (e.g., `&quot;en&quot;`, `&quot;zh-CN&quot;`, `&quot;zh-TW&quot;`, `&quot;ja&quot;`, `&quot;ko&quot;`). If no language or an unsupported language is specified, this field defaults to English (en). Language selection during case creation may affect your available support options. For a list of supported languages and their support working hours, see: https://cloud.google.com/support/docs/language-working-hours
  &quot;name&quot;: &quot;A String&quot;, # The resource name for the case.
  &quot;priority&quot;: &quot;A String&quot;, # The priority of this case.
  &quot;state&quot;: &quot;A String&quot;, # Output only. The current status of the support case.
  &quot;subscriberEmailAddresses&quot;: [ # The email addresses to receive updates on this case.
    &quot;A String&quot;,
  ],
  &quot;testCase&quot;: True or False, # Whether this case was created for internal API testing and should not be acted on by the support team.
  &quot;timeZone&quot;: &quot;A String&quot;, # The timezone of the user who created the support case. It should be in a format IANA recognizes: https://www.iana.org/time-zones. There is no additional validation done by the API.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time this case was last updated.
}</pre>
</div>

<div class="method">
    <code class="details" id="escalate">escalate(name, body=None, x__xgafv=None)</code>
  <pre>Escalate a case, starting the Google Cloud Support escalation management process. This operation is only available for some support services. Go to https://cloud.google.com/support and look for &#x27;Technical support escalations&#x27; in the feature list to find out which ones let you do that. EXAMPLES: cURL: ```shell case=&quot;projects/some-project/cases/43595344&quot; curl \ --request POST \ --header &quot;Authorization: Bearer $(gcloud auth print-access-token)&quot; \ --header &quot;Content-Type: application/json&quot; \ --data &#x27;{ &quot;escalation&quot;: { &quot;reason&quot;: &quot;BUSINESS_IMPACT&quot;, &quot;justification&quot;: &quot;This is a test escalation.&quot; } }&#x27; \ &quot;https://cloudsupport.googleapis.com/v2/$case:escalate&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().escalate( name=&quot;projects/some-project/cases/43595344&quot;, body={ &quot;escalation&quot;: { &quot;reason&quot;: &quot;BUSINESS_IMPACT&quot;, &quot;justification&quot;: &quot;This is a test escalation.&quot;, }, }, ) print(request.execute()) ```

Args:
  name: string, Required. The name of the case to be escalated. (required)
  body: object, The request body.
    The object takes the form of:

{ # The request message for the EscalateCase endpoint.
  &quot;escalation&quot;: { # An escalation of a support case. # The escalation information to be sent with the escalation request.
    &quot;justification&quot;: &quot;A String&quot;, # Required. A free text description to accompany the `reason` field above. Provides additional context on why the case is being escalated.
    &quot;reason&quot;: &quot;A String&quot;, # Required. The reason why the Case is being escalated.
  },
}

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

Returns:
  An object of the form:

    { # A support case.
  &quot;classification&quot;: { # A classification object with a product type and value. # The issue classification applicable to this case.
    &quot;displayName&quot;: &quot;A String&quot;, # A display name for the classification. The display name is not static and can change. To uniquely and consistently identify classifications, use the `CaseClassification.id` field.
    &quot;id&quot;: &quot;A String&quot;, # The unique ID for a classification. Must be specified for case creation. To retrieve valid classification IDs for case creation, use `caseClassifications.search`. Classification IDs returned by `caseClassifications.search` are guaranteed to be valid for at least 6 months. If a given classification is deactiveated, it will immediately stop being returned. After 6 months, `case.create` requests using the classification ID will fail.
  },
  &quot;contactEmail&quot;: &quot;A String&quot;, # A user-supplied email address to send case update notifications for. This should only be used in BYOID flows, where we cannot infer the user&#x27;s email address directly from their EUCs.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time this case was created.
  &quot;creator&quot;: { # An object containing information about the effective user and authenticated principal responsible for an action. # The user who created the case. Note: The name and email will be obfuscated if the case was created by Google Support.
    &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;description&quot;: &quot;A String&quot;, # A broad description of the issue.
  &quot;displayName&quot;: &quot;A String&quot;, # The short summary of the issue reported in this case.
  &quot;escalated&quot;: True or False, # Whether the case is currently escalated.
  &quot;languageCode&quot;: &quot;A String&quot;, # The language the user has requested to receive support in. This should be a BCP 47 language code (e.g., `&quot;en&quot;`, `&quot;zh-CN&quot;`, `&quot;zh-TW&quot;`, `&quot;ja&quot;`, `&quot;ko&quot;`). If no language or an unsupported language is specified, this field defaults to English (en). Language selection during case creation may affect your available support options. For a list of supported languages and their support working hours, see: https://cloud.google.com/support/docs/language-working-hours
  &quot;name&quot;: &quot;A String&quot;, # The resource name for the case.
  &quot;priority&quot;: &quot;A String&quot;, # The priority of this case.
  &quot;state&quot;: &quot;A String&quot;, # Output only. The current status of the support case.
  &quot;subscriberEmailAddresses&quot;: [ # The email addresses to receive updates on this case.
    &quot;A String&quot;,
  ],
  &quot;testCase&quot;: True or False, # Whether this case was created for internal API testing and should not be acted on by the support team.
  &quot;timeZone&quot;: &quot;A String&quot;, # The timezone of the user who created the support case. It should be in a format IANA recognizes: https://www.iana.org/time-zones. There is no additional validation done by the API.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time this case was last updated.
}</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, x__xgafv=None)</code>
  <pre>Retrieve a case. EXAMPLES: cURL: ```shell case=&quot;projects/some-project/cases/16033687&quot; curl \ --header &quot;Authorization: Bearer $(gcloud auth print-access-token)&quot; \ &quot;https://cloudsupport.googleapis.com/v2/$case&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().get( name=&quot;projects/some-project/cases/43595344&quot;, ) print(request.execute()) ```

Args:
  name: string, Required. The full name of a case to be retrieved. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A support case.
  &quot;classification&quot;: { # A classification object with a product type and value. # The issue classification applicable to this case.
    &quot;displayName&quot;: &quot;A String&quot;, # A display name for the classification. The display name is not static and can change. To uniquely and consistently identify classifications, use the `CaseClassification.id` field.
    &quot;id&quot;: &quot;A String&quot;, # The unique ID for a classification. Must be specified for case creation. To retrieve valid classification IDs for case creation, use `caseClassifications.search`. Classification IDs returned by `caseClassifications.search` are guaranteed to be valid for at least 6 months. If a given classification is deactiveated, it will immediately stop being returned. After 6 months, `case.create` requests using the classification ID will fail.
  },
  &quot;contactEmail&quot;: &quot;A String&quot;, # A user-supplied email address to send case update notifications for. This should only be used in BYOID flows, where we cannot infer the user&#x27;s email address directly from their EUCs.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time this case was created.
  &quot;creator&quot;: { # An object containing information about the effective user and authenticated principal responsible for an action. # The user who created the case. Note: The name and email will be obfuscated if the case was created by Google Support.
    &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;description&quot;: &quot;A String&quot;, # A broad description of the issue.
  &quot;displayName&quot;: &quot;A String&quot;, # The short summary of the issue reported in this case.
  &quot;escalated&quot;: True or False, # Whether the case is currently escalated.
  &quot;languageCode&quot;: &quot;A String&quot;, # The language the user has requested to receive support in. This should be a BCP 47 language code (e.g., `&quot;en&quot;`, `&quot;zh-CN&quot;`, `&quot;zh-TW&quot;`, `&quot;ja&quot;`, `&quot;ko&quot;`). If no language or an unsupported language is specified, this field defaults to English (en). Language selection during case creation may affect your available support options. For a list of supported languages and their support working hours, see: https://cloud.google.com/support/docs/language-working-hours
  &quot;name&quot;: &quot;A String&quot;, # The resource name for the case.
  &quot;priority&quot;: &quot;A String&quot;, # The priority of this case.
  &quot;state&quot;: &quot;A String&quot;, # Output only. The current status of the support case.
  &quot;subscriberEmailAddresses&quot;: [ # The email addresses to receive updates on this case.
    &quot;A String&quot;,
  ],
  &quot;testCase&quot;: True or False, # Whether this case was created for internal API testing and should not be acted on by the support team.
  &quot;timeZone&quot;: &quot;A String&quot;, # The timezone of the user who created the support case. It should be in a format IANA recognizes: https://www.iana.org/time-zones. There is no additional validation done by the API.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time this case was last updated.
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, filter=None, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Retrieve all cases under a parent, but not its children. For example, listing cases under an organization only returns the cases that are directly parented by that organization. To retrieve cases under an organization and its projects, use `cases.search`. EXAMPLES: cURL: ```shell parent=&quot;projects/some-project&quot; curl \ --header &quot;Authorization: Bearer $(gcloud auth print-access-token)&quot; \ &quot;https://cloudsupport.googleapis.com/v2/$parent/cases&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().list(parent=&quot;projects/some-project&quot;) print(request.execute()) ```

Args:
  parent: string, Required. The name of a parent to list cases under. (required)
  filter: string, An expression used to filter cases. If it&#x27;s an empty string, then no filtering happens. Otherwise, the endpoint returns the cases that match the filter. Expressions use the following fields separated by `AND` and specified with `=`: - `state`: Can be `OPEN` or `CLOSED`. - `priority`: Can be `P0`, `P1`, `P2`, `P3`, or `P4`. You can specify multiple values for priority using the `OR` operator. For example, `priority=P1 OR priority=P2`. - `creator.email`: The email address of the case creator. EXAMPLES: - `state=CLOSED` - `state=OPEN AND creator.email=&quot;tester@example.com&quot;` - `state=OPEN AND (priority=P0 OR priority=P1)`
  pageSize: integer, The maximum number of cases 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 ListCases endpoint.
  &quot;cases&quot;: [ # The list of cases associated with the parent after any filters have been applied.
    { # A support case.
      &quot;classification&quot;: { # A classification object with a product type and value. # The issue classification applicable to this case.
        &quot;displayName&quot;: &quot;A String&quot;, # A display name for the classification. The display name is not static and can change. To uniquely and consistently identify classifications, use the `CaseClassification.id` field.
        &quot;id&quot;: &quot;A String&quot;, # The unique ID for a classification. Must be specified for case creation. To retrieve valid classification IDs for case creation, use `caseClassifications.search`. Classification IDs returned by `caseClassifications.search` are guaranteed to be valid for at least 6 months. If a given classification is deactiveated, it will immediately stop being returned. After 6 months, `case.create` requests using the classification ID will fail.
      },
      &quot;contactEmail&quot;: &quot;A String&quot;, # A user-supplied email address to send case update notifications for. This should only be used in BYOID flows, where we cannot infer the user&#x27;s email address directly from their EUCs.
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time this case was created.
      &quot;creator&quot;: { # An object containing information about the effective user and authenticated principal responsible for an action. # The user who created the case. Note: The name and email will be obfuscated if the case was created by Google Support.
        &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;description&quot;: &quot;A String&quot;, # A broad description of the issue.
      &quot;displayName&quot;: &quot;A String&quot;, # The short summary of the issue reported in this case.
      &quot;escalated&quot;: True or False, # Whether the case is currently escalated.
      &quot;languageCode&quot;: &quot;A String&quot;, # The language the user has requested to receive support in. This should be a BCP 47 language code (e.g., `&quot;en&quot;`, `&quot;zh-CN&quot;`, `&quot;zh-TW&quot;`, `&quot;ja&quot;`, `&quot;ko&quot;`). If no language or an unsupported language is specified, this field defaults to English (en). Language selection during case creation may affect your available support options. For a list of supported languages and their support working hours, see: https://cloud.google.com/support/docs/language-working-hours
      &quot;name&quot;: &quot;A String&quot;, # The resource name for the case.
      &quot;priority&quot;: &quot;A String&quot;, # The priority of this case.
      &quot;state&quot;: &quot;A String&quot;, # Output only. The current status of the support case.
      &quot;subscriberEmailAddresses&quot;: [ # The email addresses to receive updates on this case.
        &quot;A String&quot;,
      ],
      &quot;testCase&quot;: True or False, # Whether this case was created for internal API testing and should not be acted on by the support team.
      &quot;timeZone&quot;: &quot;A String&quot;, # The timezone of the user who created the support case. It should be in a format IANA recognizes: https://www.iana.org/time-zones. There is no additional validation done by the API.
      &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time this case was last updated.
    },
  ],
  &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.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>

<div class="method">
    <code class="details" id="patch">patch(name, body=None, updateMask=None, x__xgafv=None)</code>
  <pre>Update a case. Only some fields can be updated. EXAMPLES: cURL: ```shell case=&quot;projects/some-project/cases/43595344&quot; curl \ --request PATCH \ --header &quot;Authorization: Bearer $(gcloud auth print-access-token)&quot; \ --header &quot;Content-Type: application/json&quot; \ --data &#x27;{ &quot;priority&quot;: &quot;P1&quot; }&#x27; \ &quot;https://cloudsupport.googleapis.com/v2/$case?updateMask=priority&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().patch( name=&quot;projects/some-project/cases/43112854&quot;, body={ &quot;displayName&quot;: &quot;This is Now a New Title&quot;, &quot;priority&quot;: &quot;P2&quot;, }, ) print(request.execute()) ```

Args:
  name: string, The resource name for the case. (required)
  body: object, The request body.
    The object takes the form of:

{ # A support case.
  &quot;classification&quot;: { # A classification object with a product type and value. # The issue classification applicable to this case.
    &quot;displayName&quot;: &quot;A String&quot;, # A display name for the classification. The display name is not static and can change. To uniquely and consistently identify classifications, use the `CaseClassification.id` field.
    &quot;id&quot;: &quot;A String&quot;, # The unique ID for a classification. Must be specified for case creation. To retrieve valid classification IDs for case creation, use `caseClassifications.search`. Classification IDs returned by `caseClassifications.search` are guaranteed to be valid for at least 6 months. If a given classification is deactiveated, it will immediately stop being returned. After 6 months, `case.create` requests using the classification ID will fail.
  },
  &quot;contactEmail&quot;: &quot;A String&quot;, # A user-supplied email address to send case update notifications for. This should only be used in BYOID flows, where we cannot infer the user&#x27;s email address directly from their EUCs.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time this case was created.
  &quot;creator&quot;: { # An object containing information about the effective user and authenticated principal responsible for an action. # The user who created the case. Note: The name and email will be obfuscated if the case was created by Google Support.
    &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;description&quot;: &quot;A String&quot;, # A broad description of the issue.
  &quot;displayName&quot;: &quot;A String&quot;, # The short summary of the issue reported in this case.
  &quot;escalated&quot;: True or False, # Whether the case is currently escalated.
  &quot;languageCode&quot;: &quot;A String&quot;, # The language the user has requested to receive support in. This should be a BCP 47 language code (e.g., `&quot;en&quot;`, `&quot;zh-CN&quot;`, `&quot;zh-TW&quot;`, `&quot;ja&quot;`, `&quot;ko&quot;`). If no language or an unsupported language is specified, this field defaults to English (en). Language selection during case creation may affect your available support options. For a list of supported languages and their support working hours, see: https://cloud.google.com/support/docs/language-working-hours
  &quot;name&quot;: &quot;A String&quot;, # The resource name for the case.
  &quot;priority&quot;: &quot;A String&quot;, # The priority of this case.
  &quot;state&quot;: &quot;A String&quot;, # Output only. The current status of the support case.
  &quot;subscriberEmailAddresses&quot;: [ # The email addresses to receive updates on this case.
    &quot;A String&quot;,
  ],
  &quot;testCase&quot;: True or False, # Whether this case was created for internal API testing and should not be acted on by the support team.
  &quot;timeZone&quot;: &quot;A String&quot;, # The timezone of the user who created the support case. It should be in a format IANA recognizes: https://www.iana.org/time-zones. There is no additional validation done by the API.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time this case was last updated.
}

  updateMask: string, A list of attributes of the case that should be updated. Supported values are `priority`, `display_name`, and `subscriber_email_addresses`. If no fields are specified, all supported fields are updated. Be careful - if you do not provide a field mask, then you might accidentally clear some fields. For example, if you leave the field mask empty and do not provide a value for `subscriber_email_addresses`, then `subscriber_email_addresses` is updated to empty.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A support case.
  &quot;classification&quot;: { # A classification object with a product type and value. # The issue classification applicable to this case.
    &quot;displayName&quot;: &quot;A String&quot;, # A display name for the classification. The display name is not static and can change. To uniquely and consistently identify classifications, use the `CaseClassification.id` field.
    &quot;id&quot;: &quot;A String&quot;, # The unique ID for a classification. Must be specified for case creation. To retrieve valid classification IDs for case creation, use `caseClassifications.search`. Classification IDs returned by `caseClassifications.search` are guaranteed to be valid for at least 6 months. If a given classification is deactiveated, it will immediately stop being returned. After 6 months, `case.create` requests using the classification ID will fail.
  },
  &quot;contactEmail&quot;: &quot;A String&quot;, # A user-supplied email address to send case update notifications for. This should only be used in BYOID flows, where we cannot infer the user&#x27;s email address directly from their EUCs.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time this case was created.
  &quot;creator&quot;: { # An object containing information about the effective user and authenticated principal responsible for an action. # The user who created the case. Note: The name and email will be obfuscated if the case was created by Google Support.
    &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;description&quot;: &quot;A String&quot;, # A broad description of the issue.
  &quot;displayName&quot;: &quot;A String&quot;, # The short summary of the issue reported in this case.
  &quot;escalated&quot;: True or False, # Whether the case is currently escalated.
  &quot;languageCode&quot;: &quot;A String&quot;, # The language the user has requested to receive support in. This should be a BCP 47 language code (e.g., `&quot;en&quot;`, `&quot;zh-CN&quot;`, `&quot;zh-TW&quot;`, `&quot;ja&quot;`, `&quot;ko&quot;`). If no language or an unsupported language is specified, this field defaults to English (en). Language selection during case creation may affect your available support options. For a list of supported languages and their support working hours, see: https://cloud.google.com/support/docs/language-working-hours
  &quot;name&quot;: &quot;A String&quot;, # The resource name for the case.
  &quot;priority&quot;: &quot;A String&quot;, # The priority of this case.
  &quot;state&quot;: &quot;A String&quot;, # Output only. The current status of the support case.
  &quot;subscriberEmailAddresses&quot;: [ # The email addresses to receive updates on this case.
    &quot;A String&quot;,
  ],
  &quot;testCase&quot;: True or False, # Whether this case was created for internal API testing and should not be acted on by the support team.
  &quot;timeZone&quot;: &quot;A String&quot;, # The timezone of the user who created the support case. It should be in a format IANA recognizes: https://www.iana.org/time-zones. There is no additional validation done by the API.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time this case was last updated.
}</pre>
</div>

<div class="method">
    <code class="details" id="search">search(parent, pageSize=None, pageToken=None, query=None, x__xgafv=None)</code>
  <pre>Search for cases using a query. EXAMPLES: cURL: ```shell parent=&quot;projects/some-project&quot; curl \ --header &quot;Authorization: Bearer $(gcloud auth print-access-token)&quot; \ &quot;https://cloudsupport.googleapis.com/v2/$parent/cases:search&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().search( parent=&quot;projects/some-project&quot;, query=&quot;state=OPEN&quot; ) print(request.execute()) ```

Args:
  parent: string, The name of the parent resource to search for cases under. (required)
  pageSize: integer, The maximum number of cases fetched with each request. The default page size is 10.
  pageToken: string, A token identifying the page of results to return. If unspecified, the first page is retrieved.
  query: string, An expression used to filter cases. Expressions use the following fields separated by `AND` and specified with `=`: - `organization`: An organization name in the form `organizations/`. - `project`: A project name in the form `projects/`. - `state`: Can be `OPEN` or `CLOSED`. - `priority`: Can be `P0`, `P1`, `P2`, `P3`, or `P4`. You can specify multiple values for priority using the `OR` operator. For example, `priority=P1 OR priority=P2`. - `creator.email`: The email address of the case creator. You must specify either `organization` or `project`. To search across `displayName`, `description`, and comments, use a global restriction with no keyword or operator. For example, `&quot;my search&quot;`. To search only cases updated after a certain date, use `update_time` restricted with that particular date, time, and timezone in ISO datetime format. For example, `update_time&gt;&quot;2020-01-01T00:00:00-05:00&quot;`. `update_time` only supports the greater than operator (`&gt;`). Examples: - `organization=&quot;organizations/123456789&quot;` - `project=&quot;projects/my-project-id&quot;` - `project=&quot;projects/123456789&quot;` - `organization=&quot;organizations/123456789&quot; AND state=CLOSED` - `project=&quot;projects/my-project-id&quot; AND creator.email=&quot;tester@example.com&quot;` - `project=&quot;projects/my-project-id&quot; AND (priority=P0 OR priority=P1)`
  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 SearchCases endpoint.
  &quot;cases&quot;: [ # The list of cases associated with the parent after any filters have been applied.
    { # A support case.
      &quot;classification&quot;: { # A classification object with a product type and value. # The issue classification applicable to this case.
        &quot;displayName&quot;: &quot;A String&quot;, # A display name for the classification. The display name is not static and can change. To uniquely and consistently identify classifications, use the `CaseClassification.id` field.
        &quot;id&quot;: &quot;A String&quot;, # The unique ID for a classification. Must be specified for case creation. To retrieve valid classification IDs for case creation, use `caseClassifications.search`. Classification IDs returned by `caseClassifications.search` are guaranteed to be valid for at least 6 months. If a given classification is deactiveated, it will immediately stop being returned. After 6 months, `case.create` requests using the classification ID will fail.
      },
      &quot;contactEmail&quot;: &quot;A String&quot;, # A user-supplied email address to send case update notifications for. This should only be used in BYOID flows, where we cannot infer the user&#x27;s email address directly from their EUCs.
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time this case was created.
      &quot;creator&quot;: { # An object containing information about the effective user and authenticated principal responsible for an action. # The user who created the case. Note: The name and email will be obfuscated if the case was created by Google Support.
        &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;description&quot;: &quot;A String&quot;, # A broad description of the issue.
      &quot;displayName&quot;: &quot;A String&quot;, # The short summary of the issue reported in this case.
      &quot;escalated&quot;: True or False, # Whether the case is currently escalated.
      &quot;languageCode&quot;: &quot;A String&quot;, # The language the user has requested to receive support in. This should be a BCP 47 language code (e.g., `&quot;en&quot;`, `&quot;zh-CN&quot;`, `&quot;zh-TW&quot;`, `&quot;ja&quot;`, `&quot;ko&quot;`). If no language or an unsupported language is specified, this field defaults to English (en). Language selection during case creation may affect your available support options. For a list of supported languages and their support working hours, see: https://cloud.google.com/support/docs/language-working-hours
      &quot;name&quot;: &quot;A String&quot;, # The resource name for the case.
      &quot;priority&quot;: &quot;A String&quot;, # The priority of this case.
      &quot;state&quot;: &quot;A String&quot;, # Output only. The current status of the support case.
      &quot;subscriberEmailAddresses&quot;: [ # The email addresses to receive updates on this case.
        &quot;A String&quot;,
      ],
      &quot;testCase&quot;: True or False, # Whether this case was created for internal API testing and should not be acted on by the support team.
      &quot;timeZone&quot;: &quot;A String&quot;, # The timezone of the user who created the support case. It should be in a format IANA recognizes: https://www.iana.org/time-zones. There is no additional validation done by the API.
      &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time this case was last updated.
    },
  ],
  &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.search` requests. If unspecified, there are no more results to retrieve.
}</pre>
</div>

<div class="method">
    <code class="details" id="search_next">search_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>