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

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

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

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

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

<p class="toc_element">
  <code><a href="securitycenter_v1beta2.projects.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>