<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.insightTypes.html">insightTypes</a> . <a href="recommender_v1beta1.projects.locations.insightTypes.insights.html">insights</a></h1>
<h2>Instance Methods</h2>
<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="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Gets the requested insight. Requires the recommender.*.get IAM permission for the specified insight type.</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">Lists insights for the specified Cloud Resource. Requires the recommender.*.list IAM permission for the specified insight type.</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="#markAccepted">markAccepted(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Marks the Insight State as Accepted. Users can use this method to indicate to the Recommender API that they have applied some action based on the insight. This stops the insight content from being updated. MarkInsightAccepted can be applied to insights in ACTIVE state. Requires the recommender.*.update IAM permission for the specified insight.</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="get">get(name, x__xgafv=None)</code>
  <pre>Gets the requested insight. Requires the recommender.*.get IAM permission for the specified insight type.

Args:
  name: string, Required. Name of the insight. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # An insight along with the information used to derive the insight. The insight may have associated recomendations as well.
  &quot;associatedRecommendations&quot;: [ # Recommendations derived from this insight.
    { # Reference to an associated recommendation.
      &quot;recommendation&quot;: &quot;A String&quot;, # Recommendation resource name, e.g. projects/[PROJECT_NUMBER]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]/recommendations/[RECOMMENDATION_ID]
    },
  ],
  &quot;category&quot;: &quot;A String&quot;, # Category being targeted by the insight.
  &quot;content&quot;: { # A struct of custom fields to explain the insight. Example: &quot;grantedPermissionsCount&quot;: &quot;1000&quot;
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
  },
  &quot;description&quot;: &quot;A String&quot;, # Free-form human readable summary in English. The maximum length is 500 characters.
  &quot;etag&quot;: &quot;A String&quot;, # Fingerprint of the Insight. Provides optimistic locking when updating states.
  &quot;insightSubtype&quot;: &quot;A String&quot;, # Insight subtype. Insight content schema will be stable for a given subtype.
  &quot;lastRefreshTime&quot;: &quot;A String&quot;, # Timestamp of the latest data used to generate the insight.
  &quot;name&quot;: &quot;A String&quot;, # Name of the insight.
  &quot;observationPeriod&quot;: &quot;A String&quot;, # Observation period that led to the insight. The source data used to generate the insight ends at last_refresh_time and begins at (last_refresh_time - observation_period).
  &quot;severity&quot;: &quot;A String&quot;, # Insight&#x27;s severity.
  &quot;stateInfo&quot;: { # Information related to insight state. # Information state and metadata.
    &quot;state&quot;: &quot;A String&quot;, # Insight state.
    &quot;stateMetadata&quot;: { # A map of metadata for the state, provided by user or automations systems.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
  },
  &quot;targetResources&quot;: [ # Fully qualified resource names that this insight is targeting.
    &quot;A String&quot;,
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, filter=None, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists insights for the specified Cloud Resource. Requires the recommender.*.list IAM permission for the specified insight type.

Args:
  parent: string, Required. The container resource on which to execute the request. Acceptable formats: * `projects/[PROJECT_NUMBER]/locations/[LOCATION]/insightTypes/[INSIGHT_TYPE_ID]` * `projects/[PROJECT_ID]/locations/[LOCATION]/insightTypes/[INSIGHT_TYPE_ID]` * `billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION]/insightTypes/[INSIGHT_TYPE_ID]` * `folders/[FOLDER_ID]/locations/[LOCATION]/insightTypes/[INSIGHT_TYPE_ID]` * `organizations/[ORGANIZATION_ID]/locations/[LOCATION]/insightTypes/[INSIGHT_TYPE_ID]` LOCATION here refers to GCP Locations: https://cloud.google.com/about/locations/ INSIGHT_TYPE_ID refers to supported insight types: https://cloud.google.com/recommender/docs/insights/insight-types. (required)
  filter: string, Optional. Filter expression to restrict the insights returned. Supported filter fields: * `stateInfo.state` * `insightSubtype` * `severity` Examples: * `stateInfo.state = ACTIVE OR stateInfo.state = DISMISSED` * `insightSubtype = PERMISSIONS_USAGE` * `severity = CRITICAL OR severity = HIGH` * `stateInfo.state = ACTIVE AND (severity = CRITICAL OR severity = HIGH)` (These expressions are based on the filter language described at https://google.aip.dev/160)
  pageSize: integer, Optional. The maximum number of results to return from this request. Non-positive values are ignored. If not specified, the server will determine the number of results to return.
  pageToken: string, Optional. If present, retrieves the next batch of results from the preceding call to this method. `page_token` must be the value of `next_page_token` from the previous response. The values of other method parameters must be identical to those in the previous call.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response to the `ListInsights` method.
  &quot;insights&quot;: [ # The set of insights for the `parent` resource.
    { # An insight along with the information used to derive the insight. The insight may have associated recomendations as well.
      &quot;associatedRecommendations&quot;: [ # Recommendations derived from this insight.
        { # Reference to an associated recommendation.
          &quot;recommendation&quot;: &quot;A String&quot;, # Recommendation resource name, e.g. projects/[PROJECT_NUMBER]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]/recommendations/[RECOMMENDATION_ID]
        },
      ],
      &quot;category&quot;: &quot;A String&quot;, # Category being targeted by the insight.
      &quot;content&quot;: { # A struct of custom fields to explain the insight. Example: &quot;grantedPermissionsCount&quot;: &quot;1000&quot;
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
      },
      &quot;description&quot;: &quot;A String&quot;, # Free-form human readable summary in English. The maximum length is 500 characters.
      &quot;etag&quot;: &quot;A String&quot;, # Fingerprint of the Insight. Provides optimistic locking when updating states.
      &quot;insightSubtype&quot;: &quot;A String&quot;, # Insight subtype. Insight content schema will be stable for a given subtype.
      &quot;lastRefreshTime&quot;: &quot;A String&quot;, # Timestamp of the latest data used to generate the insight.
      &quot;name&quot;: &quot;A String&quot;, # Name of the insight.
      &quot;observationPeriod&quot;: &quot;A String&quot;, # Observation period that led to the insight. The source data used to generate the insight ends at last_refresh_time and begins at (last_refresh_time - observation_period).
      &quot;severity&quot;: &quot;A String&quot;, # Insight&#x27;s severity.
      &quot;stateInfo&quot;: { # Information related to insight state. # Information state and metadata.
        &quot;state&quot;: &quot;A String&quot;, # Insight state.
        &quot;stateMetadata&quot;: { # A map of metadata for the state, provided by user or automations systems.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
      },
      &quot;targetResources&quot;: [ # Fully qualified resource names that this insight is targeting.
        &quot;A String&quot;,
      ],
    },
  ],
  &quot;nextPageToken&quot;: &quot;A String&quot;, # A token that can be used to request the next page of results. This field is empty if there are no additional results.
}</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="markAccepted">markAccepted(name, body=None, x__xgafv=None)</code>
  <pre>Marks the Insight State as Accepted. Users can use this method to indicate to the Recommender API that they have applied some action based on the insight. This stops the insight content from being updated. MarkInsightAccepted can be applied to insights in ACTIVE state. Requires the recommender.*.update IAM permission for the specified insight.

Args:
  name: string, Required. Name of the insight. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request for the `MarkInsightAccepted` method.
  &quot;etag&quot;: &quot;A String&quot;, # Required. Fingerprint of the Insight. Provides optimistic locking.
  &quot;stateMetadata&quot;: { # Optional. State properties user wish to include with this state. Full replace of the current state_metadata.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
}

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

Returns:
  An object of the form:

    { # An insight along with the information used to derive the insight. The insight may have associated recomendations as well.
  &quot;associatedRecommendations&quot;: [ # Recommendations derived from this insight.
    { # Reference to an associated recommendation.
      &quot;recommendation&quot;: &quot;A String&quot;, # Recommendation resource name, e.g. projects/[PROJECT_NUMBER]/locations/[LOCATION]/recommenders/[RECOMMENDER_ID]/recommendations/[RECOMMENDATION_ID]
    },
  ],
  &quot;category&quot;: &quot;A String&quot;, # Category being targeted by the insight.
  &quot;content&quot;: { # A struct of custom fields to explain the insight. Example: &quot;grantedPermissionsCount&quot;: &quot;1000&quot;
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
  },
  &quot;description&quot;: &quot;A String&quot;, # Free-form human readable summary in English. The maximum length is 500 characters.
  &quot;etag&quot;: &quot;A String&quot;, # Fingerprint of the Insight. Provides optimistic locking when updating states.
  &quot;insightSubtype&quot;: &quot;A String&quot;, # Insight subtype. Insight content schema will be stable for a given subtype.
  &quot;lastRefreshTime&quot;: &quot;A String&quot;, # Timestamp of the latest data used to generate the insight.
  &quot;name&quot;: &quot;A String&quot;, # Name of the insight.
  &quot;observationPeriod&quot;: &quot;A String&quot;, # Observation period that led to the insight. The source data used to generate the insight ends at last_refresh_time and begins at (last_refresh_time - observation_period).
  &quot;severity&quot;: &quot;A String&quot;, # Insight&#x27;s severity.
  &quot;stateInfo&quot;: { # Information related to insight state. # Information state and metadata.
    &quot;state&quot;: &quot;A String&quot;, # Insight state.
    &quot;stateMetadata&quot;: { # A map of metadata for the state, provided by user or automations systems.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
  },
  &quot;targetResources&quot;: [ # Fully qualified resource names that this insight is targeting.
    &quot;A String&quot;,
  ],
}</pre>
</div>

</body></html>