<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.folders.html">folders</a> . <a href="securitycenter_v1.folders.securityHealthAnalyticsSettings.html">securityHealthAnalyticsSettings</a> . <a href="securitycenter_v1.folders.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 `organizations/{organization}/securityHealthAnalyticsSettings`, `folders/{folder}/securityHealthAnalyticsSettings`, or `projects/{project}/securityHealthAnalyticsSettings` (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;cloudProvider&quot;: &quot;A String&quot;, # The cloud provider of the custom module.
  &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;cloudProvider&quot;: &quot;A String&quot;, # The cloud provider of the custom module.
  &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 `organizations/{organization}/securityHealthAnalyticsSettings/customModules/{customModule}`, `folders/{folder}/securityHealthAnalyticsSettings/customModules/{customModule}`, or `projects/{project}/securityHealthAnalyticsSettings/customModules/{customModule}` (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 `organizations/{organization}/securityHealthAnalyticsSettings/customModules/{customModule}`, `folders/{folder}/securityHealthAnalyticsSettings/customModules/{customModule}`, or `projects/{project}/securityHealthAnalyticsSettings/customModules/{customModule}` (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;cloudProvider&quot;: &quot;A String&quot;, # The cloud provider of the custom module.
  &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 `organizations/{organization}/securityHealthAnalyticsSettings`, `folders/{folder}/securityHealthAnalyticsSettings`, or `projects/{project}/securityHealthAnalyticsSettings` (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;cloudProvider&quot;: &quot;A String&quot;, # The cloud provider of the custom module.
      &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 `organizations/{organization}/securityHealthAnalyticsSettings`, `folders/{folder}/securityHealthAnalyticsSettings`, or `projects/{project}/securityHealthAnalyticsSettings` (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;cloudProvider&quot;: &quot;A String&quot;, # The cloud provider of the custom module.
      &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;cloudProvider&quot;: &quot;A String&quot;, # The cloud provider of the custom module.
  &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;cloudProvider&quot;: &quot;A String&quot;, # The cloud provider of the custom module.
  &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`. * `principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}`: A single identity in a workforce identity pool. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/group/{group_id}`: All workforce identities in a group. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/attribute.{attribute_name}/{attribute_value}`: All workforce identities with a specific attribute value. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/*`: All identities in a workforce identity pool. * `principal://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/subject/{subject_attribute_value}`: A single identity in a workload identity pool. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/group/{group_id}`: A workload identity pool group. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/attribute.{attribute_name}/{attribute_value}`: All identities in a workload identity pool with a certain attribute. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/*`: All identities in a workload identity pool. * `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. * `deleted:principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}`: Deleted single identity in a workforce identity pool. For example, `deleted:principal://iam.googleapis.com/locations/global/workforcePools/my-pool-id/subject/my-subject-attribute-value`.
            &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`. For an overview of the IAM roles and permissions, see the [IAM documentation](https://cloud.google.com/iam/docs/roles-overview). For a list of the available pre-defined roles, see [here](https://cloud.google.com/iam/docs/understanding-roles).
        },
      ],
      &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;affectedResources&quot;: { # Details about resources affected by this finding. # AffectedResources associated with the finding.
        &quot;count&quot;: &quot;A String&quot;, # The count of resources affected by the finding.
      },
      &quot;aiModel&quot;: { # Contains information about the AI model associated with the finding. # The AI model associated with the finding.
        &quot;deploymentPlatform&quot;: &quot;A String&quot;, # The platform on which the model is deployed.
        &quot;displayName&quot;: &quot;A String&quot;, # The user defined display name of model. Ex. baseline-classification-model
        &quot;domain&quot;: &quot;A String&quot;, # The domain of the model, for example, “image-classification”.
        &quot;library&quot;: &quot;A String&quot;, # The name of the model library, for example, “transformers”.
        &quot;location&quot;: &quot;A String&quot;, # The region in which the model is used, for example, “us-central1”.
        &quot;name&quot;: &quot;A String&quot;, # The name of the AI model, for example, &quot;gemini:1.0.0&quot;.
        &quot;publisher&quot;: &quot;A String&quot;, # The publisher of the model, for example, “google” or “nvidia”.
      },
      &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. For example, `http://example.com`.
        &quot;fullUri&quot;: &quot;A String&quot;, # The full URI with payload that can be used to reproduce the vulnerability. For example, `http://example.com?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/simulations/456/attackExposureResults/789`
        &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;chokepoint&quot;: { # Contains details about a chokepoint, which is a resource or resource group where high-risk attack paths converge, based on [attack path simulations] (https://cloud.google.com/security-command-center/docs/attack-exposure-learn#attack_path_simulations). # Contains details about a chokepoint, which is a resource or resource group where high-risk attack paths converge, based on [attack path simulations] (https://cloud.google.com/security-command-center/docs/attack-exposure-learn#attack_path_simulations). This field cannot be updated. Its value is ignored in all update requests.
        &quot;relatedFindings&quot;: [ # List of resource names of findings associated with this chokepoint. For example, organizations/123/sources/456/findings/789. This list will have at most 100 findings.
          &quot;A String&quot;,
        ],
      },
      &quot;cloudArmor&quot;: { # Fields related to Google Cloud Armor findings. # Fields related to Cloud Armor findings.
        &quot;adaptiveProtection&quot;: { # Information about [Google Cloud Armor Adaptive Protection](https://cloud.google.com/armor/docs/cloud-armor-overview#google-cloud-armor-adaptive-protection). # Information about potential Layer 7 DDoS attacks identified by [Google Cloud Armor Adaptive Protection](https://cloud.google.com/armor/docs/adaptive-protection-overview).
          &quot;confidence&quot;: 3.14, # A score of 0 means that there is low confidence that the detected event is an actual attack. A score of 1 means that there is high confidence that the detected event is an attack. See the [Adaptive Protection documentation](https://cloud.google.com/armor/docs/adaptive-protection-overview#configure-alert-tuning) for further explanation.
        },
        &quot;attack&quot;: { # Information about DDoS attack volume and classification. # Information about DDoS attack volume and classification.
          &quot;classification&quot;: &quot;A String&quot;, # Type of attack, for example, &#x27;SYN-flood&#x27;, &#x27;NTP-udp&#x27;, or &#x27;CHARGEN-udp&#x27;.
          &quot;volumeBps&quot;: 42, # Total BPS (bytes per second) volume of attack. Deprecated - refer to volume_bps_long instead.
          &quot;volumeBpsLong&quot;: &quot;A String&quot;, # Total BPS (bytes per second) volume of attack.
          &quot;volumePps&quot;: 42, # Total PPS (packets per second) volume of attack. Deprecated - refer to volume_pps_long instead.
          &quot;volumePpsLong&quot;: &quot;A String&quot;, # Total PPS (packets per second) volume of attack.
        },
        &quot;duration&quot;: &quot;A String&quot;, # Duration of attack from the start until the current moment (updated every 5 minutes).
        &quot;requests&quot;: { # Information about the requests relevant to the finding. # Information about incoming requests evaluated by [Google Cloud Armor security policies](https://cloud.google.com/armor/docs/security-policy-overview).
          &quot;longTermAllowed&quot;: 42, # Allowed RPS (requests per second) over the long term.
          &quot;longTermDenied&quot;: 42, # Denied RPS (requests per second) over the long term.
          &quot;ratio&quot;: 3.14, # For &#x27;Increasing deny ratio&#x27;, the ratio is the denied traffic divided by the allowed traffic. For &#x27;Allowed traffic spike&#x27;, the ratio is the allowed traffic in the short term divided by allowed traffic in the long term.
          &quot;shortTermAllowed&quot;: 42, # Allowed RPS (requests per second) in the short term.
        },
        &quot;securityPolicy&quot;: { # Information about the [Google Cloud Armor security policy](https://cloud.google.com/armor/docs/security-policy-overview) relevant to the finding. # Information about the [Google Cloud Armor security policy](https://cloud.google.com/armor/docs/security-policy-overview) relevant to the finding.
          &quot;name&quot;: &quot;A String&quot;, # The name of the Google Cloud Armor security policy, for example, &quot;my-security-policy&quot;.
          &quot;preview&quot;: True or False, # Whether or not the associated rule or policy is in preview mode.
          &quot;type&quot;: &quot;A String&quot;, # The type of Google Cloud Armor security policy for example, &#x27;backend security policy&#x27;, &#x27;edge security policy&#x27;, &#x27;network edge security policy&#x27;, or &#x27;always-on DDoS protection&#x27;.
        },
        &quot;threatVector&quot;: &quot;A String&quot;, # Distinguish between volumetric &amp; protocol DDoS attack and application layer attacks. For example, &quot;L3_4&quot; for Layer 3 and Layer 4 DDoS attacks, or &quot;L_7&quot; for Layer 7 DDoS attacks.
      },
      &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;infoTypes&quot;: [ # Type of information detected by SDP. Info type includes name, version and sensitivity of the detected information type.
          { # Type of information detected by the API.
            &quot;name&quot;: &quot;A String&quot;, # Name of the information type. Either a name of your choosing when creating a CustomInfoType, or one of the names listed at https://cloud.google.com/sensitive-data-protection/docs/infotypes-reference when specifying a built-in type. When sending Cloud DLP results to Data Catalog, infoType names should conform to the pattern `[A-Za-z0-9$_-]{1,64}`.
            &quot;sensitivityScore&quot;: { # Score is calculated from of all elements in the data profile. A higher level means the data is more sensitive. # Optional custom sensitivity for this InfoType. This only applies to data profiling.
              &quot;score&quot;: &quot;A String&quot;, # The sensitivity score applied to the resource.
            },
            &quot;version&quot;: &quot;A String&quot;, # Optional version name for this InfoType.
          },
        ],
        &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;complianceDetails&quot;: { # Compliance Details associated with the finding. # Details about the compliance implications of the finding.
        &quot;cloudControl&quot;: { # CloudControl associated with the finding. # CloudControl associated with the finding
          &quot;cloudControlName&quot;: &quot;A String&quot;, # Name of the CloudControl associated with the finding.
          &quot;policyType&quot;: &quot;A String&quot;, # Policy type of the CloudControl
          &quot;type&quot;: &quot;A String&quot;, # Type of cloud control.
          &quot;version&quot;: 42, # Version of the Cloud Control
        },
        &quot;cloudControlDeploymentNames&quot;: [ # Cloud Control Deployments associated with the finding. For example, organizations/123/locations/global/cloudControlDeployments/deploymentIdentifier
          &quot;A String&quot;,
        ],
        &quot;frameworks&quot;: [ # Details of Frameworks associated with the finding
          { # Compliance framework associated with the finding.
            &quot;category&quot;: [ # Category of the framework associated with the finding. E.g. Security Benchmark, or Assured Workloads
              &quot;A String&quot;,
            ],
            &quot;controls&quot;: [ # The controls associated with the framework.
              { # Compliance control associated with the finding.
                &quot;controlName&quot;: &quot;A String&quot;, # Name of the Control
                &quot;displayName&quot;: &quot;A String&quot;, # Display name of the control. For example, AU-02.
              },
            ],
            &quot;displayName&quot;: &quot;A String&quot;, # Display name of the framework. For a standard framework, this will look like e.g. PCI DSS 3.2.1, whereas for a custom framework it can be a user defined string like MyFramework
            &quot;name&quot;: &quot;A String&quot;, # Name of the framework associated with the finding
            &quot;type&quot;: &quot;A String&quot;, # Type of the framework associated with the finding, to specify whether the framework is built-in (pre-defined and immutable) or a custom framework defined by the customer (equivalent to security posture)
          },
        ],
      },
      &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;dataAccessEvents&quot;: [ # Data access events associated with the finding.
        { # Details about a data access attempt made by a principal not authorized under applicable data security policy.
          &quot;eventId&quot;: &quot;A String&quot;, # Unique identifier for data access event.
          &quot;eventTime&quot;: &quot;A String&quot;, # Timestamp of data access event.
          &quot;operation&quot;: &quot;A String&quot;, # The operation performed by the principal to access the data.
          &quot;principalEmail&quot;: &quot;A String&quot;, # The email address of the principal that accessed the data. The principal could be a user account, service account, Google group, or other.
        },
      ],
      &quot;dataFlowEvents&quot;: [ # Data flow events associated with the finding.
        { # Details about a data flow event, in which either the data is moved to or is accessed from a non-compliant geo-location, as defined in the applicable data security policy.
          &quot;eventId&quot;: &quot;A String&quot;, # Unique identifier for data flow event.
          &quot;eventTime&quot;: &quot;A String&quot;, # Timestamp of data flow event.
          &quot;operation&quot;: &quot;A String&quot;, # The operation performed by the principal for the data flow event.
          &quot;principalEmail&quot;: &quot;A String&quot;, # The email address of the principal that initiated the data flow event. The principal could be a user account, service account, Google group, or other.
          &quot;violatedLocation&quot;: &quot;A String&quot;, # Non-compliant location of the principal or the data destination.
        },
      ],
      &quot;dataRetentionDeletionEvents&quot;: [ # Data retention deletion events associated with the finding.
        { # Details about data retention deletion violations, in which the data is non-compliant based on their retention or deletion time, as defined in the applicable data security policy. The Data Retention Deletion (DRD) control is a control of the DSPM (Data Security Posture Management) suite that enables organizations to manage data retention and deletion policies in compliance with regulations, such as GDPR and CRPA. DRD supports two primary policy types: maximum storage length (max TTL) and minimum storage length (min TTL). Both are aimed at helping organizations meet regulatory and data management commitments.
          &quot;dataObjectCount&quot;: &quot;A String&quot;, # Number of objects that violated the policy for this resource. If the number is less than 1,000, then the value of this field is the exact number. If the number of objects that violated the policy is greater than or equal to 1,000, then the value of this field is 1000.
          &quot;eventDetectionTime&quot;: &quot;A String&quot;, # Timestamp indicating when the event was detected.
          &quot;eventType&quot;: &quot;A String&quot;, # Type of the DRD event.
          &quot;maxRetentionAllowed&quot;: &quot;A String&quot;, # Maximum duration of retention allowed from the DRD control. This comes from the DRD control where users set a max TTL for their data. For example, suppose that a user sets the max TTL for a Cloud Storage bucket to 90 days. However, an object in that bucket is 100 days old. In this case, a DataRetentionDeletionEvent will be generated for that Cloud Storage bucket, and the max_retention_allowed is 90 days.
        },
      ],
      &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;disk&quot;: { # Contains information about the disk associated with the finding. # Disk associated with the finding.
        &quot;name&quot;: &quot;A String&quot;, # The name of the disk, for example, &quot;https://www.googleapis.com/compute/v1/projects/{project-id}/zones/{zone-id}/disks/{disk-id}&quot;.
      },
      &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;caseCloseTime&quot;: &quot;A String&quot;, # The time when the case was closed, as reported by the external system.
          &quot;caseCreateTime&quot;: &quot;A String&quot;, # The time when the case was created, as reported by the external system.
          &quot;casePriority&quot;: &quot;A String&quot;, # The priority of the finding&#x27;s corresponding case in the external system.
          &quot;caseSla&quot;: &quot;A String&quot;, # The SLA of the finding&#x27;s corresponding case in the external system.
          &quot;caseUri&quot;: &quot;A String&quot;, # The link to the finding&#x27;s corresponding case in the external system.
          &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;ticketInfo&quot;: { # Information about the ticket, if any, that is being used to track the resolution of the issue that is identified by this finding. # Information about the ticket, if any, that is being used to track the resolution of the issue that is identified by this finding.
            &quot;assignee&quot;: &quot;A String&quot;, # The assignee of the ticket in the ticket system.
            &quot;description&quot;: &quot;A String&quot;, # The description of the ticket in the ticket system.
            &quot;id&quot;: &quot;A String&quot;, # The identifier of the ticket in the ticket system.
            &quot;status&quot;: &quot;A String&quot;, # The latest status of the ticket, as reported by the ticket system.
            &quot;updateTime&quot;: &quot;A String&quot;, # The time when the ticket was last updated, as reported by the ticket system.
            &quot;uri&quot;: &quot;A String&quot;, # The link to the ticket in the ticket 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;diskPath&quot;: { # Path of the file in terms of underlying disk/partition identifiers. # Path of the file in terms of underlying disk/partition identifiers.
            &quot;partitionUuid&quot;: &quot;A String&quot;, # UUID of the partition (format https://wiki.archlinux.org/title/persistent_block_device_naming#by-uuid)
            &quot;relativePath&quot;: &quot;A String&quot;, # Relative path of the file in the partition as a JSON encoded string. Example: /home/user1/executable_file.sh
          },
          &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;operations&quot;: [ # Operation(s) performed on a file.
            { # Operation(s) performed on a file.
              &quot;type&quot;: &quot;A String&quot;, # The type of the operation
            },
          ],
          &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;groupMemberships&quot;: [ # Contains details about groups of which this finding is a member. A group is a collection of findings that are related in some way. This field cannot be updated. Its value is ignored in all update requests.
        { # Contains details about groups of which this finding is a member. A group is a collection of findings that are related in some way.
          &quot;groupId&quot;: &quot;A String&quot;, # ID of the group.
          &quot;groupType&quot;: &quot;A String&quot;, # Type of group.
        },
      ],
      &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;signatureType&quot;: &quot;A String&quot;, # Describes the type of resource associated with the signature.
            &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;ipRules&quot;: { # IP rules associated with the finding. # IP rules associated with the finding.
        &quot;allowed&quot;: { # Allowed IP rule. # Tuple with allowed rules.
          &quot;ipRules&quot;: [ # Optional. Optional list of allowed IP rules.
            { # IP rule information.
              &quot;portRanges&quot;: [ # Optional. An optional list of ports to which this rule applies. This field is only applicable for the UDP or (S)TCP protocols. Each entry must be either an integer or a range including a min and max port number.
                { # A port range which is inclusive of the min and max values. Values are between 0 and 2^16-1. The max can be equal / must be not smaller than the min value. If min and max are equal this indicates that it is a single port.
                  &quot;max&quot;: &quot;A String&quot;, # Maximum port value.
                  &quot;min&quot;: &quot;A String&quot;, # Minimum port value.
                },
              ],
              &quot;protocol&quot;: &quot;A String&quot;, # The IP protocol this rule applies to. This value can either be one of the following well known protocol strings (TCP, UDP, ICMP, ESP, AH, IPIP, SCTP) or a string representation of the integer value.
            },
          ],
        },
        &quot;denied&quot;: { # Denied IP rule. # Tuple with denied rules.
          &quot;ipRules&quot;: [ # Optional. Optional list of denied IP rules.
            { # IP rule information.
              &quot;portRanges&quot;: [ # Optional. An optional list of ports to which this rule applies. This field is only applicable for the UDP or (S)TCP protocols. Each entry must be either an integer or a range including a min and max port number.
                { # A port range which is inclusive of the min and max values. Values are between 0 and 2^16-1. The max can be equal / must be not smaller than the min value. If min and max are equal this indicates that it is a single port.
                  &quot;max&quot;: &quot;A String&quot;, # Maximum port value.
                  &quot;min&quot;: &quot;A String&quot;, # Minimum port value.
                },
              ],
              &quot;protocol&quot;: &quot;A String&quot;, # The IP protocol this rule applies to. This value can either be one of the following well known protocol strings (TCP, UDP, ICMP, ESP, AH, IPIP, SCTP) or a string representation of the integer value.
            },
          ],
        },
        &quot;destinationIpRanges&quot;: [ # If destination IP ranges are specified, the firewall rule applies only to traffic that has a destination IP address in these ranges. These ranges must be expressed in CIDR format. Only supports IPv4.
          &quot;A String&quot;,
        ],
        &quot;direction&quot;: &quot;A String&quot;, # The direction that the rule is applicable to, one of ingress or egress.
        &quot;exposedServices&quot;: [ # Name of the network protocol service, such as FTP, that is exposed by the open port. Follows the naming convention available at: https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml.
          &quot;A String&quot;,
        ],
        &quot;sourceIpRanges&quot;: [ # If source IP ranges are specified, the firewall rule applies only to traffic that has a source IP address in these ranges. These ranges must be expressed in CIDR format. Only supports IPv4.
          &quot;A String&quot;,
        ],
      },
      &quot;job&quot;: { # Describes a job # Job associated with the finding.
        &quot;errorCode&quot;: 42, # Optional. If the job did not complete successfully, this field describes why.
        &quot;location&quot;: &quot;A String&quot;, # Optional. Gives the location where the job ran, such as `US` or `europe-west1`
        &quot;name&quot;: &quot;A String&quot;, # The fully-qualified name for a job. e.g. `projects//jobs/`
        &quot;state&quot;: &quot;A String&quot;, # Output only. State of the job, such as `RUNNING` or `PENDING`.
      },
      &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;muteInfo&quot;: { # Mute information about the finding, including whether the finding has a static mute or any matching dynamic mute rules. # Output only. The mute information regarding this finding.
        &quot;dynamicMuteRecords&quot;: [ # The list of dynamic mute rules that currently match the finding.
          { # The record of a dynamic mute rule that matches the finding.
            &quot;matchTime&quot;: &quot;A String&quot;, # When the dynamic mute rule first matched the finding.
            &quot;muteConfig&quot;: &quot;A String&quot;, # The relative resource name of the mute rule, represented by a mute config, that created this record, for example `organizations/123/muteConfigs/mymuteconfig` or `organizations/123/locations/global/muteConfigs/mymuteconfig`.
          },
        ],
        &quot;staticMute&quot;: { # Information about the static mute state. A static mute state overrides any dynamic mute rules that apply to this finding. The static mute state can be set by a static mute rule or by muting the finding directly. # If set, the static mute applied to this finding. Static mutes override dynamic mutes. If unset, there is no static mute.
          &quot;applyTime&quot;: &quot;A String&quot;, # When the static mute was applied.
          &quot;state&quot;: &quot;A String&quot;, # The static mute state. If the value is `MUTED` or `UNMUTED`, then the finding&#x27;s overall mute state will have the same value.
        },
      },
      &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;networks&quot;: [ # Represents the VPC networks that the resource is attached to.
        { # Contains information about a VPC network associated with the finding.
          &quot;name&quot;: &quot;A String&quot;, # The name of the VPC network resource, for example, `//compute.googleapis.com/projects/my-project/global/networks/my-network`.
        },
      ],
      &quot;nextSteps&quot;: &quot;A String&quot;, # Steps to address the finding.
      &quot;notebook&quot;: { # Represents a Jupyter notebook IPYNB file, such as a [Colab Enterprise notebook](https://cloud.google.com/colab/docs/introduction) file, that is associated with a finding. # Notebook associated with the finding.
        &quot;lastAuthor&quot;: &quot;A String&quot;, # The user ID of the latest author to modify the notebook.
        &quot;name&quot;: &quot;A String&quot;, # The name of the notebook.
        &quot;notebookUpdateTime&quot;: &quot;A String&quot;, # The most recent time the notebook was updated.
        &quot;service&quot;: &quot;A String&quot;, # The source notebook service, for example, &quot;Colab Enterprise&quot;.
      },
      &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;diskPath&quot;: { # Path of the file in terms of underlying disk/partition identifiers. # Path of the file in terms of underlying disk/partition identifiers.
              &quot;partitionUuid&quot;: &quot;A String&quot;, # UUID of the partition (format https://wiki.archlinux.org/title/persistent_block_device_naming#by-uuid)
              &quot;relativePath&quot;: &quot;A String&quot;, # Relative path of the file in the partition as a JSON encoded string. Example: /home/user1/executable_file.sh
            },
            &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;operations&quot;: [ # Operation(s) performed on a file.
              { # Operation(s) performed on a file.
                &quot;type&quot;: &quot;A String&quot;, # The type of the operation
              },
            ],
            &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;diskPath&quot;: { # Path of the file in terms of underlying disk/partition identifiers. # Path of the file in terms of underlying disk/partition identifiers.
                &quot;partitionUuid&quot;: &quot;A String&quot;, # UUID of the partition (format https://wiki.archlinux.org/title/persistent_block_device_naming#by-uuid)
                &quot;relativePath&quot;: &quot;A String&quot;, # Relative path of the file in the partition as a JSON encoded string. Example: /home/user1/executable_file.sh
              },
              &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;operations&quot;: [ # Operation(s) performed on a file.
                { # Operation(s) performed on a file.
                  &quot;type&quot;: &quot;A String&quot;, # The type of the operation
                },
              ],
              &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;diskPath&quot;: { # Path of the file in terms of underlying disk/partition identifiers. # Path of the file in terms of underlying disk/partition identifiers.
              &quot;partitionUuid&quot;: &quot;A String&quot;, # UUID of the partition (format https://wiki.archlinux.org/title/persistent_block_device_naming#by-uuid)
              &quot;relativePath&quot;: &quot;A String&quot;, # Relative path of the file in the partition as a JSON encoded string. Example: /home/user1/executable_file.sh
            },
            &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;operations&quot;: [ # Operation(s) performed on a file.
              { # Operation(s) performed on a file.
                &quot;type&quot;: &quot;A String&quot;, # The type of the operation
              },
            ],
            &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;userId&quot;: &quot;A String&quot;, # The ID of the user that executed the process. E.g. If this is the root user this will always be 0.
        },
      ],
      &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 updated policy, for example, `projects/{project_id}/policies/{constraint_name}`.
        &quot;name&quot;: &quot;A String&quot;, # Name of the posture, for example, `CIS-Posture`.
        &quot;policy&quot;: &quot;A String&quot;, # The ID of the updated policy, for example, `compute-policy-1`.
        &quot;policyDriftDetails&quot;: [ # The details about a change in an updated policy that violates the deployed posture.
          { # The policy field that violates the deployed posture and its expected and detected values.
            &quot;detectedValue&quot;: &quot;A String&quot;, # The detected value that violates the deployed posture, for example, `false` or `allowed_values={&quot;projects/22831892&quot;}`.
            &quot;expectedValue&quot;: &quot;A String&quot;, # The value of this field that was configured in a posture, for example, `true` or `allowed_values={&quot;projects/29831892&quot;}`.
            &quot;field&quot;: &quot;A String&quot;, # The name of the updated field, for example constraint.implementation.policy_rules[0].enforce
          },
        ],
        &quot;policySet&quot;: &quot;A String&quot;, # The name of the updated policyset, for example, `cis-policyset`.
        &quot;postureDeployment&quot;: &quot;A String&quot;, # The name of the posture deployment, for example, `organizations/{org_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_number}`.
        &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;toxicCombination&quot;: { # Contains details about a group of security issues that, when the issues occur together, represent a greater risk than when the issues occur independently. A group of such issues is referred to as a toxic combination. # Contains details about a group of security issues that, when the issues occur together, represent a greater risk than when the issues occur independently. A group of such issues is referred to as a toxic combination. This field cannot be updated. Its value is ignored in all update requests.
        &quot;attackExposureScore&quot;: 3.14, # The [Attack exposure score](https://cloud.google.com/security-command-center/docs/attack-exposure-learn#attack_exposure_scores) of this toxic combination. The score is a measure of how much this toxic combination exposes one or more high-value resources to potential attack.
        &quot;relatedFindings&quot;: [ # List of resource names of findings associated with this toxic combination. For example, `organizations/123/sources/456/findings/789`.
          &quot;A String&quot;,
        ],
      },
      &quot;vertexAi&quot;: { # Vertex AI-related information associated with the finding. # VertexAi associated with the finding.
        &quot;datasets&quot;: [ # Datasets associated with the finding.
          { # Vertex AI dataset associated with the finding.
            &quot;displayName&quot;: &quot;A String&quot;, # The user defined display name of dataset, e.g. plants-dataset
            &quot;name&quot;: &quot;A String&quot;, # Resource name of the dataset, e.g. projects/{project}/locations/{location}/datasets/2094040236064505856
            &quot;source&quot;: &quot;A String&quot;, # Data source, such as BigQuery source URI, e.g. bq://scc-nexus-test.AIPPtest.gsod
          },
        ],
        &quot;pipelines&quot;: [ # Pipelines associated with the finding.
          { # Vertex AI training pipeline associated with the finding.
            &quot;displayName&quot;: &quot;A String&quot;, # The user defined display name of pipeline, e.g. plants-classification
            &quot;name&quot;: &quot;A String&quot;, # Resource name of the pipeline, e.g. projects/{project}/locations/{location}/trainingPipelines/5253428229225578496
          },
        ],
      },
      &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. Information from the [CVE record](https://www.cve.org/ResourcesSupport/Glossary) that describes this vulnerability. # 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;exploitReleaseDate&quot;: &quot;A String&quot;, # Date the first publicly available exploit or PoC was released.
          &quot;exploitationActivity&quot;: &quot;A String&quot;, # The exploitation activity of the vulnerability in the wild.
          &quot;firstExploitationDate&quot;: &quot;A String&quot;, # Date of the earliest known exploitation.
          &quot;id&quot;: &quot;A String&quot;, # The unique identifier for the vulnerability. e.g. CVE-2021-34527
          &quot;impact&quot;: &quot;A String&quot;, # The potential impact of the vulnerability if it was to be exploited.
          &quot;observedInTheWild&quot;: True or False, # Whether or not the vulnerability has been observed in the wild.
          &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;zeroDay&quot;: True or False, # Whether or not the vulnerability was zero day when the finding was published.
        },
        &quot;cwes&quot;: [ # Represents one or more Common Weakness Enumeration (CWE) information on this vulnerability.
          { # CWE stands for Common Weakness Enumeration. Information about this weakness, as described by [CWE](https://cwe.mitre.org/).
            &quot;id&quot;: &quot;A String&quot;, # The CWE identifier, e.g. CWE-94
            &quot;references&quot;: [ # Any reference to the details on the CWE, for example, https://cwe.mitre.org/data/definitions/94.html
              { # 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;fixedPackage&quot;: { # Package is a generic definition of a package. # The fixed package is relevant to the finding.
          &quot;cpeUri&quot;: &quot;A String&quot;, # The CPE URI where the vulnerability was detected.
          &quot;packageName&quot;: &quot;A String&quot;, # The name of the package where the vulnerability was detected.
          &quot;packageType&quot;: &quot;A String&quot;, # Type of package, for example, os, maven, or go.
          &quot;packageVersion&quot;: &quot;A String&quot;, # The version of the package.
        },
        &quot;offendingPackage&quot;: { # Package is a generic definition of a package. # The offending package is relevant to the finding.
          &quot;cpeUri&quot;: &quot;A String&quot;, # The CPE URI where the vulnerability was detected.
          &quot;packageName&quot;: &quot;A String&quot;, # The name of the package where the vulnerability was detected.
          &quot;packageType&quot;: &quot;A String&quot;, # Type of package, for example, os, maven, or go.
          &quot;packageVersion&quot;: &quot;A String&quot;, # The version of the package.
        },
        &quot;providerRiskScore&quot;: &quot;A String&quot;, # Provider provided risk_score based on multiple factors. The higher the risk score, the more risky the vulnerability is.
        &quot;reachable&quot;: True or False, # Represents whether the vulnerability is reachable (detected via static analysis)
        &quot;securityBulletin&quot;: { # SecurityBulletin are notifications of vulnerabilities of Google products. # The security bulletin is relevant to this finding.
          &quot;bulletinId&quot;: &quot;A String&quot;, # ID of the bulletin corresponding to the vulnerability.
          &quot;submissionTime&quot;: &quot;A String&quot;, # Submission time of this Security Bulletin.
          &quot;suggestedUpgradeVersion&quot;: &quot;A String&quot;, # This represents a version that the cluster receiving this notification should be upgraded to, based on its current version. For example, 1.15.0
        },
      },
    },
    &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>