<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="containeranalysis_v1.html">Container Analysis API</a> . <a href="containeranalysis_v1.projects.html">projects</a> . <a href="containeranalysis_v1.projects.notes.html">notes</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="containeranalysis_v1.projects.notes.occurrences.html">occurrences()</a></code>
</p>
<p class="firstline">Returns the occurrences Resource.</p>

<p class="toc_element">
  <code><a href="#batchCreate">batchCreate(parent, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates new notes in batch.</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="#create">create(parent, body=None, noteId=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a new note.</p>
<p class="toc_element">
  <code><a href="#delete">delete(name, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes the specified note.</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Gets the specified note.</p>
<p class="toc_element">
  <code><a href="#getIamPolicy">getIamPolicy(resource, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Gets the access control policy for a note or an occurrence resource. Requires `containeranalysis.notes.setIamPolicy` or `containeranalysis.occurrences.setIamPolicy` permission if the resource is a note or occurrence, respectively. The resource takes the format `projects/[PROJECT_ID]/notes/[NOTE_ID]` for notes and `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]` for occurrences.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, filter=None, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists notes for the specified project.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next()</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#patch">patch(name, body=None, updateMask=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates the specified note.</p>
<p class="toc_element">
  <code><a href="#setIamPolicy">setIamPolicy(resource, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Sets the access control policy on the specified note or occurrence. Requires `containeranalysis.notes.setIamPolicy` or `containeranalysis.occurrences.setIamPolicy` permission if the resource is a note or an occurrence, respectively. The resource takes the format `projects/[PROJECT_ID]/notes/[NOTE_ID]` for notes and `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]` for occurrences.</p>
<p class="toc_element">
  <code><a href="#testIamPermissions">testIamPermissions(resource, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Returns the permissions that a caller has on the specified note or occurrence. Requires list permission on the project (for example, `containeranalysis.notes.list`). The resource takes the format `projects/[PROJECT_ID]/notes/[NOTE_ID]` for notes and `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]` for occurrences.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="batchCreate">batchCreate(parent, body=None, x__xgafv=None)</code>
  <pre>Creates new notes in batch.

Args:
  parent: string, Required. The name of the project in the form of `projects/[PROJECT_ID]`, under which the notes are to be created. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request to create notes in batch.
  &quot;notes&quot;: { # Required. The notes to create. Max allowed length is 1000.
    &quot;a_key&quot;: { # A type of analysis that can be done for a resource.
      &quot;attestation&quot;: { # Note kind that represents a logical attestation &quot;role&quot; or &quot;authority&quot;. For example, an organization might have one `Authority` for &quot;QA&quot; and one for &quot;build&quot;. This note is intended to act strictly as a grouping mechanism for the attached occurrences (Attestations). This grouping mechanism also provides a security boundary, since IAM ACLs gate the ability for a principle to attach an occurrence to a given note. It also provides a single point of lookup to find all attached attestation occurrences, even if they don&#x27;t all live in the same project. # A note describing an attestation role.
        &quot;hint&quot;: { # This submessage provides human-readable hints about the purpose of the authority. Because the name of a note acts as its resource reference, it is important to disambiguate the canonical name of the Note (which might be a UUID for security purposes) from &quot;readable&quot; names more suitable for debug output. Note that these hints should not be used to look up authorities in security sensitive contexts, such as when looking up attestations to verify. # Hint hints at the purpose of the attestation authority.
          &quot;humanReadableName&quot;: &quot;A String&quot;, # Required. The human readable name of this attestation authority, for example &quot;qa&quot;.
        },
      },
      &quot;build&quot;: { # Note holding the version of the provider&#x27;s builder and the signature of the provenance message in the build details occurrence. # A note describing build provenance for a verifiable build.
        &quot;builderVersion&quot;: &quot;A String&quot;, # Required. Immutable. Version of the builder which produced this build.
      },
      &quot;compliance&quot;: { # A note describing a compliance check.
        &quot;cisBenchmark&quot;: { # A compliance check that is a CIS benchmark.
          &quot;profileLevel&quot;: 42,
          &quot;severity&quot;: &quot;A String&quot;,
        },
        &quot;description&quot;: &quot;A String&quot;, # A description about this compliance check.
        &quot;impact&quot;: &quot;A String&quot;,
        &quot;rationale&quot;: &quot;A String&quot;, # A rationale for the existence of this compliance check.
        &quot;remediation&quot;: &quot;A String&quot;, # A description of remediation steps if the compliance check fails.
        &quot;scanInstructions&quot;: &quot;A String&quot;, # Serialized scan instructions with a predefined format.
        &quot;title&quot;: &quot;A String&quot;, # The title that identifies this compliance check.
        &quot;version&quot;: [ # The OS and config versions the benchmark applies to.
          { # Describes the CIS benchmark version that is applicable to a given OS and os version.
            &quot;benchmarkDocument&quot;: &quot;A String&quot;, # The name of the document that defines this benchmark, e.g. &quot;CIS Container-Optimized OS&quot;.
            &quot;cpeUri&quot;: &quot;A String&quot;, # The CPE URI (https://cpe.mitre.org/specification/) this benchmark is applicable to.
            &quot;version&quot;: &quot;A String&quot;, # The version of the benchmark. This is set to the version of the OS-specific CIS document the benchmark is defined in.
          },
        ],
      },
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time this note was created. This field can be used as a filter in list requests.
      &quot;deployment&quot;: { # An artifact that can be deployed in some runtime. # A note describing something that can be deployed.
        &quot;resourceUri&quot;: [ # Required. Resource URI for the artifact being deployed.
          &quot;A String&quot;,
        ],
      },
      &quot;discovery&quot;: { # A note that indicates a type of analysis a provider would perform. This note exists in a provider&#x27;s project. A `Discovery` occurrence is created in a consumer&#x27;s project at the start of analysis. # A note describing the initial analysis of a resource.
        &quot;analysisKind&quot;: &quot;A String&quot;, # Required. Immutable. The kind of analysis that is handled by this discovery.
      },
      &quot;dsseAttestation&quot;: { # A note describing a dsse attestation note.
        &quot;hint&quot;: { # This submessage provides human-readable hints about the purpose of the authority. Because the name of a note acts as its resource reference, it is important to disambiguate the canonical name of the Note (which might be a UUID for security purposes) from &quot;readable&quot; names more suitable for debug output. Note that these hints should not be used to look up authorities in security sensitive contexts, such as when looking up attestations to verify. # DSSEHint hints at the purpose of the attestation authority.
          &quot;humanReadableName&quot;: &quot;A String&quot;, # Required. The human readable name of this attestation authority, for example &quot;cloudbuild-prod&quot;.
        },
      },
      &quot;expirationTime&quot;: &quot;A String&quot;, # Time of expiration for this note. Empty if note does not expire.
      &quot;image&quot;: { # Basis describes the base image portion (Note) of the DockerImage relationship. Linked occurrences are derived from this or an equivalent image via: FROM Or an equivalent reference, e.g., a tag of the resource_url. # A note describing a base image.
        &quot;fingerprint&quot;: { # A set of properties that uniquely identify a given Docker image. # Required. Immutable. The fingerprint of the base image.
          &quot;v1Name&quot;: &quot;A String&quot;, # Required. The layer ID of the final layer in the Docker image&#x27;s v1 representation.
          &quot;v2Blob&quot;: [ # Required. The ordered list of v2 blobs that represent a given image.
            &quot;A String&quot;,
          ],
          &quot;v2Name&quot;: &quot;A String&quot;, # Output only. The name of the image&#x27;s v2 blobs computed via: [bottom] := v2_blobbottom := sha256(v2_blob[N] + &quot; &quot; + v2_name[N+1]) Only the name of the final blob is kept.
        },
        &quot;resourceUrl&quot;: &quot;A String&quot;, # Required. Immutable. The resource_url for the resource representing the basis of associated occurrence images.
      },
      &quot;kind&quot;: &quot;A String&quot;, # Output only. The type of analysis. This field can be used as a filter in list requests.
      &quot;longDescription&quot;: &quot;A String&quot;, # A detailed description of this note.
      &quot;name&quot;: &quot;A String&quot;, # Output only. The name of the note in the form of `projects/[PROVIDER_ID]/notes/[NOTE_ID]`.
      &quot;package&quot;: { # PackageNote represents a particular package version. # A note describing a package hosted by various package managers.
        &quot;architecture&quot;: &quot;A String&quot;, # The CPU architecture for which packages in this distribution channel were built. Architecture will be blank for language packages.
        &quot;cpeUri&quot;: &quot;A String&quot;, # The cpe_uri in [CPE format](https://cpe.mitre.org/specification/) denoting the package manager version distributing a package. The cpe_uri will be blank for language packages.
        &quot;description&quot;: &quot;A String&quot;, # The description of this package.
        &quot;digest&quot;: [ # Hash value, typically a file digest, that allows unique identification a specific package.
          { # Digest information.
            &quot;algo&quot;: &quot;A String&quot;, # `SHA1`, `SHA512` etc.
            &quot;digestBytes&quot;: &quot;A String&quot;, # Value of the digest.
          },
        ],
        &quot;distribution&quot;: [ # Deprecated. The various channels by which a package is distributed.
          { # This represents a particular channel of distribution for a given package. E.g., Debian&#x27;s jessie-backports dpkg mirror.
            &quot;architecture&quot;: &quot;A String&quot;, # The CPU architecture for which packages in this distribution channel were built.
            &quot;cpeUri&quot;: &quot;A String&quot;, # Required. The cpe_uri in [CPE format](https://cpe.mitre.org/specification/) denoting the package manager version distributing a package.
            &quot;description&quot;: &quot;A String&quot;, # The distribution channel-specific description of this package.
            &quot;latestVersion&quot;: { # Version contains structured information about the version of a package. # The latest available version of this package in this distribution channel.
              &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
              &quot;fullName&quot;: &quot;A String&quot;, # Human readable version string. This string is of the form :- and is only set when kind is NORMAL.
              &quot;inclusive&quot;: True or False, # Whether this version is specifying part of an inclusive range. Grafeas does not have the capability to specify version ranges; instead we have fields that specify start version and end versions. At times this is insufficient - we also need to specify whether the version is included in the range or is excluded from the range. This boolean is expected to be set to true when the version is included in a range.
              &quot;kind&quot;: &quot;A String&quot;, # Required. Distinguishes between sentinel MIN/MAX versions and normal versions.
              &quot;name&quot;: &quot;A String&quot;, # Required only when version kind is NORMAL. The main part of the version name.
              &quot;revision&quot;: &quot;A String&quot;, # The iteration of the package build from the above version.
            },
            &quot;maintainer&quot;: &quot;A String&quot;, # A freeform string denoting the maintainer of this package.
            &quot;url&quot;: &quot;A String&quot;, # The distribution channel-specific homepage for this package.
          },
        ],
        &quot;license&quot;: { # License information. # Licenses that have been declared by the authors of the package.
          &quot;comments&quot;: &quot;A String&quot;, # Comments
          &quot;expression&quot;: &quot;A String&quot;, # Often a single license can be used to represent the licensing terms. Sometimes it is necessary to include a choice of one or more licenses or some combination of license identifiers. Examples: &quot;LGPL-2.1-only OR MIT&quot;, &quot;LGPL-2.1-only AND MIT&quot;, &quot;GPL-2.0-or-later WITH Bison-exception-2.2&quot;.
        },
        &quot;maintainer&quot;: &quot;A String&quot;, # A freeform text denoting the maintainer of this package.
        &quot;name&quot;: &quot;A String&quot;, # Required. Immutable. The name of the package.
        &quot;packageType&quot;: &quot;A String&quot;, # The type of package; whether native or non native (e.g., ruby gems, node.js packages, etc.).
        &quot;url&quot;: &quot;A String&quot;, # The homepage for this package.
        &quot;version&quot;: { # Version contains structured information about the version of a package. # The version of the package.
          &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
          &quot;fullName&quot;: &quot;A String&quot;, # Human readable version string. This string is of the form :- and is only set when kind is NORMAL.
          &quot;inclusive&quot;: True or False, # Whether this version is specifying part of an inclusive range. Grafeas does not have the capability to specify version ranges; instead we have fields that specify start version and end versions. At times this is insufficient - we also need to specify whether the version is included in the range or is excluded from the range. This boolean is expected to be set to true when the version is included in a range.
          &quot;kind&quot;: &quot;A String&quot;, # Required. Distinguishes between sentinel MIN/MAX versions and normal versions.
          &quot;name&quot;: &quot;A String&quot;, # Required only when version kind is NORMAL. The main part of the version name.
          &quot;revision&quot;: &quot;A String&quot;, # The iteration of the package build from the above version.
        },
      },
      &quot;relatedNoteNames&quot;: [ # Other notes related to this note.
        &quot;A String&quot;,
      ],
      &quot;relatedUrl&quot;: [ # URLs associated with this note.
        { # Metadata for any related URL information.
          &quot;label&quot;: &quot;A String&quot;, # Label to describe usage of the URL.
          &quot;url&quot;: &quot;A String&quot;, # Specific URL associated with the resource.
        },
      ],
      &quot;sbomReference&quot;: { # The note representing an SBOM reference. # A note describing an SBOM reference.
        &quot;format&quot;: &quot;A String&quot;, # The format that SBOM takes. E.g. may be spdx, cyclonedx, etc...
        &quot;version&quot;: &quot;A String&quot;, # The version of the format that the SBOM takes. E.g. if the format is spdx, the version may be 2.3.
      },
      &quot;shortDescription&quot;: &quot;A String&quot;, # A one sentence description of this note.
      &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time this note was last updated. This field can be used as a filter in list requests.
      &quot;upgrade&quot;: { # An Upgrade Note represents a potential upgrade of a package to a given version. For each package version combination (i.e. bash 4.0, bash 4.1, bash 4.1.2), there will be an Upgrade Note. For Windows, windows_update field represents the information related to the update. # A note describing available package upgrades.
        &quot;distributions&quot;: [ # Metadata about the upgrade for each specific operating system.
          { # The Upgrade Distribution represents metadata about the Upgrade for each operating system (CPE). Some distributions have additional metadata around updates, classifying them into various categories and severities.
            &quot;classification&quot;: &quot;A String&quot;, # The operating system classification of this Upgrade, as specified by the upstream operating system upgrade feed. For Windows the classification is one of the category_ids listed at https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ff357803(v=vs.85)
            &quot;cpeUri&quot;: &quot;A String&quot;, # Required - The specific operating system this metadata applies to. See https://cpe.mitre.org/specification/.
            &quot;cve&quot;: [ # The cve tied to this Upgrade.
              &quot;A String&quot;,
            ],
            &quot;severity&quot;: &quot;A String&quot;, # The severity as specified by the upstream operating system.
          },
        ],
        &quot;package&quot;: &quot;A String&quot;, # Required for non-Windows OS. The package this Upgrade is for.
        &quot;version&quot;: { # Version contains structured information about the version of a package. # Required for non-Windows OS. The version of the package in machine + human readable form.
          &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
          &quot;fullName&quot;: &quot;A String&quot;, # Human readable version string. This string is of the form :- and is only set when kind is NORMAL.
          &quot;inclusive&quot;: True or False, # Whether this version is specifying part of an inclusive range. Grafeas does not have the capability to specify version ranges; instead we have fields that specify start version and end versions. At times this is insufficient - we also need to specify whether the version is included in the range or is excluded from the range. This boolean is expected to be set to true when the version is included in a range.
          &quot;kind&quot;: &quot;A String&quot;, # Required. Distinguishes between sentinel MIN/MAX versions and normal versions.
          &quot;name&quot;: &quot;A String&quot;, # Required only when version kind is NORMAL. The main part of the version name.
          &quot;revision&quot;: &quot;A String&quot;, # The iteration of the package build from the above version.
        },
        &quot;windowsUpdate&quot;: { # Windows Update represents the metadata about the update for the Windows operating system. The fields in this message come from the Windows Update API documented at https://docs.microsoft.com/en-us/windows/win32/api/wuapi/nn-wuapi-iupdate. # Required for Windows OS. Represents the metadata about the Windows update.
          &quot;categories&quot;: [ # The list of categories to which the update belongs.
            { # The category to which the update belongs.
              &quot;categoryId&quot;: &quot;A String&quot;, # The identifier of the category.
              &quot;name&quot;: &quot;A String&quot;, # The localized name of the category.
            },
          ],
          &quot;description&quot;: &quot;A String&quot;, # The localized description of the update.
          &quot;identity&quot;: { # The unique identifier of the update. # Required - The unique identifier for the update.
            &quot;revision&quot;: 42, # The revision number of the update.
            &quot;updateId&quot;: &quot;A String&quot;, # The revision independent identifier of the update.
          },
          &quot;kbArticleIds&quot;: [ # The Microsoft Knowledge Base article IDs that are associated with the update.
            &quot;A String&quot;,
          ],
          &quot;lastPublishedTimestamp&quot;: &quot;A String&quot;, # The last published timestamp of the update.
          &quot;supportUrl&quot;: &quot;A String&quot;, # The hyperlink to the support information for the update.
          &quot;title&quot;: &quot;A String&quot;, # The localized title of the update.
        },
      },
      &quot;vulnerability&quot;: { # A security vulnerability that can be found in resources. # A note describing a package vulnerability.
        &quot;cvssScore&quot;: 3.14, # The CVSS score of this vulnerability. CVSS score is on a scale of 0 - 10 where 0 indicates low severity and 10 indicates high severity.
        &quot;cvssV2&quot;: { # Common Vulnerability Scoring System. For details, see https://www.first.org/cvss/specification-document This is a message we will try to use for storing various versions of CVSS rather than making a separate proto for storing a specific version. # The full description of the v2 CVSS for this vulnerability.
          &quot;attackComplexity&quot;: &quot;A String&quot;,
          &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.
          &quot;authentication&quot;: &quot;A String&quot;,
          &quot;availabilityImpact&quot;: &quot;A String&quot;,
          &quot;baseScore&quot;: 3.14, # The base score is a function of the base metric scores.
          &quot;confidentialityImpact&quot;: &quot;A String&quot;,
          &quot;exploitabilityScore&quot;: 3.14,
          &quot;impactScore&quot;: 3.14,
          &quot;integrityImpact&quot;: &quot;A String&quot;,
          &quot;privilegesRequired&quot;: &quot;A String&quot;,
          &quot;scope&quot;: &quot;A String&quot;,
          &quot;userInteraction&quot;: &quot;A String&quot;,
        },
        &quot;cvssV3&quot;: { # Common Vulnerability Scoring System version 3. For details, see https://www.first.org/cvss/specification-document # The full description of the CVSSv3 for this vulnerability.
          &quot;attackComplexity&quot;: &quot;A String&quot;,
          &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.
          &quot;availabilityImpact&quot;: &quot;A String&quot;,
          &quot;baseScore&quot;: 3.14, # The base score is a function of the base metric scores.
          &quot;confidentialityImpact&quot;: &quot;A String&quot;,
          &quot;exploitabilityScore&quot;: 3.14,
          &quot;impactScore&quot;: 3.14,
          &quot;integrityImpact&quot;: &quot;A String&quot;,
          &quot;privilegesRequired&quot;: &quot;A String&quot;,
          &quot;scope&quot;: &quot;A String&quot;,
          &quot;userInteraction&quot;: &quot;A String&quot;,
        },
        &quot;cvssVersion&quot;: &quot;A String&quot;, # CVSS version used to populate cvss_score and severity.
        &quot;details&quot;: [ # Details of all known distros and packages affected by this vulnerability.
          { # A detail for a distro and package affected by this vulnerability and its associated fix (if one is available).
            &quot;affectedCpeUri&quot;: &quot;A String&quot;, # Required. The [CPE URI](https://cpe.mitre.org/specification/) this vulnerability affects.
            &quot;affectedPackage&quot;: &quot;A String&quot;, # Required. The package this vulnerability affects.
            &quot;affectedVersionEnd&quot;: { # Version contains structured information about the version of a package. # The version number at the end of an interval in which this vulnerability exists. A vulnerability can affect a package between version numbers that are disjoint sets of intervals (example: [1.0.0-1.1.0], [2.4.6-2.4.8] and [4.5.6-4.6.8]) each of which will be represented in its own Detail. If a specific affected version is provided by a vulnerability database, affected_version_start and affected_version_end will be the same in that Detail.
              &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
              &quot;fullName&quot;: &quot;A String&quot;, # Human readable version string. This string is of the form :- and is only set when kind is NORMAL.
              &quot;inclusive&quot;: True or False, # Whether this version is specifying part of an inclusive range. Grafeas does not have the capability to specify version ranges; instead we have fields that specify start version and end versions. At times this is insufficient - we also need to specify whether the version is included in the range or is excluded from the range. This boolean is expected to be set to true when the version is included in a range.
              &quot;kind&quot;: &quot;A String&quot;, # Required. Distinguishes between sentinel MIN/MAX versions and normal versions.
              &quot;name&quot;: &quot;A String&quot;, # Required only when version kind is NORMAL. The main part of the version name.
              &quot;revision&quot;: &quot;A String&quot;, # The iteration of the package build from the above version.
            },
            &quot;affectedVersionStart&quot;: { # Version contains structured information about the version of a package. # The version number at the start of an interval in which this vulnerability exists. A vulnerability can affect a package between version numbers that are disjoint sets of intervals (example: [1.0.0-1.1.0], [2.4.6-2.4.8] and [4.5.6-4.6.8]) each of which will be represented in its own Detail. If a specific affected version is provided by a vulnerability database, affected_version_start and affected_version_end will be the same in that Detail.
              &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
              &quot;fullName&quot;: &quot;A String&quot;, # Human readable version string. This string is of the form :- and is only set when kind is NORMAL.
              &quot;inclusive&quot;: True or False, # Whether this version is specifying part of an inclusive range. Grafeas does not have the capability to specify version ranges; instead we have fields that specify start version and end versions. At times this is insufficient - we also need to specify whether the version is included in the range or is excluded from the range. This boolean is expected to be set to true when the version is included in a range.
              &quot;kind&quot;: &quot;A String&quot;, # Required. Distinguishes between sentinel MIN/MAX versions and normal versions.
              &quot;name&quot;: &quot;A String&quot;, # Required only when version kind is NORMAL. The main part of the version name.
              &quot;revision&quot;: &quot;A String&quot;, # The iteration of the package build from the above version.
            },
            &quot;description&quot;: &quot;A String&quot;, # A vendor-specific description of this vulnerability.
            &quot;fixedCpeUri&quot;: &quot;A String&quot;, # The distro recommended [CPE URI](https://cpe.mitre.org/specification/) to update to that contains a fix for this vulnerability. It is possible for this to be different from the affected_cpe_uri.
            &quot;fixedPackage&quot;: &quot;A String&quot;, # The distro recommended package to update to that contains a fix for this vulnerability. It is possible for this to be different from the affected_package.
            &quot;fixedVersion&quot;: { # Version contains structured information about the version of a package. # The distro recommended version to update to that contains a fix for this vulnerability. Setting this to VersionKind.MAXIMUM means no such version is yet available.
              &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
              &quot;fullName&quot;: &quot;A String&quot;, # Human readable version string. This string is of the form :- and is only set when kind is NORMAL.
              &quot;inclusive&quot;: True or False, # Whether this version is specifying part of an inclusive range. Grafeas does not have the capability to specify version ranges; instead we have fields that specify start version and end versions. At times this is insufficient - we also need to specify whether the version is included in the range or is excluded from the range. This boolean is expected to be set to true when the version is included in a range.
              &quot;kind&quot;: &quot;A String&quot;, # Required. Distinguishes between sentinel MIN/MAX versions and normal versions.
              &quot;name&quot;: &quot;A String&quot;, # Required only when version kind is NORMAL. The main part of the version name.
              &quot;revision&quot;: &quot;A String&quot;, # The iteration of the package build from the above version.
            },
            &quot;isObsolete&quot;: True or False, # Whether this detail is obsolete. Occurrences are expected not to point to obsolete details.
            &quot;packageType&quot;: &quot;A String&quot;, # The type of package; whether native or non native (e.g., ruby gems, node.js packages, etc.).
            &quot;severityName&quot;: &quot;A String&quot;, # The distro assigned severity of this vulnerability.
            &quot;source&quot;: &quot;A String&quot;, # The source from which the information in this Detail was obtained.
            &quot;sourceUpdateTime&quot;: &quot;A String&quot;, # The time this information was last changed at the source. This is an upstream timestamp from the underlying information source - e.g. Ubuntu security tracker.
            &quot;vendor&quot;: &quot;A String&quot;, # The name of the vendor of the product.
          },
        ],
        &quot;severity&quot;: &quot;A String&quot;, # The note provider assigned severity of this vulnerability.
        &quot;sourceUpdateTime&quot;: &quot;A String&quot;, # The time this information was last changed at the source. This is an upstream timestamp from the underlying information source - e.g. Ubuntu security tracker.
        &quot;windowsDetails&quot;: [ # Windows details get their own format because the information format and model don&#x27;t match a normal detail. Specifically Windows updates are done as patches, thus Windows vulnerabilities really are a missing package, rather than a package being at an incorrect version.
          {
            &quot;cpeUri&quot;: &quot;A String&quot;, # Required. The [CPE URI](https://cpe.mitre.org/specification/) this vulnerability affects.
            &quot;description&quot;: &quot;A String&quot;, # The description of this vulnerability.
            &quot;fixingKbs&quot;: [ # Required. The names of the KBs which have hotfixes to mitigate this vulnerability. Note that there may be multiple hotfixes (and thus multiple KBs) that mitigate a given vulnerability. Currently any listed KBs presence is considered a fix.
              {
                &quot;name&quot;: &quot;A String&quot;, # The KB name (generally of the form KB[0-9]+ (e.g., KB123456)).
                &quot;url&quot;: &quot;A String&quot;, # A link to the KB in the [Windows update catalog] (https://www.catalog.update.microsoft.com/).
              },
            ],
            &quot;name&quot;: &quot;A String&quot;, # Required. The name of this vulnerability.
          },
        ],
      },
      &quot;vulnerabilityAssessment&quot;: { # A single VulnerabilityAssessmentNote represents one particular product&#x27;s vulnerability assessment for one CVE. # A note describing a vulnerability assessment.
        &quot;assessment&quot;: { # Assessment provides all information that is related to a single vulnerability for this product. # Represents a vulnerability assessment for the product.
          &quot;cve&quot;: &quot;A String&quot;, # Holds the MITRE standard Common Vulnerabilities and Exposures (CVE) tracking number for the vulnerability. Deprecated: Use vulnerability_id instead to denote CVEs.
          &quot;impacts&quot;: [ # Contains information about the impact of this vulnerability, this will change with time.
            &quot;A String&quot;,
          ],
          &quot;justification&quot;: { # Justification provides the justification when the state of the assessment if NOT_AFFECTED. # Justification provides the justification when the state of the assessment if NOT_AFFECTED.
            &quot;details&quot;: &quot;A String&quot;, # Additional details on why this justification was chosen.
            &quot;justificationType&quot;: &quot;A String&quot;, # The justification type for this vulnerability.
          },
          &quot;longDescription&quot;: &quot;A String&quot;, # A detailed description of this Vex.
          &quot;relatedUris&quot;: [ # Holds a list of references associated with this vulnerability item and assessment. These uris have additional information about the vulnerability and the assessment itself. E.g. Link to a document which details how this assessment concluded the state of this vulnerability.
            { # Metadata for any related URL information.
              &quot;label&quot;: &quot;A String&quot;, # Label to describe usage of the URL.
              &quot;url&quot;: &quot;A String&quot;, # Specific URL associated with the resource.
            },
          ],
          &quot;remediations&quot;: [ # Specifies details on how to handle (and presumably, fix) a vulnerability.
            { # Specifies details on how to handle (and presumably, fix) a vulnerability.
              &quot;details&quot;: &quot;A String&quot;, # Contains a comprehensive human-readable discussion of the remediation.
              &quot;remediationType&quot;: &quot;A String&quot;, # The type of remediation that can be applied.
              &quot;remediationUri&quot;: { # Metadata for any related URL information. # Contains the URL where to obtain the remediation.
                &quot;label&quot;: &quot;A String&quot;, # Label to describe usage of the URL.
                &quot;url&quot;: &quot;A String&quot;, # Specific URL associated with the resource.
              },
            },
          ],
          &quot;shortDescription&quot;: &quot;A String&quot;, # A one sentence description of this Vex.
          &quot;state&quot;: &quot;A String&quot;, # Provides the state of this Vulnerability assessment.
          &quot;vulnerabilityId&quot;: &quot;A String&quot;, # The vulnerability identifier for this Assessment. Will hold one of common identifiers e.g. CVE, GHSA etc.
        },
        &quot;languageCode&quot;: &quot;A String&quot;, # Identifies the language used by this document, corresponding to IETF BCP 47 / RFC 5646.
        &quot;longDescription&quot;: &quot;A String&quot;, # A detailed description of this Vex.
        &quot;product&quot;: { # Product contains information about a product and how to uniquely identify it. # The product affected by this vex.
          &quot;genericUri&quot;: &quot;A String&quot;, # Contains a URI which is vendor-specific. Example: The artifact repository URL of an image.
          &quot;id&quot;: &quot;A String&quot;, # Token that identifies a product so that it can be referred to from other parts in the document. There is no predefined format as long as it uniquely identifies a group in the context of the current document.
          &quot;name&quot;: &quot;A String&quot;, # Name of the product.
        },
        &quot;publisher&quot;: { # Publisher contains information about the publisher of this Note. # Publisher details of this Note.
          &quot;issuingAuthority&quot;: &quot;A String&quot;, # Provides information about the authority of the issuing party to release the document, in particular, the party&#x27;s constituency and responsibilities or other obligations.
          &quot;name&quot;: &quot;A String&quot;, # Name of the publisher. Examples: &#x27;Google&#x27;, &#x27;Google Cloud Platform&#x27;.
          &quot;publisherNamespace&quot;: &quot;A String&quot;, # The context or namespace. Contains a URL which is under control of the issuing party and can be used as a globally unique identifier for that issuing party. Example: https://csaf.io
        },
        &quot;shortDescription&quot;: &quot;A String&quot;, # A one sentence description of this Vex.
        &quot;title&quot;: &quot;A String&quot;, # The title of the note. E.g. `Vex-Debian-11.4`
      },
    },
  },
}

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

Returns:
  An object of the form:

    { # Response for creating notes in batch.
  &quot;notes&quot;: [ # The notes that were created.
    { # A type of analysis that can be done for a resource.
      &quot;attestation&quot;: { # Note kind that represents a logical attestation &quot;role&quot; or &quot;authority&quot;. For example, an organization might have one `Authority` for &quot;QA&quot; and one for &quot;build&quot;. This note is intended to act strictly as a grouping mechanism for the attached occurrences (Attestations). This grouping mechanism also provides a security boundary, since IAM ACLs gate the ability for a principle to attach an occurrence to a given note. It also provides a single point of lookup to find all attached attestation occurrences, even if they don&#x27;t all live in the same project. # A note describing an attestation role.
        &quot;hint&quot;: { # This submessage provides human-readable hints about the purpose of the authority. Because the name of a note acts as its resource reference, it is important to disambiguate the canonical name of the Note (which might be a UUID for security purposes) from &quot;readable&quot; names more suitable for debug output. Note that these hints should not be used to look up authorities in security sensitive contexts, such as when looking up attestations to verify. # Hint hints at the purpose of the attestation authority.
          &quot;humanReadableName&quot;: &quot;A String&quot;, # Required. The human readable name of this attestation authority, for example &quot;qa&quot;.
        },
      },
      &quot;build&quot;: { # Note holding the version of the provider&#x27;s builder and the signature of the provenance message in the build details occurrence. # A note describing build provenance for a verifiable build.
        &quot;builderVersion&quot;: &quot;A String&quot;, # Required. Immutable. Version of the builder which produced this build.
      },
      &quot;compliance&quot;: { # A note describing a compliance check.
        &quot;cisBenchmark&quot;: { # A compliance check that is a CIS benchmark.
          &quot;profileLevel&quot;: 42,
          &quot;severity&quot;: &quot;A String&quot;,
        },
        &quot;description&quot;: &quot;A String&quot;, # A description about this compliance check.
        &quot;impact&quot;: &quot;A String&quot;,
        &quot;rationale&quot;: &quot;A String&quot;, # A rationale for the existence of this compliance check.
        &quot;remediation&quot;: &quot;A String&quot;, # A description of remediation steps if the compliance check fails.
        &quot;scanInstructions&quot;: &quot;A String&quot;, # Serialized scan instructions with a predefined format.
        &quot;title&quot;: &quot;A String&quot;, # The title that identifies this compliance check.
        &quot;version&quot;: [ # The OS and config versions the benchmark applies to.
          { # Describes the CIS benchmark version that is applicable to a given OS and os version.
            &quot;benchmarkDocument&quot;: &quot;A String&quot;, # The name of the document that defines this benchmark, e.g. &quot;CIS Container-Optimized OS&quot;.
            &quot;cpeUri&quot;: &quot;A String&quot;, # The CPE URI (https://cpe.mitre.org/specification/) this benchmark is applicable to.
            &quot;version&quot;: &quot;A String&quot;, # The version of the benchmark. This is set to the version of the OS-specific CIS document the benchmark is defined in.
          },
        ],
      },
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time this note was created. This field can be used as a filter in list requests.
      &quot;deployment&quot;: { # An artifact that can be deployed in some runtime. # A note describing something that can be deployed.
        &quot;resourceUri&quot;: [ # Required. Resource URI for the artifact being deployed.
          &quot;A String&quot;,
        ],
      },
      &quot;discovery&quot;: { # A note that indicates a type of analysis a provider would perform. This note exists in a provider&#x27;s project. A `Discovery` occurrence is created in a consumer&#x27;s project at the start of analysis. # A note describing the initial analysis of a resource.
        &quot;analysisKind&quot;: &quot;A String&quot;, # Required. Immutable. The kind of analysis that is handled by this discovery.
      },
      &quot;dsseAttestation&quot;: { # A note describing a dsse attestation note.
        &quot;hint&quot;: { # This submessage provides human-readable hints about the purpose of the authority. Because the name of a note acts as its resource reference, it is important to disambiguate the canonical name of the Note (which might be a UUID for security purposes) from &quot;readable&quot; names more suitable for debug output. Note that these hints should not be used to look up authorities in security sensitive contexts, such as when looking up attestations to verify. # DSSEHint hints at the purpose of the attestation authority.
          &quot;humanReadableName&quot;: &quot;A String&quot;, # Required. The human readable name of this attestation authority, for example &quot;cloudbuild-prod&quot;.
        },
      },
      &quot;expirationTime&quot;: &quot;A String&quot;, # Time of expiration for this note. Empty if note does not expire.
      &quot;image&quot;: { # Basis describes the base image portion (Note) of the DockerImage relationship. Linked occurrences are derived from this or an equivalent image via: FROM Or an equivalent reference, e.g., a tag of the resource_url. # A note describing a base image.
        &quot;fingerprint&quot;: { # A set of properties that uniquely identify a given Docker image. # Required. Immutable. The fingerprint of the base image.
          &quot;v1Name&quot;: &quot;A String&quot;, # Required. The layer ID of the final layer in the Docker image&#x27;s v1 representation.
          &quot;v2Blob&quot;: [ # Required. The ordered list of v2 blobs that represent a given image.
            &quot;A String&quot;,
          ],
          &quot;v2Name&quot;: &quot;A String&quot;, # Output only. The name of the image&#x27;s v2 blobs computed via: [bottom] := v2_blobbottom := sha256(v2_blob[N] + &quot; &quot; + v2_name[N+1]) Only the name of the final blob is kept.
        },
        &quot;resourceUrl&quot;: &quot;A String&quot;, # Required. Immutable. The resource_url for the resource representing the basis of associated occurrence images.
      },
      &quot;kind&quot;: &quot;A String&quot;, # Output only. The type of analysis. This field can be used as a filter in list requests.
      &quot;longDescription&quot;: &quot;A String&quot;, # A detailed description of this note.
      &quot;name&quot;: &quot;A String&quot;, # Output only. The name of the note in the form of `projects/[PROVIDER_ID]/notes/[NOTE_ID]`.
      &quot;package&quot;: { # PackageNote represents a particular package version. # A note describing a package hosted by various package managers.
        &quot;architecture&quot;: &quot;A String&quot;, # The CPU architecture for which packages in this distribution channel were built. Architecture will be blank for language packages.
        &quot;cpeUri&quot;: &quot;A String&quot;, # The cpe_uri in [CPE format](https://cpe.mitre.org/specification/) denoting the package manager version distributing a package. The cpe_uri will be blank for language packages.
        &quot;description&quot;: &quot;A String&quot;, # The description of this package.
        &quot;digest&quot;: [ # Hash value, typically a file digest, that allows unique identification a specific package.
          { # Digest information.
            &quot;algo&quot;: &quot;A String&quot;, # `SHA1`, `SHA512` etc.
            &quot;digestBytes&quot;: &quot;A String&quot;, # Value of the digest.
          },
        ],
        &quot;distribution&quot;: [ # Deprecated. The various channels by which a package is distributed.
          { # This represents a particular channel of distribution for a given package. E.g., Debian&#x27;s jessie-backports dpkg mirror.
            &quot;architecture&quot;: &quot;A String&quot;, # The CPU architecture for which packages in this distribution channel were built.
            &quot;cpeUri&quot;: &quot;A String&quot;, # Required. The cpe_uri in [CPE format](https://cpe.mitre.org/specification/) denoting the package manager version distributing a package.
            &quot;description&quot;: &quot;A String&quot;, # The distribution channel-specific description of this package.
            &quot;latestVersion&quot;: { # Version contains structured information about the version of a package. # The latest available version of this package in this distribution channel.
              &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
              &quot;fullName&quot;: &quot;A String&quot;, # Human readable version string. This string is of the form :- and is only set when kind is NORMAL.
              &quot;inclusive&quot;: True or False, # Whether this version is specifying part of an inclusive range. Grafeas does not have the capability to specify version ranges; instead we have fields that specify start version and end versions. At times this is insufficient - we also need to specify whether the version is included in the range or is excluded from the range. This boolean is expected to be set to true when the version is included in a range.
              &quot;kind&quot;: &quot;A String&quot;, # Required. Distinguishes between sentinel MIN/MAX versions and normal versions.
              &quot;name&quot;: &quot;A String&quot;, # Required only when version kind is NORMAL. The main part of the version name.
              &quot;revision&quot;: &quot;A String&quot;, # The iteration of the package build from the above version.
            },
            &quot;maintainer&quot;: &quot;A String&quot;, # A freeform string denoting the maintainer of this package.
            &quot;url&quot;: &quot;A String&quot;, # The distribution channel-specific homepage for this package.
          },
        ],
        &quot;license&quot;: { # License information. # Licenses that have been declared by the authors of the package.
          &quot;comments&quot;: &quot;A String&quot;, # Comments
          &quot;expression&quot;: &quot;A String&quot;, # Often a single license can be used to represent the licensing terms. Sometimes it is necessary to include a choice of one or more licenses or some combination of license identifiers. Examples: &quot;LGPL-2.1-only OR MIT&quot;, &quot;LGPL-2.1-only AND MIT&quot;, &quot;GPL-2.0-or-later WITH Bison-exception-2.2&quot;.
        },
        &quot;maintainer&quot;: &quot;A String&quot;, # A freeform text denoting the maintainer of this package.
        &quot;name&quot;: &quot;A String&quot;, # Required. Immutable. The name of the package.
        &quot;packageType&quot;: &quot;A String&quot;, # The type of package; whether native or non native (e.g., ruby gems, node.js packages, etc.).
        &quot;url&quot;: &quot;A String&quot;, # The homepage for this package.
        &quot;version&quot;: { # Version contains structured information about the version of a package. # The version of the package.
          &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
          &quot;fullName&quot;: &quot;A String&quot;, # Human readable version string. This string is of the form :- and is only set when kind is NORMAL.
          &quot;inclusive&quot;: True or False, # Whether this version is specifying part of an inclusive range. Grafeas does not have the capability to specify version ranges; instead we have fields that specify start version and end versions. At times this is insufficient - we also need to specify whether the version is included in the range or is excluded from the range. This boolean is expected to be set to true when the version is included in a range.
          &quot;kind&quot;: &quot;A String&quot;, # Required. Distinguishes between sentinel MIN/MAX versions and normal versions.
          &quot;name&quot;: &quot;A String&quot;, # Required only when version kind is NORMAL. The main part of the version name.
          &quot;revision&quot;: &quot;A String&quot;, # The iteration of the package build from the above version.
        },
      },
      &quot;relatedNoteNames&quot;: [ # Other notes related to this note.
        &quot;A String&quot;,
      ],
      &quot;relatedUrl&quot;: [ # URLs associated with this note.
        { # Metadata for any related URL information.
          &quot;label&quot;: &quot;A String&quot;, # Label to describe usage of the URL.
          &quot;url&quot;: &quot;A String&quot;, # Specific URL associated with the resource.
        },
      ],
      &quot;sbomReference&quot;: { # The note representing an SBOM reference. # A note describing an SBOM reference.
        &quot;format&quot;: &quot;A String&quot;, # The format that SBOM takes. E.g. may be spdx, cyclonedx, etc...
        &quot;version&quot;: &quot;A String&quot;, # The version of the format that the SBOM takes. E.g. if the format is spdx, the version may be 2.3.
      },
      &quot;shortDescription&quot;: &quot;A String&quot;, # A one sentence description of this note.
      &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time this note was last updated. This field can be used as a filter in list requests.
      &quot;upgrade&quot;: { # An Upgrade Note represents a potential upgrade of a package to a given version. For each package version combination (i.e. bash 4.0, bash 4.1, bash 4.1.2), there will be an Upgrade Note. For Windows, windows_update field represents the information related to the update. # A note describing available package upgrades.
        &quot;distributions&quot;: [ # Metadata about the upgrade for each specific operating system.
          { # The Upgrade Distribution represents metadata about the Upgrade for each operating system (CPE). Some distributions have additional metadata around updates, classifying them into various categories and severities.
            &quot;classification&quot;: &quot;A String&quot;, # The operating system classification of this Upgrade, as specified by the upstream operating system upgrade feed. For Windows the classification is one of the category_ids listed at https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ff357803(v=vs.85)
            &quot;cpeUri&quot;: &quot;A String&quot;, # Required - The specific operating system this metadata applies to. See https://cpe.mitre.org/specification/.
            &quot;cve&quot;: [ # The cve tied to this Upgrade.
              &quot;A String&quot;,
            ],
            &quot;severity&quot;: &quot;A String&quot;, # The severity as specified by the upstream operating system.
          },
        ],
        &quot;package&quot;: &quot;A String&quot;, # Required for non-Windows OS. The package this Upgrade is for.
        &quot;version&quot;: { # Version contains structured information about the version of a package. # Required for non-Windows OS. The version of the package in machine + human readable form.
          &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
          &quot;fullName&quot;: &quot;A String&quot;, # Human readable version string. This string is of the form :- and is only set when kind is NORMAL.
          &quot;inclusive&quot;: True or False, # Whether this version is specifying part of an inclusive range. Grafeas does not have the capability to specify version ranges; instead we have fields that specify start version and end versions. At times this is insufficient - we also need to specify whether the version is included in the range or is excluded from the range. This boolean is expected to be set to true when the version is included in a range.
          &quot;kind&quot;: &quot;A String&quot;, # Required. Distinguishes between sentinel MIN/MAX versions and normal versions.
          &quot;name&quot;: &quot;A String&quot;, # Required only when version kind is NORMAL. The main part of the version name.
          &quot;revision&quot;: &quot;A String&quot;, # The iteration of the package build from the above version.
        },
        &quot;windowsUpdate&quot;: { # Windows Update represents the metadata about the update for the Windows operating system. The fields in this message come from the Windows Update API documented at https://docs.microsoft.com/en-us/windows/win32/api/wuapi/nn-wuapi-iupdate. # Required for Windows OS. Represents the metadata about the Windows update.
          &quot;categories&quot;: [ # The list of categories to which the update belongs.
            { # The category to which the update belongs.
              &quot;categoryId&quot;: &quot;A String&quot;, # The identifier of the category.
              &quot;name&quot;: &quot;A String&quot;, # The localized name of the category.
            },
          ],
          &quot;description&quot;: &quot;A String&quot;, # The localized description of the update.
          &quot;identity&quot;: { # The unique identifier of the update. # Required - The unique identifier for the update.
            &quot;revision&quot;: 42, # The revision number of the update.
            &quot;updateId&quot;: &quot;A String&quot;, # The revision independent identifier of the update.
          },
          &quot;kbArticleIds&quot;: [ # The Microsoft Knowledge Base article IDs that are associated with the update.
            &quot;A String&quot;,
          ],
          &quot;lastPublishedTimestamp&quot;: &quot;A String&quot;, # The last published timestamp of the update.
          &quot;supportUrl&quot;: &quot;A String&quot;, # The hyperlink to the support information for the update.
          &quot;title&quot;: &quot;A String&quot;, # The localized title of the update.
        },
      },
      &quot;vulnerability&quot;: { # A security vulnerability that can be found in resources. # A note describing a package vulnerability.
        &quot;cvssScore&quot;: 3.14, # The CVSS score of this vulnerability. CVSS score is on a scale of 0 - 10 where 0 indicates low severity and 10 indicates high severity.
        &quot;cvssV2&quot;: { # Common Vulnerability Scoring System. For details, see https://www.first.org/cvss/specification-document This is a message we will try to use for storing various versions of CVSS rather than making a separate proto for storing a specific version. # The full description of the v2 CVSS for this vulnerability.
          &quot;attackComplexity&quot;: &quot;A String&quot;,
          &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.
          &quot;authentication&quot;: &quot;A String&quot;,
          &quot;availabilityImpact&quot;: &quot;A String&quot;,
          &quot;baseScore&quot;: 3.14, # The base score is a function of the base metric scores.
          &quot;confidentialityImpact&quot;: &quot;A String&quot;,
          &quot;exploitabilityScore&quot;: 3.14,
          &quot;impactScore&quot;: 3.14,
          &quot;integrityImpact&quot;: &quot;A String&quot;,
          &quot;privilegesRequired&quot;: &quot;A String&quot;,
          &quot;scope&quot;: &quot;A String&quot;,
          &quot;userInteraction&quot;: &quot;A String&quot;,
        },
        &quot;cvssV3&quot;: { # Common Vulnerability Scoring System version 3. For details, see https://www.first.org/cvss/specification-document # The full description of the CVSSv3 for this vulnerability.
          &quot;attackComplexity&quot;: &quot;A String&quot;,
          &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.
          &quot;availabilityImpact&quot;: &quot;A String&quot;,
          &quot;baseScore&quot;: 3.14, # The base score is a function of the base metric scores.
          &quot;confidentialityImpact&quot;: &quot;A String&quot;,
          &quot;exploitabilityScore&quot;: 3.14,
          &quot;impactScore&quot;: 3.14,
          &quot;integrityImpact&quot;: &quot;A String&quot;,
          &quot;privilegesRequired&quot;: &quot;A String&quot;,
          &quot;scope&quot;: &quot;A String&quot;,
          &quot;userInteraction&quot;: &quot;A String&quot;,
        },
        &quot;cvssVersion&quot;: &quot;A String&quot;, # CVSS version used to populate cvss_score and severity.
        &quot;details&quot;: [ # Details of all known distros and packages affected by this vulnerability.
          { # A detail for a distro and package affected by this vulnerability and its associated fix (if one is available).
            &quot;affectedCpeUri&quot;: &quot;A String&quot;, # Required. The [CPE URI](https://cpe.mitre.org/specification/) this vulnerability affects.
            &quot;affectedPackage&quot;: &quot;A String&quot;, # Required. The package this vulnerability affects.
            &quot;affectedVersionEnd&quot;: { # Version contains structured information about the version of a package. # The version number at the end of an interval in which this vulnerability exists. A vulnerability can affect a package between version numbers that are disjoint sets of intervals (example: [1.0.0-1.1.0], [2.4.6-2.4.8] and [4.5.6-4.6.8]) each of which will be represented in its own Detail. If a specific affected version is provided by a vulnerability database, affected_version_start and affected_version_end will be the same in that Detail.
              &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
              &quot;fullName&quot;: &quot;A String&quot;, # Human readable version string. This string is of the form :- and is only set when kind is NORMAL.
              &quot;inclusive&quot;: True or False, # Whether this version is specifying part of an inclusive range. Grafeas does not have the capability to specify version ranges; instead we have fields that specify start version and end versions. At times this is insufficient - we also need to specify whether the version is included in the range or is excluded from the range. This boolean is expected to be set to true when the version is included in a range.
              &quot;kind&quot;: &quot;A String&quot;, # Required. Distinguishes between sentinel MIN/MAX versions and normal versions.
              &quot;name&quot;: &quot;A String&quot;, # Required only when version kind is NORMAL. The main part of the version name.
              &quot;revision&quot;: &quot;A String&quot;, # The iteration of the package build from the above version.
            },
            &quot;affectedVersionStart&quot;: { # Version contains structured information about the version of a package. # The version number at the start of an interval in which this vulnerability exists. A vulnerability can affect a package between version numbers that are disjoint sets of intervals (example: [1.0.0-1.1.0], [2.4.6-2.4.8] and [4.5.6-4.6.8]) each of which will be represented in its own Detail. If a specific affected version is provided by a vulnerability database, affected_version_start and affected_version_end will be the same in that Detail.
              &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
              &quot;fullName&quot;: &quot;A String&quot;, # Human readable version string. This string is of the form :- and is only set when kind is NORMAL.
              &quot;inclusive&quot;: True or False, # Whether this version is specifying part of an inclusive range. Grafeas does not have the capability to specify version ranges; instead we have fields that specify start version and end versions. At times this is insufficient - we also need to specify whether the version is included in the range or is excluded from the range. This boolean is expected to be set to true when the version is included in a range.
              &quot;kind&quot;: &quot;A String&quot;, # Required. Distinguishes between sentinel MIN/MAX versions and normal versions.
              &quot;name&quot;: &quot;A String&quot;, # Required only when version kind is NORMAL. The main part of the version name.
              &quot;revision&quot;: &quot;A String&quot;, # The iteration of the package build from the above version.
            },
            &quot;description&quot;: &quot;A String&quot;, # A vendor-specific description of this vulnerability.
            &quot;fixedCpeUri&quot;: &quot;A String&quot;, # The distro recommended [CPE URI](https://cpe.mitre.org/specification/) to update to that contains a fix for this vulnerability. It is possible for this to be different from the affected_cpe_uri.
            &quot;fixedPackage&quot;: &quot;A String&quot;, # The distro recommended package to update to that contains a fix for this vulnerability. It is possible for this to be different from the affected_package.
            &quot;fixedVersion&quot;: { # Version contains structured information about the version of a package. # The distro recommended version to update to that contains a fix for this vulnerability. Setting this to VersionKind.MAXIMUM means no such version is yet available.
              &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
              &quot;fullName&quot;: &quot;A String&quot;, # Human readable version string. This string is of the form :- and is only set when kind is NORMAL.
              &quot;inclusive&quot;: True or False, # Whether this version is specifying part of an inclusive range. Grafeas does not have the capability to specify version ranges; instead we have fields that specify start version and end versions. At times this is insufficient - we also need to specify whether the version is included in the range or is excluded from the range. This boolean is expected to be set to true when the version is included in a range.
              &quot;kind&quot;: &quot;A String&quot;, # Required. Distinguishes between sentinel MIN/MAX versions and normal versions.
              &quot;name&quot;: &quot;A String&quot;, # Required only when version kind is NORMAL. The main part of the version name.
              &quot;revision&quot;: &quot;A String&quot;, # The iteration of the package build from the above version.
            },
            &quot;isObsolete&quot;: True or False, # Whether this detail is obsolete. Occurrences are expected not to point to obsolete details.
            &quot;packageType&quot;: &quot;A String&quot;, # The type of package; whether native or non native (e.g., ruby gems, node.js packages, etc.).
            &quot;severityName&quot;: &quot;A String&quot;, # The distro assigned severity of this vulnerability.
            &quot;source&quot;: &quot;A String&quot;, # The source from which the information in this Detail was obtained.
            &quot;sourceUpdateTime&quot;: &quot;A String&quot;, # The time this information was last changed at the source. This is an upstream timestamp from the underlying information source - e.g. Ubuntu security tracker.
            &quot;vendor&quot;: &quot;A String&quot;, # The name of the vendor of the product.
          },
        ],
        &quot;severity&quot;: &quot;A String&quot;, # The note provider assigned severity of this vulnerability.
        &quot;sourceUpdateTime&quot;: &quot;A String&quot;, # The time this information was last changed at the source. This is an upstream timestamp from the underlying information source - e.g. Ubuntu security tracker.
        &quot;windowsDetails&quot;: [ # Windows details get their own format because the information format and model don&#x27;t match a normal detail. Specifically Windows updates are done as patches, thus Windows vulnerabilities really are a missing package, rather than a package being at an incorrect version.
          {
            &quot;cpeUri&quot;: &quot;A String&quot;, # Required. The [CPE URI](https://cpe.mitre.org/specification/) this vulnerability affects.
            &quot;description&quot;: &quot;A String&quot;, # The description of this vulnerability.
            &quot;fixingKbs&quot;: [ # Required. The names of the KBs which have hotfixes to mitigate this vulnerability. Note that there may be multiple hotfixes (and thus multiple KBs) that mitigate a given vulnerability. Currently any listed KBs presence is considered a fix.
              {
                &quot;name&quot;: &quot;A String&quot;, # The KB name (generally of the form KB[0-9]+ (e.g., KB123456)).
                &quot;url&quot;: &quot;A String&quot;, # A link to the KB in the [Windows update catalog] (https://www.catalog.update.microsoft.com/).
              },
            ],
            &quot;name&quot;: &quot;A String&quot;, # Required. The name of this vulnerability.
          },
        ],
      },
      &quot;vulnerabilityAssessment&quot;: { # A single VulnerabilityAssessmentNote represents one particular product&#x27;s vulnerability assessment for one CVE. # A note describing a vulnerability assessment.
        &quot;assessment&quot;: { # Assessment provides all information that is related to a single vulnerability for this product. # Represents a vulnerability assessment for the product.
          &quot;cve&quot;: &quot;A String&quot;, # Holds the MITRE standard Common Vulnerabilities and Exposures (CVE) tracking number for the vulnerability. Deprecated: Use vulnerability_id instead to denote CVEs.
          &quot;impacts&quot;: [ # Contains information about the impact of this vulnerability, this will change with time.
            &quot;A String&quot;,
          ],
          &quot;justification&quot;: { # Justification provides the justification when the state of the assessment if NOT_AFFECTED. # Justification provides the justification when the state of the assessment if NOT_AFFECTED.
            &quot;details&quot;: &quot;A String&quot;, # Additional details on why this justification was chosen.
            &quot;justificationType&quot;: &quot;A String&quot;, # The justification type for this vulnerability.
          },
          &quot;longDescription&quot;: &quot;A String&quot;, # A detailed description of this Vex.
          &quot;relatedUris&quot;: [ # Holds a list of references associated with this vulnerability item and assessment. These uris have additional information about the vulnerability and the assessment itself. E.g. Link to a document which details how this assessment concluded the state of this vulnerability.
            { # Metadata for any related URL information.
              &quot;label&quot;: &quot;A String&quot;, # Label to describe usage of the URL.
              &quot;url&quot;: &quot;A String&quot;, # Specific URL associated with the resource.
            },
          ],
          &quot;remediations&quot;: [ # Specifies details on how to handle (and presumably, fix) a vulnerability.
            { # Specifies details on how to handle (and presumably, fix) a vulnerability.
              &quot;details&quot;: &quot;A String&quot;, # Contains a comprehensive human-readable discussion of the remediation.
              &quot;remediationType&quot;: &quot;A String&quot;, # The type of remediation that can be applied.
              &quot;remediationUri&quot;: { # Metadata for any related URL information. # Contains the URL where to obtain the remediation.
                &quot;label&quot;: &quot;A String&quot;, # Label to describe usage of the URL.
                &quot;url&quot;: &quot;A String&quot;, # Specific URL associated with the resource.
              },
            },
          ],
          &quot;shortDescription&quot;: &quot;A String&quot;, # A one sentence description of this Vex.
          &quot;state&quot;: &quot;A String&quot;, # Provides the state of this Vulnerability assessment.
          &quot;vulnerabilityId&quot;: &quot;A String&quot;, # The vulnerability identifier for this Assessment. Will hold one of common identifiers e.g. CVE, GHSA etc.
        },
        &quot;languageCode&quot;: &quot;A String&quot;, # Identifies the language used by this document, corresponding to IETF BCP 47 / RFC 5646.
        &quot;longDescription&quot;: &quot;A String&quot;, # A detailed description of this Vex.
        &quot;product&quot;: { # Product contains information about a product and how to uniquely identify it. # The product affected by this vex.
          &quot;genericUri&quot;: &quot;A String&quot;, # Contains a URI which is vendor-specific. Example: The artifact repository URL of an image.
          &quot;id&quot;: &quot;A String&quot;, # Token that identifies a product so that it can be referred to from other parts in the document. There is no predefined format as long as it uniquely identifies a group in the context of the current document.
          &quot;name&quot;: &quot;A String&quot;, # Name of the product.
        },
        &quot;publisher&quot;: { # Publisher contains information about the publisher of this Note. # Publisher details of this Note.
          &quot;issuingAuthority&quot;: &quot;A String&quot;, # Provides information about the authority of the issuing party to release the document, in particular, the party&#x27;s constituency and responsibilities or other obligations.
          &quot;name&quot;: &quot;A String&quot;, # Name of the publisher. Examples: &#x27;Google&#x27;, &#x27;Google Cloud Platform&#x27;.
          &quot;publisherNamespace&quot;: &quot;A String&quot;, # The context or namespace. Contains a URL which is under control of the issuing party and can be used as a globally unique identifier for that issuing party. Example: https://csaf.io
        },
        &quot;shortDescription&quot;: &quot;A String&quot;, # A one sentence description of this Vex.
        &quot;title&quot;: &quot;A String&quot;, # The title of the note. E.g. `Vex-Debian-11.4`
      },
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="create">create(parent, body=None, noteId=None, x__xgafv=None)</code>
  <pre>Creates a new note.

Args:
  parent: string, Required. The name of the project in the form of `projects/[PROJECT_ID]`, under which the note is to be created. (required)
  body: object, The request body.
    The object takes the form of:

{ # A type of analysis that can be done for a resource.
  &quot;attestation&quot;: { # Note kind that represents a logical attestation &quot;role&quot; or &quot;authority&quot;. For example, an organization might have one `Authority` for &quot;QA&quot; and one for &quot;build&quot;. This note is intended to act strictly as a grouping mechanism for the attached occurrences (Attestations). This grouping mechanism also provides a security boundary, since IAM ACLs gate the ability for a principle to attach an occurrence to a given note. It also provides a single point of lookup to find all attached attestation occurrences, even if they don&#x27;t all live in the same project. # A note describing an attestation role.
    &quot;hint&quot;: { # This submessage provides human-readable hints about the purpose of the authority. Because the name of a note acts as its resource reference, it is important to disambiguate the canonical name of the Note (which might be a UUID for security purposes) from &quot;readable&quot; names more suitable for debug output. Note that these hints should not be used to look up authorities in security sensitive contexts, such as when looking up attestations to verify. # Hint hints at the purpose of the attestation authority.
      &quot;humanReadableName&quot;: &quot;A String&quot;, # Required. The human readable name of this attestation authority, for example &quot;qa&quot;.
    },
  },
  &quot;build&quot;: { # Note holding the version of the provider&#x27;s builder and the signature of the provenance message in the build details occurrence. # A note describing build provenance for a verifiable build.
    &quot;builderVersion&quot;: &quot;A String&quot;, # Required. Immutable. Version of the builder which produced this build.
  },
  &quot;compliance&quot;: { # A note describing a compliance check.
    &quot;cisBenchmark&quot;: { # A compliance check that is a CIS benchmark.
      &quot;profileLevel&quot;: 42,
      &quot;severity&quot;: &quot;A String&quot;,
    },
    &quot;description&quot;: &quot;A String&quot;, # A description about this compliance check.
    &quot;impact&quot;: &quot;A String&quot;,
    &quot;rationale&quot;: &quot;A String&quot;, # A rationale for the existence of this compliance check.
    &quot;remediation&quot;: &quot;A String&quot;, # A description of remediation steps if the compliance check fails.
    &quot;scanInstructions&quot;: &quot;A String&quot;, # Serialized scan instructions with a predefined format.
    &quot;title&quot;: &quot;A String&quot;, # The title that identifies this compliance check.
    &quot;version&quot;: [ # The OS and config versions the benchmark applies to.
      { # Describes the CIS benchmark version that is applicable to a given OS and os version.
        &quot;benchmarkDocument&quot;: &quot;A String&quot;, # The name of the document that defines this benchmark, e.g. &quot;CIS Container-Optimized OS&quot;.
        &quot;cpeUri&quot;: &quot;A String&quot;, # The CPE URI (https://cpe.mitre.org/specification/) this benchmark is applicable to.
        &quot;version&quot;: &quot;A String&quot;, # The version of the benchmark. This is set to the version of the OS-specific CIS document the benchmark is defined in.
      },
    ],
  },
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time this note was created. This field can be used as a filter in list requests.
  &quot;deployment&quot;: { # An artifact that can be deployed in some runtime. # A note describing something that can be deployed.
    &quot;resourceUri&quot;: [ # Required. Resource URI for the artifact being deployed.
      &quot;A String&quot;,
    ],
  },
  &quot;discovery&quot;: { # A note that indicates a type of analysis a provider would perform. This note exists in a provider&#x27;s project. A `Discovery` occurrence is created in a consumer&#x27;s project at the start of analysis. # A note describing the initial analysis of a resource.
    &quot;analysisKind&quot;: &quot;A String&quot;, # Required. Immutable. The kind of analysis that is handled by this discovery.
  },
  &quot;dsseAttestation&quot;: { # A note describing a dsse attestation note.
    &quot;hint&quot;: { # This submessage provides human-readable hints about the purpose of the authority. Because the name of a note acts as its resource reference, it is important to disambiguate the canonical name of the Note (which might be a UUID for security purposes) from &quot;readable&quot; names more suitable for debug output. Note that these hints should not be used to look up authorities in security sensitive contexts, such as when looking up attestations to verify. # DSSEHint hints at the purpose of the attestation authority.
      &quot;humanReadableName&quot;: &quot;A String&quot;, # Required. The human readable name of this attestation authority, for example &quot;cloudbuild-prod&quot;.
    },
  },
  &quot;expirationTime&quot;: &quot;A String&quot;, # Time of expiration for this note. Empty if note does not expire.
  &quot;image&quot;: { # Basis describes the base image portion (Note) of the DockerImage relationship. Linked occurrences are derived from this or an equivalent image via: FROM Or an equivalent reference, e.g., a tag of the resource_url. # A note describing a base image.
    &quot;fingerprint&quot;: { # A set of properties that uniquely identify a given Docker image. # Required. Immutable. The fingerprint of the base image.
      &quot;v1Name&quot;: &quot;A String&quot;, # Required. The layer ID of the final layer in the Docker image&#x27;s v1 representation.
      &quot;v2Blob&quot;: [ # Required. The ordered list of v2 blobs that represent a given image.
        &quot;A String&quot;,
      ],
      &quot;v2Name&quot;: &quot;A String&quot;, # Output only. The name of the image&#x27;s v2 blobs computed via: [bottom] := v2_blobbottom := sha256(v2_blob[N] + &quot; &quot; + v2_name[N+1]) Only the name of the final blob is kept.
    },
    &quot;resourceUrl&quot;: &quot;A String&quot;, # Required. Immutable. The resource_url for the resource representing the basis of associated occurrence images.
  },
  &quot;kind&quot;: &quot;A String&quot;, # Output only. The type of analysis. This field can be used as a filter in list requests.
  &quot;longDescription&quot;: &quot;A String&quot;, # A detailed description of this note.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The name of the note in the form of `projects/[PROVIDER_ID]/notes/[NOTE_ID]`.
  &quot;package&quot;: { # PackageNote represents a particular package version. # A note describing a package hosted by various package managers.
    &quot;architecture&quot;: &quot;A String&quot;, # The CPU architecture for which packages in this distribution channel were built. Architecture will be blank for language packages.
    &quot;cpeUri&quot;: &quot;A String&quot;, # The cpe_uri in [CPE format](https://cpe.mitre.org/specification/) denoting the package manager version distributing a package. The cpe_uri will be blank for language packages.
    &quot;description&quot;: &quot;A String&quot;, # The description of this package.
    &quot;digest&quot;: [ # Hash value, typically a file digest, that allows unique identification a specific package.
      { # Digest information.
        &quot;algo&quot;: &quot;A String&quot;, # `SHA1`, `SHA512` etc.
        &quot;digestBytes&quot;: &quot;A String&quot;, # Value of the digest.
      },
    ],
    &quot;distribution&quot;: [ # Deprecated. The various channels by which a package is distributed.
      { # This represents a particular channel of distribution for a given package. E.g., Debian&#x27;s jessie-backports dpkg mirror.
        &quot;architecture&quot;: &quot;A String&quot;, # The CPU architecture for which packages in this distribution channel were built.
        &quot;cpeUri&quot;: &quot;A String&quot;, # Required. The cpe_uri in [CPE format](https://cpe.mitre.org/specification/) denoting the package manager version distributing a package.
        &quot;description&quot;: &quot;A String&quot;, # The distribution channel-specific description of this package.
        &quot;latestVersion&quot;: { # Version contains structured information about the version of a package. # The latest available version of this package in this distribution channel.
          &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
          &quot;fullName&quot;: &quot;A String&quot;, # Human readable version string. This string is of the form :- and is only set when kind is NORMAL.
          &quot;inclusive&quot;: True or False, # Whether this version is specifying part of an inclusive range. Grafeas does not have the capability to specify version ranges; instead we have fields that specify start version and end versions. At times this is insufficient - we also need to specify whether the version is included in the range or is excluded from the range. This boolean is expected to be set to true when the version is included in a range.
          &quot;kind&quot;: &quot;A String&quot;, # Required. Distinguishes between sentinel MIN/MAX versions and normal versions.
          &quot;name&quot;: &quot;A String&quot;, # Required only when version kind is NORMAL. The main part of the version name.
          &quot;revision&quot;: &quot;A String&quot;, # The iteration of the package build from the above version.
        },
        &quot;maintainer&quot;: &quot;A String&quot;, # A freeform string denoting the maintainer of this package.
        &quot;url&quot;: &quot;A String&quot;, # The distribution channel-specific homepage for this package.
      },
    ],
    &quot;license&quot;: { # License information. # Licenses that have been declared by the authors of the package.
      &quot;comments&quot;: &quot;A String&quot;, # Comments
      &quot;expression&quot;: &quot;A String&quot;, # Often a single license can be used to represent the licensing terms. Sometimes it is necessary to include a choice of one or more licenses or some combination of license identifiers. Examples: &quot;LGPL-2.1-only OR MIT&quot;, &quot;LGPL-2.1-only AND MIT&quot;, &quot;GPL-2.0-or-later WITH Bison-exception-2.2&quot;.
    },
    &quot;maintainer&quot;: &quot;A String&quot;, # A freeform text denoting the maintainer of this package.
    &quot;name&quot;: &quot;A String&quot;, # Required. Immutable. The name of the package.
    &quot;packageType&quot;: &quot;A String&quot;, # The type of package; whether native or non native (e.g., ruby gems, node.js packages, etc.).
    &quot;url&quot;: &quot;A String&quot;, # The homepage for this package.
    &quot;version&quot;: { # Version contains structured information about the version of a package. # The version of the package.
      &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
      &quot;fullName&quot;: &quot;A String&quot;, # Human readable version string. This string is of the form :- and is only set when kind is NORMAL.
      &quot;inclusive&quot;: True or False, # Whether this version is specifying part of an inclusive range. Grafeas does not have the capability to specify version ranges; instead we have fields that specify start version and end versions. At times this is insufficient - we also need to specify whether the version is included in the range or is excluded from the range. This boolean is expected to be set to true when the version is included in a range.
      &quot;kind&quot;: &quot;A String&quot;, # Required. Distinguishes between sentinel MIN/MAX versions and normal versions.
      &quot;name&quot;: &quot;A String&quot;, # Required only when version kind is NORMAL. The main part of the version name.
      &quot;revision&quot;: &quot;A String&quot;, # The iteration of the package build from the above version.
    },
  },
  &quot;relatedNoteNames&quot;: [ # Other notes related to this note.
    &quot;A String&quot;,
  ],
  &quot;relatedUrl&quot;: [ # URLs associated with this note.
    { # Metadata for any related URL information.
      &quot;label&quot;: &quot;A String&quot;, # Label to describe usage of the URL.
      &quot;url&quot;: &quot;A String&quot;, # Specific URL associated with the resource.
    },
  ],
  &quot;sbomReference&quot;: { # The note representing an SBOM reference. # A note describing an SBOM reference.
    &quot;format&quot;: &quot;A String&quot;, # The format that SBOM takes. E.g. may be spdx, cyclonedx, etc...
    &quot;version&quot;: &quot;A String&quot;, # The version of the format that the SBOM takes. E.g. if the format is spdx, the version may be 2.3.
  },
  &quot;shortDescription&quot;: &quot;A String&quot;, # A one sentence description of this note.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time this note was last updated. This field can be used as a filter in list requests.
  &quot;upgrade&quot;: { # An Upgrade Note represents a potential upgrade of a package to a given version. For each package version combination (i.e. bash 4.0, bash 4.1, bash 4.1.2), there will be an Upgrade Note. For Windows, windows_update field represents the information related to the update. # A note describing available package upgrades.
    &quot;distributions&quot;: [ # Metadata about the upgrade for each specific operating system.
      { # The Upgrade Distribution represents metadata about the Upgrade for each operating system (CPE). Some distributions have additional metadata around updates, classifying them into various categories and severities.
        &quot;classification&quot;: &quot;A String&quot;, # The operating system classification of this Upgrade, as specified by the upstream operating system upgrade feed. For Windows the classification is one of the category_ids listed at https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ff357803(v=vs.85)
        &quot;cpeUri&quot;: &quot;A String&quot;, # Required - The specific operating system this metadata applies to. See https://cpe.mitre.org/specification/.
        &quot;cve&quot;: [ # The cve tied to this Upgrade.
          &quot;A String&quot;,
        ],
        &quot;severity&quot;: &quot;A String&quot;, # The severity as specified by the upstream operating system.
      },
    ],
    &quot;package&quot;: &quot;A String&quot;, # Required for non-Windows OS. The package this Upgrade is for.
    &quot;version&quot;: { # Version contains structured information about the version of a package. # Required for non-Windows OS. The version of the package in machine + human readable form.
      &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
      &quot;fullName&quot;: &quot;A String&quot;, # Human readable version string. This string is of the form :- and is only set when kind is NORMAL.
      &quot;inclusive&quot;: True or False, # Whether this version is specifying part of an inclusive range. Grafeas does not have the capability to specify version ranges; instead we have fields that specify start version and end versions. At times this is insufficient - we also need to specify whether the version is included in the range or is excluded from the range. This boolean is expected to be set to true when the version is included in a range.
      &quot;kind&quot;: &quot;A String&quot;, # Required. Distinguishes between sentinel MIN/MAX versions and normal versions.
      &quot;name&quot;: &quot;A String&quot;, # Required only when version kind is NORMAL. The main part of the version name.
      &quot;revision&quot;: &quot;A String&quot;, # The iteration of the package build from the above version.
    },
    &quot;windowsUpdate&quot;: { # Windows Update represents the metadata about the update for the Windows operating system. The fields in this message come from the Windows Update API documented at https://docs.microsoft.com/en-us/windows/win32/api/wuapi/nn-wuapi-iupdate. # Required for Windows OS. Represents the metadata about the Windows update.
      &quot;categories&quot;: [ # The list of categories to which the update belongs.
        { # The category to which the update belongs.
          &quot;categoryId&quot;: &quot;A String&quot;, # The identifier of the category.
          &quot;name&quot;: &quot;A String&quot;, # The localized name of the category.
        },
      ],
      &quot;description&quot;: &quot;A String&quot;, # The localized description of the update.
      &quot;identity&quot;: { # The unique identifier of the update. # Required - The unique identifier for the update.
        &quot;revision&quot;: 42, # The revision number of the update.
        &quot;updateId&quot;: &quot;A String&quot;, # The revision independent identifier of the update.
      },
      &quot;kbArticleIds&quot;: [ # The Microsoft Knowledge Base article IDs that are associated with the update.
        &quot;A String&quot;,
      ],
      &quot;lastPublishedTimestamp&quot;: &quot;A String&quot;, # The last published timestamp of the update.
      &quot;supportUrl&quot;: &quot;A String&quot;, # The hyperlink to the support information for the update.
      &quot;title&quot;: &quot;A String&quot;, # The localized title of the update.
    },
  },
  &quot;vulnerability&quot;: { # A security vulnerability that can be found in resources. # A note describing a package vulnerability.
    &quot;cvssScore&quot;: 3.14, # The CVSS score of this vulnerability. CVSS score is on a scale of 0 - 10 where 0 indicates low severity and 10 indicates high severity.
    &quot;cvssV2&quot;: { # Common Vulnerability Scoring System. For details, see https://www.first.org/cvss/specification-document This is a message we will try to use for storing various versions of CVSS rather than making a separate proto for storing a specific version. # The full description of the v2 CVSS for this vulnerability.
      &quot;attackComplexity&quot;: &quot;A String&quot;,
      &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.
      &quot;authentication&quot;: &quot;A String&quot;,
      &quot;availabilityImpact&quot;: &quot;A String&quot;,
      &quot;baseScore&quot;: 3.14, # The base score is a function of the base metric scores.
      &quot;confidentialityImpact&quot;: &quot;A String&quot;,
      &quot;exploitabilityScore&quot;: 3.14,
      &quot;impactScore&quot;: 3.14,
      &quot;integrityImpact&quot;: &quot;A String&quot;,
      &quot;privilegesRequired&quot;: &quot;A String&quot;,
      &quot;scope&quot;: &quot;A String&quot;,
      &quot;userInteraction&quot;: &quot;A String&quot;,
    },
    &quot;cvssV3&quot;: { # Common Vulnerability Scoring System version 3. For details, see https://www.first.org/cvss/specification-document # The full description of the CVSSv3 for this vulnerability.
      &quot;attackComplexity&quot;: &quot;A String&quot;,
      &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.
      &quot;availabilityImpact&quot;: &quot;A String&quot;,
      &quot;baseScore&quot;: 3.14, # The base score is a function of the base metric scores.
      &quot;confidentialityImpact&quot;: &quot;A String&quot;,
      &quot;exploitabilityScore&quot;: 3.14,
      &quot;impactScore&quot;: 3.14,
      &quot;integrityImpact&quot;: &quot;A String&quot;,
      &quot;privilegesRequired&quot;: &quot;A String&quot;,
      &quot;scope&quot;: &quot;A String&quot;,
      &quot;userInteraction&quot;: &quot;A String&quot;,
    },
    &quot;cvssVersion&quot;: &quot;A String&quot;, # CVSS version used to populate cvss_score and severity.
    &quot;details&quot;: [ # Details of all known distros and packages affected by this vulnerability.
      { # A detail for a distro and package affected by this vulnerability and its associated fix (if one is available).
        &quot;affectedCpeUri&quot;: &quot;A String&quot;, # Required. The [CPE URI](https://cpe.mitre.org/specification/) this vulnerability affects.
        &quot;affectedPackage&quot;: &quot;A String&quot;, # Required. The package this vulnerability affects.
        &quot;affectedVersionEnd&quot;: { # Version contains structured information about the version of a package. # The version number at the end of an interval in which this vulnerability exists. A vulnerability can affect a package between version numbers that are disjoint sets of intervals (example: [1.0.0-1.1.0], [2.4.6-2.4.8] and [4.5.6-4.6.8]) each of which will be represented in its own Detail. If a specific affected version is provided by a vulnerability database, affected_version_start and affected_version_end will be the same in that Detail.
          &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
          &quot;fullName&quot;: &quot;A String&quot;, # Human readable version string. This string is of the form :- and is only set when kind is NORMAL.
          &quot;inclusive&quot;: True or False, # Whether this version is specifying part of an inclusive range. Grafeas does not have the capability to specify version ranges; instead we have fields that specify start version and end versions. At times this is insufficient - we also need to specify whether the version is included in the range or is excluded from the range. This boolean is expected to be set to true when the version is included in a range.
          &quot;kind&quot;: &quot;A String&quot;, # Required. Distinguishes between sentinel MIN/MAX versions and normal versions.
          &quot;name&quot;: &quot;A String&quot;, # Required only when version kind is NORMAL. The main part of the version name.
          &quot;revision&quot;: &quot;A String&quot;, # The iteration of the package build from the above version.
        },
        &quot;affectedVersionStart&quot;: { # Version contains structured information about the version of a package. # The version number at the start of an interval in which this vulnerability exists. A vulnerability can affect a package between version numbers that are disjoint sets of intervals (example: [1.0.0-1.1.0], [2.4.6-2.4.8] and [4.5.6-4.6.8]) each of which will be represented in its own Detail. If a specific affected version is provided by a vulnerability database, affected_version_start and affected_version_end will be the same in that Detail.
          &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
          &quot;fullName&quot;: &quot;A String&quot;, # Human readable version string. This string is of the form :- and is only set when kind is NORMAL.
          &quot;inclusive&quot;: True or False, # Whether this version is specifying part of an inclusive range. Grafeas does not have the capability to specify version ranges; instead we have fields that specify start version and end versions. At times this is insufficient - we also need to specify whether the version is included in the range or is excluded from the range. This boolean is expected to be set to true when the version is included in a range.
          &quot;kind&quot;: &quot;A String&quot;, # Required. Distinguishes between sentinel MIN/MAX versions and normal versions.
          &quot;name&quot;: &quot;A String&quot;, # Required only when version kind is NORMAL. The main part of the version name.
          &quot;revision&quot;: &quot;A String&quot;, # The iteration of the package build from the above version.
        },
        &quot;description&quot;: &quot;A String&quot;, # A vendor-specific description of this vulnerability.
        &quot;fixedCpeUri&quot;: &quot;A String&quot;, # The distro recommended [CPE URI](https://cpe.mitre.org/specification/) to update to that contains a fix for this vulnerability. It is possible for this to be different from the affected_cpe_uri.
        &quot;fixedPackage&quot;: &quot;A String&quot;, # The distro recommended package to update to that contains a fix for this vulnerability. It is possible for this to be different from the affected_package.
        &quot;fixedVersion&quot;: { # Version contains structured information about the version of a package. # The distro recommended version to update to that contains a fix for this vulnerability. Setting this to VersionKind.MAXIMUM means no such version is yet available.
          &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
          &quot;fullName&quot;: &quot;A String&quot;, # Human readable version string. This string is of the form :- and is only set when kind is NORMAL.
          &quot;inclusive&quot;: True or False, # Whether this version is specifying part of an inclusive range. Grafeas does not have the capability to specify version ranges; instead we have fields that specify start version and end versions. At times this is insufficient - we also need to specify whether the version is included in the range or is excluded from the range. This boolean is expected to be set to true when the version is included in a range.
          &quot;kind&quot;: &quot;A String&quot;, # Required. Distinguishes between sentinel MIN/MAX versions and normal versions.
          &quot;name&quot;: &quot;A String&quot;, # Required only when version kind is NORMAL. The main part of the version name.
          &quot;revision&quot;: &quot;A String&quot;, # The iteration of the package build from the above version.
        },
        &quot;isObsolete&quot;: True or False, # Whether this detail is obsolete. Occurrences are expected not to point to obsolete details.
        &quot;packageType&quot;: &quot;A String&quot;, # The type of package; whether native or non native (e.g., ruby gems, node.js packages, etc.).
        &quot;severityName&quot;: &quot;A String&quot;, # The distro assigned severity of this vulnerability.
        &quot;source&quot;: &quot;A String&quot;, # The source from which the information in this Detail was obtained.
        &quot;sourceUpdateTime&quot;: &quot;A String&quot;, # The time this information was last changed at the source. This is an upstream timestamp from the underlying information source - e.g. Ubuntu security tracker.
        &quot;vendor&quot;: &quot;A String&quot;, # The name of the vendor of the product.
      },
    ],
    &quot;severity&quot;: &quot;A String&quot;, # The note provider assigned severity of this vulnerability.
    &quot;sourceUpdateTime&quot;: &quot;A String&quot;, # The time this information was last changed at the source. This is an upstream timestamp from the underlying information source - e.g. Ubuntu security tracker.
    &quot;windowsDetails&quot;: [ # Windows details get their own format because the information format and model don&#x27;t match a normal detail. Specifically Windows updates are done as patches, thus Windows vulnerabilities really are a missing package, rather than a package being at an incorrect version.
      {
        &quot;cpeUri&quot;: &quot;A String&quot;, # Required. The [CPE URI](https://cpe.mitre.org/specification/) this vulnerability affects.
        &quot;description&quot;: &quot;A String&quot;, # The description of this vulnerability.
        &quot;fixingKbs&quot;: [ # Required. The names of the KBs which have hotfixes to mitigate this vulnerability. Note that there may be multiple hotfixes (and thus multiple KBs) that mitigate a given vulnerability. Currently any listed KBs presence is considered a fix.
          {
            &quot;name&quot;: &quot;A String&quot;, # The KB name (generally of the form KB[0-9]+ (e.g., KB123456)).
            &quot;url&quot;: &quot;A String&quot;, # A link to the KB in the [Windows update catalog] (https://www.catalog.update.microsoft.com/).
          },
        ],
        &quot;name&quot;: &quot;A String&quot;, # Required. The name of this vulnerability.
      },
    ],
  },
  &quot;vulnerabilityAssessment&quot;: { # A single VulnerabilityAssessmentNote represents one particular product&#x27;s vulnerability assessment for one CVE. # A note describing a vulnerability assessment.
    &quot;assessment&quot;: { # Assessment provides all information that is related to a single vulnerability for this product. # Represents a vulnerability assessment for the product.
      &quot;cve&quot;: &quot;A String&quot;, # Holds the MITRE standard Common Vulnerabilities and Exposures (CVE) tracking number for the vulnerability. Deprecated: Use vulnerability_id instead to denote CVEs.
      &quot;impacts&quot;: [ # Contains information about the impact of this vulnerability, this will change with time.
        &quot;A String&quot;,
      ],
      &quot;justification&quot;: { # Justification provides the justification when the state of the assessment if NOT_AFFECTED. # Justification provides the justification when the state of the assessment if NOT_AFFECTED.
        &quot;details&quot;: &quot;A String&quot;, # Additional details on why this justification was chosen.
        &quot;justificationType&quot;: &quot;A String&quot;, # The justification type for this vulnerability.
      },
      &quot;longDescription&quot;: &quot;A String&quot;, # A detailed description of this Vex.
      &quot;relatedUris&quot;: [ # Holds a list of references associated with this vulnerability item and assessment. These uris have additional information about the vulnerability and the assessment itself. E.g. Link to a document which details how this assessment concluded the state of this vulnerability.
        { # Metadata for any related URL information.
          &quot;label&quot;: &quot;A String&quot;, # Label to describe usage of the URL.
          &quot;url&quot;: &quot;A String&quot;, # Specific URL associated with the resource.
        },
      ],
      &quot;remediations&quot;: [ # Specifies details on how to handle (and presumably, fix) a vulnerability.
        { # Specifies details on how to handle (and presumably, fix) a vulnerability.
          &quot;details&quot;: &quot;A String&quot;, # Contains a comprehensive human-readable discussion of the remediation.
          &quot;remediationType&quot;: &quot;A String&quot;, # The type of remediation that can be applied.
          &quot;remediationUri&quot;: { # Metadata for any related URL information. # Contains the URL where to obtain the remediation.
            &quot;label&quot;: &quot;A String&quot;, # Label to describe usage of the URL.
            &quot;url&quot;: &quot;A String&quot;, # Specific URL associated with the resource.
          },
        },
      ],
      &quot;shortDescription&quot;: &quot;A String&quot;, # A one sentence description of this Vex.
      &quot;state&quot;: &quot;A String&quot;, # Provides the state of this Vulnerability assessment.
      &quot;vulnerabilityId&quot;: &quot;A String&quot;, # The vulnerability identifier for this Assessment. Will hold one of common identifiers e.g. CVE, GHSA etc.
    },
    &quot;languageCode&quot;: &quot;A String&quot;, # Identifies the language used by this document, corresponding to IETF BCP 47 / RFC 5646.
    &quot;longDescription&quot;: &quot;A String&quot;, # A detailed description of this Vex.
    &quot;product&quot;: { # Product contains information about a product and how to uniquely identify it. # The product affected by this vex.
      &quot;genericUri&quot;: &quot;A String&quot;, # Contains a URI which is vendor-specific. Example: The artifact repository URL of an image.
      &quot;id&quot;: &quot;A String&quot;, # Token that identifies a product so that it can be referred to from other parts in the document. There is no predefined format as long as it uniquely identifies a group in the context of the current document.
      &quot;name&quot;: &quot;A String&quot;, # Name of the product.
    },
    &quot;publisher&quot;: { # Publisher contains information about the publisher of this Note. # Publisher details of this Note.
      &quot;issuingAuthority&quot;: &quot;A String&quot;, # Provides information about the authority of the issuing party to release the document, in particular, the party&#x27;s constituency and responsibilities or other obligations.
      &quot;name&quot;: &quot;A String&quot;, # Name of the publisher. Examples: &#x27;Google&#x27;, &#x27;Google Cloud Platform&#x27;.
      &quot;publisherNamespace&quot;: &quot;A String&quot;, # The context or namespace. Contains a URL which is under control of the issuing party and can be used as a globally unique identifier for that issuing party. Example: https://csaf.io
    },
    &quot;shortDescription&quot;: &quot;A String&quot;, # A one sentence description of this Vex.
    &quot;title&quot;: &quot;A String&quot;, # The title of the note. E.g. `Vex-Debian-11.4`
  },
}

  noteId: string, Required. The ID to use for this note.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A type of analysis that can be done for a resource.
  &quot;attestation&quot;: { # Note kind that represents a logical attestation &quot;role&quot; or &quot;authority&quot;. For example, an organization might have one `Authority` for &quot;QA&quot; and one for &quot;build&quot;. This note is intended to act strictly as a grouping mechanism for the attached occurrences (Attestations). This grouping mechanism also provides a security boundary, since IAM ACLs gate the ability for a principle to attach an occurrence to a given note. It also provides a single point of lookup to find all attached attestation occurrences, even if they don&#x27;t all live in the same project. # A note describing an attestation role.
    &quot;hint&quot;: { # This submessage provides human-readable hints about the purpose of the authority. Because the name of a note acts as its resource reference, it is important to disambiguate the canonical name of the Note (which might be a UUID for security purposes) from &quot;readable&quot; names more suitable for debug output. Note that these hints should not be used to look up authorities in security sensitive contexts, such as when looking up attestations to verify. # Hint hints at the purpose of the attestation authority.
      &quot;humanReadableName&quot;: &quot;A String&quot;, # Required. The human readable name of this attestation authority, for example &quot;qa&quot;.
    },
  },
  &quot;build&quot;: { # Note holding the version of the provider&#x27;s builder and the signature of the provenance message in the build details occurrence. # A note describing build provenance for a verifiable build.
    &quot;builderVersion&quot;: &quot;A String&quot;, # Required. Immutable. Version of the builder which produced this build.
  },
  &quot;compliance&quot;: { # A note describing a compliance check.
    &quot;cisBenchmark&quot;: { # A compliance check that is a CIS benchmark.
      &quot;profileLevel&quot;: 42,
      &quot;severity&quot;: &quot;A String&quot;,
    },
    &quot;description&quot;: &quot;A String&quot;, # A description about this compliance check.
    &quot;impact&quot;: &quot;A String&quot;,
    &quot;rationale&quot;: &quot;A String&quot;, # A rationale for the existence of this compliance check.
    &quot;remediation&quot;: &quot;A String&quot;, # A description of remediation steps if the compliance check fails.
    &quot;scanInstructions&quot;: &quot;A String&quot;, # Serialized scan instructions with a predefined format.
    &quot;title&quot;: &quot;A String&quot;, # The title that identifies this compliance check.
    &quot;version&quot;: [ # The OS and config versions the benchmark applies to.
      { # Describes the CIS benchmark version that is applicable to a given OS and os version.
        &quot;benchmarkDocument&quot;: &quot;A String&quot;, # The name of the document that defines this benchmark, e.g. &quot;CIS Container-Optimized OS&quot;.
        &quot;cpeUri&quot;: &quot;A String&quot;, # The CPE URI (https://cpe.mitre.org/specification/) this benchmark is applicable to.
        &quot;version&quot;: &quot;A String&quot;, # The version of the benchmark. This is set to the version of the OS-specific CIS document the benchmark is defined in.
      },
    ],
  },
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time this note was created. This field can be used as a filter in list requests.
  &quot;deployment&quot;: { # An artifact that can be deployed in some runtime. # A note describing something that can be deployed.
    &quot;resourceUri&quot;: [ # Required. Resource URI for the artifact being deployed.
      &quot;A String&quot;,
    ],
  },
  &quot;discovery&quot;: { # A note that indicates a type of analysis a provider would perform. This note exists in a provider&#x27;s project. A `Discovery` occurrence is created in a consumer&#x27;s project at the start of analysis. # A note describing the initial analysis of a resource.
    &quot;analysisKind&quot;: &quot;A String&quot;, # Required. Immutable. The kind of analysis that is handled by this discovery.
  },
  &quot;dsseAttestation&quot;: { # A note describing a dsse attestation note.
    &quot;hint&quot;: { # This submessage provides human-readable hints about the purpose of the authority. Because the name of a note acts as its resource reference, it is important to disambiguate the canonical name of the Note (which might be a UUID for security purposes) from &quot;readable&quot; names more suitable for debug output. Note that these hints should not be used to look up authorities in security sensitive contexts, such as when looking up attestations to verify. # DSSEHint hints at the purpose of the attestation authority.
      &quot;humanReadableName&quot;: &quot;A String&quot;, # Required. The human readable name of this attestation authority, for example &quot;cloudbuild-prod&quot;.
    },
  },
  &quot;expirationTime&quot;: &quot;A String&quot;, # Time of expiration for this note. Empty if note does not expire.
  &quot;image&quot;: { # Basis describes the base image portion (Note) of the DockerImage relationship. Linked occurrences are derived from this or an equivalent image via: FROM Or an equivalent reference, e.g., a tag of the resource_url. # A note describing a base image.
    &quot;fingerprint&quot;: { # A set of properties that uniquely identify a given Docker image. # Required. Immutable. The fingerprint of the base image.
      &quot;v1Name&quot;: &quot;A String&quot;, # Required. The layer ID of the final layer in the Docker image&#x27;s v1 representation.
      &quot;v2Blob&quot;: [ # Required. The ordered list of v2 blobs that represent a given image.
        &quot;A String&quot;,
      ],
      &quot;v2Name&quot;: &quot;A String&quot;, # Output only. The name of the image&#x27;s v2 blobs computed via: [bottom] := v2_blobbottom := sha256(v2_blob[N] + &quot; &quot; + v2_name[N+1]) Only the name of the final blob is kept.
    },
    &quot;resourceUrl&quot;: &quot;A String&quot;, # Required. Immutable. The resource_url for the resource representing the basis of associated occurrence images.
  },
  &quot;kind&quot;: &quot;A String&quot;, # Output only. The type of analysis. This field can be used as a filter in list requests.
  &quot;longDescription&quot;: &quot;A String&quot;, # A detailed description of this note.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The name of the note in the form of `projects/[PROVIDER_ID]/notes/[NOTE_ID]`.
  &quot;package&quot;: { # PackageNote represents a particular package version. # A note describing a package hosted by various package managers.
    &quot;architecture&quot;: &quot;A String&quot;, # The CPU architecture for which packages in this distribution channel were built. Architecture will be blank for language packages.
    &quot;cpeUri&quot;: &quot;A String&quot;, # The cpe_uri in [CPE format](https://cpe.mitre.org/specification/) denoting the package manager version distributing a package. The cpe_uri will be blank for language packages.
    &quot;description&quot;: &quot;A String&quot;, # The description of this package.
    &quot;digest&quot;: [ # Hash value, typically a file digest, that allows unique identification a specific package.
      { # Digest information.
        &quot;algo&quot;: &quot;A String&quot;, # `SHA1`, `SHA512` etc.
        &quot;digestBytes&quot;: &quot;A String&quot;, # Value of the digest.
      },
    ],
    &quot;distribution&quot;: [ # Deprecated. The various channels by which a package is distributed.
      { # This represents a particular channel of distribution for a given package. E.g., Debian&#x27;s jessie-backports dpkg mirror.
        &quot;architecture&quot;: &quot;A String&quot;, # The CPU architecture for which packages in this distribution channel were built.
        &quot;cpeUri&quot;: &quot;A String&quot;, # Required. The cpe_uri in [CPE format](https://cpe.mitre.org/specification/) denoting the package manager version distributing a package.
        &quot;description&quot;: &quot;A String&quot;, # The distribution channel-specific description of this package.
        &quot;latestVersion&quot;: { # Version contains structured information about the version of a package. # The latest available version of this package in this distribution channel.
          &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
          &quot;fullName&quot;: &quot;A String&quot;, # Human readable version string. This string is of the form :- and is only set when kind is NORMAL.
          &quot;inclusive&quot;: True or False, # Whether this version is specifying part of an inclusive range. Grafeas does not have the capability to specify version ranges; instead we have fields that specify start version and end versions. At times this is insufficient - we also need to specify whether the version is included in the range or is excluded from the range. This boolean is expected to be set to true when the version is included in a range.
          &quot;kind&quot;: &quot;A String&quot;, # Required. Distinguishes between sentinel MIN/MAX versions and normal versions.
          &quot;name&quot;: &quot;A String&quot;, # Required only when version kind is NORMAL. The main part of the version name.
          &quot;revision&quot;: &quot;A String&quot;, # The iteration of the package build from the above version.
        },
        &quot;maintainer&quot;: &quot;A String&quot;, # A freeform string denoting the maintainer of this package.
        &quot;url&quot;: &quot;A String&quot;, # The distribution channel-specific homepage for this package.
      },
    ],
    &quot;license&quot;: { # License information. # Licenses that have been declared by the authors of the package.
      &quot;comments&quot;: &quot;A String&quot;, # Comments
      &quot;expression&quot;: &quot;A String&quot;, # Often a single license can be used to represent the licensing terms. Sometimes it is necessary to include a choice of one or more licenses or some combination of license identifiers. Examples: &quot;LGPL-2.1-only OR MIT&quot;, &quot;LGPL-2.1-only AND MIT&quot;, &quot;GPL-2.0-or-later WITH Bison-exception-2.2&quot;.
    },
    &quot;maintainer&quot;: &quot;A String&quot;, # A freeform text denoting the maintainer of this package.
    &quot;name&quot;: &quot;A String&quot;, # Required. Immutable. The name of the package.
    &quot;packageType&quot;: &quot;A String&quot;, # The type of package; whether native or non native (e.g., ruby gems, node.js packages, etc.).
    &quot;url&quot;: &quot;A String&quot;, # The homepage for this package.
    &quot;version&quot;: { # Version contains structured information about the version of a package. # The version of the package.
      &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
      &quot;fullName&quot;: &quot;A String&quot;, # Human readable version string. This string is of the form :- and is only set when kind is NORMAL.
      &quot;inclusive&quot;: True or False, # Whether this version is specifying part of an inclusive range. Grafeas does not have the capability to specify version ranges; instead we have fields that specify start version and end versions. At times this is insufficient - we also need to specify whether the version is included in the range or is excluded from the range. This boolean is expected to be set to true when the version is included in a range.
      &quot;kind&quot;: &quot;A String&quot;, # Required. Distinguishes between sentinel MIN/MAX versions and normal versions.
      &quot;name&quot;: &quot;A String&quot;, # Required only when version kind is NORMAL. The main part of the version name.
      &quot;revision&quot;: &quot;A String&quot;, # The iteration of the package build from the above version.
    },
  },
  &quot;relatedNoteNames&quot;: [ # Other notes related to this note.
    &quot;A String&quot;,
  ],
  &quot;relatedUrl&quot;: [ # URLs associated with this note.
    { # Metadata for any related URL information.
      &quot;label&quot;: &quot;A String&quot;, # Label to describe usage of the URL.
      &quot;url&quot;: &quot;A String&quot;, # Specific URL associated with the resource.
    },
  ],
  &quot;sbomReference&quot;: { # The note representing an SBOM reference. # A note describing an SBOM reference.
    &quot;format&quot;: &quot;A String&quot;, # The format that SBOM takes. E.g. may be spdx, cyclonedx, etc...
    &quot;version&quot;: &quot;A String&quot;, # The version of the format that the SBOM takes. E.g. if the format is spdx, the version may be 2.3.
  },
  &quot;shortDescription&quot;: &quot;A String&quot;, # A one sentence description of this note.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time this note was last updated. This field can be used as a filter in list requests.
  &quot;upgrade&quot;: { # An Upgrade Note represents a potential upgrade of a package to a given version. For each package version combination (i.e. bash 4.0, bash 4.1, bash 4.1.2), there will be an Upgrade Note. For Windows, windows_update field represents the information related to the update. # A note describing available package upgrades.
    &quot;distributions&quot;: [ # Metadata about the upgrade for each specific operating system.
      { # The Upgrade Distribution represents metadata about the Upgrade for each operating system (CPE). Some distributions have additional metadata around updates, classifying them into various categories and severities.
        &quot;classification&quot;: &quot;A String&quot;, # The operating system classification of this Upgrade, as specified by the upstream operating system upgrade feed. For Windows the classification is one of the category_ids listed at https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ff357803(v=vs.85)
        &quot;cpeUri&quot;: &quot;A String&quot;, # Required - The specific operating system this metadata applies to. See https://cpe.mitre.org/specification/.
        &quot;cve&quot;: [ # The cve tied to this Upgrade.
          &quot;A String&quot;,
        ],
        &quot;severity&quot;: &quot;A String&quot;, # The severity as specified by the upstream operating system.
      },
    ],
    &quot;package&quot;: &quot;A String&quot;, # Required for non-Windows OS. The package this Upgrade is for.
    &quot;version&quot;: { # Version contains structured information about the version of a package. # Required for non-Windows OS. The version of the package in machine + human readable form.
      &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
      &quot;fullName&quot;: &quot;A String&quot;, # Human readable version string. This string is of the form :- and is only set when kind is NORMAL.
      &quot;inclusive&quot;: True or False, # Whether this version is specifying part of an inclusive range. Grafeas does not have the capability to specify version ranges; instead we have fields that specify start version and end versions. At times this is insufficient - we also need to specify whether the version is included in the range or is excluded from the range. This boolean is expected to be set to true when the version is included in a range.
      &quot;kind&quot;: &quot;A String&quot;, # Required. Distinguishes between sentinel MIN/MAX versions and normal versions.
      &quot;name&quot;: &quot;A String&quot;, # Required only when version kind is NORMAL. The main part of the version name.
      &quot;revision&quot;: &quot;A String&quot;, # The iteration of the package build from the above version.
    },
    &quot;windowsUpdate&quot;: { # Windows Update represents the metadata about the update for the Windows operating system. The fields in this message come from the Windows Update API documented at https://docs.microsoft.com/en-us/windows/win32/api/wuapi/nn-wuapi-iupdate. # Required for Windows OS. Represents the metadata about the Windows update.
      &quot;categories&quot;: [ # The list of categories to which the update belongs.
        { # The category to which the update belongs.
          &quot;categoryId&quot;: &quot;A String&quot;, # The identifier of the category.
          &quot;name&quot;: &quot;A String&quot;, # The localized name of the category.
        },
      ],
      &quot;description&quot;: &quot;A String&quot;, # The localized description of the update.
      &quot;identity&quot;: { # The unique identifier of the update. # Required - The unique identifier for the update.
        &quot;revision&quot;: 42, # The revision number of the update.
        &quot;updateId&quot;: &quot;A String&quot;, # The revision independent identifier of the update.
      },
      &quot;kbArticleIds&quot;: [ # The Microsoft Knowledge Base article IDs that are associated with the update.
        &quot;A String&quot;,
      ],
      &quot;lastPublishedTimestamp&quot;: &quot;A String&quot;, # The last published timestamp of the update.
      &quot;supportUrl&quot;: &quot;A String&quot;, # The hyperlink to the support information for the update.
      &quot;title&quot;: &quot;A String&quot;, # The localized title of the update.
    },
  },
  &quot;vulnerability&quot;: { # A security vulnerability that can be found in resources. # A note describing a package vulnerability.
    &quot;cvssScore&quot;: 3.14, # The CVSS score of this vulnerability. CVSS score is on a scale of 0 - 10 where 0 indicates low severity and 10 indicates high severity.
    &quot;cvssV2&quot;: { # Common Vulnerability Scoring System. For details, see https://www.first.org/cvss/specification-document This is a message we will try to use for storing various versions of CVSS rather than making a separate proto for storing a specific version. # The full description of the v2 CVSS for this vulnerability.
      &quot;attackComplexity&quot;: &quot;A String&quot;,
      &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.
      &quot;authentication&quot;: &quot;A String&quot;,
      &quot;availabilityImpact&quot;: &quot;A String&quot;,
      &quot;baseScore&quot;: 3.14, # The base score is a function of the base metric scores.
      &quot;confidentialityImpact&quot;: &quot;A String&quot;,
      &quot;exploitabilityScore&quot;: 3.14,
      &quot;impactScore&quot;: 3.14,
      &quot;integrityImpact&quot;: &quot;A String&quot;,
      &quot;privilegesRequired&quot;: &quot;A String&quot;,
      &quot;scope&quot;: &quot;A String&quot;,
      &quot;userInteraction&quot;: &quot;A String&quot;,
    },
    &quot;cvssV3&quot;: { # Common Vulnerability Scoring System version 3. For details, see https://www.first.org/cvss/specification-document # The full description of the CVSSv3 for this vulnerability.
      &quot;attackComplexity&quot;: &quot;A String&quot;,
      &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.
      &quot;availabilityImpact&quot;: &quot;A String&quot;,
      &quot;baseScore&quot;: 3.14, # The base score is a function of the base metric scores.
      &quot;confidentialityImpact&quot;: &quot;A String&quot;,
      &quot;exploitabilityScore&quot;: 3.14,
      &quot;impactScore&quot;: 3.14,
      &quot;integrityImpact&quot;: &quot;A String&quot;,
      &quot;privilegesRequired&quot;: &quot;A String&quot;,
      &quot;scope&quot;: &quot;A String&quot;,
      &quot;userInteraction&quot;: &quot;A String&quot;,
    },
    &quot;cvssVersion&quot;: &quot;A String&quot;, # CVSS version used to populate cvss_score and severity.
    &quot;details&quot;: [ # Details of all known distros and packages affected by this vulnerability.
      { # A detail for a distro and package affected by this vulnerability and its associated fix (if one is available).
        &quot;affectedCpeUri&quot;: &quot;A String&quot;, # Required. The [CPE URI](https://cpe.mitre.org/specification/) this vulnerability affects.
        &quot;affectedPackage&quot;: &quot;A String&quot;, # Required. The package this vulnerability affects.
        &quot;affectedVersionEnd&quot;: { # Version contains structured information about the version of a package. # The version number at the end of an interval in which this vulnerability exists. A vulnerability can affect a package between version numbers that are disjoint sets of intervals (example: [1.0.0-1.1.0], [2.4.6-2.4.8] and [4.5.6-4.6.8]) each of which will be represented in its own Detail. If a specific affected version is provided by a vulnerability database, affected_version_start and affected_version_end will be the same in that Detail.
          &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
          &quot;fullName&quot;: &quot;A String&quot;, # Human readable version string. This string is of the form :- and is only set when kind is NORMAL.
          &quot;inclusive&quot;: True or False, # Whether this version is specifying part of an inclusive range. Grafeas does not have the capability to specify version ranges; instead we have fields that specify start version and end versions. At times this is insufficient - we also need to specify whether the version is included in the range or is excluded from the range. This boolean is expected to be set to true when the version is included in a range.
          &quot;kind&quot;: &quot;A String&quot;, # Required. Distinguishes between sentinel MIN/MAX versions and normal versions.
          &quot;name&quot;: &quot;A String&quot;, # Required only when version kind is NORMAL. The main part of the version name.
          &quot;revision&quot;: &quot;A String&quot;, # The iteration of the package build from the above version.
        },
        &quot;affectedVersionStart&quot;: { # Version contains structured information about the version of a package. # The version number at the start of an interval in which this vulnerability exists. A vulnerability can affect a package between version numbers that are disjoint sets of intervals (example: [1.0.0-1.1.0], [2.4.6-2.4.8] and [4.5.6-4.6.8]) each of which will be represented in its own Detail. If a specific affected version is provided by a vulnerability database, affected_version_start and affected_version_end will be the same in that Detail.
          &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
          &quot;fullName&quot;: &quot;A String&quot;, # Human readable version string. This string is of the form :- and is only set when kind is NORMAL.
          &quot;inclusive&quot;: True or False, # Whether this version is specifying part of an inclusive range. Grafeas does not have the capability to specify version ranges; instead we have fields that specify start version and end versions. At times this is insufficient - we also need to specify whether the version is included in the range or is excluded from the range. This boolean is expected to be set to true when the version is included in a range.
          &quot;kind&quot;: &quot;A String&quot;, # Required. Distinguishes between sentinel MIN/MAX versions and normal versions.
          &quot;name&quot;: &quot;A String&quot;, # Required only when version kind is NORMAL. The main part of the version name.
          &quot;revision&quot;: &quot;A String&quot;, # The iteration of the package build from the above version.
        },
        &quot;description&quot;: &quot;A String&quot;, # A vendor-specific description of this vulnerability.
        &quot;fixedCpeUri&quot;: &quot;A String&quot;, # The distro recommended [CPE URI](https://cpe.mitre.org/specification/) to update to that contains a fix for this vulnerability. It is possible for this to be different from the affected_cpe_uri.
        &quot;fixedPackage&quot;: &quot;A String&quot;, # The distro recommended package to update to that contains a fix for this vulnerability. It is possible for this to be different from the affected_package.
        &quot;fixedVersion&quot;: { # Version contains structured information about the version of a package. # The distro recommended version to update to that contains a fix for this vulnerability. Setting this to VersionKind.MAXIMUM means no such version is yet available.
          &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
          &quot;fullName&quot;: &quot;A String&quot;, # Human readable version string. This string is of the form :- and is only set when kind is NORMAL.
          &quot;inclusive&quot;: True or False, # Whether this version is specifying part of an inclusive range. Grafeas does not have the capability to specify version ranges; instead we have fields that specify start version and end versions. At times this is insufficient - we also need to specify whether the version is included in the range or is excluded from the range. This boolean is expected to be set to true when the version is included in a range.
          &quot;kind&quot;: &quot;A String&quot;, # Required. Distinguishes between sentinel MIN/MAX versions and normal versions.
          &quot;name&quot;: &quot;A String&quot;, # Required only when version kind is NORMAL. The main part of the version name.
          &quot;revision&quot;: &quot;A String&quot;, # The iteration of the package build from the above version.
        },
        &quot;isObsolete&quot;: True or False, # Whether this detail is obsolete. Occurrences are expected not to point to obsolete details.
        &quot;packageType&quot;: &quot;A String&quot;, # The type of package; whether native or non native (e.g., ruby gems, node.js packages, etc.).
        &quot;severityName&quot;: &quot;A String&quot;, # The distro assigned severity of this vulnerability.
        &quot;source&quot;: &quot;A String&quot;, # The source from which the information in this Detail was obtained.
        &quot;sourceUpdateTime&quot;: &quot;A String&quot;, # The time this information was last changed at the source. This is an upstream timestamp from the underlying information source - e.g. Ubuntu security tracker.
        &quot;vendor&quot;: &quot;A String&quot;, # The name of the vendor of the product.
      },
    ],
    &quot;severity&quot;: &quot;A String&quot;, # The note provider assigned severity of this vulnerability.
    &quot;sourceUpdateTime&quot;: &quot;A String&quot;, # The time this information was last changed at the source. This is an upstream timestamp from the underlying information source - e.g. Ubuntu security tracker.
    &quot;windowsDetails&quot;: [ # Windows details get their own format because the information format and model don&#x27;t match a normal detail. Specifically Windows updates are done as patches, thus Windows vulnerabilities really are a missing package, rather than a package being at an incorrect version.
      {
        &quot;cpeUri&quot;: &quot;A String&quot;, # Required. The [CPE URI](https://cpe.mitre.org/specification/) this vulnerability affects.
        &quot;description&quot;: &quot;A String&quot;, # The description of this vulnerability.
        &quot;fixingKbs&quot;: [ # Required. The names of the KBs which have hotfixes to mitigate this vulnerability. Note that there may be multiple hotfixes (and thus multiple KBs) that mitigate a given vulnerability. Currently any listed KBs presence is considered a fix.
          {
            &quot;name&quot;: &quot;A String&quot;, # The KB name (generally of the form KB[0-9]+ (e.g., KB123456)).
            &quot;url&quot;: &quot;A String&quot;, # A link to the KB in the [Windows update catalog] (https://www.catalog.update.microsoft.com/).
          },
        ],
        &quot;name&quot;: &quot;A String&quot;, # Required. The name of this vulnerability.
      },
    ],
  },
  &quot;vulnerabilityAssessment&quot;: { # A single VulnerabilityAssessmentNote represents one particular product&#x27;s vulnerability assessment for one CVE. # A note describing a vulnerability assessment.
    &quot;assessment&quot;: { # Assessment provides all information that is related to a single vulnerability for this product. # Represents a vulnerability assessment for the product.
      &quot;cve&quot;: &quot;A String&quot;, # Holds the MITRE standard Common Vulnerabilities and Exposures (CVE) tracking number for the vulnerability. Deprecated: Use vulnerability_id instead to denote CVEs.
      &quot;impacts&quot;: [ # Contains information about the impact of this vulnerability, this will change with time.
        &quot;A String&quot;,
      ],
      &quot;justification&quot;: { # Justification provides the justification when the state of the assessment if NOT_AFFECTED. # Justification provides the justification when the state of the assessment if NOT_AFFECTED.
        &quot;details&quot;: &quot;A String&quot;, # Additional details on why this justification was chosen.
        &quot;justificationType&quot;: &quot;A String&quot;, # The justification type for this vulnerability.
      },
      &quot;longDescription&quot;: &quot;A String&quot;, # A detailed description of this Vex.
      &quot;relatedUris&quot;: [ # Holds a list of references associated with this vulnerability item and assessment. These uris have additional information about the vulnerability and the assessment itself. E.g. Link to a document which details how this assessment concluded the state of this vulnerability.
        { # Metadata for any related URL information.
          &quot;label&quot;: &quot;A String&quot;, # Label to describe usage of the URL.
          &quot;url&quot;: &quot;A String&quot;, # Specific URL associated with the resource.
        },
      ],
      &quot;remediations&quot;: [ # Specifies details on how to handle (and presumably, fix) a vulnerability.
        { # Specifies details on how to handle (and presumably, fix) a vulnerability.
          &quot;details&quot;: &quot;A String&quot;, # Contains a comprehensive human-readable discussion of the remediation.
          &quot;remediationType&quot;: &quot;A String&quot;, # The type of remediation that can be applied.
          &quot;remediationUri&quot;: { # Metadata for any related URL information. # Contains the URL where to obtain the remediation.
            &quot;label&quot;: &quot;A String&quot;, # Label to describe usage of the URL.
            &quot;url&quot;: &quot;A String&quot;, # Specific URL associated with the resource.
          },
        },
      ],
      &quot;shortDescription&quot;: &quot;A String&quot;, # A one sentence description of this Vex.
      &quot;state&quot;: &quot;A String&quot;, # Provides the state of this Vulnerability assessment.
      &quot;vulnerabilityId&quot;: &quot;A String&quot;, # The vulnerability identifier for this Assessment. Will hold one of common identifiers e.g. CVE, GHSA etc.
    },
    &quot;languageCode&quot;: &quot;A String&quot;, # Identifies the language used by this document, corresponding to IETF BCP 47 / RFC 5646.
    &quot;longDescription&quot;: &quot;A String&quot;, # A detailed description of this Vex.
    &quot;product&quot;: { # Product contains information about a product and how to uniquely identify it. # The product affected by this vex.
      &quot;genericUri&quot;: &quot;A String&quot;, # Contains a URI which is vendor-specific. Example: The artifact repository URL of an image.
      &quot;id&quot;: &quot;A String&quot;, # Token that identifies a product so that it can be referred to from other parts in the document. There is no predefined format as long as it uniquely identifies a group in the context of the current document.
      &quot;name&quot;: &quot;A String&quot;, # Name of the product.
    },
    &quot;publisher&quot;: { # Publisher contains information about the publisher of this Note. # Publisher details of this Note.
      &quot;issuingAuthority&quot;: &quot;A String&quot;, # Provides information about the authority of the issuing party to release the document, in particular, the party&#x27;s constituency and responsibilities or other obligations.
      &quot;name&quot;: &quot;A String&quot;, # Name of the publisher. Examples: &#x27;Google&#x27;, &#x27;Google Cloud Platform&#x27;.
      &quot;publisherNamespace&quot;: &quot;A String&quot;, # The context or namespace. Contains a URL which is under control of the issuing party and can be used as a globally unique identifier for that issuing party. Example: https://csaf.io
    },
    &quot;shortDescription&quot;: &quot;A String&quot;, # A one sentence description of this Vex.
    &quot;title&quot;: &quot;A String&quot;, # The title of the note. E.g. `Vex-Debian-11.4`
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(name, x__xgafv=None)</code>
  <pre>Deletes the specified note.

Args:
  name: string, Required. The name of the note in the form of `projects/[PROVIDER_ID]/notes/[NOTE_ID]`. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }
}</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, x__xgafv=None)</code>
  <pre>Gets the specified note.

Args:
  name: string, Required. The name of the note in the form of `projects/[PROVIDER_ID]/notes/[NOTE_ID]`. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A type of analysis that can be done for a resource.
  &quot;attestation&quot;: { # Note kind that represents a logical attestation &quot;role&quot; or &quot;authority&quot;. For example, an organization might have one `Authority` for &quot;QA&quot; and one for &quot;build&quot;. This note is intended to act strictly as a grouping mechanism for the attached occurrences (Attestations). This grouping mechanism also provides a security boundary, since IAM ACLs gate the ability for a principle to attach an occurrence to a given note. It also provides a single point of lookup to find all attached attestation occurrences, even if they don&#x27;t all live in the same project. # A note describing an attestation role.
    &quot;hint&quot;: { # This submessage provides human-readable hints about the purpose of the authority. Because the name of a note acts as its resource reference, it is important to disambiguate the canonical name of the Note (which might be a UUID for security purposes) from &quot;readable&quot; names more suitable for debug output. Note that these hints should not be used to look up authorities in security sensitive contexts, such as when looking up attestations to verify. # Hint hints at the purpose of the attestation authority.
      &quot;humanReadableName&quot;: &quot;A String&quot;, # Required. The human readable name of this attestation authority, for example &quot;qa&quot;.
    },
  },
  &quot;build&quot;: { # Note holding the version of the provider&#x27;s builder and the signature of the provenance message in the build details occurrence. # A note describing build provenance for a verifiable build.
    &quot;builderVersion&quot;: &quot;A String&quot;, # Required. Immutable. Version of the builder which produced this build.
  },
  &quot;compliance&quot;: { # A note describing a compliance check.
    &quot;cisBenchmark&quot;: { # A compliance check that is a CIS benchmark.
      &quot;profileLevel&quot;: 42,
      &quot;severity&quot;: &quot;A String&quot;,
    },
    &quot;description&quot;: &quot;A String&quot;, # A description about this compliance check.
    &quot;impact&quot;: &quot;A String&quot;,
    &quot;rationale&quot;: &quot;A String&quot;, # A rationale for the existence of this compliance check.
    &quot;remediation&quot;: &quot;A String&quot;, # A description of remediation steps if the compliance check fails.
    &quot;scanInstructions&quot;: &quot;A String&quot;, # Serialized scan instructions with a predefined format.
    &quot;title&quot;: &quot;A String&quot;, # The title that identifies this compliance check.
    &quot;version&quot;: [ # The OS and config versions the benchmark applies to.
      { # Describes the CIS benchmark version that is applicable to a given OS and os version.
        &quot;benchmarkDocument&quot;: &quot;A String&quot;, # The name of the document that defines this benchmark, e.g. &quot;CIS Container-Optimized OS&quot;.
        &quot;cpeUri&quot;: &quot;A String&quot;, # The CPE URI (https://cpe.mitre.org/specification/) this benchmark is applicable to.
        &quot;version&quot;: &quot;A String&quot;, # The version of the benchmark. This is set to the version of the OS-specific CIS document the benchmark is defined in.
      },
    ],
  },
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time this note was created. This field can be used as a filter in list requests.
  &quot;deployment&quot;: { # An artifact that can be deployed in some runtime. # A note describing something that can be deployed.
    &quot;resourceUri&quot;: [ # Required. Resource URI for the artifact being deployed.
      &quot;A String&quot;,
    ],
  },
  &quot;discovery&quot;: { # A note that indicates a type of analysis a provider would perform. This note exists in a provider&#x27;s project. A `Discovery` occurrence is created in a consumer&#x27;s project at the start of analysis. # A note describing the initial analysis of a resource.
    &quot;analysisKind&quot;: &quot;A String&quot;, # Required. Immutable. The kind of analysis that is handled by this discovery.
  },
  &quot;dsseAttestation&quot;: { # A note describing a dsse attestation note.
    &quot;hint&quot;: { # This submessage provides human-readable hints about the purpose of the authority. Because the name of a note acts as its resource reference, it is important to disambiguate the canonical name of the Note (which might be a UUID for security purposes) from &quot;readable&quot; names more suitable for debug output. Note that these hints should not be used to look up authorities in security sensitive contexts, such as when looking up attestations to verify. # DSSEHint hints at the purpose of the attestation authority.
      &quot;humanReadableName&quot;: &quot;A String&quot;, # Required. The human readable name of this attestation authority, for example &quot;cloudbuild-prod&quot;.
    },
  },
  &quot;expirationTime&quot;: &quot;A String&quot;, # Time of expiration for this note. Empty if note does not expire.
  &quot;image&quot;: { # Basis describes the base image portion (Note) of the DockerImage relationship. Linked occurrences are derived from this or an equivalent image via: FROM Or an equivalent reference, e.g., a tag of the resource_url. # A note describing a base image.
    &quot;fingerprint&quot;: { # A set of properties that uniquely identify a given Docker image. # Required. Immutable. The fingerprint of the base image.
      &quot;v1Name&quot;: &quot;A String&quot;, # Required. The layer ID of the final layer in the Docker image&#x27;s v1 representation.
      &quot;v2Blob&quot;: [ # Required. The ordered list of v2 blobs that represent a given image.
        &quot;A String&quot;,
      ],
      &quot;v2Name&quot;: &quot;A String&quot;, # Output only. The name of the image&#x27;s v2 blobs computed via: [bottom] := v2_blobbottom := sha256(v2_blob[N] + &quot; &quot; + v2_name[N+1]) Only the name of the final blob is kept.
    },
    &quot;resourceUrl&quot;: &quot;A String&quot;, # Required. Immutable. The resource_url for the resource representing the basis of associated occurrence images.
  },
  &quot;kind&quot;: &quot;A String&quot;, # Output only. The type of analysis. This field can be used as a filter in list requests.
  &quot;longDescription&quot;: &quot;A String&quot;, # A detailed description of this note.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The name of the note in the form of `projects/[PROVIDER_ID]/notes/[NOTE_ID]`.
  &quot;package&quot;: { # PackageNote represents a particular package version. # A note describing a package hosted by various package managers.
    &quot;architecture&quot;: &quot;A String&quot;, # The CPU architecture for which packages in this distribution channel were built. Architecture will be blank for language packages.
    &quot;cpeUri&quot;: &quot;A String&quot;, # The cpe_uri in [CPE format](https://cpe.mitre.org/specification/) denoting the package manager version distributing a package. The cpe_uri will be blank for language packages.
    &quot;description&quot;: &quot;A String&quot;, # The description of this package.
    &quot;digest&quot;: [ # Hash value, typically a file digest, that allows unique identification a specific package.
      { # Digest information.
        &quot;algo&quot;: &quot;A String&quot;, # `SHA1`, `SHA512` etc.
        &quot;digestBytes&quot;: &quot;A String&quot;, # Value of the digest.
      },
    ],
    &quot;distribution&quot;: [ # Deprecated. The various channels by which a package is distributed.
      { # This represents a particular channel of distribution for a given package. E.g., Debian&#x27;s jessie-backports dpkg mirror.
        &quot;architecture&quot;: &quot;A String&quot;, # The CPU architecture for which packages in this distribution channel were built.
        &quot;cpeUri&quot;: &quot;A String&quot;, # Required. The cpe_uri in [CPE format](https://cpe.mitre.org/specification/) denoting the package manager version distributing a package.
        &quot;description&quot;: &quot;A String&quot;, # The distribution channel-specific description of this package.
        &quot;latestVersion&quot;: { # Version contains structured information about the version of a package. # The latest available version of this package in this distribution channel.
          &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
          &quot;fullName&quot;: &quot;A String&quot;, # Human readable version string. This string is of the form :- and is only set when kind is NORMAL.
          &quot;inclusive&quot;: True or False, # Whether this version is specifying part of an inclusive range. Grafeas does not have the capability to specify version ranges; instead we have fields that specify start version and end versions. At times this is insufficient - we also need to specify whether the version is included in the range or is excluded from the range. This boolean is expected to be set to true when the version is included in a range.
          &quot;kind&quot;: &quot;A String&quot;, # Required. Distinguishes between sentinel MIN/MAX versions and normal versions.
          &quot;name&quot;: &quot;A String&quot;, # Required only when version kind is NORMAL. The main part of the version name.
          &quot;revision&quot;: &quot;A String&quot;, # The iteration of the package build from the above version.
        },
        &quot;maintainer&quot;: &quot;A String&quot;, # A freeform string denoting the maintainer of this package.
        &quot;url&quot;: &quot;A String&quot;, # The distribution channel-specific homepage for this package.
      },
    ],
    &quot;license&quot;: { # License information. # Licenses that have been declared by the authors of the package.
      &quot;comments&quot;: &quot;A String&quot;, # Comments
      &quot;expression&quot;: &quot;A String&quot;, # Often a single license can be used to represent the licensing terms. Sometimes it is necessary to include a choice of one or more licenses or some combination of license identifiers. Examples: &quot;LGPL-2.1-only OR MIT&quot;, &quot;LGPL-2.1-only AND MIT&quot;, &quot;GPL-2.0-or-later WITH Bison-exception-2.2&quot;.
    },
    &quot;maintainer&quot;: &quot;A String&quot;, # A freeform text denoting the maintainer of this package.
    &quot;name&quot;: &quot;A String&quot;, # Required. Immutable. The name of the package.
    &quot;packageType&quot;: &quot;A String&quot;, # The type of package; whether native or non native (e.g., ruby gems, node.js packages, etc.).
    &quot;url&quot;: &quot;A String&quot;, # The homepage for this package.
    &quot;version&quot;: { # Version contains structured information about the version of a package. # The version of the package.
      &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
      &quot;fullName&quot;: &quot;A String&quot;, # Human readable version string. This string is of the form :- and is only set when kind is NORMAL.
      &quot;inclusive&quot;: True or False, # Whether this version is specifying part of an inclusive range. Grafeas does not have the capability to specify version ranges; instead we have fields that specify start version and end versions. At times this is insufficient - we also need to specify whether the version is included in the range or is excluded from the range. This boolean is expected to be set to true when the version is included in a range.
      &quot;kind&quot;: &quot;A String&quot;, # Required. Distinguishes between sentinel MIN/MAX versions and normal versions.
      &quot;name&quot;: &quot;A String&quot;, # Required only when version kind is NORMAL. The main part of the version name.
      &quot;revision&quot;: &quot;A String&quot;, # The iteration of the package build from the above version.
    },
  },
  &quot;relatedNoteNames&quot;: [ # Other notes related to this note.
    &quot;A String&quot;,
  ],
  &quot;relatedUrl&quot;: [ # URLs associated with this note.
    { # Metadata for any related URL information.
      &quot;label&quot;: &quot;A String&quot;, # Label to describe usage of the URL.
      &quot;url&quot;: &quot;A String&quot;, # Specific URL associated with the resource.
    },
  ],
  &quot;sbomReference&quot;: { # The note representing an SBOM reference. # A note describing an SBOM reference.
    &quot;format&quot;: &quot;A String&quot;, # The format that SBOM takes. E.g. may be spdx, cyclonedx, etc...
    &quot;version&quot;: &quot;A String&quot;, # The version of the format that the SBOM takes. E.g. if the format is spdx, the version may be 2.3.
  },
  &quot;shortDescription&quot;: &quot;A String&quot;, # A one sentence description of this note.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time this note was last updated. This field can be used as a filter in list requests.
  &quot;upgrade&quot;: { # An Upgrade Note represents a potential upgrade of a package to a given version. For each package version combination (i.e. bash 4.0, bash 4.1, bash 4.1.2), there will be an Upgrade Note. For Windows, windows_update field represents the information related to the update. # A note describing available package upgrades.
    &quot;distributions&quot;: [ # Metadata about the upgrade for each specific operating system.
      { # The Upgrade Distribution represents metadata about the Upgrade for each operating system (CPE). Some distributions have additional metadata around updates, classifying them into various categories and severities.
        &quot;classification&quot;: &quot;A String&quot;, # The operating system classification of this Upgrade, as specified by the upstream operating system upgrade feed. For Windows the classification is one of the category_ids listed at https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ff357803(v=vs.85)
        &quot;cpeUri&quot;: &quot;A String&quot;, # Required - The specific operating system this metadata applies to. See https://cpe.mitre.org/specification/.
        &quot;cve&quot;: [ # The cve tied to this Upgrade.
          &quot;A String&quot;,
        ],
        &quot;severity&quot;: &quot;A String&quot;, # The severity as specified by the upstream operating system.
      },
    ],
    &quot;package&quot;: &quot;A String&quot;, # Required for non-Windows OS. The package this Upgrade is for.
    &quot;version&quot;: { # Version contains structured information about the version of a package. # Required for non-Windows OS. The version of the package in machine + human readable form.
      &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
      &quot;fullName&quot;: &quot;A String&quot;, # Human readable version string. This string is of the form :- and is only set when kind is NORMAL.
      &quot;inclusive&quot;: True or False, # Whether this version is specifying part of an inclusive range. Grafeas does not have the capability to specify version ranges; instead we have fields that specify start version and end versions. At times this is insufficient - we also need to specify whether the version is included in the range or is excluded from the range. This boolean is expected to be set to true when the version is included in a range.
      &quot;kind&quot;: &quot;A String&quot;, # Required. Distinguishes between sentinel MIN/MAX versions and normal versions.
      &quot;name&quot;: &quot;A String&quot;, # Required only when version kind is NORMAL. The main part of the version name.
      &quot;revision&quot;: &quot;A String&quot;, # The iteration of the package build from the above version.
    },
    &quot;windowsUpdate&quot;: { # Windows Update represents the metadata about the update for the Windows operating system. The fields in this message come from the Windows Update API documented at https://docs.microsoft.com/en-us/windows/win32/api/wuapi/nn-wuapi-iupdate. # Required for Windows OS. Represents the metadata about the Windows update.
      &quot;categories&quot;: [ # The list of categories to which the update belongs.
        { # The category to which the update belongs.
          &quot;categoryId&quot;: &quot;A String&quot;, # The identifier of the category.
          &quot;name&quot;: &quot;A String&quot;, # The localized name of the category.
        },
      ],
      &quot;description&quot;: &quot;A String&quot;, # The localized description of the update.
      &quot;identity&quot;: { # The unique identifier of the update. # Required - The unique identifier for the update.
        &quot;revision&quot;: 42, # The revision number of the update.
        &quot;updateId&quot;: &quot;A String&quot;, # The revision independent identifier of the update.
      },
      &quot;kbArticleIds&quot;: [ # The Microsoft Knowledge Base article IDs that are associated with the update.
        &quot;A String&quot;,
      ],
      &quot;lastPublishedTimestamp&quot;: &quot;A String&quot;, # The last published timestamp of the update.
      &quot;supportUrl&quot;: &quot;A String&quot;, # The hyperlink to the support information for the update.
      &quot;title&quot;: &quot;A String&quot;, # The localized title of the update.
    },
  },
  &quot;vulnerability&quot;: { # A security vulnerability that can be found in resources. # A note describing a package vulnerability.
    &quot;cvssScore&quot;: 3.14, # The CVSS score of this vulnerability. CVSS score is on a scale of 0 - 10 where 0 indicates low severity and 10 indicates high severity.
    &quot;cvssV2&quot;: { # Common Vulnerability Scoring System. For details, see https://www.first.org/cvss/specification-document This is a message we will try to use for storing various versions of CVSS rather than making a separate proto for storing a specific version. # The full description of the v2 CVSS for this vulnerability.
      &quot;attackComplexity&quot;: &quot;A String&quot;,
      &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.
      &quot;authentication&quot;: &quot;A String&quot;,
      &quot;availabilityImpact&quot;: &quot;A String&quot;,
      &quot;baseScore&quot;: 3.14, # The base score is a function of the base metric scores.
      &quot;confidentialityImpact&quot;: &quot;A String&quot;,
      &quot;exploitabilityScore&quot;: 3.14,
      &quot;impactScore&quot;: 3.14,
      &quot;integrityImpact&quot;: &quot;A String&quot;,
      &quot;privilegesRequired&quot;: &quot;A String&quot;,
      &quot;scope&quot;: &quot;A String&quot;,
      &quot;userInteraction&quot;: &quot;A String&quot;,
    },
    &quot;cvssV3&quot;: { # Common Vulnerability Scoring System version 3. For details, see https://www.first.org/cvss/specification-document # The full description of the CVSSv3 for this vulnerability.
      &quot;attackComplexity&quot;: &quot;A String&quot;,
      &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.
      &quot;availabilityImpact&quot;: &quot;A String&quot;,
      &quot;baseScore&quot;: 3.14, # The base score is a function of the base metric scores.
      &quot;confidentialityImpact&quot;: &quot;A String&quot;,
      &quot;exploitabilityScore&quot;: 3.14,
      &quot;impactScore&quot;: 3.14,
      &quot;integrityImpact&quot;: &quot;A String&quot;,
      &quot;privilegesRequired&quot;: &quot;A String&quot;,
      &quot;scope&quot;: &quot;A String&quot;,
      &quot;userInteraction&quot;: &quot;A String&quot;,
    },
    &quot;cvssVersion&quot;: &quot;A String&quot;, # CVSS version used to populate cvss_score and severity.
    &quot;details&quot;: [ # Details of all known distros and packages affected by this vulnerability.
      { # A detail for a distro and package affected by this vulnerability and its associated fix (if one is available).
        &quot;affectedCpeUri&quot;: &quot;A String&quot;, # Required. The [CPE URI](https://cpe.mitre.org/specification/) this vulnerability affects.
        &quot;affectedPackage&quot;: &quot;A String&quot;, # Required. The package this vulnerability affects.
        &quot;affectedVersionEnd&quot;: { # Version contains structured information about the version of a package. # The version number at the end of an interval in which this vulnerability exists. A vulnerability can affect a package between version numbers that are disjoint sets of intervals (example: [1.0.0-1.1.0], [2.4.6-2.4.8] and [4.5.6-4.6.8]) each of which will be represented in its own Detail. If a specific affected version is provided by a vulnerability database, affected_version_start and affected_version_end will be the same in that Detail.
          &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
          &quot;fullName&quot;: &quot;A String&quot;, # Human readable version string. This string is of the form :- and is only set when kind is NORMAL.
          &quot;inclusive&quot;: True or False, # Whether this version is specifying part of an inclusive range. Grafeas does not have the capability to specify version ranges; instead we have fields that specify start version and end versions. At times this is insufficient - we also need to specify whether the version is included in the range or is excluded from the range. This boolean is expected to be set to true when the version is included in a range.
          &quot;kind&quot;: &quot;A String&quot;, # Required. Distinguishes between sentinel MIN/MAX versions and normal versions.
          &quot;name&quot;: &quot;A String&quot;, # Required only when version kind is NORMAL. The main part of the version name.
          &quot;revision&quot;: &quot;A String&quot;, # The iteration of the package build from the above version.
        },
        &quot;affectedVersionStart&quot;: { # Version contains structured information about the version of a package. # The version number at the start of an interval in which this vulnerability exists. A vulnerability can affect a package between version numbers that are disjoint sets of intervals (example: [1.0.0-1.1.0], [2.4.6-2.4.8] and [4.5.6-4.6.8]) each of which will be represented in its own Detail. If a specific affected version is provided by a vulnerability database, affected_version_start and affected_version_end will be the same in that Detail.
          &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
          &quot;fullName&quot;: &quot;A String&quot;, # Human readable version string. This string is of the form :- and is only set when kind is NORMAL.
          &quot;inclusive&quot;: True or False, # Whether this version is specifying part of an inclusive range. Grafeas does not have the capability to specify version ranges; instead we have fields that specify start version and end versions. At times this is insufficient - we also need to specify whether the version is included in the range or is excluded from the range. This boolean is expected to be set to true when the version is included in a range.
          &quot;kind&quot;: &quot;A String&quot;, # Required. Distinguishes between sentinel MIN/MAX versions and normal versions.
          &quot;name&quot;: &quot;A String&quot;, # Required only when version kind is NORMAL. The main part of the version name.
          &quot;revision&quot;: &quot;A String&quot;, # The iteration of the package build from the above version.
        },
        &quot;description&quot;: &quot;A String&quot;, # A vendor-specific description of this vulnerability.
        &quot;fixedCpeUri&quot;: &quot;A String&quot;, # The distro recommended [CPE URI](https://cpe.mitre.org/specification/) to update to that contains a fix for this vulnerability. It is possible for this to be different from the affected_cpe_uri.
        &quot;fixedPackage&quot;: &quot;A String&quot;, # The distro recommended package to update to that contains a fix for this vulnerability. It is possible for this to be different from the affected_package.
        &quot;fixedVersion&quot;: { # Version contains structured information about the version of a package. # The distro recommended version to update to that contains a fix for this vulnerability. Setting this to VersionKind.MAXIMUM means no such version is yet available.
          &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
          &quot;fullName&quot;: &quot;A String&quot;, # Human readable version string. This string is of the form :- and is only set when kind is NORMAL.
          &quot;inclusive&quot;: True or False, # Whether this version is specifying part of an inclusive range. Grafeas does not have the capability to specify version ranges; instead we have fields that specify start version and end versions. At times this is insufficient - we also need to specify whether the version is included in the range or is excluded from the range. This boolean is expected to be set to true when the version is included in a range.
          &quot;kind&quot;: &quot;A String&quot;, # Required. Distinguishes between sentinel MIN/MAX versions and normal versions.
          &quot;name&quot;: &quot;A String&quot;, # Required only when version kind is NORMAL. The main part of the version name.
          &quot;revision&quot;: &quot;A String&quot;, # The iteration of the package build from the above version.
        },
        &quot;isObsolete&quot;: True or False, # Whether this detail is obsolete. Occurrences are expected not to point to obsolete details.
        &quot;packageType&quot;: &quot;A String&quot;, # The type of package; whether native or non native (e.g., ruby gems, node.js packages, etc.).
        &quot;severityName&quot;: &quot;A String&quot;, # The distro assigned severity of this vulnerability.
        &quot;source&quot;: &quot;A String&quot;, # The source from which the information in this Detail was obtained.
        &quot;sourceUpdateTime&quot;: &quot;A String&quot;, # The time this information was last changed at the source. This is an upstream timestamp from the underlying information source - e.g. Ubuntu security tracker.
        &quot;vendor&quot;: &quot;A String&quot;, # The name of the vendor of the product.
      },
    ],
    &quot;severity&quot;: &quot;A String&quot;, # The note provider assigned severity of this vulnerability.
    &quot;sourceUpdateTime&quot;: &quot;A String&quot;, # The time this information was last changed at the source. This is an upstream timestamp from the underlying information source - e.g. Ubuntu security tracker.
    &quot;windowsDetails&quot;: [ # Windows details get their own format because the information format and model don&#x27;t match a normal detail. Specifically Windows updates are done as patches, thus Windows vulnerabilities really are a missing package, rather than a package being at an incorrect version.
      {
        &quot;cpeUri&quot;: &quot;A String&quot;, # Required. The [CPE URI](https://cpe.mitre.org/specification/) this vulnerability affects.
        &quot;description&quot;: &quot;A String&quot;, # The description of this vulnerability.
        &quot;fixingKbs&quot;: [ # Required. The names of the KBs which have hotfixes to mitigate this vulnerability. Note that there may be multiple hotfixes (and thus multiple KBs) that mitigate a given vulnerability. Currently any listed KBs presence is considered a fix.
          {
            &quot;name&quot;: &quot;A String&quot;, # The KB name (generally of the form KB[0-9]+ (e.g., KB123456)).
            &quot;url&quot;: &quot;A String&quot;, # A link to the KB in the [Windows update catalog] (https://www.catalog.update.microsoft.com/).
          },
        ],
        &quot;name&quot;: &quot;A String&quot;, # Required. The name of this vulnerability.
      },
    ],
  },
  &quot;vulnerabilityAssessment&quot;: { # A single VulnerabilityAssessmentNote represents one particular product&#x27;s vulnerability assessment for one CVE. # A note describing a vulnerability assessment.
    &quot;assessment&quot;: { # Assessment provides all information that is related to a single vulnerability for this product. # Represents a vulnerability assessment for the product.
      &quot;cve&quot;: &quot;A String&quot;, # Holds the MITRE standard Common Vulnerabilities and Exposures (CVE) tracking number for the vulnerability. Deprecated: Use vulnerability_id instead to denote CVEs.
      &quot;impacts&quot;: [ # Contains information about the impact of this vulnerability, this will change with time.
        &quot;A String&quot;,
      ],
      &quot;justification&quot;: { # Justification provides the justification when the state of the assessment if NOT_AFFECTED. # Justification provides the justification when the state of the assessment if NOT_AFFECTED.
        &quot;details&quot;: &quot;A String&quot;, # Additional details on why this justification was chosen.
        &quot;justificationType&quot;: &quot;A String&quot;, # The justification type for this vulnerability.
      },
      &quot;longDescription&quot;: &quot;A String&quot;, # A detailed description of this Vex.
      &quot;relatedUris&quot;: [ # Holds a list of references associated with this vulnerability item and assessment. These uris have additional information about the vulnerability and the assessment itself. E.g. Link to a document which details how this assessment concluded the state of this vulnerability.
        { # Metadata for any related URL information.
          &quot;label&quot;: &quot;A String&quot;, # Label to describe usage of the URL.
          &quot;url&quot;: &quot;A String&quot;, # Specific URL associated with the resource.
        },
      ],
      &quot;remediations&quot;: [ # Specifies details on how to handle (and presumably, fix) a vulnerability.
        { # Specifies details on how to handle (and presumably, fix) a vulnerability.
          &quot;details&quot;: &quot;A String&quot;, # Contains a comprehensive human-readable discussion of the remediation.
          &quot;remediationType&quot;: &quot;A String&quot;, # The type of remediation that can be applied.
          &quot;remediationUri&quot;: { # Metadata for any related URL information. # Contains the URL where to obtain the remediation.
            &quot;label&quot;: &quot;A String&quot;, # Label to describe usage of the URL.
            &quot;url&quot;: &quot;A String&quot;, # Specific URL associated with the resource.
          },
        },
      ],
      &quot;shortDescription&quot;: &quot;A String&quot;, # A one sentence description of this Vex.
      &quot;state&quot;: &quot;A String&quot;, # Provides the state of this Vulnerability assessment.
      &quot;vulnerabilityId&quot;: &quot;A String&quot;, # The vulnerability identifier for this Assessment. Will hold one of common identifiers e.g. CVE, GHSA etc.
    },
    &quot;languageCode&quot;: &quot;A String&quot;, # Identifies the language used by this document, corresponding to IETF BCP 47 / RFC 5646.
    &quot;longDescription&quot;: &quot;A String&quot;, # A detailed description of this Vex.
    &quot;product&quot;: { # Product contains information about a product and how to uniquely identify it. # The product affected by this vex.
      &quot;genericUri&quot;: &quot;A String&quot;, # Contains a URI which is vendor-specific. Example: The artifact repository URL of an image.
      &quot;id&quot;: &quot;A String&quot;, # Token that identifies a product so that it can be referred to from other parts in the document. There is no predefined format as long as it uniquely identifies a group in the context of the current document.
      &quot;name&quot;: &quot;A String&quot;, # Name of the product.
    },
    &quot;publisher&quot;: { # Publisher contains information about the publisher of this Note. # Publisher details of this Note.
      &quot;issuingAuthority&quot;: &quot;A String&quot;, # Provides information about the authority of the issuing party to release the document, in particular, the party&#x27;s constituency and responsibilities or other obligations.
      &quot;name&quot;: &quot;A String&quot;, # Name of the publisher. Examples: &#x27;Google&#x27;, &#x27;Google Cloud Platform&#x27;.
      &quot;publisherNamespace&quot;: &quot;A String&quot;, # The context or namespace. Contains a URL which is under control of the issuing party and can be used as a globally unique identifier for that issuing party. Example: https://csaf.io
    },
    &quot;shortDescription&quot;: &quot;A String&quot;, # A one sentence description of this Vex.
    &quot;title&quot;: &quot;A String&quot;, # The title of the note. E.g. `Vex-Debian-11.4`
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="getIamPolicy">getIamPolicy(resource, body=None, x__xgafv=None)</code>
  <pre>Gets the access control policy for a note or an occurrence resource. Requires `containeranalysis.notes.setIamPolicy` or `containeranalysis.occurrences.setIamPolicy` permission if the resource is a note or occurrence, respectively. The resource takes the format `projects/[PROJECT_ID]/notes/[NOTE_ID]` for notes and `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]` for occurrences.

Args:
  resource: string, REQUIRED: The resource for which the policy is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for `GetIamPolicy` method.
  &quot;options&quot;: { # Encapsulates settings provided to GetIamPolicy. # OPTIONAL: A `GetPolicyOptions` object for specifying options to `GetIamPolicy`.
    &quot;requestedPolicyVersion&quot;: 42, # Optional. The maximum policy version that will be used to format the policy. Valid values are 0, 1, and 3. Requests specifying an invalid value will be rejected. Requests for policies with any conditional role bindings must specify version 3. Policies with no conditional role bindings may specify any valid value or leave the field unset. The policy in the response might use the policy version that you specified, or it might use a lower policy version. For example, if you specify version 3, but the policy has no conditional role bindings, the response uses version 1. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
  },
}

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

Returns:
  An object of the form:

    { # An Identity and Access Management (IAM) policy, which specifies access controls for Google Cloud resources. A `Policy` is a collection of `bindings`. A `binding` binds one or more `members`, or principals, to a single `role`. Principals can be user accounts, service accounts, Google groups, and domains (such as G Suite). A `role` is a named list of permissions; each `role` can be an IAM predefined role or a user-created custom role. For some types of Google Cloud resources, a `binding` can also specify a `condition`, which is a logical expression that allows access to a resource only if the expression evaluates to `true`. A condition can add constraints based on attributes of the request, the resource, or both. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies). **JSON example:** ``` { &quot;bindings&quot;: [ { &quot;role&quot;: &quot;roles/resourcemanager.organizationAdmin&quot;, &quot;members&quot;: [ &quot;user:mike@example.com&quot;, &quot;group:admins@example.com&quot;, &quot;domain:google.com&quot;, &quot;serviceAccount:my-project-id@appspot.gserviceaccount.com&quot; ] }, { &quot;role&quot;: &quot;roles/resourcemanager.organizationViewer&quot;, &quot;members&quot;: [ &quot;user:eve@example.com&quot; ], &quot;condition&quot;: { &quot;title&quot;: &quot;expirable access&quot;, &quot;description&quot;: &quot;Does not grant access after Sep 2020&quot;, &quot;expression&quot;: &quot;request.time &lt; timestamp(&#x27;2020-10-01T00:00:00.000Z&#x27;)&quot;, } } ], &quot;etag&quot;: &quot;BwWWja0YfJA=&quot;, &quot;version&quot;: 3 } ``` **YAML example:** ``` bindings: - members: - user:mike@example.com - group:admins@example.com - domain:google.com - serviceAccount:my-project-id@appspot.gserviceaccount.com role: roles/resourcemanager.organizationAdmin - members: - user:eve@example.com role: roles/resourcemanager.organizationViewer condition: title: expirable access description: Does not grant access after Sep 2020 expression: request.time &lt; timestamp(&#x27;2020-10-01T00:00:00.000Z&#x27;) etag: BwWWja0YfJA= version: 3 ``` For a description of IAM and its features, see the [IAM documentation](https://cloud.google.com/iam/docs/).
  &quot;bindings&quot;: [ # Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.
    { # Associates `members`, or principals, with a `role`.
      &quot;condition&quot;: { # Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: &quot;Summary size limit&quot; description: &quot;Determines if a summary is less than 100 chars&quot; expression: &quot;document.summary.size() &lt; 100&quot; Example (Equality): title: &quot;Requestor is owner&quot; description: &quot;Determines if requestor is the document owner&quot; expression: &quot;document.owner == request.auth.claims.email&quot; Example (Logic): title: &quot;Public documents&quot; description: &quot;Determine whether the document should be publicly visible&quot; expression: &quot;document.type != &#x27;private&#x27; &amp;&amp; document.type != &#x27;internal&#x27;&quot; Example (Data Manipulation): title: &quot;Notification string&quot; description: &quot;Create a notification string with a timestamp.&quot; expression: &quot;&#x27;New message received at &#x27; + string(document.create_time)&quot; The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information. # The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
        &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.
        &quot;expression&quot;: &quot;A String&quot;, # Textual representation of an expression in Common Expression Language syntax.
        &quot;location&quot;: &quot;A String&quot;, # Optional. String indicating the location of the expression for error reporting, e.g. a file name and a position in the file.
        &quot;title&quot;: &quot;A String&quot;, # Optional. Title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.
      },
      &quot;members&quot;: [ # Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}`: A single identity in a workforce identity pool. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/group/{group_id}`: All workforce identities in a group. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/attribute.{attribute_name}/{attribute_value}`: All workforce identities with a specific attribute value. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/*`: All identities in a workforce identity pool. * `principal://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/subject/{subject_attribute_value}`: A single identity in a workload identity pool. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/group/{group_id}`: A workload identity pool group. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/attribute.{attribute_name}/{attribute_value}`: All identities in a workload identity pool with a certain attribute. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/*`: All identities in a workload identity pool. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding. * `deleted:principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}`: Deleted single identity in a workforce identity pool. For example, `deleted:principal://iam.googleapis.com/locations/global/workforcePools/my-pool-id/subject/my-subject-attribute-value`.
        &quot;A String&quot;,
      ],
      &quot;role&quot;: &quot;A String&quot;, # Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`. For an overview of the IAM roles and permissions, see the [IAM documentation](https://cloud.google.com/iam/docs/roles-overview). For a list of the available pre-defined roles, see [here](https://cloud.google.com/iam/docs/understanding-roles).
    },
  ],
  &quot;etag&quot;: &quot;A String&quot;, # `etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.
  &quot;version&quot;: 42, # Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, filter=None, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists notes for the specified project.

Args:
  parent: string, Required. The name of the project to list notes for in the form of `projects/[PROJECT_ID]`. (required)
  filter: string, The filter expression.
  pageSize: integer, Number of notes to return in the list. Must be positive. Max allowed page size is 1000. If not specified, page size defaults to 20.
  pageToken: string, Token to provide to skip to a particular spot in the list.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response for listing notes.
  &quot;nextPageToken&quot;: &quot;A String&quot;, # The next pagination token in the list response. It should be used as `page_token` for the following request. An empty value means no more results.
  &quot;notes&quot;: [ # The notes requested.
    { # A type of analysis that can be done for a resource.
      &quot;attestation&quot;: { # Note kind that represents a logical attestation &quot;role&quot; or &quot;authority&quot;. For example, an organization might have one `Authority` for &quot;QA&quot; and one for &quot;build&quot;. This note is intended to act strictly as a grouping mechanism for the attached occurrences (Attestations). This grouping mechanism also provides a security boundary, since IAM ACLs gate the ability for a principle to attach an occurrence to a given note. It also provides a single point of lookup to find all attached attestation occurrences, even if they don&#x27;t all live in the same project. # A note describing an attestation role.
        &quot;hint&quot;: { # This submessage provides human-readable hints about the purpose of the authority. Because the name of a note acts as its resource reference, it is important to disambiguate the canonical name of the Note (which might be a UUID for security purposes) from &quot;readable&quot; names more suitable for debug output. Note that these hints should not be used to look up authorities in security sensitive contexts, such as when looking up attestations to verify. # Hint hints at the purpose of the attestation authority.
          &quot;humanReadableName&quot;: &quot;A String&quot;, # Required. The human readable name of this attestation authority, for example &quot;qa&quot;.
        },
      },
      &quot;build&quot;: { # Note holding the version of the provider&#x27;s builder and the signature of the provenance message in the build details occurrence. # A note describing build provenance for a verifiable build.
        &quot;builderVersion&quot;: &quot;A String&quot;, # Required. Immutable. Version of the builder which produced this build.
      },
      &quot;compliance&quot;: { # A note describing a compliance check.
        &quot;cisBenchmark&quot;: { # A compliance check that is a CIS benchmark.
          &quot;profileLevel&quot;: 42,
          &quot;severity&quot;: &quot;A String&quot;,
        },
        &quot;description&quot;: &quot;A String&quot;, # A description about this compliance check.
        &quot;impact&quot;: &quot;A String&quot;,
        &quot;rationale&quot;: &quot;A String&quot;, # A rationale for the existence of this compliance check.
        &quot;remediation&quot;: &quot;A String&quot;, # A description of remediation steps if the compliance check fails.
        &quot;scanInstructions&quot;: &quot;A String&quot;, # Serialized scan instructions with a predefined format.
        &quot;title&quot;: &quot;A String&quot;, # The title that identifies this compliance check.
        &quot;version&quot;: [ # The OS and config versions the benchmark applies to.
          { # Describes the CIS benchmark version that is applicable to a given OS and os version.
            &quot;benchmarkDocument&quot;: &quot;A String&quot;, # The name of the document that defines this benchmark, e.g. &quot;CIS Container-Optimized OS&quot;.
            &quot;cpeUri&quot;: &quot;A String&quot;, # The CPE URI (https://cpe.mitre.org/specification/) this benchmark is applicable to.
            &quot;version&quot;: &quot;A String&quot;, # The version of the benchmark. This is set to the version of the OS-specific CIS document the benchmark is defined in.
          },
        ],
      },
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time this note was created. This field can be used as a filter in list requests.
      &quot;deployment&quot;: { # An artifact that can be deployed in some runtime. # A note describing something that can be deployed.
        &quot;resourceUri&quot;: [ # Required. Resource URI for the artifact being deployed.
          &quot;A String&quot;,
        ],
      },
      &quot;discovery&quot;: { # A note that indicates a type of analysis a provider would perform. This note exists in a provider&#x27;s project. A `Discovery` occurrence is created in a consumer&#x27;s project at the start of analysis. # A note describing the initial analysis of a resource.
        &quot;analysisKind&quot;: &quot;A String&quot;, # Required. Immutable. The kind of analysis that is handled by this discovery.
      },
      &quot;dsseAttestation&quot;: { # A note describing a dsse attestation note.
        &quot;hint&quot;: { # This submessage provides human-readable hints about the purpose of the authority. Because the name of a note acts as its resource reference, it is important to disambiguate the canonical name of the Note (which might be a UUID for security purposes) from &quot;readable&quot; names more suitable for debug output. Note that these hints should not be used to look up authorities in security sensitive contexts, such as when looking up attestations to verify. # DSSEHint hints at the purpose of the attestation authority.
          &quot;humanReadableName&quot;: &quot;A String&quot;, # Required. The human readable name of this attestation authority, for example &quot;cloudbuild-prod&quot;.
        },
      },
      &quot;expirationTime&quot;: &quot;A String&quot;, # Time of expiration for this note. Empty if note does not expire.
      &quot;image&quot;: { # Basis describes the base image portion (Note) of the DockerImage relationship. Linked occurrences are derived from this or an equivalent image via: FROM Or an equivalent reference, e.g., a tag of the resource_url. # A note describing a base image.
        &quot;fingerprint&quot;: { # A set of properties that uniquely identify a given Docker image. # Required. Immutable. The fingerprint of the base image.
          &quot;v1Name&quot;: &quot;A String&quot;, # Required. The layer ID of the final layer in the Docker image&#x27;s v1 representation.
          &quot;v2Blob&quot;: [ # Required. The ordered list of v2 blobs that represent a given image.
            &quot;A String&quot;,
          ],
          &quot;v2Name&quot;: &quot;A String&quot;, # Output only. The name of the image&#x27;s v2 blobs computed via: [bottom] := v2_blobbottom := sha256(v2_blob[N] + &quot; &quot; + v2_name[N+1]) Only the name of the final blob is kept.
        },
        &quot;resourceUrl&quot;: &quot;A String&quot;, # Required. Immutable. The resource_url for the resource representing the basis of associated occurrence images.
      },
      &quot;kind&quot;: &quot;A String&quot;, # Output only. The type of analysis. This field can be used as a filter in list requests.
      &quot;longDescription&quot;: &quot;A String&quot;, # A detailed description of this note.
      &quot;name&quot;: &quot;A String&quot;, # Output only. The name of the note in the form of `projects/[PROVIDER_ID]/notes/[NOTE_ID]`.
      &quot;package&quot;: { # PackageNote represents a particular package version. # A note describing a package hosted by various package managers.
        &quot;architecture&quot;: &quot;A String&quot;, # The CPU architecture for which packages in this distribution channel were built. Architecture will be blank for language packages.
        &quot;cpeUri&quot;: &quot;A String&quot;, # The cpe_uri in [CPE format](https://cpe.mitre.org/specification/) denoting the package manager version distributing a package. The cpe_uri will be blank for language packages.
        &quot;description&quot;: &quot;A String&quot;, # The description of this package.
        &quot;digest&quot;: [ # Hash value, typically a file digest, that allows unique identification a specific package.
          { # Digest information.
            &quot;algo&quot;: &quot;A String&quot;, # `SHA1`, `SHA512` etc.
            &quot;digestBytes&quot;: &quot;A String&quot;, # Value of the digest.
          },
        ],
        &quot;distribution&quot;: [ # Deprecated. The various channels by which a package is distributed.
          { # This represents a particular channel of distribution for a given package. E.g., Debian&#x27;s jessie-backports dpkg mirror.
            &quot;architecture&quot;: &quot;A String&quot;, # The CPU architecture for which packages in this distribution channel were built.
            &quot;cpeUri&quot;: &quot;A String&quot;, # Required. The cpe_uri in [CPE format](https://cpe.mitre.org/specification/) denoting the package manager version distributing a package.
            &quot;description&quot;: &quot;A String&quot;, # The distribution channel-specific description of this package.
            &quot;latestVersion&quot;: { # Version contains structured information about the version of a package. # The latest available version of this package in this distribution channel.
              &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
              &quot;fullName&quot;: &quot;A String&quot;, # Human readable version string. This string is of the form :- and is only set when kind is NORMAL.
              &quot;inclusive&quot;: True or False, # Whether this version is specifying part of an inclusive range. Grafeas does not have the capability to specify version ranges; instead we have fields that specify start version and end versions. At times this is insufficient - we also need to specify whether the version is included in the range or is excluded from the range. This boolean is expected to be set to true when the version is included in a range.
              &quot;kind&quot;: &quot;A String&quot;, # Required. Distinguishes between sentinel MIN/MAX versions and normal versions.
              &quot;name&quot;: &quot;A String&quot;, # Required only when version kind is NORMAL. The main part of the version name.
              &quot;revision&quot;: &quot;A String&quot;, # The iteration of the package build from the above version.
            },
            &quot;maintainer&quot;: &quot;A String&quot;, # A freeform string denoting the maintainer of this package.
            &quot;url&quot;: &quot;A String&quot;, # The distribution channel-specific homepage for this package.
          },
        ],
        &quot;license&quot;: { # License information. # Licenses that have been declared by the authors of the package.
          &quot;comments&quot;: &quot;A String&quot;, # Comments
          &quot;expression&quot;: &quot;A String&quot;, # Often a single license can be used to represent the licensing terms. Sometimes it is necessary to include a choice of one or more licenses or some combination of license identifiers. Examples: &quot;LGPL-2.1-only OR MIT&quot;, &quot;LGPL-2.1-only AND MIT&quot;, &quot;GPL-2.0-or-later WITH Bison-exception-2.2&quot;.
        },
        &quot;maintainer&quot;: &quot;A String&quot;, # A freeform text denoting the maintainer of this package.
        &quot;name&quot;: &quot;A String&quot;, # Required. Immutable. The name of the package.
        &quot;packageType&quot;: &quot;A String&quot;, # The type of package; whether native or non native (e.g., ruby gems, node.js packages, etc.).
        &quot;url&quot;: &quot;A String&quot;, # The homepage for this package.
        &quot;version&quot;: { # Version contains structured information about the version of a package. # The version of the package.
          &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
          &quot;fullName&quot;: &quot;A String&quot;, # Human readable version string. This string is of the form :- and is only set when kind is NORMAL.
          &quot;inclusive&quot;: True or False, # Whether this version is specifying part of an inclusive range. Grafeas does not have the capability to specify version ranges; instead we have fields that specify start version and end versions. At times this is insufficient - we also need to specify whether the version is included in the range or is excluded from the range. This boolean is expected to be set to true when the version is included in a range.
          &quot;kind&quot;: &quot;A String&quot;, # Required. Distinguishes between sentinel MIN/MAX versions and normal versions.
          &quot;name&quot;: &quot;A String&quot;, # Required only when version kind is NORMAL. The main part of the version name.
          &quot;revision&quot;: &quot;A String&quot;, # The iteration of the package build from the above version.
        },
      },
      &quot;relatedNoteNames&quot;: [ # Other notes related to this note.
        &quot;A String&quot;,
      ],
      &quot;relatedUrl&quot;: [ # URLs associated with this note.
        { # Metadata for any related URL information.
          &quot;label&quot;: &quot;A String&quot;, # Label to describe usage of the URL.
          &quot;url&quot;: &quot;A String&quot;, # Specific URL associated with the resource.
        },
      ],
      &quot;sbomReference&quot;: { # The note representing an SBOM reference. # A note describing an SBOM reference.
        &quot;format&quot;: &quot;A String&quot;, # The format that SBOM takes. E.g. may be spdx, cyclonedx, etc...
        &quot;version&quot;: &quot;A String&quot;, # The version of the format that the SBOM takes. E.g. if the format is spdx, the version may be 2.3.
      },
      &quot;shortDescription&quot;: &quot;A String&quot;, # A one sentence description of this note.
      &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time this note was last updated. This field can be used as a filter in list requests.
      &quot;upgrade&quot;: { # An Upgrade Note represents a potential upgrade of a package to a given version. For each package version combination (i.e. bash 4.0, bash 4.1, bash 4.1.2), there will be an Upgrade Note. For Windows, windows_update field represents the information related to the update. # A note describing available package upgrades.
        &quot;distributions&quot;: [ # Metadata about the upgrade for each specific operating system.
          { # The Upgrade Distribution represents metadata about the Upgrade for each operating system (CPE). Some distributions have additional metadata around updates, classifying them into various categories and severities.
            &quot;classification&quot;: &quot;A String&quot;, # The operating system classification of this Upgrade, as specified by the upstream operating system upgrade feed. For Windows the classification is one of the category_ids listed at https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ff357803(v=vs.85)
            &quot;cpeUri&quot;: &quot;A String&quot;, # Required - The specific operating system this metadata applies to. See https://cpe.mitre.org/specification/.
            &quot;cve&quot;: [ # The cve tied to this Upgrade.
              &quot;A String&quot;,
            ],
            &quot;severity&quot;: &quot;A String&quot;, # The severity as specified by the upstream operating system.
          },
        ],
        &quot;package&quot;: &quot;A String&quot;, # Required for non-Windows OS. The package this Upgrade is for.
        &quot;version&quot;: { # Version contains structured information about the version of a package. # Required for non-Windows OS. The version of the package in machine + human readable form.
          &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
          &quot;fullName&quot;: &quot;A String&quot;, # Human readable version string. This string is of the form :- and is only set when kind is NORMAL.
          &quot;inclusive&quot;: True or False, # Whether this version is specifying part of an inclusive range. Grafeas does not have the capability to specify version ranges; instead we have fields that specify start version and end versions. At times this is insufficient - we also need to specify whether the version is included in the range or is excluded from the range. This boolean is expected to be set to true when the version is included in a range.
          &quot;kind&quot;: &quot;A String&quot;, # Required. Distinguishes between sentinel MIN/MAX versions and normal versions.
          &quot;name&quot;: &quot;A String&quot;, # Required only when version kind is NORMAL. The main part of the version name.
          &quot;revision&quot;: &quot;A String&quot;, # The iteration of the package build from the above version.
        },
        &quot;windowsUpdate&quot;: { # Windows Update represents the metadata about the update for the Windows operating system. The fields in this message come from the Windows Update API documented at https://docs.microsoft.com/en-us/windows/win32/api/wuapi/nn-wuapi-iupdate. # Required for Windows OS. Represents the metadata about the Windows update.
          &quot;categories&quot;: [ # The list of categories to which the update belongs.
            { # The category to which the update belongs.
              &quot;categoryId&quot;: &quot;A String&quot;, # The identifier of the category.
              &quot;name&quot;: &quot;A String&quot;, # The localized name of the category.
            },
          ],
          &quot;description&quot;: &quot;A String&quot;, # The localized description of the update.
          &quot;identity&quot;: { # The unique identifier of the update. # Required - The unique identifier for the update.
            &quot;revision&quot;: 42, # The revision number of the update.
            &quot;updateId&quot;: &quot;A String&quot;, # The revision independent identifier of the update.
          },
          &quot;kbArticleIds&quot;: [ # The Microsoft Knowledge Base article IDs that are associated with the update.
            &quot;A String&quot;,
          ],
          &quot;lastPublishedTimestamp&quot;: &quot;A String&quot;, # The last published timestamp of the update.
          &quot;supportUrl&quot;: &quot;A String&quot;, # The hyperlink to the support information for the update.
          &quot;title&quot;: &quot;A String&quot;, # The localized title of the update.
        },
      },
      &quot;vulnerability&quot;: { # A security vulnerability that can be found in resources. # A note describing a package vulnerability.
        &quot;cvssScore&quot;: 3.14, # The CVSS score of this vulnerability. CVSS score is on a scale of 0 - 10 where 0 indicates low severity and 10 indicates high severity.
        &quot;cvssV2&quot;: { # Common Vulnerability Scoring System. For details, see https://www.first.org/cvss/specification-document This is a message we will try to use for storing various versions of CVSS rather than making a separate proto for storing a specific version. # The full description of the v2 CVSS for this vulnerability.
          &quot;attackComplexity&quot;: &quot;A String&quot;,
          &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.
          &quot;authentication&quot;: &quot;A String&quot;,
          &quot;availabilityImpact&quot;: &quot;A String&quot;,
          &quot;baseScore&quot;: 3.14, # The base score is a function of the base metric scores.
          &quot;confidentialityImpact&quot;: &quot;A String&quot;,
          &quot;exploitabilityScore&quot;: 3.14,
          &quot;impactScore&quot;: 3.14,
          &quot;integrityImpact&quot;: &quot;A String&quot;,
          &quot;privilegesRequired&quot;: &quot;A String&quot;,
          &quot;scope&quot;: &quot;A String&quot;,
          &quot;userInteraction&quot;: &quot;A String&quot;,
        },
        &quot;cvssV3&quot;: { # Common Vulnerability Scoring System version 3. For details, see https://www.first.org/cvss/specification-document # The full description of the CVSSv3 for this vulnerability.
          &quot;attackComplexity&quot;: &quot;A String&quot;,
          &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.
          &quot;availabilityImpact&quot;: &quot;A String&quot;,
          &quot;baseScore&quot;: 3.14, # The base score is a function of the base metric scores.
          &quot;confidentialityImpact&quot;: &quot;A String&quot;,
          &quot;exploitabilityScore&quot;: 3.14,
          &quot;impactScore&quot;: 3.14,
          &quot;integrityImpact&quot;: &quot;A String&quot;,
          &quot;privilegesRequired&quot;: &quot;A String&quot;,
          &quot;scope&quot;: &quot;A String&quot;,
          &quot;userInteraction&quot;: &quot;A String&quot;,
        },
        &quot;cvssVersion&quot;: &quot;A String&quot;, # CVSS version used to populate cvss_score and severity.
        &quot;details&quot;: [ # Details of all known distros and packages affected by this vulnerability.
          { # A detail for a distro and package affected by this vulnerability and its associated fix (if one is available).
            &quot;affectedCpeUri&quot;: &quot;A String&quot;, # Required. The [CPE URI](https://cpe.mitre.org/specification/) this vulnerability affects.
            &quot;affectedPackage&quot;: &quot;A String&quot;, # Required. The package this vulnerability affects.
            &quot;affectedVersionEnd&quot;: { # Version contains structured information about the version of a package. # The version number at the end of an interval in which this vulnerability exists. A vulnerability can affect a package between version numbers that are disjoint sets of intervals (example: [1.0.0-1.1.0], [2.4.6-2.4.8] and [4.5.6-4.6.8]) each of which will be represented in its own Detail. If a specific affected version is provided by a vulnerability database, affected_version_start and affected_version_end will be the same in that Detail.
              &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
              &quot;fullName&quot;: &quot;A String&quot;, # Human readable version string. This string is of the form :- and is only set when kind is NORMAL.
              &quot;inclusive&quot;: True or False, # Whether this version is specifying part of an inclusive range. Grafeas does not have the capability to specify version ranges; instead we have fields that specify start version and end versions. At times this is insufficient - we also need to specify whether the version is included in the range or is excluded from the range. This boolean is expected to be set to true when the version is included in a range.
              &quot;kind&quot;: &quot;A String&quot;, # Required. Distinguishes between sentinel MIN/MAX versions and normal versions.
              &quot;name&quot;: &quot;A String&quot;, # Required only when version kind is NORMAL. The main part of the version name.
              &quot;revision&quot;: &quot;A String&quot;, # The iteration of the package build from the above version.
            },
            &quot;affectedVersionStart&quot;: { # Version contains structured information about the version of a package. # The version number at the start of an interval in which this vulnerability exists. A vulnerability can affect a package between version numbers that are disjoint sets of intervals (example: [1.0.0-1.1.0], [2.4.6-2.4.8] and [4.5.6-4.6.8]) each of which will be represented in its own Detail. If a specific affected version is provided by a vulnerability database, affected_version_start and affected_version_end will be the same in that Detail.
              &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
              &quot;fullName&quot;: &quot;A String&quot;, # Human readable version string. This string is of the form :- and is only set when kind is NORMAL.
              &quot;inclusive&quot;: True or False, # Whether this version is specifying part of an inclusive range. Grafeas does not have the capability to specify version ranges; instead we have fields that specify start version and end versions. At times this is insufficient - we also need to specify whether the version is included in the range or is excluded from the range. This boolean is expected to be set to true when the version is included in a range.
              &quot;kind&quot;: &quot;A String&quot;, # Required. Distinguishes between sentinel MIN/MAX versions and normal versions.
              &quot;name&quot;: &quot;A String&quot;, # Required only when version kind is NORMAL. The main part of the version name.
              &quot;revision&quot;: &quot;A String&quot;, # The iteration of the package build from the above version.
            },
            &quot;description&quot;: &quot;A String&quot;, # A vendor-specific description of this vulnerability.
            &quot;fixedCpeUri&quot;: &quot;A String&quot;, # The distro recommended [CPE URI](https://cpe.mitre.org/specification/) to update to that contains a fix for this vulnerability. It is possible for this to be different from the affected_cpe_uri.
            &quot;fixedPackage&quot;: &quot;A String&quot;, # The distro recommended package to update to that contains a fix for this vulnerability. It is possible for this to be different from the affected_package.
            &quot;fixedVersion&quot;: { # Version contains structured information about the version of a package. # The distro recommended version to update to that contains a fix for this vulnerability. Setting this to VersionKind.MAXIMUM means no such version is yet available.
              &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
              &quot;fullName&quot;: &quot;A String&quot;, # Human readable version string. This string is of the form :- and is only set when kind is NORMAL.
              &quot;inclusive&quot;: True or False, # Whether this version is specifying part of an inclusive range. Grafeas does not have the capability to specify version ranges; instead we have fields that specify start version and end versions. At times this is insufficient - we also need to specify whether the version is included in the range or is excluded from the range. This boolean is expected to be set to true when the version is included in a range.
              &quot;kind&quot;: &quot;A String&quot;, # Required. Distinguishes between sentinel MIN/MAX versions and normal versions.
              &quot;name&quot;: &quot;A String&quot;, # Required only when version kind is NORMAL. The main part of the version name.
              &quot;revision&quot;: &quot;A String&quot;, # The iteration of the package build from the above version.
            },
            &quot;isObsolete&quot;: True or False, # Whether this detail is obsolete. Occurrences are expected not to point to obsolete details.
            &quot;packageType&quot;: &quot;A String&quot;, # The type of package; whether native or non native (e.g., ruby gems, node.js packages, etc.).
            &quot;severityName&quot;: &quot;A String&quot;, # The distro assigned severity of this vulnerability.
            &quot;source&quot;: &quot;A String&quot;, # The source from which the information in this Detail was obtained.
            &quot;sourceUpdateTime&quot;: &quot;A String&quot;, # The time this information was last changed at the source. This is an upstream timestamp from the underlying information source - e.g. Ubuntu security tracker.
            &quot;vendor&quot;: &quot;A String&quot;, # The name of the vendor of the product.
          },
        ],
        &quot;severity&quot;: &quot;A String&quot;, # The note provider assigned severity of this vulnerability.
        &quot;sourceUpdateTime&quot;: &quot;A String&quot;, # The time this information was last changed at the source. This is an upstream timestamp from the underlying information source - e.g. Ubuntu security tracker.
        &quot;windowsDetails&quot;: [ # Windows details get their own format because the information format and model don&#x27;t match a normal detail. Specifically Windows updates are done as patches, thus Windows vulnerabilities really are a missing package, rather than a package being at an incorrect version.
          {
            &quot;cpeUri&quot;: &quot;A String&quot;, # Required. The [CPE URI](https://cpe.mitre.org/specification/) this vulnerability affects.
            &quot;description&quot;: &quot;A String&quot;, # The description of this vulnerability.
            &quot;fixingKbs&quot;: [ # Required. The names of the KBs which have hotfixes to mitigate this vulnerability. Note that there may be multiple hotfixes (and thus multiple KBs) that mitigate a given vulnerability. Currently any listed KBs presence is considered a fix.
              {
                &quot;name&quot;: &quot;A String&quot;, # The KB name (generally of the form KB[0-9]+ (e.g., KB123456)).
                &quot;url&quot;: &quot;A String&quot;, # A link to the KB in the [Windows update catalog] (https://www.catalog.update.microsoft.com/).
              },
            ],
            &quot;name&quot;: &quot;A String&quot;, # Required. The name of this vulnerability.
          },
        ],
      },
      &quot;vulnerabilityAssessment&quot;: { # A single VulnerabilityAssessmentNote represents one particular product&#x27;s vulnerability assessment for one CVE. # A note describing a vulnerability assessment.
        &quot;assessment&quot;: { # Assessment provides all information that is related to a single vulnerability for this product. # Represents a vulnerability assessment for the product.
          &quot;cve&quot;: &quot;A String&quot;, # Holds the MITRE standard Common Vulnerabilities and Exposures (CVE) tracking number for the vulnerability. Deprecated: Use vulnerability_id instead to denote CVEs.
          &quot;impacts&quot;: [ # Contains information about the impact of this vulnerability, this will change with time.
            &quot;A String&quot;,
          ],
          &quot;justification&quot;: { # Justification provides the justification when the state of the assessment if NOT_AFFECTED. # Justification provides the justification when the state of the assessment if NOT_AFFECTED.
            &quot;details&quot;: &quot;A String&quot;, # Additional details on why this justification was chosen.
            &quot;justificationType&quot;: &quot;A String&quot;, # The justification type for this vulnerability.
          },
          &quot;longDescription&quot;: &quot;A String&quot;, # A detailed description of this Vex.
          &quot;relatedUris&quot;: [ # Holds a list of references associated with this vulnerability item and assessment. These uris have additional information about the vulnerability and the assessment itself. E.g. Link to a document which details how this assessment concluded the state of this vulnerability.
            { # Metadata for any related URL information.
              &quot;label&quot;: &quot;A String&quot;, # Label to describe usage of the URL.
              &quot;url&quot;: &quot;A String&quot;, # Specific URL associated with the resource.
            },
          ],
          &quot;remediations&quot;: [ # Specifies details on how to handle (and presumably, fix) a vulnerability.
            { # Specifies details on how to handle (and presumably, fix) a vulnerability.
              &quot;details&quot;: &quot;A String&quot;, # Contains a comprehensive human-readable discussion of the remediation.
              &quot;remediationType&quot;: &quot;A String&quot;, # The type of remediation that can be applied.
              &quot;remediationUri&quot;: { # Metadata for any related URL information. # Contains the URL where to obtain the remediation.
                &quot;label&quot;: &quot;A String&quot;, # Label to describe usage of the URL.
                &quot;url&quot;: &quot;A String&quot;, # Specific URL associated with the resource.
              },
            },
          ],
          &quot;shortDescription&quot;: &quot;A String&quot;, # A one sentence description of this Vex.
          &quot;state&quot;: &quot;A String&quot;, # Provides the state of this Vulnerability assessment.
          &quot;vulnerabilityId&quot;: &quot;A String&quot;, # The vulnerability identifier for this Assessment. Will hold one of common identifiers e.g. CVE, GHSA etc.
        },
        &quot;languageCode&quot;: &quot;A String&quot;, # Identifies the language used by this document, corresponding to IETF BCP 47 / RFC 5646.
        &quot;longDescription&quot;: &quot;A String&quot;, # A detailed description of this Vex.
        &quot;product&quot;: { # Product contains information about a product and how to uniquely identify it. # The product affected by this vex.
          &quot;genericUri&quot;: &quot;A String&quot;, # Contains a URI which is vendor-specific. Example: The artifact repository URL of an image.
          &quot;id&quot;: &quot;A String&quot;, # Token that identifies a product so that it can be referred to from other parts in the document. There is no predefined format as long as it uniquely identifies a group in the context of the current document.
          &quot;name&quot;: &quot;A String&quot;, # Name of the product.
        },
        &quot;publisher&quot;: { # Publisher contains information about the publisher of this Note. # Publisher details of this Note.
          &quot;issuingAuthority&quot;: &quot;A String&quot;, # Provides information about the authority of the issuing party to release the document, in particular, the party&#x27;s constituency and responsibilities or other obligations.
          &quot;name&quot;: &quot;A String&quot;, # Name of the publisher. Examples: &#x27;Google&#x27;, &#x27;Google Cloud Platform&#x27;.
          &quot;publisherNamespace&quot;: &quot;A String&quot;, # The context or namespace. Contains a URL which is under control of the issuing party and can be used as a globally unique identifier for that issuing party. Example: https://csaf.io
        },
        &quot;shortDescription&quot;: &quot;A String&quot;, # A one sentence description of this Vex.
        &quot;title&quot;: &quot;A String&quot;, # The title of the note. E.g. `Vex-Debian-11.4`
      },
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next()</code>
  <pre>Retrieves the next page of results.

        Args:
          previous_request: The request for the previous page. (required)
          previous_response: The response from the request for the previous page. (required)

        Returns:
          A request object that you can call &#x27;execute()&#x27; on to request the next
          page. Returns None if there are no more items in the collection.
        </pre>
</div>

<div class="method">
    <code class="details" id="patch">patch(name, body=None, updateMask=None, x__xgafv=None)</code>
  <pre>Updates the specified note.

Args:
  name: string, Required. The name of the note in the form of `projects/[PROVIDER_ID]/notes/[NOTE_ID]`. (required)
  body: object, The request body.
    The object takes the form of:

{ # A type of analysis that can be done for a resource.
  &quot;attestation&quot;: { # Note kind that represents a logical attestation &quot;role&quot; or &quot;authority&quot;. For example, an organization might have one `Authority` for &quot;QA&quot; and one for &quot;build&quot;. This note is intended to act strictly as a grouping mechanism for the attached occurrences (Attestations). This grouping mechanism also provides a security boundary, since IAM ACLs gate the ability for a principle to attach an occurrence to a given note. It also provides a single point of lookup to find all attached attestation occurrences, even if they don&#x27;t all live in the same project. # A note describing an attestation role.
    &quot;hint&quot;: { # This submessage provides human-readable hints about the purpose of the authority. Because the name of a note acts as its resource reference, it is important to disambiguate the canonical name of the Note (which might be a UUID for security purposes) from &quot;readable&quot; names more suitable for debug output. Note that these hints should not be used to look up authorities in security sensitive contexts, such as when looking up attestations to verify. # Hint hints at the purpose of the attestation authority.
      &quot;humanReadableName&quot;: &quot;A String&quot;, # Required. The human readable name of this attestation authority, for example &quot;qa&quot;.
    },
  },
  &quot;build&quot;: { # Note holding the version of the provider&#x27;s builder and the signature of the provenance message in the build details occurrence. # A note describing build provenance for a verifiable build.
    &quot;builderVersion&quot;: &quot;A String&quot;, # Required. Immutable. Version of the builder which produced this build.
  },
  &quot;compliance&quot;: { # A note describing a compliance check.
    &quot;cisBenchmark&quot;: { # A compliance check that is a CIS benchmark.
      &quot;profileLevel&quot;: 42,
      &quot;severity&quot;: &quot;A String&quot;,
    },
    &quot;description&quot;: &quot;A String&quot;, # A description about this compliance check.
    &quot;impact&quot;: &quot;A String&quot;,
    &quot;rationale&quot;: &quot;A String&quot;, # A rationale for the existence of this compliance check.
    &quot;remediation&quot;: &quot;A String&quot;, # A description of remediation steps if the compliance check fails.
    &quot;scanInstructions&quot;: &quot;A String&quot;, # Serialized scan instructions with a predefined format.
    &quot;title&quot;: &quot;A String&quot;, # The title that identifies this compliance check.
    &quot;version&quot;: [ # The OS and config versions the benchmark applies to.
      { # Describes the CIS benchmark version that is applicable to a given OS and os version.
        &quot;benchmarkDocument&quot;: &quot;A String&quot;, # The name of the document that defines this benchmark, e.g. &quot;CIS Container-Optimized OS&quot;.
        &quot;cpeUri&quot;: &quot;A String&quot;, # The CPE URI (https://cpe.mitre.org/specification/) this benchmark is applicable to.
        &quot;version&quot;: &quot;A String&quot;, # The version of the benchmark. This is set to the version of the OS-specific CIS document the benchmark is defined in.
      },
    ],
  },
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time this note was created. This field can be used as a filter in list requests.
  &quot;deployment&quot;: { # An artifact that can be deployed in some runtime. # A note describing something that can be deployed.
    &quot;resourceUri&quot;: [ # Required. Resource URI for the artifact being deployed.
      &quot;A String&quot;,
    ],
  },
  &quot;discovery&quot;: { # A note that indicates a type of analysis a provider would perform. This note exists in a provider&#x27;s project. A `Discovery` occurrence is created in a consumer&#x27;s project at the start of analysis. # A note describing the initial analysis of a resource.
    &quot;analysisKind&quot;: &quot;A String&quot;, # Required. Immutable. The kind of analysis that is handled by this discovery.
  },
  &quot;dsseAttestation&quot;: { # A note describing a dsse attestation note.
    &quot;hint&quot;: { # This submessage provides human-readable hints about the purpose of the authority. Because the name of a note acts as its resource reference, it is important to disambiguate the canonical name of the Note (which might be a UUID for security purposes) from &quot;readable&quot; names more suitable for debug output. Note that these hints should not be used to look up authorities in security sensitive contexts, such as when looking up attestations to verify. # DSSEHint hints at the purpose of the attestation authority.
      &quot;humanReadableName&quot;: &quot;A String&quot;, # Required. The human readable name of this attestation authority, for example &quot;cloudbuild-prod&quot;.
    },
  },
  &quot;expirationTime&quot;: &quot;A String&quot;, # Time of expiration for this note. Empty if note does not expire.
  &quot;image&quot;: { # Basis describes the base image portion (Note) of the DockerImage relationship. Linked occurrences are derived from this or an equivalent image via: FROM Or an equivalent reference, e.g., a tag of the resource_url. # A note describing a base image.
    &quot;fingerprint&quot;: { # A set of properties that uniquely identify a given Docker image. # Required. Immutable. The fingerprint of the base image.
      &quot;v1Name&quot;: &quot;A String&quot;, # Required. The layer ID of the final layer in the Docker image&#x27;s v1 representation.
      &quot;v2Blob&quot;: [ # Required. The ordered list of v2 blobs that represent a given image.
        &quot;A String&quot;,
      ],
      &quot;v2Name&quot;: &quot;A String&quot;, # Output only. The name of the image&#x27;s v2 blobs computed via: [bottom] := v2_blobbottom := sha256(v2_blob[N] + &quot; &quot; + v2_name[N+1]) Only the name of the final blob is kept.
    },
    &quot;resourceUrl&quot;: &quot;A String&quot;, # Required. Immutable. The resource_url for the resource representing the basis of associated occurrence images.
  },
  &quot;kind&quot;: &quot;A String&quot;, # Output only. The type of analysis. This field can be used as a filter in list requests.
  &quot;longDescription&quot;: &quot;A String&quot;, # A detailed description of this note.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The name of the note in the form of `projects/[PROVIDER_ID]/notes/[NOTE_ID]`.
  &quot;package&quot;: { # PackageNote represents a particular package version. # A note describing a package hosted by various package managers.
    &quot;architecture&quot;: &quot;A String&quot;, # The CPU architecture for which packages in this distribution channel were built. Architecture will be blank for language packages.
    &quot;cpeUri&quot;: &quot;A String&quot;, # The cpe_uri in [CPE format](https://cpe.mitre.org/specification/) denoting the package manager version distributing a package. The cpe_uri will be blank for language packages.
    &quot;description&quot;: &quot;A String&quot;, # The description of this package.
    &quot;digest&quot;: [ # Hash value, typically a file digest, that allows unique identification a specific package.
      { # Digest information.
        &quot;algo&quot;: &quot;A String&quot;, # `SHA1`, `SHA512` etc.
        &quot;digestBytes&quot;: &quot;A String&quot;, # Value of the digest.
      },
    ],
    &quot;distribution&quot;: [ # Deprecated. The various channels by which a package is distributed.
      { # This represents a particular channel of distribution for a given package. E.g., Debian&#x27;s jessie-backports dpkg mirror.
        &quot;architecture&quot;: &quot;A String&quot;, # The CPU architecture for which packages in this distribution channel were built.
        &quot;cpeUri&quot;: &quot;A String&quot;, # Required. The cpe_uri in [CPE format](https://cpe.mitre.org/specification/) denoting the package manager version distributing a package.
        &quot;description&quot;: &quot;A String&quot;, # The distribution channel-specific description of this package.
        &quot;latestVersion&quot;: { # Version contains structured information about the version of a package. # The latest available version of this package in this distribution channel.
          &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
          &quot;fullName&quot;: &quot;A String&quot;, # Human readable version string. This string is of the form :- and is only set when kind is NORMAL.
          &quot;inclusive&quot;: True or False, # Whether this version is specifying part of an inclusive range. Grafeas does not have the capability to specify version ranges; instead we have fields that specify start version and end versions. At times this is insufficient - we also need to specify whether the version is included in the range or is excluded from the range. This boolean is expected to be set to true when the version is included in a range.
          &quot;kind&quot;: &quot;A String&quot;, # Required. Distinguishes between sentinel MIN/MAX versions and normal versions.
          &quot;name&quot;: &quot;A String&quot;, # Required only when version kind is NORMAL. The main part of the version name.
          &quot;revision&quot;: &quot;A String&quot;, # The iteration of the package build from the above version.
        },
        &quot;maintainer&quot;: &quot;A String&quot;, # A freeform string denoting the maintainer of this package.
        &quot;url&quot;: &quot;A String&quot;, # The distribution channel-specific homepage for this package.
      },
    ],
    &quot;license&quot;: { # License information. # Licenses that have been declared by the authors of the package.
      &quot;comments&quot;: &quot;A String&quot;, # Comments
      &quot;expression&quot;: &quot;A String&quot;, # Often a single license can be used to represent the licensing terms. Sometimes it is necessary to include a choice of one or more licenses or some combination of license identifiers. Examples: &quot;LGPL-2.1-only OR MIT&quot;, &quot;LGPL-2.1-only AND MIT&quot;, &quot;GPL-2.0-or-later WITH Bison-exception-2.2&quot;.
    },
    &quot;maintainer&quot;: &quot;A String&quot;, # A freeform text denoting the maintainer of this package.
    &quot;name&quot;: &quot;A String&quot;, # Required. Immutable. The name of the package.
    &quot;packageType&quot;: &quot;A String&quot;, # The type of package; whether native or non native (e.g., ruby gems, node.js packages, etc.).
    &quot;url&quot;: &quot;A String&quot;, # The homepage for this package.
    &quot;version&quot;: { # Version contains structured information about the version of a package. # The version of the package.
      &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
      &quot;fullName&quot;: &quot;A String&quot;, # Human readable version string. This string is of the form :- and is only set when kind is NORMAL.
      &quot;inclusive&quot;: True or False, # Whether this version is specifying part of an inclusive range. Grafeas does not have the capability to specify version ranges; instead we have fields that specify start version and end versions. At times this is insufficient - we also need to specify whether the version is included in the range or is excluded from the range. This boolean is expected to be set to true when the version is included in a range.
      &quot;kind&quot;: &quot;A String&quot;, # Required. Distinguishes between sentinel MIN/MAX versions and normal versions.
      &quot;name&quot;: &quot;A String&quot;, # Required only when version kind is NORMAL. The main part of the version name.
      &quot;revision&quot;: &quot;A String&quot;, # The iteration of the package build from the above version.
    },
  },
  &quot;relatedNoteNames&quot;: [ # Other notes related to this note.
    &quot;A String&quot;,
  ],
  &quot;relatedUrl&quot;: [ # URLs associated with this note.
    { # Metadata for any related URL information.
      &quot;label&quot;: &quot;A String&quot;, # Label to describe usage of the URL.
      &quot;url&quot;: &quot;A String&quot;, # Specific URL associated with the resource.
    },
  ],
  &quot;sbomReference&quot;: { # The note representing an SBOM reference. # A note describing an SBOM reference.
    &quot;format&quot;: &quot;A String&quot;, # The format that SBOM takes. E.g. may be spdx, cyclonedx, etc...
    &quot;version&quot;: &quot;A String&quot;, # The version of the format that the SBOM takes. E.g. if the format is spdx, the version may be 2.3.
  },
  &quot;shortDescription&quot;: &quot;A String&quot;, # A one sentence description of this note.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time this note was last updated. This field can be used as a filter in list requests.
  &quot;upgrade&quot;: { # An Upgrade Note represents a potential upgrade of a package to a given version. For each package version combination (i.e. bash 4.0, bash 4.1, bash 4.1.2), there will be an Upgrade Note. For Windows, windows_update field represents the information related to the update. # A note describing available package upgrades.
    &quot;distributions&quot;: [ # Metadata about the upgrade for each specific operating system.
      { # The Upgrade Distribution represents metadata about the Upgrade for each operating system (CPE). Some distributions have additional metadata around updates, classifying them into various categories and severities.
        &quot;classification&quot;: &quot;A String&quot;, # The operating system classification of this Upgrade, as specified by the upstream operating system upgrade feed. For Windows the classification is one of the category_ids listed at https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ff357803(v=vs.85)
        &quot;cpeUri&quot;: &quot;A String&quot;, # Required - The specific operating system this metadata applies to. See https://cpe.mitre.org/specification/.
        &quot;cve&quot;: [ # The cve tied to this Upgrade.
          &quot;A String&quot;,
        ],
        &quot;severity&quot;: &quot;A String&quot;, # The severity as specified by the upstream operating system.
      },
    ],
    &quot;package&quot;: &quot;A String&quot;, # Required for non-Windows OS. The package this Upgrade is for.
    &quot;version&quot;: { # Version contains structured information about the version of a package. # Required for non-Windows OS. The version of the package in machine + human readable form.
      &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
      &quot;fullName&quot;: &quot;A String&quot;, # Human readable version string. This string is of the form :- and is only set when kind is NORMAL.
      &quot;inclusive&quot;: True or False, # Whether this version is specifying part of an inclusive range. Grafeas does not have the capability to specify version ranges; instead we have fields that specify start version and end versions. At times this is insufficient - we also need to specify whether the version is included in the range or is excluded from the range. This boolean is expected to be set to true when the version is included in a range.
      &quot;kind&quot;: &quot;A String&quot;, # Required. Distinguishes between sentinel MIN/MAX versions and normal versions.
      &quot;name&quot;: &quot;A String&quot;, # Required only when version kind is NORMAL. The main part of the version name.
      &quot;revision&quot;: &quot;A String&quot;, # The iteration of the package build from the above version.
    },
    &quot;windowsUpdate&quot;: { # Windows Update represents the metadata about the update for the Windows operating system. The fields in this message come from the Windows Update API documented at https://docs.microsoft.com/en-us/windows/win32/api/wuapi/nn-wuapi-iupdate. # Required for Windows OS. Represents the metadata about the Windows update.
      &quot;categories&quot;: [ # The list of categories to which the update belongs.
        { # The category to which the update belongs.
          &quot;categoryId&quot;: &quot;A String&quot;, # The identifier of the category.
          &quot;name&quot;: &quot;A String&quot;, # The localized name of the category.
        },
      ],
      &quot;description&quot;: &quot;A String&quot;, # The localized description of the update.
      &quot;identity&quot;: { # The unique identifier of the update. # Required - The unique identifier for the update.
        &quot;revision&quot;: 42, # The revision number of the update.
        &quot;updateId&quot;: &quot;A String&quot;, # The revision independent identifier of the update.
      },
      &quot;kbArticleIds&quot;: [ # The Microsoft Knowledge Base article IDs that are associated with the update.
        &quot;A String&quot;,
      ],
      &quot;lastPublishedTimestamp&quot;: &quot;A String&quot;, # The last published timestamp of the update.
      &quot;supportUrl&quot;: &quot;A String&quot;, # The hyperlink to the support information for the update.
      &quot;title&quot;: &quot;A String&quot;, # The localized title of the update.
    },
  },
  &quot;vulnerability&quot;: { # A security vulnerability that can be found in resources. # A note describing a package vulnerability.
    &quot;cvssScore&quot;: 3.14, # The CVSS score of this vulnerability. CVSS score is on a scale of 0 - 10 where 0 indicates low severity and 10 indicates high severity.
    &quot;cvssV2&quot;: { # Common Vulnerability Scoring System. For details, see https://www.first.org/cvss/specification-document This is a message we will try to use for storing various versions of CVSS rather than making a separate proto for storing a specific version. # The full description of the v2 CVSS for this vulnerability.
      &quot;attackComplexity&quot;: &quot;A String&quot;,
      &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.
      &quot;authentication&quot;: &quot;A String&quot;,
      &quot;availabilityImpact&quot;: &quot;A String&quot;,
      &quot;baseScore&quot;: 3.14, # The base score is a function of the base metric scores.
      &quot;confidentialityImpact&quot;: &quot;A String&quot;,
      &quot;exploitabilityScore&quot;: 3.14,
      &quot;impactScore&quot;: 3.14,
      &quot;integrityImpact&quot;: &quot;A String&quot;,
      &quot;privilegesRequired&quot;: &quot;A String&quot;,
      &quot;scope&quot;: &quot;A String&quot;,
      &quot;userInteraction&quot;: &quot;A String&quot;,
    },
    &quot;cvssV3&quot;: { # Common Vulnerability Scoring System version 3. For details, see https://www.first.org/cvss/specification-document # The full description of the CVSSv3 for this vulnerability.
      &quot;attackComplexity&quot;: &quot;A String&quot;,
      &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.
      &quot;availabilityImpact&quot;: &quot;A String&quot;,
      &quot;baseScore&quot;: 3.14, # The base score is a function of the base metric scores.
      &quot;confidentialityImpact&quot;: &quot;A String&quot;,
      &quot;exploitabilityScore&quot;: 3.14,
      &quot;impactScore&quot;: 3.14,
      &quot;integrityImpact&quot;: &quot;A String&quot;,
      &quot;privilegesRequired&quot;: &quot;A String&quot;,
      &quot;scope&quot;: &quot;A String&quot;,
      &quot;userInteraction&quot;: &quot;A String&quot;,
    },
    &quot;cvssVersion&quot;: &quot;A String&quot;, # CVSS version used to populate cvss_score and severity.
    &quot;details&quot;: [ # Details of all known distros and packages affected by this vulnerability.
      { # A detail for a distro and package affected by this vulnerability and its associated fix (if one is available).
        &quot;affectedCpeUri&quot;: &quot;A String&quot;, # Required. The [CPE URI](https://cpe.mitre.org/specification/) this vulnerability affects.
        &quot;affectedPackage&quot;: &quot;A String&quot;, # Required. The package this vulnerability affects.
        &quot;affectedVersionEnd&quot;: { # Version contains structured information about the version of a package. # The version number at the end of an interval in which this vulnerability exists. A vulnerability can affect a package between version numbers that are disjoint sets of intervals (example: [1.0.0-1.1.0], [2.4.6-2.4.8] and [4.5.6-4.6.8]) each of which will be represented in its own Detail. If a specific affected version is provided by a vulnerability database, affected_version_start and affected_version_end will be the same in that Detail.
          &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
          &quot;fullName&quot;: &quot;A String&quot;, # Human readable version string. This string is of the form :- and is only set when kind is NORMAL.
          &quot;inclusive&quot;: True or False, # Whether this version is specifying part of an inclusive range. Grafeas does not have the capability to specify version ranges; instead we have fields that specify start version and end versions. At times this is insufficient - we also need to specify whether the version is included in the range or is excluded from the range. This boolean is expected to be set to true when the version is included in a range.
          &quot;kind&quot;: &quot;A String&quot;, # Required. Distinguishes between sentinel MIN/MAX versions and normal versions.
          &quot;name&quot;: &quot;A String&quot;, # Required only when version kind is NORMAL. The main part of the version name.
          &quot;revision&quot;: &quot;A String&quot;, # The iteration of the package build from the above version.
        },
        &quot;affectedVersionStart&quot;: { # Version contains structured information about the version of a package. # The version number at the start of an interval in which this vulnerability exists. A vulnerability can affect a package between version numbers that are disjoint sets of intervals (example: [1.0.0-1.1.0], [2.4.6-2.4.8] and [4.5.6-4.6.8]) each of which will be represented in its own Detail. If a specific affected version is provided by a vulnerability database, affected_version_start and affected_version_end will be the same in that Detail.
          &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
          &quot;fullName&quot;: &quot;A String&quot;, # Human readable version string. This string is of the form :- and is only set when kind is NORMAL.
          &quot;inclusive&quot;: True or False, # Whether this version is specifying part of an inclusive range. Grafeas does not have the capability to specify version ranges; instead we have fields that specify start version and end versions. At times this is insufficient - we also need to specify whether the version is included in the range or is excluded from the range. This boolean is expected to be set to true when the version is included in a range.
          &quot;kind&quot;: &quot;A String&quot;, # Required. Distinguishes between sentinel MIN/MAX versions and normal versions.
          &quot;name&quot;: &quot;A String&quot;, # Required only when version kind is NORMAL. The main part of the version name.
          &quot;revision&quot;: &quot;A String&quot;, # The iteration of the package build from the above version.
        },
        &quot;description&quot;: &quot;A String&quot;, # A vendor-specific description of this vulnerability.
        &quot;fixedCpeUri&quot;: &quot;A String&quot;, # The distro recommended [CPE URI](https://cpe.mitre.org/specification/) to update to that contains a fix for this vulnerability. It is possible for this to be different from the affected_cpe_uri.
        &quot;fixedPackage&quot;: &quot;A String&quot;, # The distro recommended package to update to that contains a fix for this vulnerability. It is possible for this to be different from the affected_package.
        &quot;fixedVersion&quot;: { # Version contains structured information about the version of a package. # The distro recommended version to update to that contains a fix for this vulnerability. Setting this to VersionKind.MAXIMUM means no such version is yet available.
          &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
          &quot;fullName&quot;: &quot;A String&quot;, # Human readable version string. This string is of the form :- and is only set when kind is NORMAL.
          &quot;inclusive&quot;: True or False, # Whether this version is specifying part of an inclusive range. Grafeas does not have the capability to specify version ranges; instead we have fields that specify start version and end versions. At times this is insufficient - we also need to specify whether the version is included in the range or is excluded from the range. This boolean is expected to be set to true when the version is included in a range.
          &quot;kind&quot;: &quot;A String&quot;, # Required. Distinguishes between sentinel MIN/MAX versions and normal versions.
          &quot;name&quot;: &quot;A String&quot;, # Required only when version kind is NORMAL. The main part of the version name.
          &quot;revision&quot;: &quot;A String&quot;, # The iteration of the package build from the above version.
        },
        &quot;isObsolete&quot;: True or False, # Whether this detail is obsolete. Occurrences are expected not to point to obsolete details.
        &quot;packageType&quot;: &quot;A String&quot;, # The type of package; whether native or non native (e.g., ruby gems, node.js packages, etc.).
        &quot;severityName&quot;: &quot;A String&quot;, # The distro assigned severity of this vulnerability.
        &quot;source&quot;: &quot;A String&quot;, # The source from which the information in this Detail was obtained.
        &quot;sourceUpdateTime&quot;: &quot;A String&quot;, # The time this information was last changed at the source. This is an upstream timestamp from the underlying information source - e.g. Ubuntu security tracker.
        &quot;vendor&quot;: &quot;A String&quot;, # The name of the vendor of the product.
      },
    ],
    &quot;severity&quot;: &quot;A String&quot;, # The note provider assigned severity of this vulnerability.
    &quot;sourceUpdateTime&quot;: &quot;A String&quot;, # The time this information was last changed at the source. This is an upstream timestamp from the underlying information source - e.g. Ubuntu security tracker.
    &quot;windowsDetails&quot;: [ # Windows details get their own format because the information format and model don&#x27;t match a normal detail. Specifically Windows updates are done as patches, thus Windows vulnerabilities really are a missing package, rather than a package being at an incorrect version.
      {
        &quot;cpeUri&quot;: &quot;A String&quot;, # Required. The [CPE URI](https://cpe.mitre.org/specification/) this vulnerability affects.
        &quot;description&quot;: &quot;A String&quot;, # The description of this vulnerability.
        &quot;fixingKbs&quot;: [ # Required. The names of the KBs which have hotfixes to mitigate this vulnerability. Note that there may be multiple hotfixes (and thus multiple KBs) that mitigate a given vulnerability. Currently any listed KBs presence is considered a fix.
          {
            &quot;name&quot;: &quot;A String&quot;, # The KB name (generally of the form KB[0-9]+ (e.g., KB123456)).
            &quot;url&quot;: &quot;A String&quot;, # A link to the KB in the [Windows update catalog] (https://www.catalog.update.microsoft.com/).
          },
        ],
        &quot;name&quot;: &quot;A String&quot;, # Required. The name of this vulnerability.
      },
    ],
  },
  &quot;vulnerabilityAssessment&quot;: { # A single VulnerabilityAssessmentNote represents one particular product&#x27;s vulnerability assessment for one CVE. # A note describing a vulnerability assessment.
    &quot;assessment&quot;: { # Assessment provides all information that is related to a single vulnerability for this product. # Represents a vulnerability assessment for the product.
      &quot;cve&quot;: &quot;A String&quot;, # Holds the MITRE standard Common Vulnerabilities and Exposures (CVE) tracking number for the vulnerability. Deprecated: Use vulnerability_id instead to denote CVEs.
      &quot;impacts&quot;: [ # Contains information about the impact of this vulnerability, this will change with time.
        &quot;A String&quot;,
      ],
      &quot;justification&quot;: { # Justification provides the justification when the state of the assessment if NOT_AFFECTED. # Justification provides the justification when the state of the assessment if NOT_AFFECTED.
        &quot;details&quot;: &quot;A String&quot;, # Additional details on why this justification was chosen.
        &quot;justificationType&quot;: &quot;A String&quot;, # The justification type for this vulnerability.
      },
      &quot;longDescription&quot;: &quot;A String&quot;, # A detailed description of this Vex.
      &quot;relatedUris&quot;: [ # Holds a list of references associated with this vulnerability item and assessment. These uris have additional information about the vulnerability and the assessment itself. E.g. Link to a document which details how this assessment concluded the state of this vulnerability.
        { # Metadata for any related URL information.
          &quot;label&quot;: &quot;A String&quot;, # Label to describe usage of the URL.
          &quot;url&quot;: &quot;A String&quot;, # Specific URL associated with the resource.
        },
      ],
      &quot;remediations&quot;: [ # Specifies details on how to handle (and presumably, fix) a vulnerability.
        { # Specifies details on how to handle (and presumably, fix) a vulnerability.
          &quot;details&quot;: &quot;A String&quot;, # Contains a comprehensive human-readable discussion of the remediation.
          &quot;remediationType&quot;: &quot;A String&quot;, # The type of remediation that can be applied.
          &quot;remediationUri&quot;: { # Metadata for any related URL information. # Contains the URL where to obtain the remediation.
            &quot;label&quot;: &quot;A String&quot;, # Label to describe usage of the URL.
            &quot;url&quot;: &quot;A String&quot;, # Specific URL associated with the resource.
          },
        },
      ],
      &quot;shortDescription&quot;: &quot;A String&quot;, # A one sentence description of this Vex.
      &quot;state&quot;: &quot;A String&quot;, # Provides the state of this Vulnerability assessment.
      &quot;vulnerabilityId&quot;: &quot;A String&quot;, # The vulnerability identifier for this Assessment. Will hold one of common identifiers e.g. CVE, GHSA etc.
    },
    &quot;languageCode&quot;: &quot;A String&quot;, # Identifies the language used by this document, corresponding to IETF BCP 47 / RFC 5646.
    &quot;longDescription&quot;: &quot;A String&quot;, # A detailed description of this Vex.
    &quot;product&quot;: { # Product contains information about a product and how to uniquely identify it. # The product affected by this vex.
      &quot;genericUri&quot;: &quot;A String&quot;, # Contains a URI which is vendor-specific. Example: The artifact repository URL of an image.
      &quot;id&quot;: &quot;A String&quot;, # Token that identifies a product so that it can be referred to from other parts in the document. There is no predefined format as long as it uniquely identifies a group in the context of the current document.
      &quot;name&quot;: &quot;A String&quot;, # Name of the product.
    },
    &quot;publisher&quot;: { # Publisher contains information about the publisher of this Note. # Publisher details of this Note.
      &quot;issuingAuthority&quot;: &quot;A String&quot;, # Provides information about the authority of the issuing party to release the document, in particular, the party&#x27;s constituency and responsibilities or other obligations.
      &quot;name&quot;: &quot;A String&quot;, # Name of the publisher. Examples: &#x27;Google&#x27;, &#x27;Google Cloud Platform&#x27;.
      &quot;publisherNamespace&quot;: &quot;A String&quot;, # The context or namespace. Contains a URL which is under control of the issuing party and can be used as a globally unique identifier for that issuing party. Example: https://csaf.io
    },
    &quot;shortDescription&quot;: &quot;A String&quot;, # A one sentence description of this Vex.
    &quot;title&quot;: &quot;A String&quot;, # The title of the note. E.g. `Vex-Debian-11.4`
  },
}

  updateMask: string, The fields to update.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A type of analysis that can be done for a resource.
  &quot;attestation&quot;: { # Note kind that represents a logical attestation &quot;role&quot; or &quot;authority&quot;. For example, an organization might have one `Authority` for &quot;QA&quot; and one for &quot;build&quot;. This note is intended to act strictly as a grouping mechanism for the attached occurrences (Attestations). This grouping mechanism also provides a security boundary, since IAM ACLs gate the ability for a principle to attach an occurrence to a given note. It also provides a single point of lookup to find all attached attestation occurrences, even if they don&#x27;t all live in the same project. # A note describing an attestation role.
    &quot;hint&quot;: { # This submessage provides human-readable hints about the purpose of the authority. Because the name of a note acts as its resource reference, it is important to disambiguate the canonical name of the Note (which might be a UUID for security purposes) from &quot;readable&quot; names more suitable for debug output. Note that these hints should not be used to look up authorities in security sensitive contexts, such as when looking up attestations to verify. # Hint hints at the purpose of the attestation authority.
      &quot;humanReadableName&quot;: &quot;A String&quot;, # Required. The human readable name of this attestation authority, for example &quot;qa&quot;.
    },
  },
  &quot;build&quot;: { # Note holding the version of the provider&#x27;s builder and the signature of the provenance message in the build details occurrence. # A note describing build provenance for a verifiable build.
    &quot;builderVersion&quot;: &quot;A String&quot;, # Required. Immutable. Version of the builder which produced this build.
  },
  &quot;compliance&quot;: { # A note describing a compliance check.
    &quot;cisBenchmark&quot;: { # A compliance check that is a CIS benchmark.
      &quot;profileLevel&quot;: 42,
      &quot;severity&quot;: &quot;A String&quot;,
    },
    &quot;description&quot;: &quot;A String&quot;, # A description about this compliance check.
    &quot;impact&quot;: &quot;A String&quot;,
    &quot;rationale&quot;: &quot;A String&quot;, # A rationale for the existence of this compliance check.
    &quot;remediation&quot;: &quot;A String&quot;, # A description of remediation steps if the compliance check fails.
    &quot;scanInstructions&quot;: &quot;A String&quot;, # Serialized scan instructions with a predefined format.
    &quot;title&quot;: &quot;A String&quot;, # The title that identifies this compliance check.
    &quot;version&quot;: [ # The OS and config versions the benchmark applies to.
      { # Describes the CIS benchmark version that is applicable to a given OS and os version.
        &quot;benchmarkDocument&quot;: &quot;A String&quot;, # The name of the document that defines this benchmark, e.g. &quot;CIS Container-Optimized OS&quot;.
        &quot;cpeUri&quot;: &quot;A String&quot;, # The CPE URI (https://cpe.mitre.org/specification/) this benchmark is applicable to.
        &quot;version&quot;: &quot;A String&quot;, # The version of the benchmark. This is set to the version of the OS-specific CIS document the benchmark is defined in.
      },
    ],
  },
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time this note was created. This field can be used as a filter in list requests.
  &quot;deployment&quot;: { # An artifact that can be deployed in some runtime. # A note describing something that can be deployed.
    &quot;resourceUri&quot;: [ # Required. Resource URI for the artifact being deployed.
      &quot;A String&quot;,
    ],
  },
  &quot;discovery&quot;: { # A note that indicates a type of analysis a provider would perform. This note exists in a provider&#x27;s project. A `Discovery` occurrence is created in a consumer&#x27;s project at the start of analysis. # A note describing the initial analysis of a resource.
    &quot;analysisKind&quot;: &quot;A String&quot;, # Required. Immutable. The kind of analysis that is handled by this discovery.
  },
  &quot;dsseAttestation&quot;: { # A note describing a dsse attestation note.
    &quot;hint&quot;: { # This submessage provides human-readable hints about the purpose of the authority. Because the name of a note acts as its resource reference, it is important to disambiguate the canonical name of the Note (which might be a UUID for security purposes) from &quot;readable&quot; names more suitable for debug output. Note that these hints should not be used to look up authorities in security sensitive contexts, such as when looking up attestations to verify. # DSSEHint hints at the purpose of the attestation authority.
      &quot;humanReadableName&quot;: &quot;A String&quot;, # Required. The human readable name of this attestation authority, for example &quot;cloudbuild-prod&quot;.
    },
  },
  &quot;expirationTime&quot;: &quot;A String&quot;, # Time of expiration for this note. Empty if note does not expire.
  &quot;image&quot;: { # Basis describes the base image portion (Note) of the DockerImage relationship. Linked occurrences are derived from this or an equivalent image via: FROM Or an equivalent reference, e.g., a tag of the resource_url. # A note describing a base image.
    &quot;fingerprint&quot;: { # A set of properties that uniquely identify a given Docker image. # Required. Immutable. The fingerprint of the base image.
      &quot;v1Name&quot;: &quot;A String&quot;, # Required. The layer ID of the final layer in the Docker image&#x27;s v1 representation.
      &quot;v2Blob&quot;: [ # Required. The ordered list of v2 blobs that represent a given image.
        &quot;A String&quot;,
      ],
      &quot;v2Name&quot;: &quot;A String&quot;, # Output only. The name of the image&#x27;s v2 blobs computed via: [bottom] := v2_blobbottom := sha256(v2_blob[N] + &quot; &quot; + v2_name[N+1]) Only the name of the final blob is kept.
    },
    &quot;resourceUrl&quot;: &quot;A String&quot;, # Required. Immutable. The resource_url for the resource representing the basis of associated occurrence images.
  },
  &quot;kind&quot;: &quot;A String&quot;, # Output only. The type of analysis. This field can be used as a filter in list requests.
  &quot;longDescription&quot;: &quot;A String&quot;, # A detailed description of this note.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The name of the note in the form of `projects/[PROVIDER_ID]/notes/[NOTE_ID]`.
  &quot;package&quot;: { # PackageNote represents a particular package version. # A note describing a package hosted by various package managers.
    &quot;architecture&quot;: &quot;A String&quot;, # The CPU architecture for which packages in this distribution channel were built. Architecture will be blank for language packages.
    &quot;cpeUri&quot;: &quot;A String&quot;, # The cpe_uri in [CPE format](https://cpe.mitre.org/specification/) denoting the package manager version distributing a package. The cpe_uri will be blank for language packages.
    &quot;description&quot;: &quot;A String&quot;, # The description of this package.
    &quot;digest&quot;: [ # Hash value, typically a file digest, that allows unique identification a specific package.
      { # Digest information.
        &quot;algo&quot;: &quot;A String&quot;, # `SHA1`, `SHA512` etc.
        &quot;digestBytes&quot;: &quot;A String&quot;, # Value of the digest.
      },
    ],
    &quot;distribution&quot;: [ # Deprecated. The various channels by which a package is distributed.
      { # This represents a particular channel of distribution for a given package. E.g., Debian&#x27;s jessie-backports dpkg mirror.
        &quot;architecture&quot;: &quot;A String&quot;, # The CPU architecture for which packages in this distribution channel were built.
        &quot;cpeUri&quot;: &quot;A String&quot;, # Required. The cpe_uri in [CPE format](https://cpe.mitre.org/specification/) denoting the package manager version distributing a package.
        &quot;description&quot;: &quot;A String&quot;, # The distribution channel-specific description of this package.
        &quot;latestVersion&quot;: { # Version contains structured information about the version of a package. # The latest available version of this package in this distribution channel.
          &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
          &quot;fullName&quot;: &quot;A String&quot;, # Human readable version string. This string is of the form :- and is only set when kind is NORMAL.
          &quot;inclusive&quot;: True or False, # Whether this version is specifying part of an inclusive range. Grafeas does not have the capability to specify version ranges; instead we have fields that specify start version and end versions. At times this is insufficient - we also need to specify whether the version is included in the range or is excluded from the range. This boolean is expected to be set to true when the version is included in a range.
          &quot;kind&quot;: &quot;A String&quot;, # Required. Distinguishes between sentinel MIN/MAX versions and normal versions.
          &quot;name&quot;: &quot;A String&quot;, # Required only when version kind is NORMAL. The main part of the version name.
          &quot;revision&quot;: &quot;A String&quot;, # The iteration of the package build from the above version.
        },
        &quot;maintainer&quot;: &quot;A String&quot;, # A freeform string denoting the maintainer of this package.
        &quot;url&quot;: &quot;A String&quot;, # The distribution channel-specific homepage for this package.
      },
    ],
    &quot;license&quot;: { # License information. # Licenses that have been declared by the authors of the package.
      &quot;comments&quot;: &quot;A String&quot;, # Comments
      &quot;expression&quot;: &quot;A String&quot;, # Often a single license can be used to represent the licensing terms. Sometimes it is necessary to include a choice of one or more licenses or some combination of license identifiers. Examples: &quot;LGPL-2.1-only OR MIT&quot;, &quot;LGPL-2.1-only AND MIT&quot;, &quot;GPL-2.0-or-later WITH Bison-exception-2.2&quot;.
    },
    &quot;maintainer&quot;: &quot;A String&quot;, # A freeform text denoting the maintainer of this package.
    &quot;name&quot;: &quot;A String&quot;, # Required. Immutable. The name of the package.
    &quot;packageType&quot;: &quot;A String&quot;, # The type of package; whether native or non native (e.g., ruby gems, node.js packages, etc.).
    &quot;url&quot;: &quot;A String&quot;, # The homepage for this package.
    &quot;version&quot;: { # Version contains structured information about the version of a package. # The version of the package.
      &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
      &quot;fullName&quot;: &quot;A String&quot;, # Human readable version string. This string is of the form :- and is only set when kind is NORMAL.
      &quot;inclusive&quot;: True or False, # Whether this version is specifying part of an inclusive range. Grafeas does not have the capability to specify version ranges; instead we have fields that specify start version and end versions. At times this is insufficient - we also need to specify whether the version is included in the range or is excluded from the range. This boolean is expected to be set to true when the version is included in a range.
      &quot;kind&quot;: &quot;A String&quot;, # Required. Distinguishes between sentinel MIN/MAX versions and normal versions.
      &quot;name&quot;: &quot;A String&quot;, # Required only when version kind is NORMAL. The main part of the version name.
      &quot;revision&quot;: &quot;A String&quot;, # The iteration of the package build from the above version.
    },
  },
  &quot;relatedNoteNames&quot;: [ # Other notes related to this note.
    &quot;A String&quot;,
  ],
  &quot;relatedUrl&quot;: [ # URLs associated with this note.
    { # Metadata for any related URL information.
      &quot;label&quot;: &quot;A String&quot;, # Label to describe usage of the URL.
      &quot;url&quot;: &quot;A String&quot;, # Specific URL associated with the resource.
    },
  ],
  &quot;sbomReference&quot;: { # The note representing an SBOM reference. # A note describing an SBOM reference.
    &quot;format&quot;: &quot;A String&quot;, # The format that SBOM takes. E.g. may be spdx, cyclonedx, etc...
    &quot;version&quot;: &quot;A String&quot;, # The version of the format that the SBOM takes. E.g. if the format is spdx, the version may be 2.3.
  },
  &quot;shortDescription&quot;: &quot;A String&quot;, # A one sentence description of this note.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time this note was last updated. This field can be used as a filter in list requests.
  &quot;upgrade&quot;: { # An Upgrade Note represents a potential upgrade of a package to a given version. For each package version combination (i.e. bash 4.0, bash 4.1, bash 4.1.2), there will be an Upgrade Note. For Windows, windows_update field represents the information related to the update. # A note describing available package upgrades.
    &quot;distributions&quot;: [ # Metadata about the upgrade for each specific operating system.
      { # The Upgrade Distribution represents metadata about the Upgrade for each operating system (CPE). Some distributions have additional metadata around updates, classifying them into various categories and severities.
        &quot;classification&quot;: &quot;A String&quot;, # The operating system classification of this Upgrade, as specified by the upstream operating system upgrade feed. For Windows the classification is one of the category_ids listed at https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ff357803(v=vs.85)
        &quot;cpeUri&quot;: &quot;A String&quot;, # Required - The specific operating system this metadata applies to. See https://cpe.mitre.org/specification/.
        &quot;cve&quot;: [ # The cve tied to this Upgrade.
          &quot;A String&quot;,
        ],
        &quot;severity&quot;: &quot;A String&quot;, # The severity as specified by the upstream operating system.
      },
    ],
    &quot;package&quot;: &quot;A String&quot;, # Required for non-Windows OS. The package this Upgrade is for.
    &quot;version&quot;: { # Version contains structured information about the version of a package. # Required for non-Windows OS. The version of the package in machine + human readable form.
      &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
      &quot;fullName&quot;: &quot;A String&quot;, # Human readable version string. This string is of the form :- and is only set when kind is NORMAL.
      &quot;inclusive&quot;: True or False, # Whether this version is specifying part of an inclusive range. Grafeas does not have the capability to specify version ranges; instead we have fields that specify start version and end versions. At times this is insufficient - we also need to specify whether the version is included in the range or is excluded from the range. This boolean is expected to be set to true when the version is included in a range.
      &quot;kind&quot;: &quot;A String&quot;, # Required. Distinguishes between sentinel MIN/MAX versions and normal versions.
      &quot;name&quot;: &quot;A String&quot;, # Required only when version kind is NORMAL. The main part of the version name.
      &quot;revision&quot;: &quot;A String&quot;, # The iteration of the package build from the above version.
    },
    &quot;windowsUpdate&quot;: { # Windows Update represents the metadata about the update for the Windows operating system. The fields in this message come from the Windows Update API documented at https://docs.microsoft.com/en-us/windows/win32/api/wuapi/nn-wuapi-iupdate. # Required for Windows OS. Represents the metadata about the Windows update.
      &quot;categories&quot;: [ # The list of categories to which the update belongs.
        { # The category to which the update belongs.
          &quot;categoryId&quot;: &quot;A String&quot;, # The identifier of the category.
          &quot;name&quot;: &quot;A String&quot;, # The localized name of the category.
        },
      ],
      &quot;description&quot;: &quot;A String&quot;, # The localized description of the update.
      &quot;identity&quot;: { # The unique identifier of the update. # Required - The unique identifier for the update.
        &quot;revision&quot;: 42, # The revision number of the update.
        &quot;updateId&quot;: &quot;A String&quot;, # The revision independent identifier of the update.
      },
      &quot;kbArticleIds&quot;: [ # The Microsoft Knowledge Base article IDs that are associated with the update.
        &quot;A String&quot;,
      ],
      &quot;lastPublishedTimestamp&quot;: &quot;A String&quot;, # The last published timestamp of the update.
      &quot;supportUrl&quot;: &quot;A String&quot;, # The hyperlink to the support information for the update.
      &quot;title&quot;: &quot;A String&quot;, # The localized title of the update.
    },
  },
  &quot;vulnerability&quot;: { # A security vulnerability that can be found in resources. # A note describing a package vulnerability.
    &quot;cvssScore&quot;: 3.14, # The CVSS score of this vulnerability. CVSS score is on a scale of 0 - 10 where 0 indicates low severity and 10 indicates high severity.
    &quot;cvssV2&quot;: { # Common Vulnerability Scoring System. For details, see https://www.first.org/cvss/specification-document This is a message we will try to use for storing various versions of CVSS rather than making a separate proto for storing a specific version. # The full description of the v2 CVSS for this vulnerability.
      &quot;attackComplexity&quot;: &quot;A String&quot;,
      &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.
      &quot;authentication&quot;: &quot;A String&quot;,
      &quot;availabilityImpact&quot;: &quot;A String&quot;,
      &quot;baseScore&quot;: 3.14, # The base score is a function of the base metric scores.
      &quot;confidentialityImpact&quot;: &quot;A String&quot;,
      &quot;exploitabilityScore&quot;: 3.14,
      &quot;impactScore&quot;: 3.14,
      &quot;integrityImpact&quot;: &quot;A String&quot;,
      &quot;privilegesRequired&quot;: &quot;A String&quot;,
      &quot;scope&quot;: &quot;A String&quot;,
      &quot;userInteraction&quot;: &quot;A String&quot;,
    },
    &quot;cvssV3&quot;: { # Common Vulnerability Scoring System version 3. For details, see https://www.first.org/cvss/specification-document # The full description of the CVSSv3 for this vulnerability.
      &quot;attackComplexity&quot;: &quot;A String&quot;,
      &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.
      &quot;availabilityImpact&quot;: &quot;A String&quot;,
      &quot;baseScore&quot;: 3.14, # The base score is a function of the base metric scores.
      &quot;confidentialityImpact&quot;: &quot;A String&quot;,
      &quot;exploitabilityScore&quot;: 3.14,
      &quot;impactScore&quot;: 3.14,
      &quot;integrityImpact&quot;: &quot;A String&quot;,
      &quot;privilegesRequired&quot;: &quot;A String&quot;,
      &quot;scope&quot;: &quot;A String&quot;,
      &quot;userInteraction&quot;: &quot;A String&quot;,
    },
    &quot;cvssVersion&quot;: &quot;A String&quot;, # CVSS version used to populate cvss_score and severity.
    &quot;details&quot;: [ # Details of all known distros and packages affected by this vulnerability.
      { # A detail for a distro and package affected by this vulnerability and its associated fix (if one is available).
        &quot;affectedCpeUri&quot;: &quot;A String&quot;, # Required. The [CPE URI](https://cpe.mitre.org/specification/) this vulnerability affects.
        &quot;affectedPackage&quot;: &quot;A String&quot;, # Required. The package this vulnerability affects.
        &quot;affectedVersionEnd&quot;: { # Version contains structured information about the version of a package. # The version number at the end of an interval in which this vulnerability exists. A vulnerability can affect a package between version numbers that are disjoint sets of intervals (example: [1.0.0-1.1.0], [2.4.6-2.4.8] and [4.5.6-4.6.8]) each of which will be represented in its own Detail. If a specific affected version is provided by a vulnerability database, affected_version_start and affected_version_end will be the same in that Detail.
          &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
          &quot;fullName&quot;: &quot;A String&quot;, # Human readable version string. This string is of the form :- and is only set when kind is NORMAL.
          &quot;inclusive&quot;: True or False, # Whether this version is specifying part of an inclusive range. Grafeas does not have the capability to specify version ranges; instead we have fields that specify start version and end versions. At times this is insufficient - we also need to specify whether the version is included in the range or is excluded from the range. This boolean is expected to be set to true when the version is included in a range.
          &quot;kind&quot;: &quot;A String&quot;, # Required. Distinguishes between sentinel MIN/MAX versions and normal versions.
          &quot;name&quot;: &quot;A String&quot;, # Required only when version kind is NORMAL. The main part of the version name.
          &quot;revision&quot;: &quot;A String&quot;, # The iteration of the package build from the above version.
        },
        &quot;affectedVersionStart&quot;: { # Version contains structured information about the version of a package. # The version number at the start of an interval in which this vulnerability exists. A vulnerability can affect a package between version numbers that are disjoint sets of intervals (example: [1.0.0-1.1.0], [2.4.6-2.4.8] and [4.5.6-4.6.8]) each of which will be represented in its own Detail. If a specific affected version is provided by a vulnerability database, affected_version_start and affected_version_end will be the same in that Detail.
          &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
          &quot;fullName&quot;: &quot;A String&quot;, # Human readable version string. This string is of the form :- and is only set when kind is NORMAL.
          &quot;inclusive&quot;: True or False, # Whether this version is specifying part of an inclusive range. Grafeas does not have the capability to specify version ranges; instead we have fields that specify start version and end versions. At times this is insufficient - we also need to specify whether the version is included in the range or is excluded from the range. This boolean is expected to be set to true when the version is included in a range.
          &quot;kind&quot;: &quot;A String&quot;, # Required. Distinguishes between sentinel MIN/MAX versions and normal versions.
          &quot;name&quot;: &quot;A String&quot;, # Required only when version kind is NORMAL. The main part of the version name.
          &quot;revision&quot;: &quot;A String&quot;, # The iteration of the package build from the above version.
        },
        &quot;description&quot;: &quot;A String&quot;, # A vendor-specific description of this vulnerability.
        &quot;fixedCpeUri&quot;: &quot;A String&quot;, # The distro recommended [CPE URI](https://cpe.mitre.org/specification/) to update to that contains a fix for this vulnerability. It is possible for this to be different from the affected_cpe_uri.
        &quot;fixedPackage&quot;: &quot;A String&quot;, # The distro recommended package to update to that contains a fix for this vulnerability. It is possible for this to be different from the affected_package.
        &quot;fixedVersion&quot;: { # Version contains structured information about the version of a package. # The distro recommended version to update to that contains a fix for this vulnerability. Setting this to VersionKind.MAXIMUM means no such version is yet available.
          &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
          &quot;fullName&quot;: &quot;A String&quot;, # Human readable version string. This string is of the form :- and is only set when kind is NORMAL.
          &quot;inclusive&quot;: True or False, # Whether this version is specifying part of an inclusive range. Grafeas does not have the capability to specify version ranges; instead we have fields that specify start version and end versions. At times this is insufficient - we also need to specify whether the version is included in the range or is excluded from the range. This boolean is expected to be set to true when the version is included in a range.
          &quot;kind&quot;: &quot;A String&quot;, # Required. Distinguishes between sentinel MIN/MAX versions and normal versions.
          &quot;name&quot;: &quot;A String&quot;, # Required only when version kind is NORMAL. The main part of the version name.
          &quot;revision&quot;: &quot;A String&quot;, # The iteration of the package build from the above version.
        },
        &quot;isObsolete&quot;: True or False, # Whether this detail is obsolete. Occurrences are expected not to point to obsolete details.
        &quot;packageType&quot;: &quot;A String&quot;, # The type of package; whether native or non native (e.g., ruby gems, node.js packages, etc.).
        &quot;severityName&quot;: &quot;A String&quot;, # The distro assigned severity of this vulnerability.
        &quot;source&quot;: &quot;A String&quot;, # The source from which the information in this Detail was obtained.
        &quot;sourceUpdateTime&quot;: &quot;A String&quot;, # The time this information was last changed at the source. This is an upstream timestamp from the underlying information source - e.g. Ubuntu security tracker.
        &quot;vendor&quot;: &quot;A String&quot;, # The name of the vendor of the product.
      },
    ],
    &quot;severity&quot;: &quot;A String&quot;, # The note provider assigned severity of this vulnerability.
    &quot;sourceUpdateTime&quot;: &quot;A String&quot;, # The time this information was last changed at the source. This is an upstream timestamp from the underlying information source - e.g. Ubuntu security tracker.
    &quot;windowsDetails&quot;: [ # Windows details get their own format because the information format and model don&#x27;t match a normal detail. Specifically Windows updates are done as patches, thus Windows vulnerabilities really are a missing package, rather than a package being at an incorrect version.
      {
        &quot;cpeUri&quot;: &quot;A String&quot;, # Required. The [CPE URI](https://cpe.mitre.org/specification/) this vulnerability affects.
        &quot;description&quot;: &quot;A String&quot;, # The description of this vulnerability.
        &quot;fixingKbs&quot;: [ # Required. The names of the KBs which have hotfixes to mitigate this vulnerability. Note that there may be multiple hotfixes (and thus multiple KBs) that mitigate a given vulnerability. Currently any listed KBs presence is considered a fix.
          {
            &quot;name&quot;: &quot;A String&quot;, # The KB name (generally of the form KB[0-9]+ (e.g., KB123456)).
            &quot;url&quot;: &quot;A String&quot;, # A link to the KB in the [Windows update catalog] (https://www.catalog.update.microsoft.com/).
          },
        ],
        &quot;name&quot;: &quot;A String&quot;, # Required. The name of this vulnerability.
      },
    ],
  },
  &quot;vulnerabilityAssessment&quot;: { # A single VulnerabilityAssessmentNote represents one particular product&#x27;s vulnerability assessment for one CVE. # A note describing a vulnerability assessment.
    &quot;assessment&quot;: { # Assessment provides all information that is related to a single vulnerability for this product. # Represents a vulnerability assessment for the product.
      &quot;cve&quot;: &quot;A String&quot;, # Holds the MITRE standard Common Vulnerabilities and Exposures (CVE) tracking number for the vulnerability. Deprecated: Use vulnerability_id instead to denote CVEs.
      &quot;impacts&quot;: [ # Contains information about the impact of this vulnerability, this will change with time.
        &quot;A String&quot;,
      ],
      &quot;justification&quot;: { # Justification provides the justification when the state of the assessment if NOT_AFFECTED. # Justification provides the justification when the state of the assessment if NOT_AFFECTED.
        &quot;details&quot;: &quot;A String&quot;, # Additional details on why this justification was chosen.
        &quot;justificationType&quot;: &quot;A String&quot;, # The justification type for this vulnerability.
      },
      &quot;longDescription&quot;: &quot;A String&quot;, # A detailed description of this Vex.
      &quot;relatedUris&quot;: [ # Holds a list of references associated with this vulnerability item and assessment. These uris have additional information about the vulnerability and the assessment itself. E.g. Link to a document which details how this assessment concluded the state of this vulnerability.
        { # Metadata for any related URL information.
          &quot;label&quot;: &quot;A String&quot;, # Label to describe usage of the URL.
          &quot;url&quot;: &quot;A String&quot;, # Specific URL associated with the resource.
        },
      ],
      &quot;remediations&quot;: [ # Specifies details on how to handle (and presumably, fix) a vulnerability.
        { # Specifies details on how to handle (and presumably, fix) a vulnerability.
          &quot;details&quot;: &quot;A String&quot;, # Contains a comprehensive human-readable discussion of the remediation.
          &quot;remediationType&quot;: &quot;A String&quot;, # The type of remediation that can be applied.
          &quot;remediationUri&quot;: { # Metadata for any related URL information. # Contains the URL where to obtain the remediation.
            &quot;label&quot;: &quot;A String&quot;, # Label to describe usage of the URL.
            &quot;url&quot;: &quot;A String&quot;, # Specific URL associated with the resource.
          },
        },
      ],
      &quot;shortDescription&quot;: &quot;A String&quot;, # A one sentence description of this Vex.
      &quot;state&quot;: &quot;A String&quot;, # Provides the state of this Vulnerability assessment.
      &quot;vulnerabilityId&quot;: &quot;A String&quot;, # The vulnerability identifier for this Assessment. Will hold one of common identifiers e.g. CVE, GHSA etc.
    },
    &quot;languageCode&quot;: &quot;A String&quot;, # Identifies the language used by this document, corresponding to IETF BCP 47 / RFC 5646.
    &quot;longDescription&quot;: &quot;A String&quot;, # A detailed description of this Vex.
    &quot;product&quot;: { # Product contains information about a product and how to uniquely identify it. # The product affected by this vex.
      &quot;genericUri&quot;: &quot;A String&quot;, # Contains a URI which is vendor-specific. Example: The artifact repository URL of an image.
      &quot;id&quot;: &quot;A String&quot;, # Token that identifies a product so that it can be referred to from other parts in the document. There is no predefined format as long as it uniquely identifies a group in the context of the current document.
      &quot;name&quot;: &quot;A String&quot;, # Name of the product.
    },
    &quot;publisher&quot;: { # Publisher contains information about the publisher of this Note. # Publisher details of this Note.
      &quot;issuingAuthority&quot;: &quot;A String&quot;, # Provides information about the authority of the issuing party to release the document, in particular, the party&#x27;s constituency and responsibilities or other obligations.
      &quot;name&quot;: &quot;A String&quot;, # Name of the publisher. Examples: &#x27;Google&#x27;, &#x27;Google Cloud Platform&#x27;.
      &quot;publisherNamespace&quot;: &quot;A String&quot;, # The context or namespace. Contains a URL which is under control of the issuing party and can be used as a globally unique identifier for that issuing party. Example: https://csaf.io
    },
    &quot;shortDescription&quot;: &quot;A String&quot;, # A one sentence description of this Vex.
    &quot;title&quot;: &quot;A String&quot;, # The title of the note. E.g. `Vex-Debian-11.4`
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="setIamPolicy">setIamPolicy(resource, body=None, x__xgafv=None)</code>
  <pre>Sets the access control policy on the specified note or occurrence. Requires `containeranalysis.notes.setIamPolicy` or `containeranalysis.occurrences.setIamPolicy` permission if the resource is a note or an occurrence, respectively. The resource takes the format `projects/[PROJECT_ID]/notes/[NOTE_ID]` for notes and `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]` for occurrences.

Args:
  resource: string, REQUIRED: The resource for which the policy is being specified. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for `SetIamPolicy` method.
  &quot;policy&quot;: { # An Identity and Access Management (IAM) policy, which specifies access controls for Google Cloud resources. A `Policy` is a collection of `bindings`. A `binding` binds one or more `members`, or principals, to a single `role`. Principals can be user accounts, service accounts, Google groups, and domains (such as G Suite). A `role` is a named list of permissions; each `role` can be an IAM predefined role or a user-created custom role. For some types of Google Cloud resources, a `binding` can also specify a `condition`, which is a logical expression that allows access to a resource only if the expression evaluates to `true`. A condition can add constraints based on attributes of the request, the resource, or both. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies). **JSON example:** ``` { &quot;bindings&quot;: [ { &quot;role&quot;: &quot;roles/resourcemanager.organizationAdmin&quot;, &quot;members&quot;: [ &quot;user:mike@example.com&quot;, &quot;group:admins@example.com&quot;, &quot;domain:google.com&quot;, &quot;serviceAccount:my-project-id@appspot.gserviceaccount.com&quot; ] }, { &quot;role&quot;: &quot;roles/resourcemanager.organizationViewer&quot;, &quot;members&quot;: [ &quot;user:eve@example.com&quot; ], &quot;condition&quot;: { &quot;title&quot;: &quot;expirable access&quot;, &quot;description&quot;: &quot;Does not grant access after Sep 2020&quot;, &quot;expression&quot;: &quot;request.time &lt; timestamp(&#x27;2020-10-01T00:00:00.000Z&#x27;)&quot;, } } ], &quot;etag&quot;: &quot;BwWWja0YfJA=&quot;, &quot;version&quot;: 3 } ``` **YAML example:** ``` bindings: - members: - user:mike@example.com - group:admins@example.com - domain:google.com - serviceAccount:my-project-id@appspot.gserviceaccount.com role: roles/resourcemanager.organizationAdmin - members: - user:eve@example.com role: roles/resourcemanager.organizationViewer condition: title: expirable access description: Does not grant access after Sep 2020 expression: request.time &lt; timestamp(&#x27;2020-10-01T00:00:00.000Z&#x27;) etag: BwWWja0YfJA= version: 3 ``` For a description of IAM and its features, see the [IAM documentation](https://cloud.google.com/iam/docs/). # REQUIRED: The complete policy to be applied to the `resource`. The size of the policy is limited to a few 10s of KB. An empty policy is a valid policy but certain Google Cloud services (such as Projects) might reject them.
    &quot;bindings&quot;: [ # Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.
      { # Associates `members`, or principals, with a `role`.
        &quot;condition&quot;: { # Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: &quot;Summary size limit&quot; description: &quot;Determines if a summary is less than 100 chars&quot; expression: &quot;document.summary.size() &lt; 100&quot; Example (Equality): title: &quot;Requestor is owner&quot; description: &quot;Determines if requestor is the document owner&quot; expression: &quot;document.owner == request.auth.claims.email&quot; Example (Logic): title: &quot;Public documents&quot; description: &quot;Determine whether the document should be publicly visible&quot; expression: &quot;document.type != &#x27;private&#x27; &amp;&amp; document.type != &#x27;internal&#x27;&quot; Example (Data Manipulation): title: &quot;Notification string&quot; description: &quot;Create a notification string with a timestamp.&quot; expression: &quot;&#x27;New message received at &#x27; + string(document.create_time)&quot; The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information. # The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
          &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.
          &quot;expression&quot;: &quot;A String&quot;, # Textual representation of an expression in Common Expression Language syntax.
          &quot;location&quot;: &quot;A String&quot;, # Optional. String indicating the location of the expression for error reporting, e.g. a file name and a position in the file.
          &quot;title&quot;: &quot;A String&quot;, # Optional. Title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.
        },
        &quot;members&quot;: [ # Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}`: A single identity in a workforce identity pool. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/group/{group_id}`: All workforce identities in a group. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/attribute.{attribute_name}/{attribute_value}`: All workforce identities with a specific attribute value. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/*`: All identities in a workforce identity pool. * `principal://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/subject/{subject_attribute_value}`: A single identity in a workload identity pool. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/group/{group_id}`: A workload identity pool group. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/attribute.{attribute_name}/{attribute_value}`: All identities in a workload identity pool with a certain attribute. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/*`: All identities in a workload identity pool. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding. * `deleted:principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}`: Deleted single identity in a workforce identity pool. For example, `deleted:principal://iam.googleapis.com/locations/global/workforcePools/my-pool-id/subject/my-subject-attribute-value`.
          &quot;A String&quot;,
        ],
        &quot;role&quot;: &quot;A String&quot;, # Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`. For an overview of the IAM roles and permissions, see the [IAM documentation](https://cloud.google.com/iam/docs/roles-overview). For a list of the available pre-defined roles, see [here](https://cloud.google.com/iam/docs/understanding-roles).
      },
    ],
    &quot;etag&quot;: &quot;A String&quot;, # `etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.
    &quot;version&quot;: 42, # Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
  },
}

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

Returns:
  An object of the form:

    { # An Identity and Access Management (IAM) policy, which specifies access controls for Google Cloud resources. A `Policy` is a collection of `bindings`. A `binding` binds one or more `members`, or principals, to a single `role`. Principals can be user accounts, service accounts, Google groups, and domains (such as G Suite). A `role` is a named list of permissions; each `role` can be an IAM predefined role or a user-created custom role. For some types of Google Cloud resources, a `binding` can also specify a `condition`, which is a logical expression that allows access to a resource only if the expression evaluates to `true`. A condition can add constraints based on attributes of the request, the resource, or both. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies). **JSON example:** ``` { &quot;bindings&quot;: [ { &quot;role&quot;: &quot;roles/resourcemanager.organizationAdmin&quot;, &quot;members&quot;: [ &quot;user:mike@example.com&quot;, &quot;group:admins@example.com&quot;, &quot;domain:google.com&quot;, &quot;serviceAccount:my-project-id@appspot.gserviceaccount.com&quot; ] }, { &quot;role&quot;: &quot;roles/resourcemanager.organizationViewer&quot;, &quot;members&quot;: [ &quot;user:eve@example.com&quot; ], &quot;condition&quot;: { &quot;title&quot;: &quot;expirable access&quot;, &quot;description&quot;: &quot;Does not grant access after Sep 2020&quot;, &quot;expression&quot;: &quot;request.time &lt; timestamp(&#x27;2020-10-01T00:00:00.000Z&#x27;)&quot;, } } ], &quot;etag&quot;: &quot;BwWWja0YfJA=&quot;, &quot;version&quot;: 3 } ``` **YAML example:** ``` bindings: - members: - user:mike@example.com - group:admins@example.com - domain:google.com - serviceAccount:my-project-id@appspot.gserviceaccount.com role: roles/resourcemanager.organizationAdmin - members: - user:eve@example.com role: roles/resourcemanager.organizationViewer condition: title: expirable access description: Does not grant access after Sep 2020 expression: request.time &lt; timestamp(&#x27;2020-10-01T00:00:00.000Z&#x27;) etag: BwWWja0YfJA= version: 3 ``` For a description of IAM and its features, see the [IAM documentation](https://cloud.google.com/iam/docs/).
  &quot;bindings&quot;: [ # Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.
    { # Associates `members`, or principals, with a `role`.
      &quot;condition&quot;: { # Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: &quot;Summary size limit&quot; description: &quot;Determines if a summary is less than 100 chars&quot; expression: &quot;document.summary.size() &lt; 100&quot; Example (Equality): title: &quot;Requestor is owner&quot; description: &quot;Determines if requestor is the document owner&quot; expression: &quot;document.owner == request.auth.claims.email&quot; Example (Logic): title: &quot;Public documents&quot; description: &quot;Determine whether the document should be publicly visible&quot; expression: &quot;document.type != &#x27;private&#x27; &amp;&amp; document.type != &#x27;internal&#x27;&quot; Example (Data Manipulation): title: &quot;Notification string&quot; description: &quot;Create a notification string with a timestamp.&quot; expression: &quot;&#x27;New message received at &#x27; + string(document.create_time)&quot; The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information. # The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
        &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.
        &quot;expression&quot;: &quot;A String&quot;, # Textual representation of an expression in Common Expression Language syntax.
        &quot;location&quot;: &quot;A String&quot;, # Optional. String indicating the location of the expression for error reporting, e.g. a file name and a position in the file.
        &quot;title&quot;: &quot;A String&quot;, # Optional. Title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.
      },
      &quot;members&quot;: [ # Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}`: A single identity in a workforce identity pool. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/group/{group_id}`: All workforce identities in a group. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/attribute.{attribute_name}/{attribute_value}`: All workforce identities with a specific attribute value. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/*`: All identities in a workforce identity pool. * `principal://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/subject/{subject_attribute_value}`: A single identity in a workload identity pool. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/group/{group_id}`: A workload identity pool group. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/attribute.{attribute_name}/{attribute_value}`: All identities in a workload identity pool with a certain attribute. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/*`: All identities in a workload identity pool. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding. * `deleted:principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}`: Deleted single identity in a workforce identity pool. For example, `deleted:principal://iam.googleapis.com/locations/global/workforcePools/my-pool-id/subject/my-subject-attribute-value`.
        &quot;A String&quot;,
      ],
      &quot;role&quot;: &quot;A String&quot;, # Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`. For an overview of the IAM roles and permissions, see the [IAM documentation](https://cloud.google.com/iam/docs/roles-overview). For a list of the available pre-defined roles, see [here](https://cloud.google.com/iam/docs/understanding-roles).
    },
  ],
  &quot;etag&quot;: &quot;A String&quot;, # `etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.
  &quot;version&quot;: 42, # Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
}</pre>
</div>

<div class="method">
    <code class="details" id="testIamPermissions">testIamPermissions(resource, body=None, x__xgafv=None)</code>
  <pre>Returns the permissions that a caller has on the specified note or occurrence. Requires list permission on the project (for example, `containeranalysis.notes.list`). The resource takes the format `projects/[PROJECT_ID]/notes/[NOTE_ID]` for notes and `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]` for occurrences.

Args:
  resource: string, REQUIRED: The resource for which the policy detail is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for `TestIamPermissions` method.
  &quot;permissions&quot;: [ # The set of permissions to check for the `resource`. Permissions with wildcards (such as `*` or `storage.*`) are not allowed. For more information see [IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).
    &quot;A String&quot;,
  ],
}

  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 `TestIamPermissions` method.
  &quot;permissions&quot;: [ # A subset of `TestPermissionsRequest.permissions` that the caller is allowed.
    &quot;A String&quot;,
  ],
}</pre>
</div>

</body></html>