<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="recommender_v1beta1.html">Recommender API</a> . <a href="recommender_v1beta1.projects.html">projects</a> . <a href="recommender_v1beta1.projects.locations.html">locations</a> . <a href="recommender_v1beta1.projects.locations.recommenders.html">recommenders</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="recommender_v1beta1.projects.locations.recommenders.recommendations.html">recommendations()</a></code>
</p>
<p class="firstline">Returns the recommendations 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="#getConfig">getConfig(name, x__xgafv=None)</a></code></p>
<p class="firstline">Gets the requested Recommender Config. There is only one instance of the config for each Recommender.</p>
<p class="toc_element">
  <code><a href="#updateConfig">updateConfig(name, body, updateMask=None, validateOnly=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates a Recommender Config. This will create a new revision of the config.</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="getConfig">getConfig(name, x__xgafv=None)</code>
  <pre>Gets the requested Recommender Config. There is only one instance of the config for each Recommender.

Args:
  name: string, Required. Name of the Recommendation Config to get. Acceptable formats: * `projects/[PROJECT_NUMBER]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]/config` * `projects/[PROJECT_ID]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]/config` * `organizations/[ORGANIZATION_ID]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]/config` (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Configuration for a Recommender.
  &quot;annotations&quot;: { # Allows clients to store small amounts of arbitrary data. Annotations must follow the Kubernetes syntax. The total size of all keys and values combined is limited to 256k. Key can have 2 segments: prefix (optional) and name (required), separated by a slash (/). Prefix must be a DNS subdomain. Name must be 63 characters or less, begin and end with alphanumerics, with dashes (-), underscores (_), dots (.), and alphanumerics between.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;displayName&quot;: &quot;A String&quot;, # A user-settable field to provide a human-readable name to be used in user interfaces.
  &quot;etag&quot;: &quot;A String&quot;, # Fingerprint of the RecommenderConfig. Provides optimistic locking when updating.
  &quot;name&quot;: &quot;A String&quot;, # Name of recommender config. Eg, projects/[PROJECT_NUMBER]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]/config
  &quot;recommenderGenerationConfig&quot;: { # A Configuration to customize the generation of recommendations. Eg, customizing the lookback period considered when generating a recommendation. # RecommenderGenerationConfig which configures the Generation of recommendations for this recommender.
    &quot;params&quot;: { # Parameters for this RecommenderGenerationConfig. These configs can be used by or are applied to all subtypes.
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
    },
  },
  &quot;revisionId&quot;: &quot;A String&quot;, # Output only. Immutable. The revision ID of the config. A new revision is committed whenever the config is changed in any way. The format is an 8-character hexadecimal string.
  &quot;updateTime&quot;: &quot;A String&quot;, # Last time when the config was updated.
}</pre>
</div>

<div class="method">
    <code class="details" id="updateConfig">updateConfig(name, body, updateMask=None, validateOnly=None, x__xgafv=None)</code>
  <pre>Updates a Recommender Config. This will create a new revision of the config.

Args:
  name: string, Name of recommender config. Eg, projects/[PROJECT_NUMBER]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]/config (required)
  body: object, The request body.
    The object takes the form of:

{ # Configuration for a Recommender.
  &quot;annotations&quot;: { # Allows clients to store small amounts of arbitrary data. Annotations must follow the Kubernetes syntax. The total size of all keys and values combined is limited to 256k. Key can have 2 segments: prefix (optional) and name (required), separated by a slash (/). Prefix must be a DNS subdomain. Name must be 63 characters or less, begin and end with alphanumerics, with dashes (-), underscores (_), dots (.), and alphanumerics between.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;displayName&quot;: &quot;A String&quot;, # A user-settable field to provide a human-readable name to be used in user interfaces.
  &quot;etag&quot;: &quot;A String&quot;, # Fingerprint of the RecommenderConfig. Provides optimistic locking when updating.
  &quot;name&quot;: &quot;A String&quot;, # Name of recommender config. Eg, projects/[PROJECT_NUMBER]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]/config
  &quot;recommenderGenerationConfig&quot;: { # A Configuration to customize the generation of recommendations. Eg, customizing the lookback period considered when generating a recommendation. # RecommenderGenerationConfig which configures the Generation of recommendations for this recommender.
    &quot;params&quot;: { # Parameters for this RecommenderGenerationConfig. These configs can be used by or are applied to all subtypes.
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
    },
  },
  &quot;revisionId&quot;: &quot;A String&quot;, # Output only. Immutable. The revision ID of the config. A new revision is committed whenever the config is changed in any way. The format is an 8-character hexadecimal string.
  &quot;updateTime&quot;: &quot;A String&quot;, # Last time when the config was updated.
}

  updateMask: string, The list of fields to be updated.
  validateOnly: boolean, If true, validate the request and preview the change, but do not actually update it.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Configuration for a Recommender.
  &quot;annotations&quot;: { # Allows clients to store small amounts of arbitrary data. Annotations must follow the Kubernetes syntax. The total size of all keys and values combined is limited to 256k. Key can have 2 segments: prefix (optional) and name (required), separated by a slash (/). Prefix must be a DNS subdomain. Name must be 63 characters or less, begin and end with alphanumerics, with dashes (-), underscores (_), dots (.), and alphanumerics between.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;displayName&quot;: &quot;A String&quot;, # A user-settable field to provide a human-readable name to be used in user interfaces.
  &quot;etag&quot;: &quot;A String&quot;, # Fingerprint of the RecommenderConfig. Provides optimistic locking when updating.
  &quot;name&quot;: &quot;A String&quot;, # Name of recommender config. Eg, projects/[PROJECT_NUMBER]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]/config
  &quot;recommenderGenerationConfig&quot;: { # A Configuration to customize the generation of recommendations. Eg, customizing the lookback period considered when generating a recommendation. # RecommenderGenerationConfig which configures the Generation of recommendations for this recommender.
    &quot;params&quot;: { # Parameters for this RecommenderGenerationConfig. These configs can be used by or are applied to all subtypes.
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
    },
  },
  &quot;revisionId&quot;: &quot;A String&quot;, # Output only. Immutable. The revision ID of the config. A new revision is committed whenever the config is changed in any way. The format is an 8-character hexadecimal string.
  &quot;updateTime&quot;: &quot;A String&quot;, # Last time when the config was updated.
}</pre>
</div>

</body></html>