<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="securitycenter_v1.html">Security Command Center API</a> . <a href="securitycenter_v1.projects.html">projects</a> . <a href="securitycenter_v1.projects.sources.html">sources</a> . <a href="securitycenter_v1.projects.sources.findings.html">findings</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="securitycenter_v1.projects.sources.findings.externalSystems.html">externalSystems()</a></code>
</p>
<p class="firstline">Returns the externalSystems Resource.</p>

<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#group">group(parent, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Filters an organization or source's findings and groups them by their specified properties. To group across all sources provide a `-` as the source id. Example: /v1/organizations/{organization_id}/sources/-/findings, /v1/folders/{folder_id}/sources/-/findings, /v1/projects/{project_id}/sources/-/findings</p>
<p class="toc_element">
  <code><a href="#group_next">group_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, compareDuration=None, fieldMask=None, filter=None, orderBy=None, pageSize=None, pageToken=None, readTime=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists an organization or source's findings. To list across all sources provide a `-` as the source id. Example: /v1/organizations/{organization_id}/sources/-/findings</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</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">Creates or updates a finding. The corresponding source must exist for a finding creation to succeed.</p>
<p class="toc_element">
  <code><a href="#setMute">setMute(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates the mute state of a finding.</p>
<p class="toc_element">
  <code><a href="#setState">setState(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates the state of a finding.</p>
<p class="toc_element">
  <code><a href="#updateSecurityMarks">updateSecurityMarks(name, body=None, startTime=None, updateMask=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates security marks.</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="group">group(parent, body=None, x__xgafv=None)</code>
  <pre>Filters an organization or source&#x27;s findings and groups them by their specified properties. To group across all sources provide a `-` as the source id. Example: /v1/organizations/{organization_id}/sources/-/findings, /v1/folders/{folder_id}/sources/-/findings, /v1/projects/{project_id}/sources/-/findings

Args:
  parent: string, Required. Name of the source to groupBy. Its format is &quot;organizations/[organization_id]/sources/[source_id]&quot;, folders/[folder_id]/sources/[source_id], or projects/[project_id]/sources/[source_id]. To groupBy across all sources provide a source_id of `-`. For example: organizations/{organization_id}/sources/-, folders/{folder_id}/sources/-, or projects/{project_id}/sources/- (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for grouping by findings.
  &quot;compareDuration&quot;: &quot;A String&quot;, # When compare_duration is set, the GroupResult&#x27;s &quot;state_change&quot; attribute is updated to indicate whether the finding had its state changed, the finding&#x27;s state remained unchanged, or if the finding was added during the compare_duration period of time that precedes the read_time. This is the time between (read_time - compare_duration) and read_time. The state_change value is derived based on the presence and state of the finding at the two points in time. Intermediate state changes between the two times don&#x27;t affect the result. For example, the results aren&#x27;t affected if the finding is made inactive and then active again. Possible &quot;state_change&quot; values when compare_duration is specified: * &quot;CHANGED&quot;: indicates that the finding was present and matched the given filter at the start of compare_duration, but changed its state at read_time. * &quot;UNCHANGED&quot;: indicates that the finding was present and matched the given filter at the start of compare_duration and did not change state at read_time. * &quot;ADDED&quot;: indicates that the finding did not match the given filter or was not present at the start of compare_duration, but was present at read_time. * &quot;REMOVED&quot;: indicates that the finding was present and matched the filter at the start of compare_duration, but did not match the filter at read_time. If compare_duration is not specified, then the only possible state_change is &quot;UNUSED&quot;, which will be the state_change set for all findings present at read_time. If this field is set then `state_change` must be a specified field in `group_by`.
  &quot;filter&quot;: &quot;A String&quot;, # Expression that defines the filter to apply across findings. The expression is a list of one or more restrictions combined via logical operators `AND` and `OR`. Parentheses are supported, and `OR` has higher precedence than `AND`. Restrictions have the form ` ` and may have a `-` character in front of them to indicate negation. Examples include: * name * source_properties.a_property * security_marks.marks.marka The supported operators are: * `=` for all value types. * `&gt;`, `&lt;`, `&gt;=`, `&lt;=` for integer values. * `:`, meaning substring matching, for strings. The supported value types are: * string literals in quotes. * integer literals without quotes. * boolean literals `true` and `false` without quotes. The following field and operator combinations are supported: * name: `=` * parent: `=`, `:` * resource_name: `=`, `:` * state: `=`, `:` * category: `=`, `:` * external_uri: `=`, `:` * event_time: `=`, `&gt;`, `&lt;`, `&gt;=`, `&lt;=` Usage: This should be milliseconds since epoch or an RFC3339 string. Examples: `event_time = &quot;2019-06-10T16:07:18-07:00&quot;` `event_time = 1560208038000` * severity: `=`, `:` * workflow_state: `=`, `:` * security_marks.marks: `=`, `:` * source_properties: `=`, `:`, `&gt;`, `&lt;`, `&gt;=`, `&lt;=` For example, `source_properties.size = 100` is a valid filter string. Use a partial match on the empty string to filter based on a property existing: `source_properties.my_property : &quot;&quot;` Use a negated partial match on the empty string to filter based on a property not existing: `-source_properties.my_property : &quot;&quot;` * resource: * resource.name: `=`, `:` * resource.parent_name: `=`, `:` * resource.parent_display_name: `=`, `:` * resource.project_name: `=`, `:` * resource.project_display_name: `=`, `:` * resource.type: `=`, `:`
  &quot;groupBy&quot;: &quot;A String&quot;, # Required. Expression that defines what assets fields to use for grouping (including `state_change`). The string value should follow SQL syntax: comma separated list of fields. For example: &quot;parent,resource_name&quot;. The following fields are supported: * resource_name * category * state * parent * severity The following fields are supported when compare_duration is set: * state_change
  &quot;pageSize&quot;: 42, # The maximum number of results to return in a single response. Default is 10, minimum is 1, maximum is 1000.
  &quot;pageToken&quot;: &quot;A String&quot;, # The value returned by the last `GroupFindingsResponse`; indicates that this is a continuation of a prior `GroupFindings` call, and that the system should return the next page of data.
  &quot;readTime&quot;: &quot;A String&quot;, # Time used as a reference point when filtering findings. The filter is limited to findings existing at the supplied time and their values are those at that specific time. Absence of this field will default to the API&#x27;s version of NOW.
}

  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 group by findings.
  &quot;groupByResults&quot;: [ # Group results. There exists an element for each existing unique combination of property/values. The element contains a count for the number of times those specific property/values appear.
    { # Result containing the properties and count of a groupBy request.
      &quot;count&quot;: &quot;A String&quot;, # Total count of resources for the given properties.
      &quot;properties&quot;: { # Properties matching the groupBy fields in the request.
        &quot;a_key&quot;: &quot;&quot;,
      },
    },
  ],
  &quot;nextPageToken&quot;: &quot;A String&quot;, # Token to retrieve the next page of results, or empty if there are no more results.
  &quot;readTime&quot;: &quot;A String&quot;, # Time used for executing the groupBy request.
  &quot;totalSize&quot;: 42, # The total number of results matching the query.
}</pre>
</div>

<div class="method">
    <code class="details" id="group_next">group_next(previous_request, previous_response)</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">list(parent, compareDuration=None, fieldMask=None, filter=None, orderBy=None, pageSize=None, pageToken=None, readTime=None, x__xgafv=None)</code>
  <pre>Lists an organization or source&#x27;s findings. To list across all sources provide a `-` as the source id. Example: /v1/organizations/{organization_id}/sources/-/findings

Args:
  parent: string, Required. Name of the source the findings belong to. Its format is &quot;organizations/[organization_id]/sources/[source_id], folders/[folder_id]/sources/[source_id], or projects/[project_id]/sources/[source_id]&quot;. To list across all sources provide a source_id of `-`. For example: organizations/{organization_id}/sources/-, folders/{folder_id}/sources/- or projects/{projects_id}/sources/- (required)
  compareDuration: string, When compare_duration is set, the ListFindingsResult&#x27;s &quot;state_change&quot; attribute is updated to indicate whether the finding had its state changed, the finding&#x27;s state remained unchanged, or if the finding was added in any state during the compare_duration period of time that precedes the read_time. This is the time between (read_time - compare_duration) and read_time. The state_change value is derived based on the presence and state of the finding at the two points in time. Intermediate state changes between the two times don&#x27;t affect the result. For example, the results aren&#x27;t affected if the finding is made inactive and then active again. Possible &quot;state_change&quot; values when compare_duration is specified: * &quot;CHANGED&quot;: indicates that the finding was present and matched the given filter at the start of compare_duration, but changed its state at read_time. * &quot;UNCHANGED&quot;: indicates that the finding was present and matched the given filter at the start of compare_duration and did not change state at read_time. * &quot;ADDED&quot;: indicates that the finding did not match the given filter or was not present at the start of compare_duration, but was present at read_time. * &quot;REMOVED&quot;: indicates that the finding was present and matched the filter at the start of compare_duration, but did not match the filter at read_time. If compare_duration is not specified, then the only possible state_change is &quot;UNUSED&quot;, which will be the state_change set for all findings present at read_time.
  fieldMask: string, A field mask to specify the Finding fields to be listed in the response. An empty field mask will list all fields.
  filter: string, Expression that defines the filter to apply across findings. The expression is a list of one or more restrictions combined via logical operators `AND` and `OR`. Parentheses are supported, and `OR` has higher precedence than `AND`. Restrictions have the form ` ` and may have a `-` character in front of them to indicate negation. Examples include: * name * source_properties.a_property * security_marks.marks.marka The supported operators are: * `=` for all value types. * `&gt;`, `&lt;`, `&gt;=`, `&lt;=` for integer values. * `:`, meaning substring matching, for strings. The supported value types are: * string literals in quotes. * integer literals without quotes. * boolean literals `true` and `false` without quotes. The following field and operator combinations are supported: * name: `=` * parent: `=`, `:` * resource_name: `=`, `:` * state: `=`, `:` * category: `=`, `:` * external_uri: `=`, `:` * event_time: `=`, `&gt;`, `&lt;`, `&gt;=`, `&lt;=` Usage: This should be milliseconds since epoch or an RFC3339 string. Examples: `event_time = &quot;2019-06-10T16:07:18-07:00&quot;` `event_time = 1560208038000` * severity: `=`, `:` * workflow_state: `=`, `:` * security_marks.marks: `=`, `:` * source_properties: `=`, `:`, `&gt;`, `&lt;`, `&gt;=`, `&lt;=` For example, `source_properties.size = 100` is a valid filter string. Use a partial match on the empty string to filter based on a property existing: `source_properties.my_property : &quot;&quot;` Use a negated partial match on the empty string to filter based on a property not existing: `-source_properties.my_property : &quot;&quot;` * resource: * resource.name: `=`, `:` * resource.parent_name: `=`, `:` * resource.parent_display_name: `=`, `:` * resource.project_name: `=`, `:` * resource.project_display_name: `=`, `:` * resource.type: `=`, `:` * resource.folders.resource_folder: `=`, `:` * resource.display_name: `=`, `:`
  orderBy: string, Expression that defines what fields and order to use for sorting. The string value should follow SQL syntax: comma separated list of fields. For example: &quot;name,resource_properties.a_property&quot;. The default sorting order is ascending. To specify descending order for a field, a suffix &quot; desc&quot; should be appended to the field name. For example: &quot;name desc,source_properties.a_property&quot;. Redundant space characters in the syntax are insignificant. &quot;name desc,source_properties.a_property&quot; and &quot; name desc , source_properties.a_property &quot; are equivalent. The following fields are supported: name parent state category resource_name event_time source_properties security_marks.marks
  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 `ListFindingsResponse`; indicates that this is a continuation of a prior `ListFindings` call, and that the system should return the next page of data.
  readTime: string, Time used as a reference point when filtering findings. The filter is limited to findings existing at the supplied time and their values are those at that specific time. Absence of this field will default to the API&#x27;s version of NOW.
  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 findings.
  &quot;listFindingsResults&quot;: [ # Findings matching the list request.
    { # Result containing the Finding and its StateChange.
      &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 matching the search request.
        &quot;access&quot;: { # Represents an access event. # Access details associated to the Finding, such as more information on the caller, which method was accessed, from where, etc.
          &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;.
          &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;userAgentFamily&quot;: &quot;A String&quot;, # What kind of user agent is associated, e.g. operating system shells, embedded or stand-alone applications, etc.
        },
        &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;createTime&quot;: &quot;A String&quot;, # The time at which the finding was created in Security Command Center.
        &quot;eventTime&quot;: &quot;A String&quot;, # The time at which the event took place, or when an update to the finding occurred. For example, if the finding represents an open firewall it would capture the time the detector believes the firewall became open. The accuracy is determined by the detector. If the finding were to be resolved afterward, this time would reflect when the finding was resolved. Must not be set to a value greater than the current timestamp.
        &quot;externalSystems&quot;: { # Output only. Third party SIEM/SOAR fields within SCC, contains external system information and external system finding fields.
          &quot;a_key&quot;: { # Representation of third party SIEM/SOAR fields within SCC.
            &quot;assignees&quot;: [ # References primary/secondary etc assignees in the external system.
              &quot;A String&quot;,
            ],
            &quot;externalSystemUpdateTime&quot;: &quot;A String&quot;, # The most recent time when the corresponding finding&#x27;s ticket/tracker was updated in the external system.
            &quot;externalUid&quot;: &quot;A String&quot;, # Identifier that&#x27;s used to track the given finding in the external system.
            &quot;name&quot;: &quot;A String&quot;, # External System Name e.g. jira, demisto, etc. e.g.: organizations/1234/sources/5678/findings/123456/externalSystems/jira folders/1234/sources/5678/findings/123456/externalSystems/jira projects/1234/sources/5678/findings/123456/externalSystems/jira
            &quot;status&quot;: &quot;A String&quot;, # Most recent status of the corresponding finding&#x27;s ticket/tracker in the external system.
          },
        },
        &quot;externalUri&quot;: &quot;A String&quot;, # The URI that, if available, points to a web page outside of Security Command Center where additional information about the finding can be found. This field is guaranteed to be either empty or a well formed URL.
        &quot;findingClass&quot;: &quot;A String&quot;, # The class of the finding.
        &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. Reference: 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. Reference: 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;: [ # List of ip addresses associated to the Finding.
            &quot;A String&quot;,
          ],
        },
        &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;mute&quot;: &quot;A String&quot;, # Indicates the mute state of a finding (either unspecified, muted, unmuted or undefined).
        &quot;muteInitiator&quot;: &quot;A String&quot;, # First known as mute_annotation. Records additional information about the mute operation e.g. mute config that muted the finding, user who muted the finding, etc.
        &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 of this finding. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name Example: &quot;organizations/{organization_id}/sources/{source_id}/findings/{finding_id}&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;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;severity&quot;: &quot;A String&quot;, # The severity of the finding. This field is managed by the source that writes the finding.
        &quot;sourceProperties&quot;: { # Source specific properties. These properties are managed by the source that writes the finding. The key names in the source_properties map must be between 1 and 255 characters, and must start with a letter and contain alphanumeric characters or underscores only.
          &quot;a_key&quot;: &quot;&quot;,
        },
        &quot;state&quot;: &quot;A String&quot;, # The state of the finding.
        &quot;vulnerability&quot;: { # Refers to common vulnerability fields e.g. cve, cvss, cwe etc. # Represents vulnerability specific fields like cve, cvss scores etc. CVE stands for Common Vulnerabilities and Exposures (https://cve.mitre.org/about/)
          &quot;cve&quot;: { # CVE stands for Common Vulnerabilities and Exposures. More information: https://cve.mitre.org # CVE stands for Common Vulnerabilities and Exposures (https://cve.mitre.org/about/)
            &quot;cvssv3&quot;: { # Common Vulnerability Scoring System version 3. # Describe Common Vulnerability Scoring System specified at https://www.first.org/cvss/v3.1/specification-document
              &quot;attackComplexity&quot;: &quot;A String&quot;, # This metric describes the conditions beyond the attacker&#x27;s control that must exist in order to exploit the vulnerability.
              &quot;attackVector&quot;: &quot;A String&quot;, # Base Metrics Represents the intrinsic characteristics of a vulnerability that are constant over time and across user environments. This metric reflects the context by which vulnerability exploitation is possible.
              &quot;availabilityImpact&quot;: &quot;A String&quot;, # This metric measures the impact to the availability of the impacted component resulting from a successfully exploited vulnerability.
              &quot;baseScore&quot;: 3.14, # The base score is a function of the base metric scores.
              &quot;confidentialityImpact&quot;: &quot;A String&quot;, # This metric measures the impact to the confidentiality of the information resources managed by a software component due to a successfully exploited vulnerability.
              &quot;integrityImpact&quot;: &quot;A String&quot;, # This metric measures the impact to integrity of a successfully exploited vulnerability.
              &quot;privilegesRequired&quot;: &quot;A String&quot;, # This metric describes the level of privileges an attacker must possess before successfully exploiting the vulnerability.
              &quot;scope&quot;: &quot;A String&quot;, # The Scope metric captures whether a vulnerability in one vulnerable component impacts resources in components beyond its security scope.
              &quot;userInteraction&quot;: &quot;A String&quot;, # This metric captures the requirement for a human user, other than the attacker, to participate in the successful compromise of the vulnerable component.
            },
            &quot;id&quot;: &quot;A String&quot;, # The unique identifier for the vulnerability. e.g. CVE-2021-34527
            &quot;references&quot;: [ # Additional information about the CVE. e.g. https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-34527
              { # Additional Links
                &quot;source&quot;: &quot;A String&quot;, # Source of the reference e.g. NVD
                &quot;uri&quot;: &quot;A String&quot;, # Uri for the mentioned source e.g. https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-34527.
              },
            ],
          },
        },
      },
      &quot;resource&quot;: { # Information related to the Google Cloud resource that is associated with this finding. # Output only. Resource that is associated with this finding.
        &quot;displayName&quot;: &quot;A String&quot;, # The human readable name of the resource.
        &quot;folders&quot;: [ # Contains a Folder message for each folder in the assets ancestry. The first folder is the deepest nested folder, and the last folder is the folder directly under the Organization.
          { # Message that contains the resource name and display name of a folder resource.
            &quot;resourceFolder&quot;: &quot;A String&quot;, # Full resource name of this folder. See: https://cloud.google.com/apis/design/resource_names#full_resource_name
            &quot;resourceFolderDisplayName&quot;: &quot;A String&quot;, # The user defined display name for this folder.
          },
        ],
        &quot;name&quot;: &quot;A String&quot;, # The full resource name of the resource. See: https://cloud.google.com/apis/design/resource_names#full_resource_name
        &quot;parentDisplayName&quot;: &quot;A String&quot;, # The human readable name of resource&#x27;s parent.
        &quot;parentName&quot;: &quot;A String&quot;, # The full resource name of resource&#x27;s parent.
        &quot;projectDisplayName&quot;: &quot;A String&quot;, # The human readable name of project that the resource belongs to.
        &quot;projectName&quot;: &quot;A String&quot;, # The full resource name of project that the resource belongs to.
        &quot;type&quot;: &quot;A String&quot;, # The full resource type of the resource.
      },
      &quot;stateChange&quot;: &quot;A String&quot;, # State change of the finding between the points in time.
    },
  ],
  &quot;nextPageToken&quot;: &quot;A String&quot;, # Token to retrieve the next page of results, or empty if there are no more results.
  &quot;readTime&quot;: &quot;A String&quot;, # Time used for executing the list request.
  &quot;totalSize&quot;: 42, # The total number of findings matching the query.
}</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next(previous_request, previous_response)</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>Creates or updates a finding. The corresponding source must exist for a finding creation to succeed.

Args:
  name: string, The relative resource name of this finding. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name Example: &quot;organizations/{organization_id}/sources/{source_id}/findings/{finding_id}&quot; (required)
  body: object, The request body.
    The object takes the form of:

{ # 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.
  &quot;access&quot;: { # Represents an access event. # Access details associated to the Finding, such as more information on the caller, which method was accessed, from where, etc.
    &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;.
    &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;userAgentFamily&quot;: &quot;A String&quot;, # What kind of user agent is associated, e.g. operating system shells, embedded or stand-alone applications, etc.
  },
  &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;createTime&quot;: &quot;A String&quot;, # The time at which the finding was created in Security Command Center.
  &quot;eventTime&quot;: &quot;A String&quot;, # The time at which the event took place, or when an update to the finding occurred. For example, if the finding represents an open firewall it would capture the time the detector believes the firewall became open. The accuracy is determined by the detector. If the finding were to be resolved afterward, this time would reflect when the finding was resolved. Must not be set to a value greater than the current timestamp.
  &quot;externalSystems&quot;: { # Output only. Third party SIEM/SOAR fields within SCC, contains external system information and external system finding fields.
    &quot;a_key&quot;: { # Representation of third party SIEM/SOAR fields within SCC.
      &quot;assignees&quot;: [ # References primary/secondary etc assignees in the external system.
        &quot;A String&quot;,
      ],
      &quot;externalSystemUpdateTime&quot;: &quot;A String&quot;, # The most recent time when the corresponding finding&#x27;s ticket/tracker was updated in the external system.
      &quot;externalUid&quot;: &quot;A String&quot;, # Identifier that&#x27;s used to track the given finding in the external system.
      &quot;name&quot;: &quot;A String&quot;, # External System Name e.g. jira, demisto, etc. e.g.: organizations/1234/sources/5678/findings/123456/externalSystems/jira folders/1234/sources/5678/findings/123456/externalSystems/jira projects/1234/sources/5678/findings/123456/externalSystems/jira
      &quot;status&quot;: &quot;A String&quot;, # Most recent status of the corresponding finding&#x27;s ticket/tracker in the external system.
    },
  },
  &quot;externalUri&quot;: &quot;A String&quot;, # The URI that, if available, points to a web page outside of Security Command Center where additional information about the finding can be found. This field is guaranteed to be either empty or a well formed URL.
  &quot;findingClass&quot;: &quot;A String&quot;, # The class of the finding.
  &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. Reference: 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. Reference: 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;: [ # List of ip addresses associated to the Finding.
      &quot;A String&quot;,
    ],
  },
  &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;mute&quot;: &quot;A String&quot;, # Indicates the mute state of a finding (either unspecified, muted, unmuted or undefined).
  &quot;muteInitiator&quot;: &quot;A String&quot;, # First known as mute_annotation. Records additional information about the mute operation e.g. mute config that muted the finding, user who muted the finding, etc.
  &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 of this finding. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name Example: &quot;organizations/{organization_id}/sources/{source_id}/findings/{finding_id}&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;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;severity&quot;: &quot;A String&quot;, # The severity of the finding. This field is managed by the source that writes the finding.
  &quot;sourceProperties&quot;: { # Source specific properties. These properties are managed by the source that writes the finding. The key names in the source_properties map must be between 1 and 255 characters, and must start with a letter and contain alphanumeric characters or underscores only.
    &quot;a_key&quot;: &quot;&quot;,
  },
  &quot;state&quot;: &quot;A String&quot;, # The state of the finding.
  &quot;vulnerability&quot;: { # Refers to common vulnerability fields e.g. cve, cvss, cwe etc. # Represents vulnerability specific fields like cve, cvss scores etc. CVE stands for Common Vulnerabilities and Exposures (https://cve.mitre.org/about/)
    &quot;cve&quot;: { # CVE stands for Common Vulnerabilities and Exposures. More information: https://cve.mitre.org # CVE stands for Common Vulnerabilities and Exposures (https://cve.mitre.org/about/)
      &quot;cvssv3&quot;: { # Common Vulnerability Scoring System version 3. # Describe Common Vulnerability Scoring System specified at https://www.first.org/cvss/v3.1/specification-document
        &quot;attackComplexity&quot;: &quot;A String&quot;, # This metric describes the conditions beyond the attacker&#x27;s control that must exist in order to exploit the vulnerability.
        &quot;attackVector&quot;: &quot;A String&quot;, # Base Metrics Represents the intrinsic characteristics of a vulnerability that are constant over time and across user environments. This metric reflects the context by which vulnerability exploitation is possible.
        &quot;availabilityImpact&quot;: &quot;A String&quot;, # This metric measures the impact to the availability of the impacted component resulting from a successfully exploited vulnerability.
        &quot;baseScore&quot;: 3.14, # The base score is a function of the base metric scores.
        &quot;confidentialityImpact&quot;: &quot;A String&quot;, # This metric measures the impact to the confidentiality of the information resources managed by a software component due to a successfully exploited vulnerability.
        &quot;integrityImpact&quot;: &quot;A String&quot;, # This metric measures the impact to integrity of a successfully exploited vulnerability.
        &quot;privilegesRequired&quot;: &quot;A String&quot;, # This metric describes the level of privileges an attacker must possess before successfully exploiting the vulnerability.
        &quot;scope&quot;: &quot;A String&quot;, # The Scope metric captures whether a vulnerability in one vulnerable component impacts resources in components beyond its security scope.
        &quot;userInteraction&quot;: &quot;A String&quot;, # This metric captures the requirement for a human user, other than the attacker, to participate in the successful compromise of the vulnerable component.
      },
      &quot;id&quot;: &quot;A String&quot;, # The unique identifier for the vulnerability. e.g. CVE-2021-34527
      &quot;references&quot;: [ # Additional information about the CVE. e.g. https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-34527
        { # Additional Links
          &quot;source&quot;: &quot;A String&quot;, # Source of the reference e.g. NVD
          &quot;uri&quot;: &quot;A String&quot;, # Uri for the mentioned source e.g. https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-34527.
        },
      ],
    },
  },
}

  updateMask: string, The FieldMask to use when updating the finding resource. This field should not be specified when creating a finding. When updating a finding, an empty mask is treated as updating all mutable fields and replacing source_properties. Individual source_properties can be added/updated by using &quot;source_properties.&quot; in the field mask.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # 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.
  &quot;access&quot;: { # Represents an access event. # Access details associated to the Finding, such as more information on the caller, which method was accessed, from where, etc.
    &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;.
    &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;userAgentFamily&quot;: &quot;A String&quot;, # What kind of user agent is associated, e.g. operating system shells, embedded or stand-alone applications, etc.
  },
  &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;createTime&quot;: &quot;A String&quot;, # The time at which the finding was created in Security Command Center.
  &quot;eventTime&quot;: &quot;A String&quot;, # The time at which the event took place, or when an update to the finding occurred. For example, if the finding represents an open firewall it would capture the time the detector believes the firewall became open. The accuracy is determined by the detector. If the finding were to be resolved afterward, this time would reflect when the finding was resolved. Must not be set to a value greater than the current timestamp.
  &quot;externalSystems&quot;: { # Output only. Third party SIEM/SOAR fields within SCC, contains external system information and external system finding fields.
    &quot;a_key&quot;: { # Representation of third party SIEM/SOAR fields within SCC.
      &quot;assignees&quot;: [ # References primary/secondary etc assignees in the external system.
        &quot;A String&quot;,
      ],
      &quot;externalSystemUpdateTime&quot;: &quot;A String&quot;, # The most recent time when the corresponding finding&#x27;s ticket/tracker was updated in the external system.
      &quot;externalUid&quot;: &quot;A String&quot;, # Identifier that&#x27;s used to track the given finding in the external system.
      &quot;name&quot;: &quot;A String&quot;, # External System Name e.g. jira, demisto, etc. e.g.: organizations/1234/sources/5678/findings/123456/externalSystems/jira folders/1234/sources/5678/findings/123456/externalSystems/jira projects/1234/sources/5678/findings/123456/externalSystems/jira
      &quot;status&quot;: &quot;A String&quot;, # Most recent status of the corresponding finding&#x27;s ticket/tracker in the external system.
    },
  },
  &quot;externalUri&quot;: &quot;A String&quot;, # The URI that, if available, points to a web page outside of Security Command Center where additional information about the finding can be found. This field is guaranteed to be either empty or a well formed URL.
  &quot;findingClass&quot;: &quot;A String&quot;, # The class of the finding.
  &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. Reference: 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. Reference: 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;: [ # List of ip addresses associated to the Finding.
      &quot;A String&quot;,
    ],
  },
  &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;mute&quot;: &quot;A String&quot;, # Indicates the mute state of a finding (either unspecified, muted, unmuted or undefined).
  &quot;muteInitiator&quot;: &quot;A String&quot;, # First known as mute_annotation. Records additional information about the mute operation e.g. mute config that muted the finding, user who muted the finding, etc.
  &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 of this finding. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name Example: &quot;organizations/{organization_id}/sources/{source_id}/findings/{finding_id}&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;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;severity&quot;: &quot;A String&quot;, # The severity of the finding. This field is managed by the source that writes the finding.
  &quot;sourceProperties&quot;: { # Source specific properties. These properties are managed by the source that writes the finding. The key names in the source_properties map must be between 1 and 255 characters, and must start with a letter and contain alphanumeric characters or underscores only.
    &quot;a_key&quot;: &quot;&quot;,
  },
  &quot;state&quot;: &quot;A String&quot;, # The state of the finding.
  &quot;vulnerability&quot;: { # Refers to common vulnerability fields e.g. cve, cvss, cwe etc. # Represents vulnerability specific fields like cve, cvss scores etc. CVE stands for Common Vulnerabilities and Exposures (https://cve.mitre.org/about/)
    &quot;cve&quot;: { # CVE stands for Common Vulnerabilities and Exposures. More information: https://cve.mitre.org # CVE stands for Common Vulnerabilities and Exposures (https://cve.mitre.org/about/)
      &quot;cvssv3&quot;: { # Common Vulnerability Scoring System version 3. # Describe Common Vulnerability Scoring System specified at https://www.first.org/cvss/v3.1/specification-document
        &quot;attackComplexity&quot;: &quot;A String&quot;, # This metric describes the conditions beyond the attacker&#x27;s control that must exist in order to exploit the vulnerability.
        &quot;attackVector&quot;: &quot;A String&quot;, # Base Metrics Represents the intrinsic characteristics of a vulnerability that are constant over time and across user environments. This metric reflects the context by which vulnerability exploitation is possible.
        &quot;availabilityImpact&quot;: &quot;A String&quot;, # This metric measures the impact to the availability of the impacted component resulting from a successfully exploited vulnerability.
        &quot;baseScore&quot;: 3.14, # The base score is a function of the base metric scores.
        &quot;confidentialityImpact&quot;: &quot;A String&quot;, # This metric measures the impact to the confidentiality of the information resources managed by a software component due to a successfully exploited vulnerability.
        &quot;integrityImpact&quot;: &quot;A String&quot;, # This metric measures the impact to integrity of a successfully exploited vulnerability.
        &quot;privilegesRequired&quot;: &quot;A String&quot;, # This metric describes the level of privileges an attacker must possess before successfully exploiting the vulnerability.
        &quot;scope&quot;: &quot;A String&quot;, # The Scope metric captures whether a vulnerability in one vulnerable component impacts resources in components beyond its security scope.
        &quot;userInteraction&quot;: &quot;A String&quot;, # This metric captures the requirement for a human user, other than the attacker, to participate in the successful compromise of the vulnerable component.
      },
      &quot;id&quot;: &quot;A String&quot;, # The unique identifier for the vulnerability. e.g. CVE-2021-34527
      &quot;references&quot;: [ # Additional information about the CVE. e.g. https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-34527
        { # Additional Links
          &quot;source&quot;: &quot;A String&quot;, # Source of the reference e.g. NVD
          &quot;uri&quot;: &quot;A String&quot;, # Uri for the mentioned source e.g. https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-34527.
        },
      ],
    },
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="setMute">setMute(name, body=None, x__xgafv=None)</code>
  <pre>Updates the mute state of a finding.

Args:
  name: string, Required. The relative resource name of the finding. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name Example: &quot;organizations/{organization_id}/sources/{source_id}/finding/{finding_id}&quot;, &quot;folders/{folder_id}/sources/{source_id}/finding/{finding_id}&quot;, &quot;projects/{project_id}/sources/{source_id}/finding/{finding_id}&quot;. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for updating a finding&#x27;s mute status.
  &quot;mute&quot;: &quot;A String&quot;, # Required. The desired state of the Mute.
}

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

Returns:
  An object of the form:

    { # 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.
  &quot;access&quot;: { # Represents an access event. # Access details associated to the Finding, such as more information on the caller, which method was accessed, from where, etc.
    &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;.
    &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;userAgentFamily&quot;: &quot;A String&quot;, # What kind of user agent is associated, e.g. operating system shells, embedded or stand-alone applications, etc.
  },
  &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;createTime&quot;: &quot;A String&quot;, # The time at which the finding was created in Security Command Center.
  &quot;eventTime&quot;: &quot;A String&quot;, # The time at which the event took place, or when an update to the finding occurred. For example, if the finding represents an open firewall it would capture the time the detector believes the firewall became open. The accuracy is determined by the detector. If the finding were to be resolved afterward, this time would reflect when the finding was resolved. Must not be set to a value greater than the current timestamp.
  &quot;externalSystems&quot;: { # Output only. Third party SIEM/SOAR fields within SCC, contains external system information and external system finding fields.
    &quot;a_key&quot;: { # Representation of third party SIEM/SOAR fields within SCC.
      &quot;assignees&quot;: [ # References primary/secondary etc assignees in the external system.
        &quot;A String&quot;,
      ],
      &quot;externalSystemUpdateTime&quot;: &quot;A String&quot;, # The most recent time when the corresponding finding&#x27;s ticket/tracker was updated in the external system.
      &quot;externalUid&quot;: &quot;A String&quot;, # Identifier that&#x27;s used to track the given finding in the external system.
      &quot;name&quot;: &quot;A String&quot;, # External System Name e.g. jira, demisto, etc. e.g.: organizations/1234/sources/5678/findings/123456/externalSystems/jira folders/1234/sources/5678/findings/123456/externalSystems/jira projects/1234/sources/5678/findings/123456/externalSystems/jira
      &quot;status&quot;: &quot;A String&quot;, # Most recent status of the corresponding finding&#x27;s ticket/tracker in the external system.
    },
  },
  &quot;externalUri&quot;: &quot;A String&quot;, # The URI that, if available, points to a web page outside of Security Command Center where additional information about the finding can be found. This field is guaranteed to be either empty or a well formed URL.
  &quot;findingClass&quot;: &quot;A String&quot;, # The class of the finding.
  &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. Reference: 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. Reference: 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;: [ # List of ip addresses associated to the Finding.
      &quot;A String&quot;,
    ],
  },
  &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;mute&quot;: &quot;A String&quot;, # Indicates the mute state of a finding (either unspecified, muted, unmuted or undefined).
  &quot;muteInitiator&quot;: &quot;A String&quot;, # First known as mute_annotation. Records additional information about the mute operation e.g. mute config that muted the finding, user who muted the finding, etc.
  &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 of this finding. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name Example: &quot;organizations/{organization_id}/sources/{source_id}/findings/{finding_id}&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;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;severity&quot;: &quot;A String&quot;, # The severity of the finding. This field is managed by the source that writes the finding.
  &quot;sourceProperties&quot;: { # Source specific properties. These properties are managed by the source that writes the finding. The key names in the source_properties map must be between 1 and 255 characters, and must start with a letter and contain alphanumeric characters or underscores only.
    &quot;a_key&quot;: &quot;&quot;,
  },
  &quot;state&quot;: &quot;A String&quot;, # The state of the finding.
  &quot;vulnerability&quot;: { # Refers to common vulnerability fields e.g. cve, cvss, cwe etc. # Represents vulnerability specific fields like cve, cvss scores etc. CVE stands for Common Vulnerabilities and Exposures (https://cve.mitre.org/about/)
    &quot;cve&quot;: { # CVE stands for Common Vulnerabilities and Exposures. More information: https://cve.mitre.org # CVE stands for Common Vulnerabilities and Exposures (https://cve.mitre.org/about/)
      &quot;cvssv3&quot;: { # Common Vulnerability Scoring System version 3. # Describe Common Vulnerability Scoring System specified at https://www.first.org/cvss/v3.1/specification-document
        &quot;attackComplexity&quot;: &quot;A String&quot;, # This metric describes the conditions beyond the attacker&#x27;s control that must exist in order to exploit the vulnerability.
        &quot;attackVector&quot;: &quot;A String&quot;, # Base Metrics Represents the intrinsic characteristics of a vulnerability that are constant over time and across user environments. This metric reflects the context by which vulnerability exploitation is possible.
        &quot;availabilityImpact&quot;: &quot;A String&quot;, # This metric measures the impact to the availability of the impacted component resulting from a successfully exploited vulnerability.
        &quot;baseScore&quot;: 3.14, # The base score is a function of the base metric scores.
        &quot;confidentialityImpact&quot;: &quot;A String&quot;, # This metric measures the impact to the confidentiality of the information resources managed by a software component due to a successfully exploited vulnerability.
        &quot;integrityImpact&quot;: &quot;A String&quot;, # This metric measures the impact to integrity of a successfully exploited vulnerability.
        &quot;privilegesRequired&quot;: &quot;A String&quot;, # This metric describes the level of privileges an attacker must possess before successfully exploiting the vulnerability.
        &quot;scope&quot;: &quot;A String&quot;, # The Scope metric captures whether a vulnerability in one vulnerable component impacts resources in components beyond its security scope.
        &quot;userInteraction&quot;: &quot;A String&quot;, # This metric captures the requirement for a human user, other than the attacker, to participate in the successful compromise of the vulnerable component.
      },
      &quot;id&quot;: &quot;A String&quot;, # The unique identifier for the vulnerability. e.g. CVE-2021-34527
      &quot;references&quot;: [ # Additional information about the CVE. e.g. https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-34527
        { # Additional Links
          &quot;source&quot;: &quot;A String&quot;, # Source of the reference e.g. NVD
          &quot;uri&quot;: &quot;A String&quot;, # Uri for the mentioned source e.g. https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-34527.
        },
      ],
    },
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="setState">setState(name, body=None, x__xgafv=None)</code>
  <pre>Updates the state of a finding.

Args:
  name: string, Required. The relative resource name of the finding. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name Example: &quot;organizations/{organization_id}/sources/{source_id}/finding/{finding_id}&quot;. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for updating a finding&#x27;s state.
  &quot;startTime&quot;: &quot;A String&quot;, # Required. The time at which the updated state takes effect.
  &quot;state&quot;: &quot;A String&quot;, # Required. The desired State of the finding.
}

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

Returns:
  An object of the form:

    { # 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.
  &quot;access&quot;: { # Represents an access event. # Access details associated to the Finding, such as more information on the caller, which method was accessed, from where, etc.
    &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;.
    &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;userAgentFamily&quot;: &quot;A String&quot;, # What kind of user agent is associated, e.g. operating system shells, embedded or stand-alone applications, etc.
  },
  &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;createTime&quot;: &quot;A String&quot;, # The time at which the finding was created in Security Command Center.
  &quot;eventTime&quot;: &quot;A String&quot;, # The time at which the event took place, or when an update to the finding occurred. For example, if the finding represents an open firewall it would capture the time the detector believes the firewall became open. The accuracy is determined by the detector. If the finding were to be resolved afterward, this time would reflect when the finding was resolved. Must not be set to a value greater than the current timestamp.
  &quot;externalSystems&quot;: { # Output only. Third party SIEM/SOAR fields within SCC, contains external system information and external system finding fields.
    &quot;a_key&quot;: { # Representation of third party SIEM/SOAR fields within SCC.
      &quot;assignees&quot;: [ # References primary/secondary etc assignees in the external system.
        &quot;A String&quot;,
      ],
      &quot;externalSystemUpdateTime&quot;: &quot;A String&quot;, # The most recent time when the corresponding finding&#x27;s ticket/tracker was updated in the external system.
      &quot;externalUid&quot;: &quot;A String&quot;, # Identifier that&#x27;s used to track the given finding in the external system.
      &quot;name&quot;: &quot;A String&quot;, # External System Name e.g. jira, demisto, etc. e.g.: organizations/1234/sources/5678/findings/123456/externalSystems/jira folders/1234/sources/5678/findings/123456/externalSystems/jira projects/1234/sources/5678/findings/123456/externalSystems/jira
      &quot;status&quot;: &quot;A String&quot;, # Most recent status of the corresponding finding&#x27;s ticket/tracker in the external system.
    },
  },
  &quot;externalUri&quot;: &quot;A String&quot;, # The URI that, if available, points to a web page outside of Security Command Center where additional information about the finding can be found. This field is guaranteed to be either empty or a well formed URL.
  &quot;findingClass&quot;: &quot;A String&quot;, # The class of the finding.
  &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. Reference: 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. Reference: 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;: [ # List of ip addresses associated to the Finding.
      &quot;A String&quot;,
    ],
  },
  &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;mute&quot;: &quot;A String&quot;, # Indicates the mute state of a finding (either unspecified, muted, unmuted or undefined).
  &quot;muteInitiator&quot;: &quot;A String&quot;, # First known as mute_annotation. Records additional information about the mute operation e.g. mute config that muted the finding, user who muted the finding, etc.
  &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 of this finding. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name Example: &quot;organizations/{organization_id}/sources/{source_id}/findings/{finding_id}&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;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;severity&quot;: &quot;A String&quot;, # The severity of the finding. This field is managed by the source that writes the finding.
  &quot;sourceProperties&quot;: { # Source specific properties. These properties are managed by the source that writes the finding. The key names in the source_properties map must be between 1 and 255 characters, and must start with a letter and contain alphanumeric characters or underscores only.
    &quot;a_key&quot;: &quot;&quot;,
  },
  &quot;state&quot;: &quot;A String&quot;, # The state of the finding.
  &quot;vulnerability&quot;: { # Refers to common vulnerability fields e.g. cve, cvss, cwe etc. # Represents vulnerability specific fields like cve, cvss scores etc. CVE stands for Common Vulnerabilities and Exposures (https://cve.mitre.org/about/)
    &quot;cve&quot;: { # CVE stands for Common Vulnerabilities and Exposures. More information: https://cve.mitre.org # CVE stands for Common Vulnerabilities and Exposures (https://cve.mitre.org/about/)
      &quot;cvssv3&quot;: { # Common Vulnerability Scoring System version 3. # Describe Common Vulnerability Scoring System specified at https://www.first.org/cvss/v3.1/specification-document
        &quot;attackComplexity&quot;: &quot;A String&quot;, # This metric describes the conditions beyond the attacker&#x27;s control that must exist in order to exploit the vulnerability.
        &quot;attackVector&quot;: &quot;A String&quot;, # Base Metrics Represents the intrinsic characteristics of a vulnerability that are constant over time and across user environments. This metric reflects the context by which vulnerability exploitation is possible.
        &quot;availabilityImpact&quot;: &quot;A String&quot;, # This metric measures the impact to the availability of the impacted component resulting from a successfully exploited vulnerability.
        &quot;baseScore&quot;: 3.14, # The base score is a function of the base metric scores.
        &quot;confidentialityImpact&quot;: &quot;A String&quot;, # This metric measures the impact to the confidentiality of the information resources managed by a software component due to a successfully exploited vulnerability.
        &quot;integrityImpact&quot;: &quot;A String&quot;, # This metric measures the impact to integrity of a successfully exploited vulnerability.
        &quot;privilegesRequired&quot;: &quot;A String&quot;, # This metric describes the level of privileges an attacker must possess before successfully exploiting the vulnerability.
        &quot;scope&quot;: &quot;A String&quot;, # The Scope metric captures whether a vulnerability in one vulnerable component impacts resources in components beyond its security scope.
        &quot;userInteraction&quot;: &quot;A String&quot;, # This metric captures the requirement for a human user, other than the attacker, to participate in the successful compromise of the vulnerable component.
      },
      &quot;id&quot;: &quot;A String&quot;, # The unique identifier for the vulnerability. e.g. CVE-2021-34527
      &quot;references&quot;: [ # Additional information about the CVE. e.g. https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-34527
        { # Additional Links
          &quot;source&quot;: &quot;A String&quot;, # Source of the reference e.g. NVD
          &quot;uri&quot;: &quot;A String&quot;, # Uri for the mentioned source e.g. https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-34527.
        },
      ],
    },
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="updateSecurityMarks">updateSecurityMarks(name, body=None, startTime=None, updateMask=None, x__xgafv=None)</code>
  <pre>Updates security marks.

Args:
  name: string, 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;. (required)
  body: object, The request body.
    The object takes the form of:

{ # 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.
  &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;.
}

  startTime: string, The time at which the updated SecurityMarks take effect. If not set uses current server time. Updates will be applied to the SecurityMarks that are active immediately preceding this time.
  updateMask: string, The FieldMask to use when updating the security marks resource. The field mask must not contain duplicate fields. If empty or set to &quot;marks&quot;, all marks will be replaced. Individual marks can be updated using &quot;marks.&quot;.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # 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.
  &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;.
}</pre>
</div>

</body></html>