<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.organizations.html">organizations</a> . <a href="recommender_v1beta1.organizations.locations.html">locations</a> . <a href="recommender_v1beta1.organizations.locations.insightTypes.html">insightTypes</a> . <a href="recommender_v1beta1.organizations.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: 1. `projects/[PROJECT_NUMBER]/locations/[LOCATION]/insightTypes/[INSIGHT_TYPE_ID]` 2. `billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION]/insightTypes/[INSIGHT_TYPE_ID]` 3. `folders/[FOLDER_ID]/locations/[LOCATION]/insightTypes/[INSIGHT_TYPE_ID]` 4. `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>