<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, orderBy=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, 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;severity&quot;: &quot;A String&quot;, # The severity 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 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;severity&quot;: &quot;A String&quot;, # The severity 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;, # 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;severity&quot;: &quot;A String&quot;, # The severity 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. 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;severity&quot;: &quot;A String&quot;, # The severity 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 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;severity&quot;: &quot;A String&quot;, # The severity 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, orderBy=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;).
  orderBy: string, A comma separated list of fields to order by, followed by `asc` or `desc` postfix. This list is case-insensitive, default sorting order is ascending, redundant space characters are insignificant. Example: `name asc,update_time, create_time desc`
  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;severity&quot;: &quot;A String&quot;, # The severity 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. 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, 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;severity&quot;: &quot;A String&quot;, # The severity 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 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;severity&quot;: &quot;A String&quot;, # The severity 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(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;severity&quot;: &quot;A String&quot;, # The severity 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. 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>