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

<p class="toc_element">
  <code><a href="cloudsupport_v2beta.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 the specified case.</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 the given Cloud resource.</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. Escalating a case will initiate the Cloud Support escalation management process. This operation is only available to certain Customer Care tiers. Go to https://cloud.google.com/support and look for 'Technical support escalations' in the feature list to find out which tiers are able to perform escalations.</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Retrieve the specified case.</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 the specified parent.</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="#patch">patch(name, body=None, updateMask=None, x__xgafv=None)</a></code></p>
<p class="firstline">Update the specified case. Only a subset of fields (display_name, description, time_zone, subscriber_email_addresses, related_resources, severity, priority, primary_contact, and labels) can be updated.</p>
<p class="toc_element">
  <code><a href="#search">search(pageSize=None, pageToken=None, query=None, x__xgafv=None)</a></code></p>
<p class="firstline">Search cases using the specified query.</p>
<p class="toc_element">
  <code><a href="#search_next">search_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(name, body=None, x__xgafv=None)</code>
  <pre>Close the specified case.

Args:
  name: string, Required. The fully qualified name of the case resource to be closed. (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;, # The display name of the classification.
    &quot;id&quot;: &quot;A String&quot;, # The unique ID for a classification. Must be specified for case creation.
  },
  &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;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;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;name&quot;: &quot;A String&quot;, # The resource name for the case.
  &quot;priority&quot;: &quot;A String&quot;, # The priority of this case. If this is set, do not set severity.
  &quot;severity&quot;: &quot;A String&quot;, # The severity of this case. Deprecated. Use priority instead.
  &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 the given Cloud resource.

Args:
  parent: string, Required. The name of the Cloud resource 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;, # The display name of the classification.
    &quot;id&quot;: &quot;A String&quot;, # The unique ID for a classification. Must be specified for case creation.
  },
  &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;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;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;name&quot;: &quot;A String&quot;, # The resource name for the case.
  &quot;priority&quot;: &quot;A String&quot;, # The priority of this case. If this is set, do not set severity.
  &quot;severity&quot;: &quot;A String&quot;, # The severity of this case. Deprecated. Use priority instead.
  &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;, # The display name of the classification.
    &quot;id&quot;: &quot;A String&quot;, # The unique ID for a classification. Must be specified for case creation.
  },
  &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;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;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;name&quot;: &quot;A String&quot;, # The resource name for the case.
  &quot;priority&quot;: &quot;A String&quot;, # The priority of this case. If this is set, do not set severity.
  &quot;severity&quot;: &quot;A String&quot;, # The severity of this case. Deprecated. Use priority instead.
  &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. Escalating a case will initiate the Cloud Support escalation management process. This operation is only available to certain Customer Care tiers. Go to https://cloud.google.com/support and look for &#x27;Technical support escalations&#x27; in the feature list to find out which tiers are able to perform escalations.

Args:
  name: string, Required. The fully qualified name of the Case resource 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 object to be sent with the escalation request.
    &quot;actor&quot;: { # An object containing information about the effective user and authenticated principal responsible for an action. # Output only. The user or Google Support agent initiated this escalation.
      &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;createTime&quot;: &quot;A String&quot;, # Output only. The time when this escalation event was created.
    &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;name&quot;: &quot;A String&quot;, # Output only. The resource name for the escalation event.
    &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;, # The display name of the classification.
    &quot;id&quot;: &quot;A String&quot;, # The unique ID for a classification. Must be specified for case creation.
  },
  &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;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;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;name&quot;: &quot;A String&quot;, # The resource name for the case.
  &quot;priority&quot;: &quot;A String&quot;, # The priority of this case. If this is set, do not set severity.
  &quot;severity&quot;: &quot;A String&quot;, # The severity of this case. Deprecated. Use priority instead.
  &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 the specified case.

Args:
  name: string, Required. The fully qualified 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;, # The display name of the classification.
    &quot;id&quot;: &quot;A String&quot;, # The unique ID for a classification. Must be specified for case creation.
  },
  &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;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;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;name&quot;: &quot;A String&quot;, # The resource name for the case.
  &quot;priority&quot;: &quot;A String&quot;, # The priority of this case. If this is set, do not set severity.
  &quot;severity&quot;: &quot;A String&quot;, # The severity of this case. Deprecated. Use priority instead.
  &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 the specified parent.

Args:
  parent: string, Required. The fully qualified name of parent resource to list cases under. (required)
  filter: string, An expression written in the Cloud filter language. If non-empty, then only cases whose fields match the filter are returned. If empty, then no messages are filtered out. Filter strings can use the following fields: - status (Accepted values: OPEN or CLOSED) - severity (Accepted values: S0, S1, S2, S3, or S4) - creator.email with the operators equals (=) and AND. Additionally, a global restriction (with no operator) can be used to search across displayName, description, and comments (e.g. &quot;my search&quot;).
  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 cloud resource, 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;, # The display name of the classification.
        &quot;id&quot;: &quot;A String&quot;, # The unique ID for a classification. Must be specified for case creation.
      },
      &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;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;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;name&quot;: &quot;A String&quot;, # The resource name for the case.
      &quot;priority&quot;: &quot;A String&quot;, # The priority of this case. If this is set, do not set severity.
      &quot;severity&quot;: &quot;A String&quot;, # The severity of this case. Deprecated. Use priority instead.
      &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. This should be set in the `page_token` field of subsequent `ListCasesRequest` 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>

<div class="method">
    <code class="details" id="patch">patch(name, body=None, updateMask=None, x__xgafv=None)</code>
  <pre>Update the specified case. Only a subset of fields (display_name, description, time_zone, subscriber_email_addresses, related_resources, severity, priority, primary_contact, and labels) can be updated.

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;, # The display name of the classification.
    &quot;id&quot;: &quot;A String&quot;, # The unique ID for a classification. Must be specified for case creation.
  },
  &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;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;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;name&quot;: &quot;A String&quot;, # The resource name for the case.
  &quot;priority&quot;: &quot;A String&quot;, # The priority of this case. If this is set, do not set severity.
  &quot;severity&quot;: &quot;A String&quot;, # The severity of this case. Deprecated. Use priority instead.
  &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 field that represents attributes of a case object that should be updated as part of this request. Supported values are severity, display_name, and subscriber_email_addresses. If no fields are specified, all supported fields will be updated. WARNING: If you do not provide a field mask then you may accidentally clear some fields. For example, if you leave field mask empty and do not provide a value for subscriber_email_addresses then subscriber_email_addresses will be 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;, # The display name of the classification.
    &quot;id&quot;: &quot;A String&quot;, # The unique ID for a classification. Must be specified for case creation.
  },
  &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;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;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;name&quot;: &quot;A String&quot;, # The resource name for the case.
  &quot;priority&quot;: &quot;A String&quot;, # The priority of this case. If this is set, do not set severity.
  &quot;severity&quot;: &quot;A String&quot;, # The severity of this case. Deprecated. Use priority instead.
  &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(pageSize=None, pageToken=None, query=None, x__xgafv=None)</code>
  <pre>Search cases using the specified query.

Args:
  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 written in the Cloud filter language. Filter strings can use the following fields: - organization (A name of the form organizations/) - project (A name of the form projects/) - customer (A name of the form customers/) - state (Accepted values: OPEN or CLOSED) - severity (Accepted values: S0, S1, S2, S3, or S4) - creator.email with the operators equals (=) and AND. Additionally, a global restriction (with no key/operator) can be used to search across display_name, description, and comments (e.g. &quot;my search&quot;). One of organization, project, or customer field must be specified.
  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 Case associated with the cloud resource, 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;, # The display name of the classification.
        &quot;id&quot;: &quot;A String&quot;, # The unique ID for a classification. Must be specified for case creation.
      },
      &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;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;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;name&quot;: &quot;A String&quot;, # The resource name for the case.
      &quot;priority&quot;: &quot;A String&quot;, # The priority of this case. If this is set, do not set severity.
      &quot;severity&quot;: &quot;A String&quot;, # The severity of this case. Deprecated. Use priority instead.
      &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. This should be set in the `page_token` field of subsequent `SearchCaseRequest` message that is issued. If unspecified, there are no more results to retrieve.
}</pre>
</div>

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