<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="retail_v2beta.html">Vertex AI Search for commerce API</a> . <a href="retail_v2beta.projects.html">projects</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="retail_v2beta.projects.locations.html">locations()</a></code>
</p>
<p class="firstline">Returns the locations Resource.</p>

<p class="toc_element">
  <code><a href="retail_v2beta.projects.operations.html">operations()</a></code>
</p>
<p class="firstline">Returns the operations Resource.</p>

<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#getAlertConfig">getAlertConfig(name, x__xgafv=None)</a></code></p>
<p class="firstline">Get the AlertConfig of the requested project.</p>
<p class="toc_element">
  <code><a href="#updateAlertConfig">updateAlertConfig(name, body=None, updateMask=None, x__xgafv=None)</a></code></p>
<p class="firstline">Update the alert config of the requested project.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="getAlertConfig">getAlertConfig(name, x__xgafv=None)</code>
  <pre>Get the AlertConfig of the requested project.

Args:
  name: string, Required. Full AlertConfig resource name. Format: projects/{project_number}/alertConfig (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Project level alert config.
  &quot;alertPolicies&quot;: [ # Alert policies for a customer. They must be unique by [AlertPolicy.alert_group]
    { # Alert policy for a customer.
      &quot;alertGroup&quot;: &quot;A String&quot;, # The feature that provides alerting capability. Supported value: - `search-data-quality` for retail search customers. - `conv-data-quality` for retail conversation customers.
      &quot;enrollStatus&quot;: &quot;A String&quot;, # The enrollment status of a customer.
      &quot;recipients&quot;: [ # Recipients for the alert policy. One alert policy should not exceed 20 recipients.
        { # Recipient contact information.
          &quot;emailAddress&quot;: &quot;A String&quot;, # Email address of the recipient.
        },
      ],
    },
  ],
  &quot;name&quot;: &quot;A String&quot;, # Required. Immutable. The name of the AlertConfig singleton resource. Format: projects/*/alertConfig
}</pre>
</div>

<div class="method">
    <code class="details" id="updateAlertConfig">updateAlertConfig(name, body=None, updateMask=None, x__xgafv=None)</code>
  <pre>Update the alert config of the requested project.

Args:
  name: string, Required. Immutable. The name of the AlertConfig singleton resource. Format: projects/*/alertConfig (required)
  body: object, The request body.
    The object takes the form of:

{ # Project level alert config.
  &quot;alertPolicies&quot;: [ # Alert policies for a customer. They must be unique by [AlertPolicy.alert_group]
    { # Alert policy for a customer.
      &quot;alertGroup&quot;: &quot;A String&quot;, # The feature that provides alerting capability. Supported value: - `search-data-quality` for retail search customers. - `conv-data-quality` for retail conversation customers.
      &quot;enrollStatus&quot;: &quot;A String&quot;, # The enrollment status of a customer.
      &quot;recipients&quot;: [ # Recipients for the alert policy. One alert policy should not exceed 20 recipients.
        { # Recipient contact information.
          &quot;emailAddress&quot;: &quot;A String&quot;, # Email address of the recipient.
        },
      ],
    },
  ],
  &quot;name&quot;: &quot;A String&quot;, # Required. Immutable. The name of the AlertConfig singleton resource. Format: projects/*/alertConfig
}

  updateMask: string, Indicates which fields in the provided AlertConfig to update. If not set, all supported fields are updated.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Project level alert config.
  &quot;alertPolicies&quot;: [ # Alert policies for a customer. They must be unique by [AlertPolicy.alert_group]
    { # Alert policy for a customer.
      &quot;alertGroup&quot;: &quot;A String&quot;, # The feature that provides alerting capability. Supported value: - `search-data-quality` for retail search customers. - `conv-data-quality` for retail conversation customers.
      &quot;enrollStatus&quot;: &quot;A String&quot;, # The enrollment status of a customer.
      &quot;recipients&quot;: [ # Recipients for the alert policy. One alert policy should not exceed 20 recipients.
        { # Recipient contact information.
          &quot;emailAddress&quot;: &quot;A String&quot;, # Email address of the recipient.
        },
      ],
    },
  ],
  &quot;name&quot;: &quot;A String&quot;, # Required. Immutable. The name of the AlertConfig singleton resource. Format: projects/*/alertConfig
}</pre>
</div>

</body></html>