<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="securitycenter_v1.html">Security Command Center API</a> . <a href="securitycenter_v1.projects.html">projects</a> . <a href="securitycenter_v1.projects.muteConfigs.html">muteConfigs</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="#create">create(parent, body=None, muteConfigId=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a mute config.</p>
<p class="toc_element">
  <code><a href="#delete">delete(name, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes an existing mute config.</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Gets a mute config.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists mute configs.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next()</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">Updates a mute 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="create">create(parent, body=None, muteConfigId=None, x__xgafv=None)</code>
  <pre>Creates a mute config.

Args:
  parent: string, Required. Resource name of the new mute configs&#x27;s parent. Its format is `organizations/[organization_id]`, `folders/[folder_id]`, or `projects/[project_id]`. (required)
  body: object, The request body.
    The object takes the form of:

{ # A mute config is a Cloud SCC resource that contains the configuration to mute create/update events of findings.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which the mute config was created. This field is set by the server and will be ignored if provided on config creation.
  &quot;description&quot;: &quot;A String&quot;, # A description of the mute config.
  &quot;displayName&quot;: &quot;A String&quot;, # The human readable name to be displayed for the mute config.
  &quot;expiryTime&quot;: &quot;A String&quot;, # Optional. The expiry of the mute config. Only applicable for dynamic configs. If the expiry is set, when the config expires, it is removed from all findings.
  &quot;filter&quot;: &quot;A String&quot;, # Required. An expression that defines the filter to apply across create/update events of findings. While creating a filter string, be mindful of the scope in which the mute configuration is being created. E.g., If a filter contains project = X but is created under the project = Y scope, it might not match any findings. The following field and operator combinations are supported: * severity: `=`, `:` * category: `=`, `:` * resource.name: `=`, `:` * resource.project_name: `=`, `:` * resource.project_display_name: `=`, `:` * resource.folders.resource_folder: `=`, `:` * resource.parent_name: `=`, `:` * resource.parent_display_name: `=`, `:` * resource.type: `=`, `:` * finding_class: `=`, `:` * indicator.ip_addresses: `=`, `:` * indicator.domains: `=`, `:`
  &quot;mostRecentEditor&quot;: &quot;A String&quot;, # Output only. Email address of the user who last edited the mute config. This field is set by the server and will be ignored if provided on config creation or update.
  &quot;name&quot;: &quot;A String&quot;, # This field will be ignored if provided on config creation. Format `organizations/{organization}/muteConfigs/{mute_config}` `folders/{folder}/muteConfigs/{mute_config}` `projects/{project}/muteConfigs/{mute_config}` `organizations/{organization}/locations/global/muteConfigs/{mute_config}` `folders/{folder}/locations/global/muteConfigs/{mute_config}` `projects/{project}/locations/global/muteConfigs/{mute_config}`
  &quot;type&quot;: &quot;A String&quot;, # Optional. The type of the mute config, which determines what type of mute state the config affects. The static mute state takes precedence over the dynamic mute state. Immutable after creation. STATIC by default if not set during creation.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The most recent time at which the mute config was updated. This field is set by the server and will be ignored if provided on config creation or update.
}

  muteConfigId: string, Required. Unique identifier provided by the client within the parent scope. It must consist of only lowercase letters, numbers, and hyphens, must start with a letter, must end with either a letter or a number, and must be 63 characters or less.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A mute config is a Cloud SCC resource that contains the configuration to mute create/update events of findings.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which the mute config was created. This field is set by the server and will be ignored if provided on config creation.
  &quot;description&quot;: &quot;A String&quot;, # A description of the mute config.
  &quot;displayName&quot;: &quot;A String&quot;, # The human readable name to be displayed for the mute config.
  &quot;expiryTime&quot;: &quot;A String&quot;, # Optional. The expiry of the mute config. Only applicable for dynamic configs. If the expiry is set, when the config expires, it is removed from all findings.
  &quot;filter&quot;: &quot;A String&quot;, # Required. An expression that defines the filter to apply across create/update events of findings. While creating a filter string, be mindful of the scope in which the mute configuration is being created. E.g., If a filter contains project = X but is created under the project = Y scope, it might not match any findings. The following field and operator combinations are supported: * severity: `=`, `:` * category: `=`, `:` * resource.name: `=`, `:` * resource.project_name: `=`, `:` * resource.project_display_name: `=`, `:` * resource.folders.resource_folder: `=`, `:` * resource.parent_name: `=`, `:` * resource.parent_display_name: `=`, `:` * resource.type: `=`, `:` * finding_class: `=`, `:` * indicator.ip_addresses: `=`, `:` * indicator.domains: `=`, `:`
  &quot;mostRecentEditor&quot;: &quot;A String&quot;, # Output only. Email address of the user who last edited the mute config. This field is set by the server and will be ignored if provided on config creation or update.
  &quot;name&quot;: &quot;A String&quot;, # This field will be ignored if provided on config creation. Format `organizations/{organization}/muteConfigs/{mute_config}` `folders/{folder}/muteConfigs/{mute_config}` `projects/{project}/muteConfigs/{mute_config}` `organizations/{organization}/locations/global/muteConfigs/{mute_config}` `folders/{folder}/locations/global/muteConfigs/{mute_config}` `projects/{project}/locations/global/muteConfigs/{mute_config}`
  &quot;type&quot;: &quot;A String&quot;, # Optional. The type of the mute config, which determines what type of mute state the config affects. The static mute state takes precedence over the dynamic mute state. Immutable after creation. STATIC by default if not set during creation.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The most recent time at which the mute config was updated. This field is set by the server and will be ignored if provided on config creation or update.
}</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(name, x__xgafv=None)</code>
  <pre>Deletes an existing mute config.

Args:
  name: string, Required. Name of the mute config to delete. Its format is `organizations/{organization}/muteConfigs/{config_id}`, `folders/{folder}/muteConfigs/{config_id}`, `projects/{project}/muteConfigs/{config_id}`, `organizations/{organization}/locations/global/muteConfigs/{config_id}`, `folders/{folder}/locations/global/muteConfigs/{config_id}`, or `projects/{project}/locations/global/muteConfigs/{config_id}`. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }
}</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, x__xgafv=None)</code>
  <pre>Gets a mute config.

Args:
  name: string, Required. Name of the mute config to retrieve. Its format is `organizations/{organization}/muteConfigs/{config_id}`, `folders/{folder}/muteConfigs/{config_id}`, `projects/{project}/muteConfigs/{config_id}`, `organizations/{organization}/locations/global/muteConfigs/{config_id}`, `folders/{folder}/locations/global/muteConfigs/{config_id}`, or `projects/{project}/locations/global/muteConfigs/{config_id}`. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A mute config is a Cloud SCC resource that contains the configuration to mute create/update events of findings.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which the mute config was created. This field is set by the server and will be ignored if provided on config creation.
  &quot;description&quot;: &quot;A String&quot;, # A description of the mute config.
  &quot;displayName&quot;: &quot;A String&quot;, # The human readable name to be displayed for the mute config.
  &quot;expiryTime&quot;: &quot;A String&quot;, # Optional. The expiry of the mute config. Only applicable for dynamic configs. If the expiry is set, when the config expires, it is removed from all findings.
  &quot;filter&quot;: &quot;A String&quot;, # Required. An expression that defines the filter to apply across create/update events of findings. While creating a filter string, be mindful of the scope in which the mute configuration is being created. E.g., If a filter contains project = X but is created under the project = Y scope, it might not match any findings. The following field and operator combinations are supported: * severity: `=`, `:` * category: `=`, `:` * resource.name: `=`, `:` * resource.project_name: `=`, `:` * resource.project_display_name: `=`, `:` * resource.folders.resource_folder: `=`, `:` * resource.parent_name: `=`, `:` * resource.parent_display_name: `=`, `:` * resource.type: `=`, `:` * finding_class: `=`, `:` * indicator.ip_addresses: `=`, `:` * indicator.domains: `=`, `:`
  &quot;mostRecentEditor&quot;: &quot;A String&quot;, # Output only. Email address of the user who last edited the mute config. This field is set by the server and will be ignored if provided on config creation or update.
  &quot;name&quot;: &quot;A String&quot;, # This field will be ignored if provided on config creation. Format `organizations/{organization}/muteConfigs/{mute_config}` `folders/{folder}/muteConfigs/{mute_config}` `projects/{project}/muteConfigs/{mute_config}` `organizations/{organization}/locations/global/muteConfigs/{mute_config}` `folders/{folder}/locations/global/muteConfigs/{mute_config}` `projects/{project}/locations/global/muteConfigs/{mute_config}`
  &quot;type&quot;: &quot;A String&quot;, # Optional. The type of the mute config, which determines what type of mute state the config affects. The static mute state takes precedence over the dynamic mute state. Immutable after creation. STATIC by default if not set during creation.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The most recent time at which the mute config was updated. This field is set by the server and will be ignored if provided on config creation or update.
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists mute configs.

Args:
  parent: string, Required. The parent, which owns the collection of mute configs. Its format is `organizations/[organization_id]`, `folders/[folder_id]`, `projects/[project_id]`. (required)
  pageSize: integer, The maximum number of configs to return. The service may return fewer than this value. If unspecified, at most 10 configs will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.
  pageToken: string, A page token, received from a previous `ListMuteConfigs` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListMuteConfigs` must match the call that provided the page token.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response message for listing mute configs.
  &quot;muteConfigs&quot;: [ # The mute configs from the specified parent.
    { # A mute config is a Cloud SCC resource that contains the configuration to mute create/update events of findings.
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which the mute config was created. This field is set by the server and will be ignored if provided on config creation.
      &quot;description&quot;: &quot;A String&quot;, # A description of the mute config.
      &quot;displayName&quot;: &quot;A String&quot;, # The human readable name to be displayed for the mute config.
      &quot;expiryTime&quot;: &quot;A String&quot;, # Optional. The expiry of the mute config. Only applicable for dynamic configs. If the expiry is set, when the config expires, it is removed from all findings.
      &quot;filter&quot;: &quot;A String&quot;, # Required. An expression that defines the filter to apply across create/update events of findings. While creating a filter string, be mindful of the scope in which the mute configuration is being created. E.g., If a filter contains project = X but is created under the project = Y scope, it might not match any findings. The following field and operator combinations are supported: * severity: `=`, `:` * category: `=`, `:` * resource.name: `=`, `:` * resource.project_name: `=`, `:` * resource.project_display_name: `=`, `:` * resource.folders.resource_folder: `=`, `:` * resource.parent_name: `=`, `:` * resource.parent_display_name: `=`, `:` * resource.type: `=`, `:` * finding_class: `=`, `:` * indicator.ip_addresses: `=`, `:` * indicator.domains: `=`, `:`
      &quot;mostRecentEditor&quot;: &quot;A String&quot;, # Output only. Email address of the user who last edited the mute config. This field is set by the server and will be ignored if provided on config creation or update.
      &quot;name&quot;: &quot;A String&quot;, # This field will be ignored if provided on config creation. Format `organizations/{organization}/muteConfigs/{mute_config}` `folders/{folder}/muteConfigs/{mute_config}` `projects/{project}/muteConfigs/{mute_config}` `organizations/{organization}/locations/global/muteConfigs/{mute_config}` `folders/{folder}/locations/global/muteConfigs/{mute_config}` `projects/{project}/locations/global/muteConfigs/{mute_config}`
      &quot;type&quot;: &quot;A String&quot;, # Optional. The type of the mute config, which determines what type of mute state the config affects. The static mute state takes precedence over the dynamic mute state. Immutable after creation. STATIC by default if not set during creation.
      &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The most recent time at which the mute config was updated. This field is set by the server and will be ignored if provided on config creation or update.
    },
  ],
  &quot;nextPageToken&quot;: &quot;A String&quot;, # A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.
}</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next()</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>Updates a mute config.

Args:
  name: string, This field will be ignored if provided on config creation. Format `organizations/{organization}/muteConfigs/{mute_config}` `folders/{folder}/muteConfigs/{mute_config}` `projects/{project}/muteConfigs/{mute_config}` `organizations/{organization}/locations/global/muteConfigs/{mute_config}` `folders/{folder}/locations/global/muteConfigs/{mute_config}` `projects/{project}/locations/global/muteConfigs/{mute_config}` (required)
  body: object, The request body.
    The object takes the form of:

{ # A mute config is a Cloud SCC resource that contains the configuration to mute create/update events of findings.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which the mute config was created. This field is set by the server and will be ignored if provided on config creation.
  &quot;description&quot;: &quot;A String&quot;, # A description of the mute config.
  &quot;displayName&quot;: &quot;A String&quot;, # The human readable name to be displayed for the mute config.
  &quot;expiryTime&quot;: &quot;A String&quot;, # Optional. The expiry of the mute config. Only applicable for dynamic configs. If the expiry is set, when the config expires, it is removed from all findings.
  &quot;filter&quot;: &quot;A String&quot;, # Required. An expression that defines the filter to apply across create/update events of findings. While creating a filter string, be mindful of the scope in which the mute configuration is being created. E.g., If a filter contains project = X but is created under the project = Y scope, it might not match any findings. The following field and operator combinations are supported: * severity: `=`, `:` * category: `=`, `:` * resource.name: `=`, `:` * resource.project_name: `=`, `:` * resource.project_display_name: `=`, `:` * resource.folders.resource_folder: `=`, `:` * resource.parent_name: `=`, `:` * resource.parent_display_name: `=`, `:` * resource.type: `=`, `:` * finding_class: `=`, `:` * indicator.ip_addresses: `=`, `:` * indicator.domains: `=`, `:`
  &quot;mostRecentEditor&quot;: &quot;A String&quot;, # Output only. Email address of the user who last edited the mute config. This field is set by the server and will be ignored if provided on config creation or update.
  &quot;name&quot;: &quot;A String&quot;, # This field will be ignored if provided on config creation. Format `organizations/{organization}/muteConfigs/{mute_config}` `folders/{folder}/muteConfigs/{mute_config}` `projects/{project}/muteConfigs/{mute_config}` `organizations/{organization}/locations/global/muteConfigs/{mute_config}` `folders/{folder}/locations/global/muteConfigs/{mute_config}` `projects/{project}/locations/global/muteConfigs/{mute_config}`
  &quot;type&quot;: &quot;A String&quot;, # Optional. The type of the mute config, which determines what type of mute state the config affects. The static mute state takes precedence over the dynamic mute state. Immutable after creation. STATIC by default if not set during creation.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The most recent time at which the mute config was updated. This field is set by the server and will be ignored if provided on config creation or update.
}

  updateMask: string, The list of fields to be updated. If empty all mutable fields will be updated.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A mute config is a Cloud SCC resource that contains the configuration to mute create/update events of findings.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which the mute config was created. This field is set by the server and will be ignored if provided on config creation.
  &quot;description&quot;: &quot;A String&quot;, # A description of the mute config.
  &quot;displayName&quot;: &quot;A String&quot;, # The human readable name to be displayed for the mute config.
  &quot;expiryTime&quot;: &quot;A String&quot;, # Optional. The expiry of the mute config. Only applicable for dynamic configs. If the expiry is set, when the config expires, it is removed from all findings.
  &quot;filter&quot;: &quot;A String&quot;, # Required. An expression that defines the filter to apply across create/update events of findings. While creating a filter string, be mindful of the scope in which the mute configuration is being created. E.g., If a filter contains project = X but is created under the project = Y scope, it might not match any findings. The following field and operator combinations are supported: * severity: `=`, `:` * category: `=`, `:` * resource.name: `=`, `:` * resource.project_name: `=`, `:` * resource.project_display_name: `=`, `:` * resource.folders.resource_folder: `=`, `:` * resource.parent_name: `=`, `:` * resource.parent_display_name: `=`, `:` * resource.type: `=`, `:` * finding_class: `=`, `:` * indicator.ip_addresses: `=`, `:` * indicator.domains: `=`, `:`
  &quot;mostRecentEditor&quot;: &quot;A String&quot;, # Output only. Email address of the user who last edited the mute config. This field is set by the server and will be ignored if provided on config creation or update.
  &quot;name&quot;: &quot;A String&quot;, # This field will be ignored if provided on config creation. Format `organizations/{organization}/muteConfigs/{mute_config}` `folders/{folder}/muteConfigs/{mute_config}` `projects/{project}/muteConfigs/{mute_config}` `organizations/{organization}/locations/global/muteConfigs/{mute_config}` `folders/{folder}/locations/global/muteConfigs/{mute_config}` `projects/{project}/locations/global/muteConfigs/{mute_config}`
  &quot;type&quot;: &quot;A String&quot;, # Optional. The type of the mute config, which determines what type of mute state the config affects. The static mute state takes precedence over the dynamic mute state. Immutable after creation. STATIC by default if not set during creation.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The most recent time at which the mute config was updated. This field is set by the server and will be ignored if provided on config creation or update.
}</pre>
</div>

</body></html>