<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.securityHealthAnalyticsSettings.html">securityHealthAnalyticsSettings</a> . <a href="securitycenter_v1.projects.securityHealthAnalyticsSettings.customModules.html">customModules</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, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a resident SecurityHealthAnalyticsCustomModule at the scope of the given CRM parent, and also creates inherited SecurityHealthAnalyticsCustomModules for all CRM descendants of the given parent. These modules are enabled by default.</p>
<p class="toc_element">
  <code><a href="#delete">delete(name, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes the specified SecurityHealthAnalyticsCustomModule and all of its descendants in the CRM hierarchy. This method is only supported for resident custom modules.</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Retrieves a SecurityHealthAnalyticsCustomModule.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Returns a list of all SecurityHealthAnalyticsCustomModules for the given parent. This includes resident modules defined at the scope of the parent, and inherited modules, inherited from CRM ancestors.</p>
<p class="toc_element">
  <code><a href="#listDescendant">listDescendant(parent, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Returns a list of all resident SecurityHealthAnalyticsCustomModules under the given CRM parent and all of the parent’s CRM descendants.</p>
<p class="toc_element">
  <code><a href="#listDescendant_next">listDescendant_next()</a></code></p>
<p class="firstline">Retrieves the next page of results.</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 the SecurityHealthAnalyticsCustomModule under the given name based on the given update mask. Updating the enablement state is supported on both resident and inherited modules (though resident modules cannot have an enablement state of "inherited"). Updating the display name and custom config of a module is supported on resident modules only.</p>
<p class="toc_element">
  <code><a href="#simulate">simulate(parent, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Simulates a given SecurityHealthAnalyticsCustomModule and 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="create">create(parent, body=None, x__xgafv=None)</code>
  <pre>Creates a resident SecurityHealthAnalyticsCustomModule at the scope of the given CRM parent, and also creates inherited SecurityHealthAnalyticsCustomModules for all CRM descendants of the given parent. These modules are enabled by default.

Args:
  parent: string, Required. Resource name of the new custom module&#x27;s parent. Its format is &quot;organizations/{organization}/securityHealthAnalyticsSettings&quot;, &quot;folders/{folder}/securityHealthAnalyticsSettings&quot;, or &quot;projects/{project}/securityHealthAnalyticsSettings&quot; (required)
  body: object, The request body.
    The object takes the form of:

{ # Represents an instance of a Security Health Analytics custom module, including its full module name, display name, enablement state, and last updated time. You can create a custom module at the organization, folder, or project level. Custom modules that you create at the organization or folder level are inherited by the child folders and projects.
  &quot;ancestorModule&quot;: &quot;A String&quot;, # Output only. If empty, indicates that the custom module was created in the organization, folder, or project in which you are viewing the custom module. Otherwise, `ancestor_module` specifies the organization or folder from which the custom module is inherited.
  &quot;customConfig&quot;: { # Defines the properties in a custom module configuration for Security Health Analytics. Use the custom module configuration to create custom detectors that generate custom findings for resources that you specify. # The user specified custom configuration for the module.
    &quot;customOutput&quot;: { # A set of optional name-value pairs that define custom source properties to return with each finding that is generated by the custom module. The custom source properties that are defined here are included in the finding JSON under `sourceProperties`. # Custom output properties.
      &quot;properties&quot;: [ # A list of custom output properties to add to the finding.
        { # An individual name-value pair that defines a custom source property.
          &quot;name&quot;: &quot;A String&quot;, # Name of the property for the custom output.
          &quot;valueExpression&quot;: { # Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: &quot;Summary size limit&quot; description: &quot;Determines if a summary is less than 100 chars&quot; expression: &quot;document.summary.size() &lt; 100&quot; Example (Equality): title: &quot;Requestor is owner&quot; description: &quot;Determines if requestor is the document owner&quot; expression: &quot;document.owner == request.auth.claims.email&quot; Example (Logic): title: &quot;Public documents&quot; description: &quot;Determine whether the document should be publicly visible&quot; expression: &quot;document.type != &#x27;private&#x27; &amp;&amp; document.type != &#x27;internal&#x27;&quot; Example (Data Manipulation): title: &quot;Notification string&quot; description: &quot;Create a notification string with a timestamp.&quot; expression: &quot;&#x27;New message received at &#x27; + string(document.create_time)&quot; The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information. # The CEL expression for the custom output. A resource property can be specified to return the value of the property or a text string enclosed in quotation marks.
            &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.
            &quot;expression&quot;: &quot;A String&quot;, # Textual representation of an expression in Common Expression Language syntax.
            &quot;location&quot;: &quot;A String&quot;, # Optional. String indicating the location of the expression for error reporting, e.g. a file name and a position in the file.
            &quot;title&quot;: &quot;A String&quot;, # Optional. Title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.
          },
        },
      ],
    },
    &quot;description&quot;: &quot;A String&quot;, # Text that describes the vulnerability or misconfiguration that the custom module detects. This explanation is returned with each finding instance to help investigators understand the detected issue. The text must be enclosed in quotation marks.
    &quot;predicate&quot;: { # Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: &quot;Summary size limit&quot; description: &quot;Determines if a summary is less than 100 chars&quot; expression: &quot;document.summary.size() &lt; 100&quot; Example (Equality): title: &quot;Requestor is owner&quot; description: &quot;Determines if requestor is the document owner&quot; expression: &quot;document.owner == request.auth.claims.email&quot; Example (Logic): title: &quot;Public documents&quot; description: &quot;Determine whether the document should be publicly visible&quot; expression: &quot;document.type != &#x27;private&#x27; &amp;&amp; document.type != &#x27;internal&#x27;&quot; Example (Data Manipulation): title: &quot;Notification string&quot; description: &quot;Create a notification string with a timestamp.&quot; expression: &quot;&#x27;New message received at &#x27; + string(document.create_time)&quot; The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information. # The CEL expression to evaluate to produce findings. When the expression evaluates to true against a resource, a finding is generated.
      &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.
      &quot;expression&quot;: &quot;A String&quot;, # Textual representation of an expression in Common Expression Language syntax.
      &quot;location&quot;: &quot;A String&quot;, # Optional. String indicating the location of the expression for error reporting, e.g. a file name and a position in the file.
      &quot;title&quot;: &quot;A String&quot;, # Optional. Title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.
    },
    &quot;recommendation&quot;: &quot;A String&quot;, # An explanation of the recommended steps that security teams can take to resolve the detected issue. This explanation is returned with each finding generated by this module in the `nextSteps` property of the finding JSON.
    &quot;resourceSelector&quot;: { # Resource for selecting resource type. # The resource types that the custom module operates on. Each custom module can specify up to 5 resource types.
      &quot;resourceTypes&quot;: [ # The resource types to run the detector on.
        &quot;A String&quot;,
      ],
    },
    &quot;severity&quot;: &quot;A String&quot;, # The severity to assign to findings generated by the module.
  },
  &quot;displayName&quot;: &quot;A String&quot;, # The display name of the Security Health Analytics custom module. This display name becomes the finding category for all findings that are returned by this custom module. The display name must be between 1 and 128 characters, start with a lowercase letter, and contain alphanumeric characters or underscores only.
  &quot;enablementState&quot;: &quot;A String&quot;, # The enablement state of the custom module.
  &quot;lastEditor&quot;: &quot;A String&quot;, # Output only. The editor that last updated the custom module.
  &quot;name&quot;: &quot;A String&quot;, # Immutable. The resource name of the custom module. Its format is &quot;organizations/{organization}/securityHealthAnalyticsSettings/customModules/{customModule}&quot;, or &quot;folders/{folder}/securityHealthAnalyticsSettings/customModules/{customModule}&quot;, or &quot;projects/{project}/securityHealthAnalyticsSettings/customModules/{customModule}&quot; The id {customModule} is server-generated and is not user settable. It will be a numeric id containing 1-20 digits.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time at which the custom module was last updated.
}

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

Returns:
  An object of the form:

    { # Represents an instance of a Security Health Analytics custom module, including its full module name, display name, enablement state, and last updated time. You can create a custom module at the organization, folder, or project level. Custom modules that you create at the organization or folder level are inherited by the child folders and projects.
  &quot;ancestorModule&quot;: &quot;A String&quot;, # Output only. If empty, indicates that the custom module was created in the organization, folder, or project in which you are viewing the custom module. Otherwise, `ancestor_module` specifies the organization or folder from which the custom module is inherited.
  &quot;customConfig&quot;: { # Defines the properties in a custom module configuration for Security Health Analytics. Use the custom module configuration to create custom detectors that generate custom findings for resources that you specify. # The user specified custom configuration for the module.
    &quot;customOutput&quot;: { # A set of optional name-value pairs that define custom source properties to return with each finding that is generated by the custom module. The custom source properties that are defined here are included in the finding JSON under `sourceProperties`. # Custom output properties.
      &quot;properties&quot;: [ # A list of custom output properties to add to the finding.
        { # An individual name-value pair that defines a custom source property.
          &quot;name&quot;: &quot;A String&quot;, # Name of the property for the custom output.
          &quot;valueExpression&quot;: { # Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: &quot;Summary size limit&quot; description: &quot;Determines if a summary is less than 100 chars&quot; expression: &quot;document.summary.size() &lt; 100&quot; Example (Equality): title: &quot;Requestor is owner&quot; description: &quot;Determines if requestor is the document owner&quot; expression: &quot;document.owner == request.auth.claims.email&quot; Example (Logic): title: &quot;Public documents&quot; description: &quot;Determine whether the document should be publicly visible&quot; expression: &quot;document.type != &#x27;private&#x27; &amp;&amp; document.type != &#x27;internal&#x27;&quot; Example (Data Manipulation): title: &quot;Notification string&quot; description: &quot;Create a notification string with a timestamp.&quot; expression: &quot;&#x27;New message received at &#x27; + string(document.create_time)&quot; The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information. # The CEL expression for the custom output. A resource property can be specified to return the value of the property or a text string enclosed in quotation marks.
            &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.
            &quot;expression&quot;: &quot;A String&quot;, # Textual representation of an expression in Common Expression Language syntax.
            &quot;location&quot;: &quot;A String&quot;, # Optional. String indicating the location of the expression for error reporting, e.g. a file name and a position in the file.
            &quot;title&quot;: &quot;A String&quot;, # Optional. Title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.
          },
        },
      ],
    },
    &quot;description&quot;: &quot;A String&quot;, # Text that describes the vulnerability or misconfiguration that the custom module detects. This explanation is returned with each finding instance to help investigators understand the detected issue. The text must be enclosed in quotation marks.
    &quot;predicate&quot;: { # Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: &quot;Summary size limit&quot; description: &quot;Determines if a summary is less than 100 chars&quot; expression: &quot;document.summary.size() &lt; 100&quot; Example (Equality): title: &quot;Requestor is owner&quot; description: &quot;Determines if requestor is the document owner&quot; expression: &quot;document.owner == request.auth.claims.email&quot; Example (Logic): title: &quot;Public documents&quot; description: &quot;Determine whether the document should be publicly visible&quot; expression: &quot;document.type != &#x27;private&#x27; &amp;&amp; document.type != &#x27;internal&#x27;&quot; Example (Data Manipulation): title: &quot;Notification string&quot; description: &quot;Create a notification string with a timestamp.&quot; expression: &quot;&#x27;New message received at &#x27; + string(document.create_time)&quot; The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information. # The CEL expression to evaluate to produce findings. When the expression evaluates to true against a resource, a finding is generated.
      &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.
      &quot;expression&quot;: &quot;A String&quot;, # Textual representation of an expression in Common Expression Language syntax.
      &quot;location&quot;: &quot;A String&quot;, # Optional. String indicating the location of the expression for error reporting, e.g. a file name and a position in the file.
      &quot;title&quot;: &quot;A String&quot;, # Optional. Title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.
    },
    &quot;recommendation&quot;: &quot;A String&quot;, # An explanation of the recommended steps that security teams can take to resolve the detected issue. This explanation is returned with each finding generated by this module in the `nextSteps` property of the finding JSON.
    &quot;resourceSelector&quot;: { # Resource for selecting resource type. # The resource types that the custom module operates on. Each custom module can specify up to 5 resource types.
      &quot;resourceTypes&quot;: [ # The resource types to run the detector on.
        &quot;A String&quot;,
      ],
    },
    &quot;severity&quot;: &quot;A String&quot;, # The severity to assign to findings generated by the module.
  },
  &quot;displayName&quot;: &quot;A String&quot;, # The display name of the Security Health Analytics custom module. This display name becomes the finding category for all findings that are returned by this custom module. The display name must be between 1 and 128 characters, start with a lowercase letter, and contain alphanumeric characters or underscores only.
  &quot;enablementState&quot;: &quot;A String&quot;, # The enablement state of the custom module.
  &quot;lastEditor&quot;: &quot;A String&quot;, # Output only. The editor that last updated the custom module.
  &quot;name&quot;: &quot;A String&quot;, # Immutable. The resource name of the custom module. Its format is &quot;organizations/{organization}/securityHealthAnalyticsSettings/customModules/{customModule}&quot;, or &quot;folders/{folder}/securityHealthAnalyticsSettings/customModules/{customModule}&quot;, or &quot;projects/{project}/securityHealthAnalyticsSettings/customModules/{customModule}&quot; The id {customModule} is server-generated and is not user settable. It will be a numeric id containing 1-20 digits.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time at which the custom module was last updated.
}</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(name, x__xgafv=None)</code>
  <pre>Deletes the specified SecurityHealthAnalyticsCustomModule and all of its descendants in the CRM hierarchy. This method is only supported for resident custom modules.

Args:
  name: string, Required. Name of the custom module to delete. Its format is &quot;organizations/{organization}/securityHealthAnalyticsSettings/customModules/{customModule}&quot;, &quot;folders/{folder}/securityHealthAnalyticsSettings/customModules/{customModule}&quot;, or &quot;projects/{project}/securityHealthAnalyticsSettings/customModules/{customModule}&quot; (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>Retrieves a SecurityHealthAnalyticsCustomModule.

Args:
  name: string, Required. Name of the custom module to get. Its format is &quot;organizations/{organization}/securityHealthAnalyticsSettings/customModules/{customModule}&quot;, &quot;folders/{folder}/securityHealthAnalyticsSettings/customModules/{customModule}&quot;, or &quot;projects/{project}/securityHealthAnalyticsSettings/customModules/{customModule}&quot; (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Represents an instance of a Security Health Analytics custom module, including its full module name, display name, enablement state, and last updated time. You can create a custom module at the organization, folder, or project level. Custom modules that you create at the organization or folder level are inherited by the child folders and projects.
  &quot;ancestorModule&quot;: &quot;A String&quot;, # Output only. If empty, indicates that the custom module was created in the organization, folder, or project in which you are viewing the custom module. Otherwise, `ancestor_module` specifies the organization or folder from which the custom module is inherited.
  &quot;customConfig&quot;: { # Defines the properties in a custom module configuration for Security Health Analytics. Use the custom module configuration to create custom detectors that generate custom findings for resources that you specify. # The user specified custom configuration for the module.
    &quot;customOutput&quot;: { # A set of optional name-value pairs that define custom source properties to return with each finding that is generated by the custom module. The custom source properties that are defined here are included in the finding JSON under `sourceProperties`. # Custom output properties.
      &quot;properties&quot;: [ # A list of custom output properties to add to the finding.
        { # An individual name-value pair that defines a custom source property.
          &quot;name&quot;: &quot;A String&quot;, # Name of the property for the custom output.
          &quot;valueExpression&quot;: { # Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: &quot;Summary size limit&quot; description: &quot;Determines if a summary is less than 100 chars&quot; expression: &quot;document.summary.size() &lt; 100&quot; Example (Equality): title: &quot;Requestor is owner&quot; description: &quot;Determines if requestor is the document owner&quot; expression: &quot;document.owner == request.auth.claims.email&quot; Example (Logic): title: &quot;Public documents&quot; description: &quot;Determine whether the document should be publicly visible&quot; expression: &quot;document.type != &#x27;private&#x27; &amp;&amp; document.type != &#x27;internal&#x27;&quot; Example (Data Manipulation): title: &quot;Notification string&quot; description: &quot;Create a notification string with a timestamp.&quot; expression: &quot;&#x27;New message received at &#x27; + string(document.create_time)&quot; The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information. # The CEL expression for the custom output. A resource property can be specified to return the value of the property or a text string enclosed in quotation marks.
            &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.
            &quot;expression&quot;: &quot;A String&quot;, # Textual representation of an expression in Common Expression Language syntax.
            &quot;location&quot;: &quot;A String&quot;, # Optional. String indicating the location of the expression for error reporting, e.g. a file name and a position in the file.
            &quot;title&quot;: &quot;A String&quot;, # Optional. Title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.
          },
        },
      ],
    },
    &quot;description&quot;: &quot;A String&quot;, # Text that describes the vulnerability or misconfiguration that the custom module detects. This explanation is returned with each finding instance to help investigators understand the detected issue. The text must be enclosed in quotation marks.
    &quot;predicate&quot;: { # Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: &quot;Summary size limit&quot; description: &quot;Determines if a summary is less than 100 chars&quot; expression: &quot;document.summary.size() &lt; 100&quot; Example (Equality): title: &quot;Requestor is owner&quot; description: &quot;Determines if requestor is the document owner&quot; expression: &quot;document.owner == request.auth.claims.email&quot; Example (Logic): title: &quot;Public documents&quot; description: &quot;Determine whether the document should be publicly visible&quot; expression: &quot;document.type != &#x27;private&#x27; &amp;&amp; document.type != &#x27;internal&#x27;&quot; Example (Data Manipulation): title: &quot;Notification string&quot; description: &quot;Create a notification string with a timestamp.&quot; expression: &quot;&#x27;New message received at &#x27; + string(document.create_time)&quot; The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information. # The CEL expression to evaluate to produce findings. When the expression evaluates to true against a resource, a finding is generated.
      &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.
      &quot;expression&quot;: &quot;A String&quot;, # Textual representation of an expression in Common Expression Language syntax.
      &quot;location&quot;: &quot;A String&quot;, # Optional. String indicating the location of the expression for error reporting, e.g. a file name and a position in the file.
      &quot;title&quot;: &quot;A String&quot;, # Optional. Title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.
    },
    &quot;recommendation&quot;: &quot;A String&quot;, # An explanation of the recommended steps that security teams can take to resolve the detected issue. This explanation is returned with each finding generated by this module in the `nextSteps` property of the finding JSON.
    &quot;resourceSelector&quot;: { # Resource for selecting resource type. # The resource types that the custom module operates on. Each custom module can specify up to 5 resource types.
      &quot;resourceTypes&quot;: [ # The resource types to run the detector on.
        &quot;A String&quot;,
      ],
    },
    &quot;severity&quot;: &quot;A String&quot;, # The severity to assign to findings generated by the module.
  },
  &quot;displayName&quot;: &quot;A String&quot;, # The display name of the Security Health Analytics custom module. This display name becomes the finding category for all findings that are returned by this custom module. The display name must be between 1 and 128 characters, start with a lowercase letter, and contain alphanumeric characters or underscores only.
  &quot;enablementState&quot;: &quot;A String&quot;, # The enablement state of the custom module.
  &quot;lastEditor&quot;: &quot;A String&quot;, # Output only. The editor that last updated the custom module.
  &quot;name&quot;: &quot;A String&quot;, # Immutable. The resource name of the custom module. Its format is &quot;organizations/{organization}/securityHealthAnalyticsSettings/customModules/{customModule}&quot;, or &quot;folders/{folder}/securityHealthAnalyticsSettings/customModules/{customModule}&quot;, or &quot;projects/{project}/securityHealthAnalyticsSettings/customModules/{customModule}&quot; The id {customModule} is server-generated and is not user settable. It will be a numeric id containing 1-20 digits.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time at which the custom module was last updated.
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Returns a list of all SecurityHealthAnalyticsCustomModules for the given parent. This includes resident modules defined at the scope of the parent, and inherited modules, inherited from CRM ancestors.

Args:
  parent: string, Required. Name of parent to list custom modules. Its format is &quot;organizations/{organization}/securityHealthAnalyticsSettings&quot;, &quot;folders/{folder}/securityHealthAnalyticsSettings&quot;, or &quot;projects/{project}/securityHealthAnalyticsSettings&quot; (required)
  pageSize: integer, The maximum number of results to return in a single response. Default is 10, minimum is 1, maximum is 1000.
  pageToken: string, The value returned by the last call indicating a continuation
  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 Security Health Analytics custom modules.
  &quot;nextPageToken&quot;: &quot;A String&quot;, # If not empty, indicates that there may be more custom modules to be returned.
  &quot;securityHealthAnalyticsCustomModules&quot;: [ # Custom modules belonging to the requested parent.
    { # Represents an instance of a Security Health Analytics custom module, including its full module name, display name, enablement state, and last updated time. You can create a custom module at the organization, folder, or project level. Custom modules that you create at the organization or folder level are inherited by the child folders and projects.
      &quot;ancestorModule&quot;: &quot;A String&quot;, # Output only. If empty, indicates that the custom module was created in the organization, folder, or project in which you are viewing the custom module. Otherwise, `ancestor_module` specifies the organization or folder from which the custom module is inherited.
      &quot;customConfig&quot;: { # Defines the properties in a custom module configuration for Security Health Analytics. Use the custom module configuration to create custom detectors that generate custom findings for resources that you specify. # The user specified custom configuration for the module.
        &quot;customOutput&quot;: { # A set of optional name-value pairs that define custom source properties to return with each finding that is generated by the custom module. The custom source properties that are defined here are included in the finding JSON under `sourceProperties`. # Custom output properties.
          &quot;properties&quot;: [ # A list of custom output properties to add to the finding.
            { # An individual name-value pair that defines a custom source property.
              &quot;name&quot;: &quot;A String&quot;, # Name of the property for the custom output.
              &quot;valueExpression&quot;: { # Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: &quot;Summary size limit&quot; description: &quot;Determines if a summary is less than 100 chars&quot; expression: &quot;document.summary.size() &lt; 100&quot; Example (Equality): title: &quot;Requestor is owner&quot; description: &quot;Determines if requestor is the document owner&quot; expression: &quot;document.owner == request.auth.claims.email&quot; Example (Logic): title: &quot;Public documents&quot; description: &quot;Determine whether the document should be publicly visible&quot; expression: &quot;document.type != &#x27;private&#x27; &amp;&amp; document.type != &#x27;internal&#x27;&quot; Example (Data Manipulation): title: &quot;Notification string&quot; description: &quot;Create a notification string with a timestamp.&quot; expression: &quot;&#x27;New message received at &#x27; + string(document.create_time)&quot; The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information. # The CEL expression for the custom output. A resource property can be specified to return the value of the property or a text string enclosed in quotation marks.
                &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.
                &quot;expression&quot;: &quot;A String&quot;, # Textual representation of an expression in Common Expression Language syntax.
                &quot;location&quot;: &quot;A String&quot;, # Optional. String indicating the location of the expression for error reporting, e.g. a file name and a position in the file.
                &quot;title&quot;: &quot;A String&quot;, # Optional. Title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.
              },
            },
          ],
        },
        &quot;description&quot;: &quot;A String&quot;, # Text that describes the vulnerability or misconfiguration that the custom module detects. This explanation is returned with each finding instance to help investigators understand the detected issue. The text must be enclosed in quotation marks.
        &quot;predicate&quot;: { # Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: &quot;Summary size limit&quot; description: &quot;Determines if a summary is less than 100 chars&quot; expression: &quot;document.summary.size() &lt; 100&quot; Example (Equality): title: &quot;Requestor is owner&quot; description: &quot;Determines if requestor is the document owner&quot; expression: &quot;document.owner == request.auth.claims.email&quot; Example (Logic): title: &quot;Public documents&quot; description: &quot;Determine whether the document should be publicly visible&quot; expression: &quot;document.type != &#x27;private&#x27; &amp;&amp; document.type != &#x27;internal&#x27;&quot; Example (Data Manipulation): title: &quot;Notification string&quot; description: &quot;Create a notification string with a timestamp.&quot; expression: &quot;&#x27;New message received at &#x27; + string(document.create_time)&quot; The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information. # The CEL expression to evaluate to produce findings. When the expression evaluates to true against a resource, a finding is generated.
          &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.
          &quot;expression&quot;: &quot;A String&quot;, # Textual representation of an expression in Common Expression Language syntax.
          &quot;location&quot;: &quot;A String&quot;, # Optional. String indicating the location of the expression for error reporting, e.g. a file name and a position in the file.
          &quot;title&quot;: &quot;A String&quot;, # Optional. Title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.
        },
        &quot;recommendation&quot;: &quot;A String&quot;, # An explanation of the recommended steps that security teams can take to resolve the detected issue. This explanation is returned with each finding generated by this module in the `nextSteps` property of the finding JSON.
        &quot;resourceSelector&quot;: { # Resource for selecting resource type. # The resource types that the custom module operates on. Each custom module can specify up to 5 resource types.
          &quot;resourceTypes&quot;: [ # The resource types to run the detector on.
            &quot;A String&quot;,
          ],
        },
        &quot;severity&quot;: &quot;A String&quot;, # The severity to assign to findings generated by the module.
      },
      &quot;displayName&quot;: &quot;A String&quot;, # The display name of the Security Health Analytics custom module. This display name becomes the finding category for all findings that are returned by this custom module. The display name must be between 1 and 128 characters, start with a lowercase letter, and contain alphanumeric characters or underscores only.
      &quot;enablementState&quot;: &quot;A String&quot;, # The enablement state of the custom module.
      &quot;lastEditor&quot;: &quot;A String&quot;, # Output only. The editor that last updated the custom module.
      &quot;name&quot;: &quot;A String&quot;, # Immutable. The resource name of the custom module. Its format is &quot;organizations/{organization}/securityHealthAnalyticsSettings/customModules/{customModule}&quot;, or &quot;folders/{folder}/securityHealthAnalyticsSettings/customModules/{customModule}&quot;, or &quot;projects/{project}/securityHealthAnalyticsSettings/customModules/{customModule}&quot; The id {customModule} is server-generated and is not user settable. It will be a numeric id containing 1-20 digits.
      &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time at which the custom module was last updated.
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="listDescendant">listDescendant(parent, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Returns a list of all resident SecurityHealthAnalyticsCustomModules under the given CRM parent and all of the parent’s CRM descendants.

Args:
  parent: string, Required. Name of parent to list descendant custom modules. Its format is &quot;organizations/{organization}/securityHealthAnalyticsSettings&quot;, &quot;folders/{folder}/securityHealthAnalyticsSettings&quot;, or &quot;projects/{project}/securityHealthAnalyticsSettings&quot; (required)
  pageSize: integer, The maximum number of results to return in a single response. Default is 10, minimum is 1, maximum is 1000.
  pageToken: string, The value returned by the last call indicating a continuation
  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 descendant Security Health Analytics custom modules.
  &quot;nextPageToken&quot;: &quot;A String&quot;, # If not empty, indicates that there may be more custom modules to be returned.
  &quot;securityHealthAnalyticsCustomModules&quot;: [ # Custom modules belonging to the requested parent and its descendants.
    { # Represents an instance of a Security Health Analytics custom module, including its full module name, display name, enablement state, and last updated time. You can create a custom module at the organization, folder, or project level. Custom modules that you create at the organization or folder level are inherited by the child folders and projects.
      &quot;ancestorModule&quot;: &quot;A String&quot;, # Output only. If empty, indicates that the custom module was created in the organization, folder, or project in which you are viewing the custom module. Otherwise, `ancestor_module` specifies the organization or folder from which the custom module is inherited.
      &quot;customConfig&quot;: { # Defines the properties in a custom module configuration for Security Health Analytics. Use the custom module configuration to create custom detectors that generate custom findings for resources that you specify. # The user specified custom configuration for the module.
        &quot;customOutput&quot;: { # A set of optional name-value pairs that define custom source properties to return with each finding that is generated by the custom module. The custom source properties that are defined here are included in the finding JSON under `sourceProperties`. # Custom output properties.
          &quot;properties&quot;: [ # A list of custom output properties to add to the finding.
            { # An individual name-value pair that defines a custom source property.
              &quot;name&quot;: &quot;A String&quot;, # Name of the property for the custom output.
              &quot;valueExpression&quot;: { # Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: &quot;Summary size limit&quot; description: &quot;Determines if a summary is less than 100 chars&quot; expression: &quot;document.summary.size() &lt; 100&quot; Example (Equality): title: &quot;Requestor is owner&quot; description: &quot;Determines if requestor is the document owner&quot; expression: &quot;document.owner == request.auth.claims.email&quot; Example (Logic): title: &quot;Public documents&quot; description: &quot;Determine whether the document should be publicly visible&quot; expression: &quot;document.type != &#x27;private&#x27; &amp;&amp; document.type != &#x27;internal&#x27;&quot; Example (Data Manipulation): title: &quot;Notification string&quot; description: &quot;Create a notification string with a timestamp.&quot; expression: &quot;&#x27;New message received at &#x27; + string(document.create_time)&quot; The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information. # The CEL expression for the custom output. A resource property can be specified to return the value of the property or a text string enclosed in quotation marks.
                &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.
                &quot;expression&quot;: &quot;A String&quot;, # Textual representation of an expression in Common Expression Language syntax.
                &quot;location&quot;: &quot;A String&quot;, # Optional. String indicating the location of the expression for error reporting, e.g. a file name and a position in the file.
                &quot;title&quot;: &quot;A String&quot;, # Optional. Title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.
              },
            },
          ],
        },
        &quot;description&quot;: &quot;A String&quot;, # Text that describes the vulnerability or misconfiguration that the custom module detects. This explanation is returned with each finding instance to help investigators understand the detected issue. The text must be enclosed in quotation marks.
        &quot;predicate&quot;: { # Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: &quot;Summary size limit&quot; description: &quot;Determines if a summary is less than 100 chars&quot; expression: &quot;document.summary.size() &lt; 100&quot; Example (Equality): title: &quot;Requestor is owner&quot; description: &quot;Determines if requestor is the document owner&quot; expression: &quot;document.owner == request.auth.claims.email&quot; Example (Logic): title: &quot;Public documents&quot; description: &quot;Determine whether the document should be publicly visible&quot; expression: &quot;document.type != &#x27;private&#x27; &amp;&amp; document.type != &#x27;internal&#x27;&quot; Example (Data Manipulation): title: &quot;Notification string&quot; description: &quot;Create a notification string with a timestamp.&quot; expression: &quot;&#x27;New message received at &#x27; + string(document.create_time)&quot; The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information. # The CEL expression to evaluate to produce findings. When the expression evaluates to true against a resource, a finding is generated.
          &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.
          &quot;expression&quot;: &quot;A String&quot;, # Textual representation of an expression in Common Expression Language syntax.
          &quot;location&quot;: &quot;A String&quot;, # Optional. String indicating the location of the expression for error reporting, e.g. a file name and a position in the file.
          &quot;title&quot;: &quot;A String&quot;, # Optional. Title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.
        },
        &quot;recommendation&quot;: &quot;A String&quot;, # An explanation of the recommended steps that security teams can take to resolve the detected issue. This explanation is returned with each finding generated by this module in the `nextSteps` property of the finding JSON.
        &quot;resourceSelector&quot;: { # Resource for selecting resource type. # The resource types that the custom module operates on. Each custom module can specify up to 5 resource types.
          &quot;resourceTypes&quot;: [ # The resource types to run the detector on.
            &quot;A String&quot;,
          ],
        },
        &quot;severity&quot;: &quot;A String&quot;, # The severity to assign to findings generated by the module.
      },
      &quot;displayName&quot;: &quot;A String&quot;, # The display name of the Security Health Analytics custom module. This display name becomes the finding category for all findings that are returned by this custom module. The display name must be between 1 and 128 characters, start with a lowercase letter, and contain alphanumeric characters or underscores only.
      &quot;enablementState&quot;: &quot;A String&quot;, # The enablement state of the custom module.
      &quot;lastEditor&quot;: &quot;A String&quot;, # Output only. The editor that last updated the custom module.
      &quot;name&quot;: &quot;A String&quot;, # Immutable. The resource name of the custom module. Its format is &quot;organizations/{organization}/securityHealthAnalyticsSettings/customModules/{customModule}&quot;, or &quot;folders/{folder}/securityHealthAnalyticsSettings/customModules/{customModule}&quot;, or &quot;projects/{project}/securityHealthAnalyticsSettings/customModules/{customModule}&quot; The id {customModule} is server-generated and is not user settable. It will be a numeric id containing 1-20 digits.
      &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time at which the custom module was last updated.
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="listDescendant_next">listDescendant_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="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 the SecurityHealthAnalyticsCustomModule under the given name based on the given update mask. Updating the enablement state is supported on both resident and inherited modules (though resident modules cannot have an enablement state of &quot;inherited&quot;). Updating the display name and custom config of a module is supported on resident modules only.

Args:
  name: string, Immutable. The resource name of the custom module. Its format is &quot;organizations/{organization}/securityHealthAnalyticsSettings/customModules/{customModule}&quot;, or &quot;folders/{folder}/securityHealthAnalyticsSettings/customModules/{customModule}&quot;, or &quot;projects/{project}/securityHealthAnalyticsSettings/customModules/{customModule}&quot; The id {customModule} is server-generated and is not user settable. It will be a numeric id containing 1-20 digits. (required)
  body: object, The request body.
    The object takes the form of:

{ # Represents an instance of a Security Health Analytics custom module, including its full module name, display name, enablement state, and last updated time. You can create a custom module at the organization, folder, or project level. Custom modules that you create at the organization or folder level are inherited by the child folders and projects.
  &quot;ancestorModule&quot;: &quot;A String&quot;, # Output only. If empty, indicates that the custom module was created in the organization, folder, or project in which you are viewing the custom module. Otherwise, `ancestor_module` specifies the organization or folder from which the custom module is inherited.
  &quot;customConfig&quot;: { # Defines the properties in a custom module configuration for Security Health Analytics. Use the custom module configuration to create custom detectors that generate custom findings for resources that you specify. # The user specified custom configuration for the module.
    &quot;customOutput&quot;: { # A set of optional name-value pairs that define custom source properties to return with each finding that is generated by the custom module. The custom source properties that are defined here are included in the finding JSON under `sourceProperties`. # Custom output properties.
      &quot;properties&quot;: [ # A list of custom output properties to add to the finding.
        { # An individual name-value pair that defines a custom source property.
          &quot;name&quot;: &quot;A String&quot;, # Name of the property for the custom output.
          &quot;valueExpression&quot;: { # Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: &quot;Summary size limit&quot; description: &quot;Determines if a summary is less than 100 chars&quot; expression: &quot;document.summary.size() &lt; 100&quot; Example (Equality): title: &quot;Requestor is owner&quot; description: &quot;Determines if requestor is the document owner&quot; expression: &quot;document.owner == request.auth.claims.email&quot; Example (Logic): title: &quot;Public documents&quot; description: &quot;Determine whether the document should be publicly visible&quot; expression: &quot;document.type != &#x27;private&#x27; &amp;&amp; document.type != &#x27;internal&#x27;&quot; Example (Data Manipulation): title: &quot;Notification string&quot; description: &quot;Create a notification string with a timestamp.&quot; expression: &quot;&#x27;New message received at &#x27; + string(document.create_time)&quot; The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information. # The CEL expression for the custom output. A resource property can be specified to return the value of the property or a text string enclosed in quotation marks.
            &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.
            &quot;expression&quot;: &quot;A String&quot;, # Textual representation of an expression in Common Expression Language syntax.
            &quot;location&quot;: &quot;A String&quot;, # Optional. String indicating the location of the expression for error reporting, e.g. a file name and a position in the file.
            &quot;title&quot;: &quot;A String&quot;, # Optional. Title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.
          },
        },
      ],
    },
    &quot;description&quot;: &quot;A String&quot;, # Text that describes the vulnerability or misconfiguration that the custom module detects. This explanation is returned with each finding instance to help investigators understand the detected issue. The text must be enclosed in quotation marks.
    &quot;predicate&quot;: { # Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: &quot;Summary size limit&quot; description: &quot;Determines if a summary is less than 100 chars&quot; expression: &quot;document.summary.size() &lt; 100&quot; Example (Equality): title: &quot;Requestor is owner&quot; description: &quot;Determines if requestor is the document owner&quot; expression: &quot;document.owner == request.auth.claims.email&quot; Example (Logic): title: &quot;Public documents&quot; description: &quot;Determine whether the document should be publicly visible&quot; expression: &quot;document.type != &#x27;private&#x27; &amp;&amp; document.type != &#x27;internal&#x27;&quot; Example (Data Manipulation): title: &quot;Notification string&quot; description: &quot;Create a notification string with a timestamp.&quot; expression: &quot;&#x27;New message received at &#x27; + string(document.create_time)&quot; The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information. # The CEL expression to evaluate to produce findings. When the expression evaluates to true against a resource, a finding is generated.
      &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.
      &quot;expression&quot;: &quot;A String&quot;, # Textual representation of an expression in Common Expression Language syntax.
      &quot;location&quot;: &quot;A String&quot;, # Optional. String indicating the location of the expression for error reporting, e.g. a file name and a position in the file.
      &quot;title&quot;: &quot;A String&quot;, # Optional. Title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.
    },
    &quot;recommendation&quot;: &quot;A String&quot;, # An explanation of the recommended steps that security teams can take to resolve the detected issue. This explanation is returned with each finding generated by this module in the `nextSteps` property of the finding JSON.
    &quot;resourceSelector&quot;: { # Resource for selecting resource type. # The resource types that the custom module operates on. Each custom module can specify up to 5 resource types.
      &quot;resourceTypes&quot;: [ # The resource types to run the detector on.
        &quot;A String&quot;,
      ],
    },
    &quot;severity&quot;: &quot;A String&quot;, # The severity to assign to findings generated by the module.
  },
  &quot;displayName&quot;: &quot;A String&quot;, # The display name of the Security Health Analytics custom module. This display name becomes the finding category for all findings that are returned by this custom module. The display name must be between 1 and 128 characters, start with a lowercase letter, and contain alphanumeric characters or underscores only.
  &quot;enablementState&quot;: &quot;A String&quot;, # The enablement state of the custom module.
  &quot;lastEditor&quot;: &quot;A String&quot;, # Output only. The editor that last updated the custom module.
  &quot;name&quot;: &quot;A String&quot;, # Immutable. The resource name of the custom module. Its format is &quot;organizations/{organization}/securityHealthAnalyticsSettings/customModules/{customModule}&quot;, or &quot;folders/{folder}/securityHealthAnalyticsSettings/customModules/{customModule}&quot;, or &quot;projects/{project}/securityHealthAnalyticsSettings/customModules/{customModule}&quot; The id {customModule} is server-generated and is not user settable. It will be a numeric id containing 1-20 digits.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time at which the custom module was last updated.
}

  updateMask: string, The list of fields to be updated. The only fields that can be updated are `enablement_state` and `custom_config`. If empty or set to the wildcard value `*`, both `enablement_state` and `custom_config` are updated.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Represents an instance of a Security Health Analytics custom module, including its full module name, display name, enablement state, and last updated time. You can create a custom module at the organization, folder, or project level. Custom modules that you create at the organization or folder level are inherited by the child folders and projects.
  &quot;ancestorModule&quot;: &quot;A String&quot;, # Output only. If empty, indicates that the custom module was created in the organization, folder, or project in which you are viewing the custom module. Otherwise, `ancestor_module` specifies the organization or folder from which the custom module is inherited.
  &quot;customConfig&quot;: { # Defines the properties in a custom module configuration for Security Health Analytics. Use the custom module configuration to create custom detectors that generate custom findings for resources that you specify. # The user specified custom configuration for the module.
    &quot;customOutput&quot;: { # A set of optional name-value pairs that define custom source properties to return with each finding that is generated by the custom module. The custom source properties that are defined here are included in the finding JSON under `sourceProperties`. # Custom output properties.
      &quot;properties&quot;: [ # A list of custom output properties to add to the finding.
        { # An individual name-value pair that defines a custom source property.
          &quot;name&quot;: &quot;A String&quot;, # Name of the property for the custom output.
          &quot;valueExpression&quot;: { # Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: &quot;Summary size limit&quot; description: &quot;Determines if a summary is less than 100 chars&quot; expression: &quot;document.summary.size() &lt; 100&quot; Example (Equality): title: &quot;Requestor is owner&quot; description: &quot;Determines if requestor is the document owner&quot; expression: &quot;document.owner == request.auth.claims.email&quot; Example (Logic): title: &quot;Public documents&quot; description: &quot;Determine whether the document should be publicly visible&quot; expression: &quot;document.type != &#x27;private&#x27; &amp;&amp; document.type != &#x27;internal&#x27;&quot; Example (Data Manipulation): title: &quot;Notification string&quot; description: &quot;Create a notification string with a timestamp.&quot; expression: &quot;&#x27;New message received at &#x27; + string(document.create_time)&quot; The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information. # The CEL expression for the custom output. A resource property can be specified to return the value of the property or a text string enclosed in quotation marks.
            &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.
            &quot;expression&quot;: &quot;A String&quot;, # Textual representation of an expression in Common Expression Language syntax.
            &quot;location&quot;: &quot;A String&quot;, # Optional. String indicating the location of the expression for error reporting, e.g. a file name and a position in the file.
            &quot;title&quot;: &quot;A String&quot;, # Optional. Title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.
          },
        },
      ],
    },
    &quot;description&quot;: &quot;A String&quot;, # Text that describes the vulnerability or misconfiguration that the custom module detects. This explanation is returned with each finding instance to help investigators understand the detected issue. The text must be enclosed in quotation marks.
    &quot;predicate&quot;: { # Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: &quot;Summary size limit&quot; description: &quot;Determines if a summary is less than 100 chars&quot; expression: &quot;document.summary.size() &lt; 100&quot; Example (Equality): title: &quot;Requestor is owner&quot; description: &quot;Determines if requestor is the document owner&quot; expression: &quot;document.owner == request.auth.claims.email&quot; Example (Logic): title: &quot;Public documents&quot; description: &quot;Determine whether the document should be publicly visible&quot; expression: &quot;document.type != &#x27;private&#x27; &amp;&amp; document.type != &#x27;internal&#x27;&quot; Example (Data Manipulation): title: &quot;Notification string&quot; description: &quot;Create a notification string with a timestamp.&quot; expression: &quot;&#x27;New message received at &#x27; + string(document.create_time)&quot; The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information. # The CEL expression to evaluate to produce findings. When the expression evaluates to true against a resource, a finding is generated.
      &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.
      &quot;expression&quot;: &quot;A String&quot;, # Textual representation of an expression in Common Expression Language syntax.
      &quot;location&quot;: &quot;A String&quot;, # Optional. String indicating the location of the expression for error reporting, e.g. a file name and a position in the file.
      &quot;title&quot;: &quot;A String&quot;, # Optional. Title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.
    },
    &quot;recommendation&quot;: &quot;A String&quot;, # An explanation of the recommended steps that security teams can take to resolve the detected issue. This explanation is returned with each finding generated by this module in the `nextSteps` property of the finding JSON.
    &quot;resourceSelector&quot;: { # Resource for selecting resource type. # The resource types that the custom module operates on. Each custom module can specify up to 5 resource types.
      &quot;resourceTypes&quot;: [ # The resource types to run the detector on.
        &quot;A String&quot;,
      ],
    },
    &quot;severity&quot;: &quot;A String&quot;, # The severity to assign to findings generated by the module.
  },
  &quot;displayName&quot;: &quot;A String&quot;, # The display name of the Security Health Analytics custom module. This display name becomes the finding category for all findings that are returned by this custom module. The display name must be between 1 and 128 characters, start with a lowercase letter, and contain alphanumeric characters or underscores only.
  &quot;enablementState&quot;: &quot;A String&quot;, # The enablement state of the custom module.
  &quot;lastEditor&quot;: &quot;A String&quot;, # Output only. The editor that last updated the custom module.
  &quot;name&quot;: &quot;A String&quot;, # Immutable. The resource name of the custom module. Its format is &quot;organizations/{organization}/securityHealthAnalyticsSettings/customModules/{customModule}&quot;, or &quot;folders/{folder}/securityHealthAnalyticsSettings/customModules/{customModule}&quot;, or &quot;projects/{project}/securityHealthAnalyticsSettings/customModules/{customModule}&quot; The id {customModule} is server-generated and is not user settable. It will be a numeric id containing 1-20 digits.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time at which the custom module was last updated.
}</pre>
</div>

<div class="method">
    <code class="details" id="simulate">simulate(parent, body=None, x__xgafv=None)</code>
  <pre>Simulates a given SecurityHealthAnalyticsCustomModule and Resource.

Args:
  parent: string, Required. The relative resource name of the organization, project, or folder. For more information about relative resource names, see [Relative Resource Name](https://cloud.google.com/apis/design/resource_names#relative_resource_name) Example: `organizations/{organization_id}` (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message to simulate a CustomConfig against a given test resource. Maximum size of the request is 4 MB by default.
  &quot;customConfig&quot;: { # Defines the properties in a custom module configuration for Security Health Analytics. Use the custom module configuration to create custom detectors that generate custom findings for resources that you specify. # Required. The custom configuration that you need to test.
    &quot;customOutput&quot;: { # A set of optional name-value pairs that define custom source properties to return with each finding that is generated by the custom module. The custom source properties that are defined here are included in the finding JSON under `sourceProperties`. # Custom output properties.
      &quot;properties&quot;: [ # A list of custom output properties to add to the finding.
        { # An individual name-value pair that defines a custom source property.
          &quot;name&quot;: &quot;A String&quot;, # Name of the property for the custom output.
          &quot;valueExpression&quot;: { # Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: &quot;Summary size limit&quot; description: &quot;Determines if a summary is less than 100 chars&quot; expression: &quot;document.summary.size() &lt; 100&quot; Example (Equality): title: &quot;Requestor is owner&quot; description: &quot;Determines if requestor is the document owner&quot; expression: &quot;document.owner == request.auth.claims.email&quot; Example (Logic): title: &quot;Public documents&quot; description: &quot;Determine whether the document should be publicly visible&quot; expression: &quot;document.type != &#x27;private&#x27; &amp;&amp; document.type != &#x27;internal&#x27;&quot; Example (Data Manipulation): title: &quot;Notification string&quot; description: &quot;Create a notification string with a timestamp.&quot; expression: &quot;&#x27;New message received at &#x27; + string(document.create_time)&quot; The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information. # The CEL expression for the custom output. A resource property can be specified to return the value of the property or a text string enclosed in quotation marks.
            &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.
            &quot;expression&quot;: &quot;A String&quot;, # Textual representation of an expression in Common Expression Language syntax.
            &quot;location&quot;: &quot;A String&quot;, # Optional. String indicating the location of the expression for error reporting, e.g. a file name and a position in the file.
            &quot;title&quot;: &quot;A String&quot;, # Optional. Title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.
          },
        },
      ],
    },
    &quot;description&quot;: &quot;A String&quot;, # Text that describes the vulnerability or misconfiguration that the custom module detects. This explanation is returned with each finding instance to help investigators understand the detected issue. The text must be enclosed in quotation marks.
    &quot;predicate&quot;: { # Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: &quot;Summary size limit&quot; description: &quot;Determines if a summary is less than 100 chars&quot; expression: &quot;document.summary.size() &lt; 100&quot; Example (Equality): title: &quot;Requestor is owner&quot; description: &quot;Determines if requestor is the document owner&quot; expression: &quot;document.owner == request.auth.claims.email&quot; Example (Logic): title: &quot;Public documents&quot; description: &quot;Determine whether the document should be publicly visible&quot; expression: &quot;document.type != &#x27;private&#x27; &amp;&amp; document.type != &#x27;internal&#x27;&quot; Example (Data Manipulation): title: &quot;Notification string&quot; description: &quot;Create a notification string with a timestamp.&quot; expression: &quot;&#x27;New message received at &#x27; + string(document.create_time)&quot; The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information. # The CEL expression to evaluate to produce findings. When the expression evaluates to true against a resource, a finding is generated.
      &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.
      &quot;expression&quot;: &quot;A String&quot;, # Textual representation of an expression in Common Expression Language syntax.
      &quot;location&quot;: &quot;A String&quot;, # Optional. String indicating the location of the expression for error reporting, e.g. a file name and a position in the file.
      &quot;title&quot;: &quot;A String&quot;, # Optional. Title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.
    },
    &quot;recommendation&quot;: &quot;A String&quot;, # An explanation of the recommended steps that security teams can take to resolve the detected issue. This explanation is returned with each finding generated by this module in the `nextSteps` property of the finding JSON.
    &quot;resourceSelector&quot;: { # Resource for selecting resource type. # The resource types that the custom module operates on. Each custom module can specify up to 5 resource types.
      &quot;resourceTypes&quot;: [ # The resource types to run the detector on.
        &quot;A String&quot;,
      ],
    },
    &quot;severity&quot;: &quot;A String&quot;, # The severity to assign to findings generated by the module.
  },
  &quot;resource&quot;: { # Manually constructed resource name. If the custom module evaluates against only the resource data, you can omit the `iam_policy_data` field. If it evaluates only the `iam_policy_data` field, you can omit the resource data. # Required. Resource data to simulate custom module against.
    &quot;iamPolicyData&quot;: { # An Identity and Access Management (IAM) policy, which specifies access controls for Google Cloud resources. A `Policy` is a collection of `bindings`. A `binding` binds one or more `members`, or principals, to a single `role`. Principals can be user accounts, service accounts, Google groups, and domains (such as G Suite). A `role` is a named list of permissions; each `role` can be an IAM predefined role or a user-created custom role. For some types of Google Cloud resources, a `binding` can also specify a `condition`, which is a logical expression that allows access to a resource only if the expression evaluates to `true`. A condition can add constraints based on attributes of the request, the resource, or both. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies). **JSON example:** ``` { &quot;bindings&quot;: [ { &quot;role&quot;: &quot;roles/resourcemanager.organizationAdmin&quot;, &quot;members&quot;: [ &quot;user:mike@example.com&quot;, &quot;group:admins@example.com&quot;, &quot;domain:google.com&quot;, &quot;serviceAccount:my-project-id@appspot.gserviceaccount.com&quot; ] }, { &quot;role&quot;: &quot;roles/resourcemanager.organizationViewer&quot;, &quot;members&quot;: [ &quot;user:eve@example.com&quot; ], &quot;condition&quot;: { &quot;title&quot;: &quot;expirable access&quot;, &quot;description&quot;: &quot;Does not grant access after Sep 2020&quot;, &quot;expression&quot;: &quot;request.time &lt; timestamp(&#x27;2020-10-01T00:00:00.000Z&#x27;)&quot;, } } ], &quot;etag&quot;: &quot;BwWWja0YfJA=&quot;, &quot;version&quot;: 3 } ``` **YAML example:** ``` bindings: - members: - user:mike@example.com - group:admins@example.com - domain:google.com - serviceAccount:my-project-id@appspot.gserviceaccount.com role: roles/resourcemanager.organizationAdmin - members: - user:eve@example.com role: roles/resourcemanager.organizationViewer condition: title: expirable access description: Does not grant access after Sep 2020 expression: request.time &lt; timestamp(&#x27;2020-10-01T00:00:00.000Z&#x27;) etag: BwWWja0YfJA= version: 3 ``` For a description of IAM and its features, see the [IAM documentation](https://cloud.google.com/iam/docs/). # Optional. A representation of the IAM policy.
      &quot;auditConfigs&quot;: [ # Specifies cloud audit logging configuration for this policy.
        { # Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { &quot;audit_configs&quot;: [ { &quot;service&quot;: &quot;allServices&quot;, &quot;audit_log_configs&quot;: [ { &quot;log_type&quot;: &quot;DATA_READ&quot;, &quot;exempted_members&quot;: [ &quot;user:jose@example.com&quot; ] }, { &quot;log_type&quot;: &quot;DATA_WRITE&quot; }, { &quot;log_type&quot;: &quot;ADMIN_READ&quot; } ] }, { &quot;service&quot;: &quot;sampleservice.googleapis.com&quot;, &quot;audit_log_configs&quot;: [ { &quot;log_type&quot;: &quot;DATA_READ&quot; }, { &quot;log_type&quot;: &quot;DATA_WRITE&quot;, &quot;exempted_members&quot;: [ &quot;user:aliya@example.com&quot; ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.
          &quot;auditLogConfigs&quot;: [ # The configuration for logging of each type of permission.
            { # Provides the configuration for logging a type of permissions. Example: { &quot;audit_log_configs&quot;: [ { &quot;log_type&quot;: &quot;DATA_READ&quot;, &quot;exempted_members&quot;: [ &quot;user:jose@example.com&quot; ] }, { &quot;log_type&quot;: &quot;DATA_WRITE&quot; } ] } This enables &#x27;DATA_READ&#x27; and &#x27;DATA_WRITE&#x27; logging, while exempting jose@example.com from DATA_READ logging.
              &quot;exemptedMembers&quot;: [ # Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members.
                &quot;A String&quot;,
              ],
              &quot;logType&quot;: &quot;A String&quot;, # The log type that this config enables.
            },
          ],
          &quot;service&quot;: &quot;A String&quot;, # Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services.
        },
      ],
      &quot;bindings&quot;: [ # Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.
        { # Associates `members`, or principals, with a `role`.
          &quot;condition&quot;: { # Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: &quot;Summary size limit&quot; description: &quot;Determines if a summary is less than 100 chars&quot; expression: &quot;document.summary.size() &lt; 100&quot; Example (Equality): title: &quot;Requestor is owner&quot; description: &quot;Determines if requestor is the document owner&quot; expression: &quot;document.owner == request.auth.claims.email&quot; Example (Logic): title: &quot;Public documents&quot; description: &quot;Determine whether the document should be publicly visible&quot; expression: &quot;document.type != &#x27;private&#x27; &amp;&amp; document.type != &#x27;internal&#x27;&quot; Example (Data Manipulation): title: &quot;Notification string&quot; description: &quot;Create a notification string with a timestamp.&quot; expression: &quot;&#x27;New message received at &#x27; + string(document.create_time)&quot; The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information. # The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
            &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.
            &quot;expression&quot;: &quot;A String&quot;, # Textual representation of an expression in Common Expression Language syntax.
            &quot;location&quot;: &quot;A String&quot;, # Optional. String indicating the location of the expression for error reporting, e.g. a file name and a position in the file.
            &quot;title&quot;: &quot;A String&quot;, # Optional. Title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.
          },
          &quot;members&quot;: [ # Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding.
            &quot;A String&quot;,
          ],
          &quot;role&quot;: &quot;A String&quot;, # Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
        },
      ],
      &quot;etag&quot;: &quot;A String&quot;, # `etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.
      &quot;version&quot;: 42, # Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
    },
    &quot;resourceData&quot;: { # Optional. A representation of the Google Cloud resource. Should match the Google Cloud resource JSON format.
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
    },
    &quot;resourceType&quot;: &quot;A String&quot;, # Required. The type of the resource, for example, `compute.googleapis.com/Disk`.
  },
}

  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 simulating a `SecurityHealthAnalyticsCustomModule` against a given resource.
  &quot;result&quot;: { # Possible test result. # Result for test case in the corresponding request.
    &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # Error encountered during the test.
      &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
      &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
        {
          &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
        },
      ],
      &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
    },
    &quot;finding&quot;: { # Security Command Center finding. A finding is a record of assessment data like security, risk, health, or privacy, that is ingested into Security Command Center for presentation, notification, analysis, policy testing, and enforcement. For example, a cross-site scripting (XSS) vulnerability in an App Engine application is a finding. # Finding that would be published for the test case, if a violation is detected.
      &quot;access&quot;: { # Represents an access event. # Access details associated with the finding, such as more information on the caller, which method was accessed, and from where.
        &quot;callerIp&quot;: &quot;A String&quot;, # Caller&#x27;s IP address, such as &quot;1.1.1.1&quot;.
        &quot;callerIpGeo&quot;: { # Represents a geographical location for a given access. # The caller IP&#x27;s geolocation, which identifies where the call came from.
          &quot;regionCode&quot;: &quot;A String&quot;, # A CLDR.
        },
        &quot;methodName&quot;: &quot;A String&quot;, # The method that the service account called, e.g. &quot;SetIamPolicy&quot;.
        &quot;principalEmail&quot;: &quot;A String&quot;, # Associated email, such as &quot;foo@google.com&quot;. The email address of the authenticated user or a service account acting on behalf of a third party principal making the request. For third party identity callers, the `principal_subject` field is populated instead of this field. For privacy reasons, the principal email address is sometimes redacted. For more information, see [Caller identities in audit logs](https://cloud.google.com/logging/docs/audit#user-id).
        &quot;principalSubject&quot;: &quot;A String&quot;, # A string that represents the principal_subject that is associated with the identity. Unlike `principal_email`, `principal_subject` supports principals that aren&#x27;t associated with email addresses, such as third party principals. For most identities, the format is `principal://iam.googleapis.com/{identity pool name}/subject/{subject}`. Some GKE identities, such as GKE_WORKLOAD, FREEFORM, and GKE_HUB_WORKLOAD, still use the legacy format `serviceAccount:{identity pool name}[{subject}]`.
        &quot;serviceAccountDelegationInfo&quot;: [ # The identity delegation history of an authenticated service account that made the request. The `serviceAccountDelegationInfo[]` object contains information about the real authorities that try to access Google Cloud resources by delegating on a service account. When multiple authorities are present, they are guaranteed to be sorted based on the original ordering of the identity delegation events.
          { # Identity delegation history of an authenticated service account.
            &quot;principalEmail&quot;: &quot;A String&quot;, # The email address of a Google account.
            &quot;principalSubject&quot;: &quot;A String&quot;, # A string representing the principal_subject associated with the identity. As compared to `principal_email`, supports principals that aren&#x27;t associated with email addresses, such as third party principals. For most identities, the format will be `principal://iam.googleapis.com/{identity pool name}/subjects/{subject}` except for some GKE identities (GKE_WORKLOAD, FREEFORM, GKE_HUB_WORKLOAD) that are still in the legacy format `serviceAccount:{identity pool name}[{subject}]`
          },
        ],
        &quot;serviceAccountKeyName&quot;: &quot;A String&quot;, # The name of the service account key that was used to create or exchange credentials when authenticating the service account that made the request. This is a scheme-less URI full resource name. For example: &quot;//iam.googleapis.com/projects/{PROJECT_ID}/serviceAccounts/{ACCOUNT}/keys/{key}&quot;.
        &quot;serviceName&quot;: &quot;A String&quot;, # This is the API service that the service account made a call to, e.g. &quot;iam.googleapis.com&quot;
        &quot;userAgent&quot;: &quot;A String&quot;, # The caller&#x27;s user agent string associated with the finding.
        &quot;userAgentFamily&quot;: &quot;A String&quot;, # Type of user agent associated with the finding. For example, an operating system shell or an embedded or standalone application.
        &quot;userName&quot;: &quot;A String&quot;, # A string that represents a username. The username provided depends on the type of the finding and is likely not an IAM principal. For example, this can be a system username if the finding is related to a virtual machine, or it can be an application login username.
      },
      &quot;application&quot;: { # Represents an application associated with a finding. # Represents an application associated with the finding.
        &quot;baseUri&quot;: &quot;A String&quot;, # The base URI that identifies the network location of the application in which the vulnerability was detected. Examples: http://11.22.33.44, http://foo.com, http://11.22.33.44:8080
        &quot;fullUri&quot;: &quot;A String&quot;, # The full URI with payload that can be used to reproduce the vulnerability. Example: http://11.22.33.44/reflected/parameter/attribute/singlequoted/js?p=aMmYgI6H
      },
      &quot;attackExposure&quot;: { # An attack exposure contains the results of an attack path simulation run. # The results of an attack path simulation relevant to this finding.
        &quot;attackExposureResult&quot;: &quot;A String&quot;, # The resource name of the attack path simulation result that contains the details regarding this attack exposure score. Example: organizations/123/attackExposureResults/456
        &quot;exposedHighValueResourcesCount&quot;: 42, # The number of high value resources that are exposed as a result of this finding.
        &quot;exposedLowValueResourcesCount&quot;: 42, # The number of high value resources that are exposed as a result of this finding.
        &quot;exposedMediumValueResourcesCount&quot;: 42, # The number of medium value resources that are exposed as a result of this finding.
        &quot;latestCalculationTime&quot;: &quot;A String&quot;, # The most recent time the attack exposure was updated on this finding.
        &quot;score&quot;: 3.14, # A number between 0 (inclusive) and infinity that represents how important this finding is to remediate. The higher the score, the more important it is to remediate.
        &quot;state&quot;: &quot;A String&quot;, # What state this AttackExposure is in. This captures whether or not an attack exposure has been calculated or not.
      },
      &quot;backupDisasterRecovery&quot;: { # Information related to Google Cloud Backup and DR Service findings. # Fields related to Backup and DR findings.
        &quot;appliance&quot;: &quot;A String&quot;, # The name of the Backup and DR appliance that captures, moves, and manages the lifecycle of backup data. For example, “backup-server-57137”.
        &quot;applications&quot;: [ # The names of Backup and DR applications. An application is a VM, database, or file system on a managed host monitored by a backup and recovery appliance. For example, “centos7-01-vol00”, “centos7-01-vol01”, “centos7-01-vol02”.
          &quot;A String&quot;,
        ],
        &quot;backupCreateTime&quot;: &quot;A String&quot;, # The timestamp at which the Backup and DR backup was created.
        &quot;backupTemplate&quot;: &quot;A String&quot;, # The name of a Backup and DR template which comprises one or more backup policies. See the [Backup and DR documentation](https://cloud.google.com/backup-disaster-recovery/docs/concepts/backup-plan#temp) for more information. For example, “snap-ov”.
        &quot;backupType&quot;: &quot;A String&quot;, # The backup type of the Backup and DR image. For example, “Snapshot”, “Remote Snapshot”, “OnVault”.
        &quot;host&quot;: &quot;A String&quot;, # The name of a Backup and DR host, which is managed by the backup and recovery appliance and known to the management console. The host can be of type Generic (for example, Compute Engine, SQL Server, Oracle DB, SMB file system, etc.), vCenter, or an ESX server. See the [Backup and DR documentation on hosts](https://cloud.google.com/backup-disaster-recovery/docs/configuration/manage-hosts-and-their-applications) for more information. For example, “centos7-01”.
        &quot;policies&quot;: [ # The names of Backup and DR policies that are associated with a template and that define when to run a backup, how frequently to run a backup, and how long to retain the backup image. For example, “onvaults”.
          &quot;A String&quot;,
        ],
        &quot;policyOptions&quot;: [ # The names of Backup and DR advanced policy options of a policy applying to an application. See the [Backup and DR documentation on policy options](https://cloud.google.com/backup-disaster-recovery/docs/create-plan/policy-settings). For example, “skipofflineappsincongrp, nounmap”.
          &quot;A String&quot;,
        ],
        &quot;profile&quot;: &quot;A String&quot;, # The name of the Backup and DR resource profile that specifies the storage media for backups of application and VM data. See the [Backup and DR documentation on profiles](https://cloud.google.com/backup-disaster-recovery/docs/concepts/backup-plan#profile). For example, “GCP”.
        &quot;storagePool&quot;: &quot;A String&quot;, # The name of the Backup and DR storage pool that the backup and recovery appliance is storing data in. The storage pool could be of type Cloud, Primary, Snapshot, or OnVault. See the [Backup and DR documentation on storage pools](https://cloud.google.com/backup-disaster-recovery/docs/concepts/storage-pools). For example, “DiskPoolOne”.
      },
      &quot;canonicalName&quot;: &quot;A String&quot;, # The canonical name of the finding. It&#x27;s either &quot;organizations/{organization_id}/sources/{source_id}/findings/{finding_id}&quot;, &quot;folders/{folder_id}/sources/{source_id}/findings/{finding_id}&quot; or &quot;projects/{project_number}/sources/{source_id}/findings/{finding_id}&quot;, depending on the closest CRM ancestor of the resource associated with the finding.
      &quot;category&quot;: &quot;A String&quot;, # The additional taxonomy group within findings from a given source. This field is immutable after creation time. Example: &quot;XSS_FLASH_INJECTION&quot;
      &quot;cloudDlpDataProfile&quot;: { # The [data profile](https://cloud.google.com/dlp/docs/data-profiles) associated with the finding. # Cloud DLP data profile that is associated with the finding.
        &quot;dataProfile&quot;: &quot;A String&quot;, # Name of the data profile, for example, `projects/123/locations/europe/tableProfiles/8383929`.
        &quot;parentType&quot;: &quot;A String&quot;, # The resource hierarchy level at which the data profile was generated.
      },
      &quot;cloudDlpInspection&quot;: { # Details about the Cloud Data Loss Prevention (Cloud DLP) [inspection job](https://cloud.google.com/dlp/docs/concepts-job-triggers) that produced the finding. # Cloud Data Loss Prevention (Cloud DLP) inspection results that are associated with the finding.
        &quot;fullScan&quot;: True or False, # Whether Cloud DLP scanned the complete resource or a sampled subset.
        &quot;infoType&quot;: &quot;A String&quot;, # The type of information (or *[infoType](https://cloud.google.com/dlp/docs/infotypes-reference)*) found, for example, `EMAIL_ADDRESS` or `STREET_ADDRESS`.
        &quot;infoTypeCount&quot;: &quot;A String&quot;, # The number of times Cloud DLP found this infoType within this job and resource.
        &quot;inspectJob&quot;: &quot;A String&quot;, # Name of the inspection job, for example, `projects/123/locations/europe/dlpJobs/i-8383929`.
      },
      &quot;compliances&quot;: [ # Contains compliance information for security standards associated to the finding.
        { # Contains compliance information about a security standard indicating unmet recommendations.
          &quot;ids&quot;: [ # Policies within the standard or benchmark, for example, A.12.4.1
            &quot;A String&quot;,
          ],
          &quot;standard&quot;: &quot;A String&quot;, # Industry-wide compliance standards or benchmarks, such as CIS, PCI, and OWASP.
          &quot;version&quot;: &quot;A String&quot;, # Version of the standard or benchmark, for example, 1.1
        },
      ],
      &quot;connections&quot;: [ # Contains information about the IP connection associated with the finding.
        { # Contains information about the IP connection associated with the finding.
          &quot;destinationIp&quot;: &quot;A String&quot;, # Destination IP address. Not present for sockets that are listening and not connected.
          &quot;destinationPort&quot;: 42, # Destination port. Not present for sockets that are listening and not connected.
          &quot;protocol&quot;: &quot;A String&quot;, # IANA Internet Protocol Number such as TCP(6) and UDP(17).
          &quot;sourceIp&quot;: &quot;A String&quot;, # Source IP address.
          &quot;sourcePort&quot;: 42, # Source port.
        },
      ],
      &quot;contacts&quot;: { # Output only. Map containing the points of contact for the given finding. The key represents the type of contact, while the value contains a list of all the contacts that pertain. Please refer to: https://cloud.google.com/resource-manager/docs/managing-notification-contacts#notification-categories { &quot;security&quot;: { &quot;contacts&quot;: [ { &quot;email&quot;: &quot;person1@company.com&quot; }, { &quot;email&quot;: &quot;person2@company.com&quot; } ] } }
        &quot;a_key&quot;: { # Details about specific contacts
          &quot;contacts&quot;: [ # A list of contacts
            { # The email address of a contact.
              &quot;email&quot;: &quot;A String&quot;, # An email address. For example, &quot;`person123@company.com`&quot;.
            },
          ],
        },
      },
      &quot;containers&quot;: [ # Containers associated with the finding. This field provides information for both Kubernetes and non-Kubernetes containers.
        { # Container associated with the finding.
          &quot;createTime&quot;: &quot;A String&quot;, # The time that the container was created.
          &quot;imageId&quot;: &quot;A String&quot;, # Optional container image ID, if provided by the container runtime. Uniquely identifies the container image launched using a container image digest.
          &quot;labels&quot;: [ # Container labels, as provided by the container runtime.
            { # Represents a generic name-value label. A label has separate name and value fields to support filtering with the `contains()` function. For more information, see [Filtering on array-type fields](https://cloud.google.com/security-command-center/docs/how-to-api-list-findings#array-contains-filtering).
              &quot;name&quot;: &quot;A String&quot;, # Name of the label.
              &quot;value&quot;: &quot;A String&quot;, # Value that corresponds to the label&#x27;s name.
            },
          ],
          &quot;name&quot;: &quot;A String&quot;, # Name of the container.
          &quot;uri&quot;: &quot;A String&quot;, # Container image URI provided when configuring a pod or container. This string can identify a container image version using mutable tags.
        },
      ],
      &quot;createTime&quot;: &quot;A String&quot;, # The time at which the finding was created in Security Command Center.
      &quot;database&quot;: { # Represents database access information, such as queries. A database may be a sub-resource of an instance (as in the case of Cloud SQL instances or Cloud Spanner instances), or the database instance itself. Some database resources might not have the [full resource name](https://google.aip.dev/122#full-resource-names) populated because these resource types, such as Cloud SQL databases, are not yet supported by Cloud Asset Inventory. In these cases only the display name is provided. # Database associated with the finding.
        &quot;displayName&quot;: &quot;A String&quot;, # The human-readable name of the database that the user connected to.
        &quot;grantees&quot;: [ # The target usernames, roles, or groups of an SQL privilege grant, which is not an IAM policy change.
          &quot;A String&quot;,
        ],
        &quot;name&quot;: &quot;A String&quot;, # Some database resources may not have the [full resource name](https://google.aip.dev/122#full-resource-names) populated because these resource types are not yet supported by Cloud Asset Inventory (e.g. Cloud SQL databases). In these cases only the display name will be provided. The [full resource name](https://google.aip.dev/122#full-resource-names) of the database that the user connected to, if it is supported by Cloud Asset Inventory.
        &quot;query&quot;: &quot;A String&quot;, # The SQL statement that is associated with the database access.
        &quot;userName&quot;: &quot;A String&quot;, # The username used to connect to the database. The username might not be an IAM principal and does not have a set format.
        &quot;version&quot;: &quot;A String&quot;, # The version of the database, for example, POSTGRES_14. See [the complete list](https://cloud.google.com/sql/docs/mysql/admin-api/rest/v1/SqlDatabaseVersion).
      },
      &quot;description&quot;: &quot;A String&quot;, # Contains more details about the finding.
      &quot;eventTime&quot;: &quot;A String&quot;, # The time the finding was first detected. If an existing finding is updated, then this is the time the update occurred. For example, if the finding represents an open firewall, this property captures the time the detector believes the firewall became open. The accuracy is determined by the detector. If the finding is later resolved, then this time reflects when the finding was resolved. This must not be set to a value greater than the current timestamp.
      &quot;exfiltration&quot;: { # Exfiltration represents a data exfiltration attempt from one or more sources to one or more targets. The `sources` attribute lists the sources of the exfiltrated data. The `targets` attribute lists the destinations the data was copied to. # Represents exfiltrations associated with the finding.
        &quot;sources&quot;: [ # If there are multiple sources, then the data is considered &quot;joined&quot; between them. For instance, BigQuery can join multiple tables, and each table would be considered a source.
          { # Resource where data was exfiltrated from or exfiltrated to.
            &quot;components&quot;: [ # Subcomponents of the asset that was exfiltrated, like URIs used during exfiltration, table names, databases, and filenames. For example, multiple tables might have been exfiltrated from the same Cloud SQL instance, or multiple files might have been exfiltrated from the same Cloud Storage bucket.
              &quot;A String&quot;,
            ],
            &quot;name&quot;: &quot;A String&quot;, # The resource&#x27;s [full resource name](https://cloud.google.com/apis/design/resource_names#full_resource_name).
          },
        ],
        &quot;targets&quot;: [ # If there are multiple targets, each target would get a complete copy of the &quot;joined&quot; source data.
          { # Resource where data was exfiltrated from or exfiltrated to.
            &quot;components&quot;: [ # Subcomponents of the asset that was exfiltrated, like URIs used during exfiltration, table names, databases, and filenames. For example, multiple tables might have been exfiltrated from the same Cloud SQL instance, or multiple files might have been exfiltrated from the same Cloud Storage bucket.
              &quot;A String&quot;,
            ],
            &quot;name&quot;: &quot;A String&quot;, # The resource&#x27;s [full resource name](https://cloud.google.com/apis/design/resource_names#full_resource_name).
          },
        ],
        &quot;totalExfiltratedBytes&quot;: &quot;A String&quot;, # Total exfiltrated bytes processed for the entire job.
      },
      &quot;externalSystems&quot;: { # Output only. Third party SIEM/SOAR fields within SCC, contains external system information and external system finding fields.
        &quot;a_key&quot;: { # Representation of third party SIEM/SOAR fields within SCC.
          &quot;assignees&quot;: [ # References primary/secondary etc assignees in the external system.
            &quot;A String&quot;,
          ],
          &quot;externalSystemUpdateTime&quot;: &quot;A String&quot;, # The time when the case was last updated, as reported by the external system.
          &quot;externalUid&quot;: &quot;A String&quot;, # The identifier that&#x27;s used to track the finding&#x27;s corresponding case in the external system.
          &quot;name&quot;: &quot;A String&quot;, # Full resource name of the external system, for example: &quot;organizations/1234/sources/5678/findings/123456/externalSystems/jira&quot;, &quot;folders/1234/sources/5678/findings/123456/externalSystems/jira&quot;, &quot;projects/1234/sources/5678/findings/123456/externalSystems/jira&quot;
          &quot;status&quot;: &quot;A String&quot;, # The most recent status of the finding&#x27;s corresponding case, as reported by the external system.
        },
      },
      &quot;externalUri&quot;: &quot;A String&quot;, # The URI that, if available, points to a web page outside of Security Command Center where additional information about the finding can be found. This field is guaranteed to be either empty or a well formed URL.
      &quot;files&quot;: [ # File associated with the finding.
        { # File information about the related binary/library used by an executable, or the script used by a script interpreter
          &quot;contents&quot;: &quot;A String&quot;, # Prefix of the file contents as a JSON-encoded string.
          &quot;hashedSize&quot;: &quot;A String&quot;, # The length in bytes of the file prefix that was hashed. If hashed_size == size, any hashes reported represent the entire file.
          &quot;partiallyHashed&quot;: True or False, # True when the hash covers only a prefix of the file.
          &quot;path&quot;: &quot;A String&quot;, # Absolute path of the file as a JSON encoded string.
          &quot;sha256&quot;: &quot;A String&quot;, # SHA256 hash of the first hashed_size bytes of the file encoded as a hex string. If hashed_size == size, sha256 represents the SHA256 hash of the entire file.
          &quot;size&quot;: &quot;A String&quot;, # Size of the file in bytes.
        },
      ],
      &quot;findingClass&quot;: &quot;A String&quot;, # The class of the finding.
      &quot;iamBindings&quot;: [ # Represents IAM bindings associated with the finding.
        { # Represents a particular IAM binding, which captures a member&#x27;s role addition, removal, or state.
          &quot;action&quot;: &quot;A String&quot;, # The action that was performed on a Binding.
          &quot;member&quot;: &quot;A String&quot;, # A single identity requesting access for a Cloud Platform resource, for example, &quot;foo@google.com&quot;.
          &quot;role&quot;: &quot;A String&quot;, # Role that is assigned to &quot;members&quot;. For example, &quot;roles/viewer&quot;, &quot;roles/editor&quot;, or &quot;roles/owner&quot;.
        },
      ],
      &quot;indicator&quot;: { # Represents what&#x27;s commonly known as an _indicator of compromise_ (IoC) in computer forensics. This is an artifact observed on a network or in an operating system that, with high confidence, indicates a computer intrusion. For more information, see [Indicator of compromise](https://en.wikipedia.org/wiki/Indicator_of_compromise). # Represents what&#x27;s commonly known as an *indicator of compromise* (IoC) in computer forensics. This is an artifact observed on a network or in an operating system that, with high confidence, indicates a computer intrusion. For more information, see [Indicator of compromise](https://en.wikipedia.org/wiki/Indicator_of_compromise).
        &quot;domains&quot;: [ # List of domains associated to the Finding.
          &quot;A String&quot;,
        ],
        &quot;ipAddresses&quot;: [ # The list of IP addresses that are associated with the finding.
          &quot;A String&quot;,
        ],
        &quot;signatures&quot;: [ # The list of matched signatures indicating that the given process is present in the environment.
          { # Indicates what signature matched this process.
            &quot;memoryHashSignature&quot;: { # A signature corresponding to memory page hashes. # Signature indicating that a binary family was matched.
              &quot;binaryFamily&quot;: &quot;A String&quot;, # The binary family.
              &quot;detections&quot;: [ # The list of memory hash detections contributing to the binary family match.
                { # Memory hash detection contributing to the binary family match.
                  &quot;binary&quot;: &quot;A String&quot;, # The name of the binary associated with the memory hash signature detection.
                  &quot;percentPagesMatched&quot;: 3.14, # The percentage of memory page hashes in the signature that were matched.
                },
              ],
            },
            &quot;yaraRuleSignature&quot;: { # A signature corresponding to a YARA rule. # Signature indicating that a YARA rule was matched.
              &quot;yaraRule&quot;: &quot;A String&quot;, # The name of the YARA rule.
            },
          },
        ],
        &quot;uris&quot;: [ # The list of URIs associated to the Findings.
          &quot;A String&quot;,
        ],
      },
      &quot;kernelRootkit&quot;: { # Kernel mode rootkit signatures. # Signature of the kernel rootkit.
        &quot;name&quot;: &quot;A String&quot;, # Rootkit name, when available.
        &quot;unexpectedCodeModification&quot;: True or False, # True if unexpected modifications of kernel code memory are present.
        &quot;unexpectedFtraceHandler&quot;: True or False, # True if `ftrace` points are present with callbacks pointing to regions that are not in the expected kernel or module code range.
        &quot;unexpectedInterruptHandler&quot;: True or False, # True if interrupt handlers that are are not in the expected kernel or module code regions are present.
        &quot;unexpectedKernelCodePages&quot;: True or False, # True if kernel code pages that are not in the expected kernel or module code regions are present.
        &quot;unexpectedKprobeHandler&quot;: True or False, # True if `kprobe` points are present with callbacks pointing to regions that are not in the expected kernel or module code range.
        &quot;unexpectedProcessesInRunqueue&quot;: True or False, # True if unexpected processes in the scheduler run queue are present. Such processes are in the run queue, but not in the process task list.
        &quot;unexpectedReadOnlyDataModification&quot;: True or False, # True if unexpected modifications of kernel read-only data memory are present.
        &quot;unexpectedSystemCallHandler&quot;: True or False, # True if system call handlers that are are not in the expected kernel or module code regions are present.
      },
      &quot;kubernetes&quot;: { # Kubernetes-related attributes. # Kubernetes resources associated with the finding.
        &quot;accessReviews&quot;: [ # Provides information on any Kubernetes access reviews (privilege checks) relevant to the finding.
          { # Conveys information about a Kubernetes access review (such as one returned by a [`kubectl auth can-i`](https://kubernetes.io/docs/reference/access-authn-authz/authorization/#checking-api-access) command) that was involved in a finding.
            &quot;group&quot;: &quot;A String&quot;, # The API group of the resource. &quot;*&quot; means all.
            &quot;name&quot;: &quot;A String&quot;, # The name of the resource being requested. Empty means all.
            &quot;ns&quot;: &quot;A String&quot;, # Namespace of the action being requested. Currently, there is no distinction between no namespace and all namespaces. Both are represented by &quot;&quot; (empty).
            &quot;resource&quot;: &quot;A String&quot;, # The optional resource type requested. &quot;*&quot; means all.
            &quot;subresource&quot;: &quot;A String&quot;, # The optional subresource type.
            &quot;verb&quot;: &quot;A String&quot;, # A Kubernetes resource API verb, like get, list, watch, create, update, delete, proxy. &quot;*&quot; means all.
            &quot;version&quot;: &quot;A String&quot;, # The API version of the resource. &quot;*&quot; means all.
          },
        ],
        &quot;bindings&quot;: [ # Provides Kubernetes role binding information for findings that involve [RoleBindings or ClusterRoleBindings](https://cloud.google.com/kubernetes-engine/docs/how-to/role-based-access-control).
          { # Represents a Kubernetes RoleBinding or ClusterRoleBinding.
            &quot;name&quot;: &quot;A String&quot;, # Name for the binding.
            &quot;ns&quot;: &quot;A String&quot;, # Namespace for the binding.
            &quot;role&quot;: { # Kubernetes Role or ClusterRole. # The Role or ClusterRole referenced by the binding.
              &quot;kind&quot;: &quot;A String&quot;, # Role type.
              &quot;name&quot;: &quot;A String&quot;, # Role name.
              &quot;ns&quot;: &quot;A String&quot;, # Role namespace.
            },
            &quot;subjects&quot;: [ # Represents one or more subjects that are bound to the role. Not always available for PATCH requests.
              { # Represents a Kubernetes subject.
                &quot;kind&quot;: &quot;A String&quot;, # Authentication type for the subject.
                &quot;name&quot;: &quot;A String&quot;, # Name for the subject.
                &quot;ns&quot;: &quot;A String&quot;, # Namespace for the subject.
              },
            ],
          },
        ],
        &quot;nodePools&quot;: [ # GKE [node pools](https://cloud.google.com/kubernetes-engine/docs/concepts/node-pools) associated with the finding. This field contains node pool information for each node, when it is available.
          { # Provides GKE node pool information.
            &quot;name&quot;: &quot;A String&quot;, # Kubernetes node pool name.
            &quot;nodes&quot;: [ # Nodes associated with the finding.
              { # Kubernetes nodes associated with the finding.
                &quot;name&quot;: &quot;A String&quot;, # [Full resource name](https://google.aip.dev/122#full-resource-names) of the Compute Engine VM running the cluster node.
              },
            ],
          },
        ],
        &quot;nodes&quot;: [ # Provides Kubernetes [node](https://cloud.google.com/kubernetes-engine/docs/concepts/cluster-architecture#nodes) information.
          { # Kubernetes nodes associated with the finding.
            &quot;name&quot;: &quot;A String&quot;, # [Full resource name](https://google.aip.dev/122#full-resource-names) of the Compute Engine VM running the cluster node.
          },
        ],
        &quot;objects&quot;: [ # Kubernetes objects related to the finding.
          { # Kubernetes object related to the finding, uniquely identified by GKNN. Used if the object Kind is not one of Pod, Node, NodePool, Binding, or AccessReview.
            &quot;containers&quot;: [ # Pod containers associated with this finding, if any.
              { # Container associated with the finding.
                &quot;createTime&quot;: &quot;A String&quot;, # The time that the container was created.
                &quot;imageId&quot;: &quot;A String&quot;, # Optional container image ID, if provided by the container runtime. Uniquely identifies the container image launched using a container image digest.
                &quot;labels&quot;: [ # Container labels, as provided by the container runtime.
                  { # Represents a generic name-value label. A label has separate name and value fields to support filtering with the `contains()` function. For more information, see [Filtering on array-type fields](https://cloud.google.com/security-command-center/docs/how-to-api-list-findings#array-contains-filtering).
                    &quot;name&quot;: &quot;A String&quot;, # Name of the label.
                    &quot;value&quot;: &quot;A String&quot;, # Value that corresponds to the label&#x27;s name.
                  },
                ],
                &quot;name&quot;: &quot;A String&quot;, # Name of the container.
                &quot;uri&quot;: &quot;A String&quot;, # Container image URI provided when configuring a pod or container. This string can identify a container image version using mutable tags.
              },
            ],
            &quot;group&quot;: &quot;A String&quot;, # Kubernetes object group, such as &quot;policy.k8s.io/v1&quot;.
            &quot;kind&quot;: &quot;A String&quot;, # Kubernetes object kind, such as &quot;Namespace&quot;.
            &quot;name&quot;: &quot;A String&quot;, # Kubernetes object name. For details see https://kubernetes.io/docs/concepts/overview/working-with-objects/names/.
            &quot;ns&quot;: &quot;A String&quot;, # Kubernetes object namespace. Must be a valid DNS label. Named &quot;ns&quot; to avoid collision with C++ namespace keyword. For details see https://kubernetes.io/docs/tasks/administer-cluster/namespaces/.
          },
        ],
        &quot;pods&quot;: [ # Kubernetes [Pods](https://cloud.google.com/kubernetes-engine/docs/concepts/pod) associated with the finding. This field contains Pod records for each container that is owned by a Pod.
          { # A Kubernetes Pod.
            &quot;containers&quot;: [ # Pod containers associated with this finding, if any.
              { # Container associated with the finding.
                &quot;createTime&quot;: &quot;A String&quot;, # The time that the container was created.
                &quot;imageId&quot;: &quot;A String&quot;, # Optional container image ID, if provided by the container runtime. Uniquely identifies the container image launched using a container image digest.
                &quot;labels&quot;: [ # Container labels, as provided by the container runtime.
                  { # Represents a generic name-value label. A label has separate name and value fields to support filtering with the `contains()` function. For more information, see [Filtering on array-type fields](https://cloud.google.com/security-command-center/docs/how-to-api-list-findings#array-contains-filtering).
                    &quot;name&quot;: &quot;A String&quot;, # Name of the label.
                    &quot;value&quot;: &quot;A String&quot;, # Value that corresponds to the label&#x27;s name.
                  },
                ],
                &quot;name&quot;: &quot;A String&quot;, # Name of the container.
                &quot;uri&quot;: &quot;A String&quot;, # Container image URI provided when configuring a pod or container. This string can identify a container image version using mutable tags.
              },
            ],
            &quot;labels&quot;: [ # Pod labels. For Kubernetes containers, these are applied to the container.
              { # Represents a generic name-value label. A label has separate name and value fields to support filtering with the `contains()` function. For more information, see [Filtering on array-type fields](https://cloud.google.com/security-command-center/docs/how-to-api-list-findings#array-contains-filtering).
                &quot;name&quot;: &quot;A String&quot;, # Name of the label.
                &quot;value&quot;: &quot;A String&quot;, # Value that corresponds to the label&#x27;s name.
              },
            ],
            &quot;name&quot;: &quot;A String&quot;, # Kubernetes Pod name.
            &quot;ns&quot;: &quot;A String&quot;, # Kubernetes Pod namespace.
          },
        ],
        &quot;roles&quot;: [ # Provides Kubernetes role information for findings that involve [Roles or ClusterRoles](https://cloud.google.com/kubernetes-engine/docs/how-to/role-based-access-control).
          { # Kubernetes Role or ClusterRole.
            &quot;kind&quot;: &quot;A String&quot;, # Role type.
            &quot;name&quot;: &quot;A String&quot;, # Role name.
            &quot;ns&quot;: &quot;A String&quot;, # Role namespace.
          },
        ],
      },
      &quot;loadBalancers&quot;: [ # The load balancers associated with the finding.
        { # Contains information related to the load balancer associated with the finding.
          &quot;name&quot;: &quot;A String&quot;, # The name of the load balancer associated with the finding.
        },
      ],
      &quot;logEntries&quot;: [ # Log entries that are relevant to the finding.
        { # An individual entry in a log.
          &quot;cloudLoggingEntry&quot;: { # Metadata taken from a [Cloud Logging LogEntry](https://cloud.google.com/logging/docs/reference/v2/rest/v2/LogEntry) # An individual entry in a log stored in Cloud Logging.
            &quot;insertId&quot;: &quot;A String&quot;, # A unique identifier for the log entry.
            &quot;logId&quot;: &quot;A String&quot;, # The type of the log (part of `log_name`. `log_name` is the resource name of the log to which this log entry belongs). For example: `cloudresourcemanager.googleapis.com/activity`. Note that this field is not URL-encoded, unlike the `LOG_ID` field in `LogEntry`.
            &quot;resourceContainer&quot;: &quot;A String&quot;, # The organization, folder, or project of the monitored resource that produced this log entry.
            &quot;timestamp&quot;: &quot;A String&quot;, # The time the event described by the log entry occurred.
          },
        },
      ],
      &quot;mitreAttack&quot;: { # MITRE ATT&amp;CK tactics and techniques related to this finding. See: https://attack.mitre.org # MITRE ATT&amp;CK tactics and techniques related to this finding. See: https://attack.mitre.org
        &quot;additionalTactics&quot;: [ # Additional MITRE ATT&amp;CK tactics related to this finding, if any.
          &quot;A String&quot;,
        ],
        &quot;additionalTechniques&quot;: [ # Additional MITRE ATT&amp;CK techniques related to this finding, if any, along with any of their respective parent techniques.
          &quot;A String&quot;,
        ],
        &quot;primaryTactic&quot;: &quot;A String&quot;, # The MITRE ATT&amp;CK tactic most closely represented by this finding, if any.
        &quot;primaryTechniques&quot;: [ # The MITRE ATT&amp;CK technique most closely represented by this finding, if any. primary_techniques is a repeated field because there are multiple levels of MITRE ATT&amp;CK techniques. If the technique most closely represented by this finding is a sub-technique (e.g. `SCANNING_IP_BLOCKS`), both the sub-technique and its parent technique(s) will be listed (e.g. `SCANNING_IP_BLOCKS`, `ACTIVE_SCANNING`).
          &quot;A String&quot;,
        ],
        &quot;version&quot;: &quot;A String&quot;, # The MITRE ATT&amp;CK version referenced by the above fields. E.g. &quot;8&quot;.
      },
      &quot;moduleName&quot;: &quot;A String&quot;, # Unique identifier of the module which generated the finding. Example: folders/598186756061/securityHealthAnalyticsSettings/customModules/56799441161885
      &quot;mute&quot;: &quot;A String&quot;, # Indicates the mute state of a finding (either muted, unmuted or undefined). Unlike other attributes of a finding, a finding provider shouldn&#x27;t set the value of mute.
      &quot;muteInitiator&quot;: &quot;A String&quot;, # Records additional information about the mute operation, for example, the [mute configuration](/security-command-center/docs/how-to-mute-findings) that muted the finding and the user who muted the finding.
      &quot;muteUpdateTime&quot;: &quot;A String&quot;, # Output only. The most recent time this finding was muted or unmuted.
      &quot;name&quot;: &quot;A String&quot;, # The [relative resource name](https://cloud.google.com/apis/design/resource_names#relative_resource_name) of the finding. Example: &quot;organizations/{organization_id}/sources/{source_id}/findings/{finding_id}&quot;, &quot;folders/{folder_id}/sources/{source_id}/findings/{finding_id}&quot;, &quot;projects/{project_id}/sources/{source_id}/findings/{finding_id}&quot;.
      &quot;nextSteps&quot;: &quot;A String&quot;, # Steps to address the finding.
      &quot;orgPolicies&quot;: [ # Contains information about the org policies associated with the finding.
        { # Contains information about the org policies associated with the finding.
          &quot;name&quot;: &quot;A String&quot;, # The resource name of the org policy. Example: &quot;organizations/{organization_id}/policies/{constraint_name}&quot;
        },
      ],
      &quot;parent&quot;: &quot;A String&quot;, # The relative resource name of the source the finding belongs to. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name This field is immutable after creation time. For example: &quot;organizations/{organization_id}/sources/{source_id}&quot;
      &quot;parentDisplayName&quot;: &quot;A String&quot;, # Output only. The human readable display name of the finding source such as &quot;Event Threat Detection&quot; or &quot;Security Health Analytics&quot;.
      &quot;processes&quot;: [ # Represents operating system processes associated with the Finding.
        { # Represents an operating system process.
          &quot;args&quot;: [ # Process arguments as JSON encoded strings.
            &quot;A String&quot;,
          ],
          &quot;argumentsTruncated&quot;: True or False, # True if `args` is incomplete.
          &quot;binary&quot;: { # File information about the related binary/library used by an executable, or the script used by a script interpreter # File information for the process executable.
            &quot;contents&quot;: &quot;A String&quot;, # Prefix of the file contents as a JSON-encoded string.
            &quot;hashedSize&quot;: &quot;A String&quot;, # The length in bytes of the file prefix that was hashed. If hashed_size == size, any hashes reported represent the entire file.
            &quot;partiallyHashed&quot;: True or False, # True when the hash covers only a prefix of the file.
            &quot;path&quot;: &quot;A String&quot;, # Absolute path of the file as a JSON encoded string.
            &quot;sha256&quot;: &quot;A String&quot;, # SHA256 hash of the first hashed_size bytes of the file encoded as a hex string. If hashed_size == size, sha256 represents the SHA256 hash of the entire file.
            &quot;size&quot;: &quot;A String&quot;, # Size of the file in bytes.
          },
          &quot;envVariables&quot;: [ # Process environment variables.
            { # A name-value pair representing an environment variable used in an operating system process.
              &quot;name&quot;: &quot;A String&quot;, # Environment variable name as a JSON encoded string.
              &quot;val&quot;: &quot;A String&quot;, # Environment variable value as a JSON encoded string.
            },
          ],
          &quot;envVariablesTruncated&quot;: True or False, # True if `env_variables` is incomplete.
          &quot;libraries&quot;: [ # File information for libraries loaded by the process.
            { # File information about the related binary/library used by an executable, or the script used by a script interpreter
              &quot;contents&quot;: &quot;A String&quot;, # Prefix of the file contents as a JSON-encoded string.
              &quot;hashedSize&quot;: &quot;A String&quot;, # The length in bytes of the file prefix that was hashed. If hashed_size == size, any hashes reported represent the entire file.
              &quot;partiallyHashed&quot;: True or False, # True when the hash covers only a prefix of the file.
              &quot;path&quot;: &quot;A String&quot;, # Absolute path of the file as a JSON encoded string.
              &quot;sha256&quot;: &quot;A String&quot;, # SHA256 hash of the first hashed_size bytes of the file encoded as a hex string. If hashed_size == size, sha256 represents the SHA256 hash of the entire file.
              &quot;size&quot;: &quot;A String&quot;, # Size of the file in bytes.
            },
          ],
          &quot;name&quot;: &quot;A String&quot;, # The process name, as displayed in utilities like `top` and `ps`. This name can be accessed through `/proc/[pid]/comm` and changed with `prctl(PR_SET_NAME)`.
          &quot;parentPid&quot;: &quot;A String&quot;, # The parent process ID.
          &quot;pid&quot;: &quot;A String&quot;, # The process ID.
          &quot;script&quot;: { # File information about the related binary/library used by an executable, or the script used by a script interpreter # When the process represents the invocation of a script, `binary` provides information about the interpreter, while `script` provides information about the script file provided to the interpreter.
            &quot;contents&quot;: &quot;A String&quot;, # Prefix of the file contents as a JSON-encoded string.
            &quot;hashedSize&quot;: &quot;A String&quot;, # The length in bytes of the file prefix that was hashed. If hashed_size == size, any hashes reported represent the entire file.
            &quot;partiallyHashed&quot;: True or False, # True when the hash covers only a prefix of the file.
            &quot;path&quot;: &quot;A String&quot;, # Absolute path of the file as a JSON encoded string.
            &quot;sha256&quot;: &quot;A String&quot;, # SHA256 hash of the first hashed_size bytes of the file encoded as a hex string. If hashed_size == size, sha256 represents the SHA256 hash of the entire file.
            &quot;size&quot;: &quot;A String&quot;, # Size of the file in bytes.
          },
        },
      ],
      &quot;resourceName&quot;: &quot;A String&quot;, # For findings on Google Cloud resources, the full resource name of the Google Cloud resource this finding is for. See: https://cloud.google.com/apis/design/resource_names#full_resource_name When the finding is for a non-Google Cloud resource, the resourceName can be a customer or partner defined string. This field is immutable after creation time.
      &quot;securityMarks&quot;: { # User specified security marks that are attached to the parent Security Command Center resource. Security marks are scoped within a Security Command Center organization -- they can be modified and viewed by all users who have proper permissions on the organization. # Output only. User specified security marks. These marks are entirely managed by the user and come from the SecurityMarks resource that belongs to the finding.
        &quot;canonicalName&quot;: &quot;A String&quot;, # The canonical name of the marks. Examples: &quot;organizations/{organization_id}/assets/{asset_id}/securityMarks&quot; &quot;folders/{folder_id}/assets/{asset_id}/securityMarks&quot; &quot;projects/{project_number}/assets/{asset_id}/securityMarks&quot; &quot;organizations/{organization_id}/sources/{source_id}/findings/{finding_id}/securityMarks&quot; &quot;folders/{folder_id}/sources/{source_id}/findings/{finding_id}/securityMarks&quot; &quot;projects/{project_number}/sources/{source_id}/findings/{finding_id}/securityMarks&quot;
        &quot;marks&quot;: { # Mutable user specified security marks belonging to the parent resource. Constraints are as follows: * Keys and values are treated as case insensitive * Keys must be between 1 - 256 characters (inclusive) * Keys must be letters, numbers, underscores, or dashes * Values have leading and trailing whitespace trimmed, remaining characters must be between 1 - 4096 characters (inclusive)
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;name&quot;: &quot;A String&quot;, # The relative resource name of the SecurityMarks. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name Examples: &quot;organizations/{organization_id}/assets/{asset_id}/securityMarks&quot; &quot;organizations/{organization_id}/sources/{source_id}/findings/{finding_id}/securityMarks&quot;.
      },
      &quot;securityPosture&quot;: { # Represents a posture that is deployed on Google Cloud by the Security Command Center Posture Management service. A posture contains one or more policy sets. A policy set is a group of policies that enforce a set of security rules on Google Cloud. # The security posture associated with the finding.
        &quot;changedPolicy&quot;: &quot;A String&quot;, # The name of the policy that has been updated, for example, `projects/{project_id}/policies/{constraint_name}`.
        &quot;name&quot;: &quot;A String&quot;, # Name of the posture, for example, `organizations/{org_id}/locations/{location}/postures/{posture_name}`.
        &quot;postureDeployment&quot;: &quot;A String&quot;, # The name of the posture deployment, for example, `projects/{project_id}/posturedeployments/{posture_deployment_id}`.
        &quot;postureDeploymentResource&quot;: &quot;A String&quot;, # The project, folder, or organization on which the posture is deployed, for example, `projects/{project_id}`.
        &quot;revisionId&quot;: &quot;A String&quot;, # The version of the posture, for example, `c7cfa2a8`.
      },
      &quot;severity&quot;: &quot;A String&quot;, # The severity of the finding. This field is managed by the source that writes the finding.
      &quot;sourceProperties&quot;: { # Source specific properties. These properties are managed by the source that writes the finding. The key names in the source_properties map must be between 1 and 255 characters, and must start with a letter and contain alphanumeric characters or underscores only.
        &quot;a_key&quot;: &quot;&quot;,
      },
      &quot;state&quot;: &quot;A String&quot;, # The state of the finding.
      &quot;vulnerability&quot;: { # Refers to common vulnerability fields e.g. cve, cvss, cwe etc. # Represents vulnerability-specific fields like CVE and CVSS scores. CVE stands for Common Vulnerabilities and Exposures (https://cve.mitre.org/about/)
        &quot;cve&quot;: { # CVE stands for Common Vulnerabilities and Exposures. More information: https://cve.mitre.org # CVE stands for Common Vulnerabilities and Exposures (https://cve.mitre.org/about/)
          &quot;cvssv3&quot;: { # Common Vulnerability Scoring System version 3. # Describe Common Vulnerability Scoring System specified at https://www.first.org/cvss/v3.1/specification-document
            &quot;attackComplexity&quot;: &quot;A String&quot;, # This metric describes the conditions beyond the attacker&#x27;s control that must exist in order to exploit the vulnerability.
            &quot;attackVector&quot;: &quot;A String&quot;, # Base Metrics Represents the intrinsic characteristics of a vulnerability that are constant over time and across user environments. This metric reflects the context by which vulnerability exploitation is possible.
            &quot;availabilityImpact&quot;: &quot;A String&quot;, # This metric measures the impact to the availability of the impacted component resulting from a successfully exploited vulnerability.
            &quot;baseScore&quot;: 3.14, # The base score is a function of the base metric scores.
            &quot;confidentialityImpact&quot;: &quot;A String&quot;, # This metric measures the impact to the confidentiality of the information resources managed by a software component due to a successfully exploited vulnerability.
            &quot;integrityImpact&quot;: &quot;A String&quot;, # This metric measures the impact to integrity of a successfully exploited vulnerability.
            &quot;privilegesRequired&quot;: &quot;A String&quot;, # This metric describes the level of privileges an attacker must possess before successfully exploiting the vulnerability.
            &quot;scope&quot;: &quot;A String&quot;, # The Scope metric captures whether a vulnerability in one vulnerable component impacts resources in components beyond its security scope.
            &quot;userInteraction&quot;: &quot;A String&quot;, # This metric captures the requirement for a human user, other than the attacker, to participate in the successful compromise of the vulnerable component.
          },
          &quot;id&quot;: &quot;A String&quot;, # The unique identifier for the vulnerability. e.g. CVE-2021-34527
          &quot;references&quot;: [ # Additional information about the CVE. e.g. https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-34527
            { # Additional Links
              &quot;source&quot;: &quot;A String&quot;, # Source of the reference e.g. NVD
              &quot;uri&quot;: &quot;A String&quot;, # Uri for the mentioned source e.g. https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-34527.
            },
          ],
          &quot;upstreamFixAvailable&quot;: True or False, # Whether upstream fix is available for the CVE.
        },
      },
    },
    &quot;noViolation&quot;: { # 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); } # Indicates that the test case does not trigger any violation.
    },
  },
}</pre>
</div>

</body></html>