<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_v1beta2.html">Security Command Center API</a> . <a href="securitycenter_v1beta2.folders.html">folders</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="securitycenter_v1beta2.folders.containerThreatDetectionSettings.html">containerThreatDetectionSettings()</a></code>
</p>
<p class="firstline">Returns the containerThreatDetectionSettings Resource.</p>

<p class="toc_element">
  <code><a href="securitycenter_v1beta2.folders.eventThreatDetectionSettings.html">eventThreatDetectionSettings()</a></code>
</p>
<p class="firstline">Returns the eventThreatDetectionSettings Resource.</p>

<p class="toc_element">
  <code><a href="securitycenter_v1beta2.folders.securityHealthAnalyticsSettings.html">securityHealthAnalyticsSettings()</a></code>
</p>
<p class="firstline">Returns the securityHealthAnalyticsSettings Resource.</p>

<p class="toc_element">
  <code><a href="securitycenter_v1beta2.folders.virtualMachineThreatDetectionSettings.html">virtualMachineThreatDetectionSettings()</a></code>
</p>
<p class="firstline">Returns the virtualMachineThreatDetectionSettings Resource.</p>

<p class="toc_element">
  <code><a href="securitycenter_v1beta2.folders.webSecurityScannerSettings.html">webSecurityScannerSettings()</a></code>
</p>
<p class="firstline">Returns the webSecurityScannerSettings 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="#getContainerThreatDetectionSettings">getContainerThreatDetectionSettings(name, x__xgafv=None)</a></code></p>
<p class="firstline">Get the ContainerThreatDetectionSettings resource.</p>
<p class="toc_element">
  <code><a href="#getEventThreatDetectionSettings">getEventThreatDetectionSettings(name, x__xgafv=None)</a></code></p>
<p class="firstline">Get the EventThreatDetectionSettings resource.</p>
<p class="toc_element">
  <code><a href="#getSecurityHealthAnalyticsSettings">getSecurityHealthAnalyticsSettings(name, x__xgafv=None)</a></code></p>
<p class="firstline">Get the SecurityHealthAnalyticsSettings resource.</p>
<p class="toc_element">
  <code><a href="#getVirtualMachineThreatDetectionSettings">getVirtualMachineThreatDetectionSettings(name, x__xgafv=None)</a></code></p>
<p class="firstline">Get the VirtualMachineThreatDetectionSettings resource.</p>
<p class="toc_element">
  <code><a href="#getWebSecurityScannerSettings">getWebSecurityScannerSettings(name, x__xgafv=None)</a></code></p>
<p class="firstline">Get the WebSecurityScannerSettings resource.</p>
<p class="toc_element">
  <code><a href="#updateContainerThreatDetectionSettings">updateContainerThreatDetectionSettings(name, body=None, updateMask=None, x__xgafv=None)</a></code></p>
<p class="firstline">Update the ContainerThreatDetectionSettings resource.</p>
<p class="toc_element">
  <code><a href="#updateEventThreatDetectionSettings">updateEventThreatDetectionSettings(name, body=None, updateMask=None, x__xgafv=None)</a></code></p>
<p class="firstline">Update the EventThreatDetectionSettings resource.</p>
<p class="toc_element">
  <code><a href="#updateSecurityHealthAnalyticsSettings">updateSecurityHealthAnalyticsSettings(name, body=None, updateMask=None, x__xgafv=None)</a></code></p>
<p class="firstline">Update the SecurityHealthAnalyticsSettings resource.</p>
<p class="toc_element">
  <code><a href="#updateVirtualMachineThreatDetectionSettings">updateVirtualMachineThreatDetectionSettings(name, body=None, updateMask=None, x__xgafv=None)</a></code></p>
<p class="firstline">Update the VirtualMachineThreatDetectionSettings resource.</p>
<p class="toc_element">
  <code><a href="#updateWebSecurityScannerSettings">updateWebSecurityScannerSettings(name, body=None, updateMask=None, x__xgafv=None)</a></code></p>
<p class="firstline">Update the WebSecurityScannerSettings resource.</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="getContainerThreatDetectionSettings">getContainerThreatDetectionSettings(name, x__xgafv=None)</code>
  <pre>Get the ContainerThreatDetectionSettings resource.

Args:
  name: string, Required. The name of the ContainerThreatDetectionSettings to retrieve. Formats: * organizations/{organization}/containerThreatDetectionSettings * folders/{folder}/containerThreatDetectionSettings * projects/{project}/containerThreatDetectionSettings * projects/{project}/locations/{location}/clusters/{cluster}/containerThreatDetectionSettings (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Resource capturing the settings for the Container Threat Detection service.
  &quot;modules&quot;: { # The configurations including the state of enablement for the service&#x27;s different modules. The absence of a module in the map implies its configuration is inherited from its parent&#x27;s.
    &quot;a_key&quot;: { # Configuration of a module.
      &quot;moduleEnablementState&quot;: &quot;A String&quot;, # The state of enablement for the module at its level of the resource hierarchy.
      &quot;value&quot;: { # The configuration value for the module. The absence of this field implies its inheritance from the parent.
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
      },
    },
  },
  &quot;name&quot;: &quot;A String&quot;, # The resource name of the ContainerThreatDetectionSettings. Formats: * organizations/{organization}/containerThreatDetectionSettings * folders/{folder}/containerThreatDetectionSettings * projects/{project}/containerThreatDetectionSettings * projects/{project}/locations/{location}/clusters/{cluster}/containerThreatDetectionSettings
  &quot;serviceAccount&quot;: &quot;A String&quot;, # Output only. The service account used by Container Threat Detection for scanning. Service accounts are scoped at the project level meaning this field will be empty at any level above a project.
  &quot;serviceEnablementState&quot;: &quot;A String&quot;, # The state of enablement for the service at its level of the resource hierarchy. A DISABLED state will override all module enablement_states to DISABLED.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time the settings were last updated.
}</pre>
</div>

<div class="method">
    <code class="details" id="getEventThreatDetectionSettings">getEventThreatDetectionSettings(name, x__xgafv=None)</code>
  <pre>Get the EventThreatDetectionSettings resource.

Args:
  name: string, Required. The name of the EventThreatDetectionSettings to retrieve. Formats: * organizations/{organization}/eventThreatDetectionSettings * folders/{folder}/eventThreatDetectionSettings * projects/{project}/eventThreatDetectionSettings (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Resource capturing the settings for the Event Threat Detection service.
  &quot;modules&quot;: { # The configurations including the state of enablement for the service&#x27;s different modules. The absence of a module in the map implies its configuration is inherited from its parent&#x27;s.
    &quot;a_key&quot;: { # Configuration of a module.
      &quot;moduleEnablementState&quot;: &quot;A String&quot;, # The state of enablement for the module at its level of the resource hierarchy.
      &quot;value&quot;: { # The configuration value for the module. The absence of this field implies its inheritance from the parent.
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
      },
    },
  },
  &quot;name&quot;: &quot;A String&quot;, # The resource name of the EventThreatDetectionSettings. Formats: * organizations/{organization}/eventThreatDetectionSettings * folders/{folder}/eventThreatDetectionSettings * projects/{project}/eventThreatDetectionSettings
  &quot;serviceEnablementState&quot;: &quot;A String&quot;, # The state of enablement for the service at its level of the resource hierarchy. A DISABLED state will override all module enablement_states to DISABLED.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time the settings were last updated.
}</pre>
</div>

<div class="method">
    <code class="details" id="getSecurityHealthAnalyticsSettings">getSecurityHealthAnalyticsSettings(name, x__xgafv=None)</code>
  <pre>Get the SecurityHealthAnalyticsSettings resource.

Args:
  name: string, Required. The name of the SecurityHealthAnalyticsSettings to retrieve. Formats: * organizations/{organization}/securityHealthAnalyticsSettings * folders/{folder}/securityHealthAnalyticsSettings * projects/{project}/securityHealthAnalyticsSettings (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Resource capturing the settings for the Security Health Analytics service.
  &quot;modules&quot;: { # The configurations including the state of enablement for the service&#x27;s different modules. The absence of a module in the map implies its configuration is inherited from its parent&#x27;s.
    &quot;a_key&quot;: { # Configuration of a module.
      &quot;moduleEnablementState&quot;: &quot;A String&quot;, # The state of enablement for the module at its level of the resource hierarchy.
      &quot;value&quot;: { # The configuration value for the module. The absence of this field implies its inheritance from the parent.
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
      },
    },
  },
  &quot;name&quot;: &quot;A String&quot;, # The resource name of the SecurityHealthAnalyticsSettings. Formats: * organizations/{organization}/securityHealthAnalyticsSettings * folders/{folder}/securityHealthAnalyticsSettings * projects/{project}/securityHealthAnalyticsSettings
  &quot;serviceAccount&quot;: &quot;A String&quot;, # Output only. The service account used by Security Health Analytics detectors.
  &quot;serviceEnablementState&quot;: &quot;A String&quot;, # The state of enablement for the service at its level of the resource hierarchy. A DISABLED state will override all module enablement_states to DISABLED.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time the settings were last updated.
}</pre>
</div>

<div class="method">
    <code class="details" id="getVirtualMachineThreatDetectionSettings">getVirtualMachineThreatDetectionSettings(name, x__xgafv=None)</code>
  <pre>Get the VirtualMachineThreatDetectionSettings resource.

Args:
  name: string, Required. The name of the VirtualMachineThreatDetectionSettings to retrieve. Formats: * organizations/{organization}/virtualMachineThreatDetectionSettings * folders/{folder}/virtualMachineThreatDetectionSettings * projects/{project}/virtualMachineThreatDetectionSettings (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Resource capturing the settings for the Virtual Machine Threat Detection service.
  &quot;modules&quot;: { # The configurations including the state of enablement for the service&#x27;s different modules. The absence of a module in the map implies its configuration is inherited from its parent&#x27;s.
    &quot;a_key&quot;: { # Configuration of a module.
      &quot;moduleEnablementState&quot;: &quot;A String&quot;, # The state of enablement for the module at its level of the resource hierarchy.
      &quot;value&quot;: { # The configuration value for the module. The absence of this field implies its inheritance from the parent.
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
      },
    },
  },
  &quot;name&quot;: &quot;A String&quot;, # The resource name of the VirtualMachineThreatDetectionSettings. Formats: * organizations/{organization}/virtualMachineThreatDetectionSettings * folders/{folder}/virtualMachineThreatDetectionSettings * projects/{project}/virtualMachineThreatDetectionSettings
  &quot;serviceAccount&quot;: &quot;A String&quot;, # Output only. The service account used by Virtual Machine Threat Detection detectors.
  &quot;serviceEnablementState&quot;: &quot;A String&quot;, # The state of enablement for the service at its level of the resource hierarchy. A DISABLED state will override all module enablement_states to DISABLED.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time the settings were last updated.
}</pre>
</div>

<div class="method">
    <code class="details" id="getWebSecurityScannerSettings">getWebSecurityScannerSettings(name, x__xgafv=None)</code>
  <pre>Get the WebSecurityScannerSettings resource.

Args:
  name: string, Required. The name of the WebSecurityScannerSettings to retrieve. Formats: * organizations/{organization}/webSecurityScannerSettings * folders/{folder}/webSecurityScannerSettings * projects/{project}/webSecurityScannerSettings (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Resource capturing the settings for the Web Security Scanner service.
  &quot;modules&quot;: { # The configurations including the state of enablement for the service&#x27;s different modules. The absence of a module in the map implies its configuration is inherited from its parent&#x27;s.
    &quot;a_key&quot;: { # Configuration of a module.
      &quot;moduleEnablementState&quot;: &quot;A String&quot;, # The state of enablement for the module at its level of the resource hierarchy.
      &quot;value&quot;: { # The configuration value for the module. The absence of this field implies its inheritance from the parent.
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
      },
    },
  },
  &quot;name&quot;: &quot;A String&quot;, # The resource name of the WebSecurityScannerSettings. Formats: * organizations/{organization}/webSecurityScannerSettings * folders/{folder}/webSecurityScannerSettings * projects/{project}/webSecurityScannerSettings
  &quot;serviceEnablementState&quot;: &quot;A String&quot;, # The state of enablement for the service at its level of the resource hierarchy. A DISABLED state will override all module enablement_states to DISABLED.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time the settings were last updated.
}</pre>
</div>

<div class="method">
    <code class="details" id="updateContainerThreatDetectionSettings">updateContainerThreatDetectionSettings(name, body=None, updateMask=None, x__xgafv=None)</code>
  <pre>Update the ContainerThreatDetectionSettings resource.

Args:
  name: string, The resource name of the ContainerThreatDetectionSettings. Formats: * organizations/{organization}/containerThreatDetectionSettings * folders/{folder}/containerThreatDetectionSettings * projects/{project}/containerThreatDetectionSettings * projects/{project}/locations/{location}/clusters/{cluster}/containerThreatDetectionSettings (required)
  body: object, The request body.
    The object takes the form of:

{ # Resource capturing the settings for the Container Threat Detection service.
  &quot;modules&quot;: { # The configurations including the state of enablement for the service&#x27;s different modules. The absence of a module in the map implies its configuration is inherited from its parent&#x27;s.
    &quot;a_key&quot;: { # Configuration of a module.
      &quot;moduleEnablementState&quot;: &quot;A String&quot;, # The state of enablement for the module at its level of the resource hierarchy.
      &quot;value&quot;: { # The configuration value for the module. The absence of this field implies its inheritance from the parent.
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
      },
    },
  },
  &quot;name&quot;: &quot;A String&quot;, # The resource name of the ContainerThreatDetectionSettings. Formats: * organizations/{organization}/containerThreatDetectionSettings * folders/{folder}/containerThreatDetectionSettings * projects/{project}/containerThreatDetectionSettings * projects/{project}/locations/{location}/clusters/{cluster}/containerThreatDetectionSettings
  &quot;serviceAccount&quot;: &quot;A String&quot;, # Output only. The service account used by Container Threat Detection for scanning. Service accounts are scoped at the project level meaning this field will be empty at any level above a project.
  &quot;serviceEnablementState&quot;: &quot;A String&quot;, # The state of enablement for the service at its level of the resource hierarchy. A DISABLED state will override all module enablement_states to DISABLED.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time the settings were last updated.
}

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

Returns:
  An object of the form:

    { # Resource capturing the settings for the Container Threat Detection service.
  &quot;modules&quot;: { # The configurations including the state of enablement for the service&#x27;s different modules. The absence of a module in the map implies its configuration is inherited from its parent&#x27;s.
    &quot;a_key&quot;: { # Configuration of a module.
      &quot;moduleEnablementState&quot;: &quot;A String&quot;, # The state of enablement for the module at its level of the resource hierarchy.
      &quot;value&quot;: { # The configuration value for the module. The absence of this field implies its inheritance from the parent.
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
      },
    },
  },
  &quot;name&quot;: &quot;A String&quot;, # The resource name of the ContainerThreatDetectionSettings. Formats: * organizations/{organization}/containerThreatDetectionSettings * folders/{folder}/containerThreatDetectionSettings * projects/{project}/containerThreatDetectionSettings * projects/{project}/locations/{location}/clusters/{cluster}/containerThreatDetectionSettings
  &quot;serviceAccount&quot;: &quot;A String&quot;, # Output only. The service account used by Container Threat Detection for scanning. Service accounts are scoped at the project level meaning this field will be empty at any level above a project.
  &quot;serviceEnablementState&quot;: &quot;A String&quot;, # The state of enablement for the service at its level of the resource hierarchy. A DISABLED state will override all module enablement_states to DISABLED.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time the settings were last updated.
}</pre>
</div>

<div class="method">
    <code class="details" id="updateEventThreatDetectionSettings">updateEventThreatDetectionSettings(name, body=None, updateMask=None, x__xgafv=None)</code>
  <pre>Update the EventThreatDetectionSettings resource.

Args:
  name: string, The resource name of the EventThreatDetectionSettings. Formats: * organizations/{organization}/eventThreatDetectionSettings * folders/{folder}/eventThreatDetectionSettings * projects/{project}/eventThreatDetectionSettings (required)
  body: object, The request body.
    The object takes the form of:

{ # Resource capturing the settings for the Event Threat Detection service.
  &quot;modules&quot;: { # The configurations including the state of enablement for the service&#x27;s different modules. The absence of a module in the map implies its configuration is inherited from its parent&#x27;s.
    &quot;a_key&quot;: { # Configuration of a module.
      &quot;moduleEnablementState&quot;: &quot;A String&quot;, # The state of enablement for the module at its level of the resource hierarchy.
      &quot;value&quot;: { # The configuration value for the module. The absence of this field implies its inheritance from the parent.
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
      },
    },
  },
  &quot;name&quot;: &quot;A String&quot;, # The resource name of the EventThreatDetectionSettings. Formats: * organizations/{organization}/eventThreatDetectionSettings * folders/{folder}/eventThreatDetectionSettings * projects/{project}/eventThreatDetectionSettings
  &quot;serviceEnablementState&quot;: &quot;A String&quot;, # The state of enablement for the service at its level of the resource hierarchy. A DISABLED state will override all module enablement_states to DISABLED.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time the settings were last updated.
}

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

Returns:
  An object of the form:

    { # Resource capturing the settings for the Event Threat Detection service.
  &quot;modules&quot;: { # The configurations including the state of enablement for the service&#x27;s different modules. The absence of a module in the map implies its configuration is inherited from its parent&#x27;s.
    &quot;a_key&quot;: { # Configuration of a module.
      &quot;moduleEnablementState&quot;: &quot;A String&quot;, # The state of enablement for the module at its level of the resource hierarchy.
      &quot;value&quot;: { # The configuration value for the module. The absence of this field implies its inheritance from the parent.
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
      },
    },
  },
  &quot;name&quot;: &quot;A String&quot;, # The resource name of the EventThreatDetectionSettings. Formats: * organizations/{organization}/eventThreatDetectionSettings * folders/{folder}/eventThreatDetectionSettings * projects/{project}/eventThreatDetectionSettings
  &quot;serviceEnablementState&quot;: &quot;A String&quot;, # The state of enablement for the service at its level of the resource hierarchy. A DISABLED state will override all module enablement_states to DISABLED.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time the settings were last updated.
}</pre>
</div>

<div class="method">
    <code class="details" id="updateSecurityHealthAnalyticsSettings">updateSecurityHealthAnalyticsSettings(name, body=None, updateMask=None, x__xgafv=None)</code>
  <pre>Update the SecurityHealthAnalyticsSettings resource.

Args:
  name: string, The resource name of the SecurityHealthAnalyticsSettings. Formats: * organizations/{organization}/securityHealthAnalyticsSettings * folders/{folder}/securityHealthAnalyticsSettings * projects/{project}/securityHealthAnalyticsSettings (required)
  body: object, The request body.
    The object takes the form of:

{ # Resource capturing the settings for the Security Health Analytics service.
  &quot;modules&quot;: { # The configurations including the state of enablement for the service&#x27;s different modules. The absence of a module in the map implies its configuration is inherited from its parent&#x27;s.
    &quot;a_key&quot;: { # Configuration of a module.
      &quot;moduleEnablementState&quot;: &quot;A String&quot;, # The state of enablement for the module at its level of the resource hierarchy.
      &quot;value&quot;: { # The configuration value for the module. The absence of this field implies its inheritance from the parent.
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
      },
    },
  },
  &quot;name&quot;: &quot;A String&quot;, # The resource name of the SecurityHealthAnalyticsSettings. Formats: * organizations/{organization}/securityHealthAnalyticsSettings * folders/{folder}/securityHealthAnalyticsSettings * projects/{project}/securityHealthAnalyticsSettings
  &quot;serviceAccount&quot;: &quot;A String&quot;, # Output only. The service account used by Security Health Analytics detectors.
  &quot;serviceEnablementState&quot;: &quot;A String&quot;, # The state of enablement for the service at its level of the resource hierarchy. A DISABLED state will override all module enablement_states to DISABLED.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time the settings were last updated.
}

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

Returns:
  An object of the form:

    { # Resource capturing the settings for the Security Health Analytics service.
  &quot;modules&quot;: { # The configurations including the state of enablement for the service&#x27;s different modules. The absence of a module in the map implies its configuration is inherited from its parent&#x27;s.
    &quot;a_key&quot;: { # Configuration of a module.
      &quot;moduleEnablementState&quot;: &quot;A String&quot;, # The state of enablement for the module at its level of the resource hierarchy.
      &quot;value&quot;: { # The configuration value for the module. The absence of this field implies its inheritance from the parent.
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
      },
    },
  },
  &quot;name&quot;: &quot;A String&quot;, # The resource name of the SecurityHealthAnalyticsSettings. Formats: * organizations/{organization}/securityHealthAnalyticsSettings * folders/{folder}/securityHealthAnalyticsSettings * projects/{project}/securityHealthAnalyticsSettings
  &quot;serviceAccount&quot;: &quot;A String&quot;, # Output only. The service account used by Security Health Analytics detectors.
  &quot;serviceEnablementState&quot;: &quot;A String&quot;, # The state of enablement for the service at its level of the resource hierarchy. A DISABLED state will override all module enablement_states to DISABLED.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time the settings were last updated.
}</pre>
</div>

<div class="method">
    <code class="details" id="updateVirtualMachineThreatDetectionSettings">updateVirtualMachineThreatDetectionSettings(name, body=None, updateMask=None, x__xgafv=None)</code>
  <pre>Update the VirtualMachineThreatDetectionSettings resource.

Args:
  name: string, The resource name of the VirtualMachineThreatDetectionSettings. Formats: * organizations/{organization}/virtualMachineThreatDetectionSettings * folders/{folder}/virtualMachineThreatDetectionSettings * projects/{project}/virtualMachineThreatDetectionSettings (required)
  body: object, The request body.
    The object takes the form of:

{ # Resource capturing the settings for the Virtual Machine Threat Detection service.
  &quot;modules&quot;: { # The configurations including the state of enablement for the service&#x27;s different modules. The absence of a module in the map implies its configuration is inherited from its parent&#x27;s.
    &quot;a_key&quot;: { # Configuration of a module.
      &quot;moduleEnablementState&quot;: &quot;A String&quot;, # The state of enablement for the module at its level of the resource hierarchy.
      &quot;value&quot;: { # The configuration value for the module. The absence of this field implies its inheritance from the parent.
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
      },
    },
  },
  &quot;name&quot;: &quot;A String&quot;, # The resource name of the VirtualMachineThreatDetectionSettings. Formats: * organizations/{organization}/virtualMachineThreatDetectionSettings * folders/{folder}/virtualMachineThreatDetectionSettings * projects/{project}/virtualMachineThreatDetectionSettings
  &quot;serviceAccount&quot;: &quot;A String&quot;, # Output only. The service account used by Virtual Machine Threat Detection detectors.
  &quot;serviceEnablementState&quot;: &quot;A String&quot;, # The state of enablement for the service at its level of the resource hierarchy. A DISABLED state will override all module enablement_states to DISABLED.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time the settings were last updated.
}

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

Returns:
  An object of the form:

    { # Resource capturing the settings for the Virtual Machine Threat Detection service.
  &quot;modules&quot;: { # The configurations including the state of enablement for the service&#x27;s different modules. The absence of a module in the map implies its configuration is inherited from its parent&#x27;s.
    &quot;a_key&quot;: { # Configuration of a module.
      &quot;moduleEnablementState&quot;: &quot;A String&quot;, # The state of enablement for the module at its level of the resource hierarchy.
      &quot;value&quot;: { # The configuration value for the module. The absence of this field implies its inheritance from the parent.
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
      },
    },
  },
  &quot;name&quot;: &quot;A String&quot;, # The resource name of the VirtualMachineThreatDetectionSettings. Formats: * organizations/{organization}/virtualMachineThreatDetectionSettings * folders/{folder}/virtualMachineThreatDetectionSettings * projects/{project}/virtualMachineThreatDetectionSettings
  &quot;serviceAccount&quot;: &quot;A String&quot;, # Output only. The service account used by Virtual Machine Threat Detection detectors.
  &quot;serviceEnablementState&quot;: &quot;A String&quot;, # The state of enablement for the service at its level of the resource hierarchy. A DISABLED state will override all module enablement_states to DISABLED.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time the settings were last updated.
}</pre>
</div>

<div class="method">
    <code class="details" id="updateWebSecurityScannerSettings">updateWebSecurityScannerSettings(name, body=None, updateMask=None, x__xgafv=None)</code>
  <pre>Update the WebSecurityScannerSettings resource.

Args:
  name: string, The resource name of the WebSecurityScannerSettings. Formats: * organizations/{organization}/webSecurityScannerSettings * folders/{folder}/webSecurityScannerSettings * projects/{project}/webSecurityScannerSettings (required)
  body: object, The request body.
    The object takes the form of:

{ # Resource capturing the settings for the Web Security Scanner service.
  &quot;modules&quot;: { # The configurations including the state of enablement for the service&#x27;s different modules. The absence of a module in the map implies its configuration is inherited from its parent&#x27;s.
    &quot;a_key&quot;: { # Configuration of a module.
      &quot;moduleEnablementState&quot;: &quot;A String&quot;, # The state of enablement for the module at its level of the resource hierarchy.
      &quot;value&quot;: { # The configuration value for the module. The absence of this field implies its inheritance from the parent.
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
      },
    },
  },
  &quot;name&quot;: &quot;A String&quot;, # The resource name of the WebSecurityScannerSettings. Formats: * organizations/{organization}/webSecurityScannerSettings * folders/{folder}/webSecurityScannerSettings * projects/{project}/webSecurityScannerSettings
  &quot;serviceEnablementState&quot;: &quot;A String&quot;, # The state of enablement for the service at its level of the resource hierarchy. A DISABLED state will override all module enablement_states to DISABLED.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time the settings were last updated.
}

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

Returns:
  An object of the form:

    { # Resource capturing the settings for the Web Security Scanner service.
  &quot;modules&quot;: { # The configurations including the state of enablement for the service&#x27;s different modules. The absence of a module in the map implies its configuration is inherited from its parent&#x27;s.
    &quot;a_key&quot;: { # Configuration of a module.
      &quot;moduleEnablementState&quot;: &quot;A String&quot;, # The state of enablement for the module at its level of the resource hierarchy.
      &quot;value&quot;: { # The configuration value for the module. The absence of this field implies its inheritance from the parent.
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
      },
    },
  },
  &quot;name&quot;: &quot;A String&quot;, # The resource name of the WebSecurityScannerSettings. Formats: * organizations/{organization}/webSecurityScannerSettings * folders/{folder}/webSecurityScannerSettings * projects/{project}/webSecurityScannerSettings
  &quot;serviceEnablementState&quot;: &quot;A String&quot;, # The state of enablement for the service at its level of the resource hierarchy. A DISABLED state will override all module enablement_states to DISABLED.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time the settings were last updated.
}</pre>
</div>

</body></html>