<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_v1beta1.html">Container Analysis API</a> . <a href="containeranalysis_v1beta1.projects.html">projects</a> . <a href="containeranalysis_v1beta1.projects.notes.html">notes</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="containeranalysis_v1beta1.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(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#patch">patch(name, body=None, updateMask=None, x__xgafv=None)</a></code></p>
<p class="firstline">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, the key is expected to be the note ID. Max allowed length is 1000.
    &quot;a_key&quot;: { # A type of analysis that can be done for a resource.
      &quot;attestationAuthority&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;baseImage&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;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;signature&quot;: { # Message encapsulating the signature of the verified build. # Signature of the build in occurrences pointing to this build note containing build details.
          &quot;keyId&quot;: &quot;A String&quot;, # An ID for the key used to sign. This could be either an ID for the key stored in `public_key` (such as the ID or fingerprint for a PGP key, or the CN for a cert), or a reference to an external key (such as a reference to a key in Cloud Key Management Service).
          &quot;keyType&quot;: &quot;A String&quot;, # The type of the key, either stored in `public_key` or referenced in `key_id`.
          &quot;publicKey&quot;: &quot;A String&quot;, # Public key of the builder which can be used to verify that the related findings are valid and unchanged. If `key_type` is empty, this defaults to PEM encoded public keys. This field may be empty if `key_id` references an external key. For Cloud Build based signatures, this is a PEM encoded public key. To verify the Cloud Build signature, place the contents of this field into a file (public.pem). The signature field is base64-decoded into its binary representation in signature.bin, and the provenance bytes from `BuildDetails` are base64-decoded into a binary representation in signed.bin. OpenSSL can then verify the signature: `openssl sha256 -verify public.pem -signature signature.bin signed.bin`
          &quot;signature&quot;: &quot;A String&quot;, # Required. Signature of the related `BuildProvenance`. In JSON, this is base-64 encoded.
        },
      },
      &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;deployable&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;expirationTime&quot;: &quot;A String&quot;, # Time of expiration for this note. Empty if note does not expire.
      &quot;intoto&quot;: { # This contains the fields corresponding to the definition of a software supply chain step in an in-toto layout. This information goes into a Grafeas note. # A note describing an in-toto link.
        &quot;expectedCommand&quot;: [ # This field contains the expected command used to perform the step.
          &quot;A String&quot;,
        ],
        &quot;expectedMaterials&quot;: [ # The following fields contain in-toto artifact rules identifying the artifacts that enter this supply chain step, and exit the supply chain step, i.e. materials and products of the step.
          { # Defines an object to declare an in-toto artifact rule
            &quot;artifactRule&quot;: [
              &quot;A String&quot;,
            ],
          },
        ],
        &quot;expectedProducts&quot;: [
          { # Defines an object to declare an in-toto artifact rule
            &quot;artifactRule&quot;: [
              &quot;A String&quot;,
            ],
          },
        ],
        &quot;signingKeys&quot;: [ # This field contains the public keys that can be used to verify the signatures on the step metadata.
          { # This defines the format used to record keys used in the software supply chain. An in-toto link is attested using one or more keys defined in the in-toto layout. An example of this is: { &quot;key_id&quot;: &quot;776a00e29f3559e0141b3b096f696abc6cfb0c657ab40f441132b345b0...&quot;, &quot;key_type&quot;: &quot;rsa&quot;, &quot;public_key_value&quot;: &quot;-----BEGIN PUBLIC KEY-----\nMIIBojANBgkqhkiG9w0B...&quot;, &quot;key_scheme&quot;: &quot;rsassa-pss-sha256&quot; } The format for in-toto&#x27;s key definition can be found in section 4.2 of the in-toto specification.
            &quot;keyId&quot;: &quot;A String&quot;, # key_id is an identifier for the signing key.
            &quot;keyScheme&quot;: &quot;A String&quot;, # This field contains the corresponding signature scheme. Eg: &quot;rsassa-pss-sha256&quot;.
            &quot;keyType&quot;: &quot;A String&quot;, # This field identifies the specific signing method. Eg: &quot;rsa&quot;, &quot;ed25519&quot;, and &quot;ecdsa&quot;.
            &quot;publicKeyValue&quot;: &quot;A String&quot;, # This field contains the actual public key.
          },
        ],
        &quot;stepName&quot;: &quot;A String&quot;, # This field identifies the name of the step in the supply chain.
        &quot;threshold&quot;: &quot;A String&quot;, # This field contains a value that indicates the minimum number of keys that need to be used to sign the step&#x27;s in-toto link.
      },
      &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;: { # This represents a particular package that is distributed over various channels. E.g., glibc (aka libc6) is distributed by many, at various versions. # A note describing a package hosted by various package managers.
        &quot;distribution&quot;: [ # 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;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;name&quot;: &quot;A String&quot;, # Required. Immutable. The name of the package.
      },
      &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;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;vulnerability&quot;: { # Vulnerability provides metadata about a security vulnerability in a Note. # A note describing a package vulnerability.
        &quot;cvssScore&quot;: 3.14, # The CVSS score for this vulnerability.
        &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.
          &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;details&quot;: [ # All information about the package to specifically identify this vulnerability. One entry per (version range and cpe_uri) the package vulnerability has manifested in.
          { # Identifies all appearances of this vulnerability in the package for a specific distro/location. For example: glibc in cpe:/o:debian:debian_linux:8 for versions 2.1 - 2.2
            &quot;cpeUri&quot;: &quot;A String&quot;, # Required. The CPE URI in [cpe format](https://cpe.mitre.org/specification/) in which the vulnerability manifests. Examples include distro or storage location for vulnerable jar.
            &quot;description&quot;: &quot;A String&quot;, # A vendor-specific description of this note.
            &quot;fixedLocation&quot;: { # The location of the vulnerability. # The fix for this specific package version.
              &quot;cpeUri&quot;: &quot;A String&quot;, # Required. The CPE URI in [cpe format](https://cpe.mitre.org/specification/) format. Examples include distro or storage location for vulnerable jar.
              &quot;package&quot;: &quot;A String&quot;, # Required. The package being described.
              &quot;version&quot;: { # Version contains structured information about the version of a package. # Required. The version of the package being described.
                &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
                &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;maxAffectedVersion&quot;: { # Version contains structured information about the version of a package. # The max version of the package in which the vulnerability exists.
              &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
              &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;minAffectedVersion&quot;: { # Version contains structured information about the version of a package. # The min version of the package in which the vulnerability exists.
              &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
              &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;package&quot;: &quot;A String&quot;, # Required. The name of the package where the vulnerability was found.
            &quot;packageType&quot;: &quot;A String&quot;, # The type of package; whether native or non native(ruby gems, node.js packages etc).
            &quot;severityName&quot;: &quot;A String&quot;, # The severity (eg: distro assigned severity) for 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;severity&quot;: &quot;A String&quot;, # Note provider assigned impact of the 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 in [cpe format](https://cpe.mitre.org/specification/) in which the vulnerability manifests. Examples include distro or storage location for vulnerable jar.
            &quot;description&quot;: &quot;A String&quot;, # The description of the 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 kb&#x27;s presence is considered a fix.
              {
                &quot;name&quot;: &quot;A String&quot;, # The KB name (generally of the form KB[0-9]+ i.e. 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 the vulnerability.
          },
        ],
      },
    },
  },
}

  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;attestationAuthority&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;baseImage&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;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;signature&quot;: { # Message encapsulating the signature of the verified build. # Signature of the build in occurrences pointing to this build note containing build details.
          &quot;keyId&quot;: &quot;A String&quot;, # An ID for the key used to sign. This could be either an ID for the key stored in `public_key` (such as the ID or fingerprint for a PGP key, or the CN for a cert), or a reference to an external key (such as a reference to a key in Cloud Key Management Service).
          &quot;keyType&quot;: &quot;A String&quot;, # The type of the key, either stored in `public_key` or referenced in `key_id`.
          &quot;publicKey&quot;: &quot;A String&quot;, # Public key of the builder which can be used to verify that the related findings are valid and unchanged. If `key_type` is empty, this defaults to PEM encoded public keys. This field may be empty if `key_id` references an external key. For Cloud Build based signatures, this is a PEM encoded public key. To verify the Cloud Build signature, place the contents of this field into a file (public.pem). The signature field is base64-decoded into its binary representation in signature.bin, and the provenance bytes from `BuildDetails` are base64-decoded into a binary representation in signed.bin. OpenSSL can then verify the signature: `openssl sha256 -verify public.pem -signature signature.bin signed.bin`
          &quot;signature&quot;: &quot;A String&quot;, # Required. Signature of the related `BuildProvenance`. In JSON, this is base-64 encoded.
        },
      },
      &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;deployable&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;expirationTime&quot;: &quot;A String&quot;, # Time of expiration for this note. Empty if note does not expire.
      &quot;intoto&quot;: { # This contains the fields corresponding to the definition of a software supply chain step in an in-toto layout. This information goes into a Grafeas note. # A note describing an in-toto link.
        &quot;expectedCommand&quot;: [ # This field contains the expected command used to perform the step.
          &quot;A String&quot;,
        ],
        &quot;expectedMaterials&quot;: [ # The following fields contain in-toto artifact rules identifying the artifacts that enter this supply chain step, and exit the supply chain step, i.e. materials and products of the step.
          { # Defines an object to declare an in-toto artifact rule
            &quot;artifactRule&quot;: [
              &quot;A String&quot;,
            ],
          },
        ],
        &quot;expectedProducts&quot;: [
          { # Defines an object to declare an in-toto artifact rule
            &quot;artifactRule&quot;: [
              &quot;A String&quot;,
            ],
          },
        ],
        &quot;signingKeys&quot;: [ # This field contains the public keys that can be used to verify the signatures on the step metadata.
          { # This defines the format used to record keys used in the software supply chain. An in-toto link is attested using one or more keys defined in the in-toto layout. An example of this is: { &quot;key_id&quot;: &quot;776a00e29f3559e0141b3b096f696abc6cfb0c657ab40f441132b345b0...&quot;, &quot;key_type&quot;: &quot;rsa&quot;, &quot;public_key_value&quot;: &quot;-----BEGIN PUBLIC KEY-----\nMIIBojANBgkqhkiG9w0B...&quot;, &quot;key_scheme&quot;: &quot;rsassa-pss-sha256&quot; } The format for in-toto&#x27;s key definition can be found in section 4.2 of the in-toto specification.
            &quot;keyId&quot;: &quot;A String&quot;, # key_id is an identifier for the signing key.
            &quot;keyScheme&quot;: &quot;A String&quot;, # This field contains the corresponding signature scheme. Eg: &quot;rsassa-pss-sha256&quot;.
            &quot;keyType&quot;: &quot;A String&quot;, # This field identifies the specific signing method. Eg: &quot;rsa&quot;, &quot;ed25519&quot;, and &quot;ecdsa&quot;.
            &quot;publicKeyValue&quot;: &quot;A String&quot;, # This field contains the actual public key.
          },
        ],
        &quot;stepName&quot;: &quot;A String&quot;, # This field identifies the name of the step in the supply chain.
        &quot;threshold&quot;: &quot;A String&quot;, # This field contains a value that indicates the minimum number of keys that need to be used to sign the step&#x27;s in-toto link.
      },
      &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;: { # This represents a particular package that is distributed over various channels. E.g., glibc (aka libc6) is distributed by many, at various versions. # A note describing a package hosted by various package managers.
        &quot;distribution&quot;: [ # 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;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;name&quot;: &quot;A String&quot;, # Required. Immutable. The name of the package.
      },
      &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;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;vulnerability&quot;: { # Vulnerability provides metadata about a security vulnerability in a Note. # A note describing a package vulnerability.
        &quot;cvssScore&quot;: 3.14, # The CVSS score for this vulnerability.
        &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.
          &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;details&quot;: [ # All information about the package to specifically identify this vulnerability. One entry per (version range and cpe_uri) the package vulnerability has manifested in.
          { # Identifies all appearances of this vulnerability in the package for a specific distro/location. For example: glibc in cpe:/o:debian:debian_linux:8 for versions 2.1 - 2.2
            &quot;cpeUri&quot;: &quot;A String&quot;, # Required. The CPE URI in [cpe format](https://cpe.mitre.org/specification/) in which the vulnerability manifests. Examples include distro or storage location for vulnerable jar.
            &quot;description&quot;: &quot;A String&quot;, # A vendor-specific description of this note.
            &quot;fixedLocation&quot;: { # The location of the vulnerability. # The fix for this specific package version.
              &quot;cpeUri&quot;: &quot;A String&quot;, # Required. The CPE URI in [cpe format](https://cpe.mitre.org/specification/) format. Examples include distro or storage location for vulnerable jar.
              &quot;package&quot;: &quot;A String&quot;, # Required. The package being described.
              &quot;version&quot;: { # Version contains structured information about the version of a package. # Required. The version of the package being described.
                &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
                &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;maxAffectedVersion&quot;: { # Version contains structured information about the version of a package. # The max version of the package in which the vulnerability exists.
              &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
              &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;minAffectedVersion&quot;: { # Version contains structured information about the version of a package. # The min version of the package in which the vulnerability exists.
              &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
              &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;package&quot;: &quot;A String&quot;, # Required. The name of the package where the vulnerability was found.
            &quot;packageType&quot;: &quot;A String&quot;, # The type of package; whether native or non native(ruby gems, node.js packages etc).
            &quot;severityName&quot;: &quot;A String&quot;, # The severity (eg: distro assigned severity) for 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;severity&quot;: &quot;A String&quot;, # Note provider assigned impact of the 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 in [cpe format](https://cpe.mitre.org/specification/) in which the vulnerability manifests. Examples include distro or storage location for vulnerable jar.
            &quot;description&quot;: &quot;A String&quot;, # The description of the 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 kb&#x27;s presence is considered a fix.
              {
                &quot;name&quot;: &quot;A String&quot;, # The KB name (generally of the form KB[0-9]+ i.e. 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 the vulnerability.
          },
        ],
      },
    },
  ],
}</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;attestationAuthority&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;baseImage&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;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;signature&quot;: { # Message encapsulating the signature of the verified build. # Signature of the build in occurrences pointing to this build note containing build details.
      &quot;keyId&quot;: &quot;A String&quot;, # An ID for the key used to sign. This could be either an ID for the key stored in `public_key` (such as the ID or fingerprint for a PGP key, or the CN for a cert), or a reference to an external key (such as a reference to a key in Cloud Key Management Service).
      &quot;keyType&quot;: &quot;A String&quot;, # The type of the key, either stored in `public_key` or referenced in `key_id`.
      &quot;publicKey&quot;: &quot;A String&quot;, # Public key of the builder which can be used to verify that the related findings are valid and unchanged. If `key_type` is empty, this defaults to PEM encoded public keys. This field may be empty if `key_id` references an external key. For Cloud Build based signatures, this is a PEM encoded public key. To verify the Cloud Build signature, place the contents of this field into a file (public.pem). The signature field is base64-decoded into its binary representation in signature.bin, and the provenance bytes from `BuildDetails` are base64-decoded into a binary representation in signed.bin. OpenSSL can then verify the signature: `openssl sha256 -verify public.pem -signature signature.bin signed.bin`
      &quot;signature&quot;: &quot;A String&quot;, # Required. Signature of the related `BuildProvenance`. In JSON, this is base-64 encoded.
    },
  },
  &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;deployable&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;expirationTime&quot;: &quot;A String&quot;, # Time of expiration for this note. Empty if note does not expire.
  &quot;intoto&quot;: { # This contains the fields corresponding to the definition of a software supply chain step in an in-toto layout. This information goes into a Grafeas note. # A note describing an in-toto link.
    &quot;expectedCommand&quot;: [ # This field contains the expected command used to perform the step.
      &quot;A String&quot;,
    ],
    &quot;expectedMaterials&quot;: [ # The following fields contain in-toto artifact rules identifying the artifacts that enter this supply chain step, and exit the supply chain step, i.e. materials and products of the step.
      { # Defines an object to declare an in-toto artifact rule
        &quot;artifactRule&quot;: [
          &quot;A String&quot;,
        ],
      },
    ],
    &quot;expectedProducts&quot;: [
      { # Defines an object to declare an in-toto artifact rule
        &quot;artifactRule&quot;: [
          &quot;A String&quot;,
        ],
      },
    ],
    &quot;signingKeys&quot;: [ # This field contains the public keys that can be used to verify the signatures on the step metadata.
      { # This defines the format used to record keys used in the software supply chain. An in-toto link is attested using one or more keys defined in the in-toto layout. An example of this is: { &quot;key_id&quot;: &quot;776a00e29f3559e0141b3b096f696abc6cfb0c657ab40f441132b345b0...&quot;, &quot;key_type&quot;: &quot;rsa&quot;, &quot;public_key_value&quot;: &quot;-----BEGIN PUBLIC KEY-----\nMIIBojANBgkqhkiG9w0B...&quot;, &quot;key_scheme&quot;: &quot;rsassa-pss-sha256&quot; } The format for in-toto&#x27;s key definition can be found in section 4.2 of the in-toto specification.
        &quot;keyId&quot;: &quot;A String&quot;, # key_id is an identifier for the signing key.
        &quot;keyScheme&quot;: &quot;A String&quot;, # This field contains the corresponding signature scheme. Eg: &quot;rsassa-pss-sha256&quot;.
        &quot;keyType&quot;: &quot;A String&quot;, # This field identifies the specific signing method. Eg: &quot;rsa&quot;, &quot;ed25519&quot;, and &quot;ecdsa&quot;.
        &quot;publicKeyValue&quot;: &quot;A String&quot;, # This field contains the actual public key.
      },
    ],
    &quot;stepName&quot;: &quot;A String&quot;, # This field identifies the name of the step in the supply chain.
    &quot;threshold&quot;: &quot;A String&quot;, # This field contains a value that indicates the minimum number of keys that need to be used to sign the step&#x27;s in-toto link.
  },
  &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;: { # This represents a particular package that is distributed over various channels. E.g., glibc (aka libc6) is distributed by many, at various versions. # A note describing a package hosted by various package managers.
    &quot;distribution&quot;: [ # 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;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;name&quot;: &quot;A String&quot;, # Required. Immutable. The name of the package.
  },
  &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;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;vulnerability&quot;: { # Vulnerability provides metadata about a security vulnerability in a Note. # A note describing a package vulnerability.
    &quot;cvssScore&quot;: 3.14, # The CVSS score for this vulnerability.
    &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.
      &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;details&quot;: [ # All information about the package to specifically identify this vulnerability. One entry per (version range and cpe_uri) the package vulnerability has manifested in.
      { # Identifies all appearances of this vulnerability in the package for a specific distro/location. For example: glibc in cpe:/o:debian:debian_linux:8 for versions 2.1 - 2.2
        &quot;cpeUri&quot;: &quot;A String&quot;, # Required. The CPE URI in [cpe format](https://cpe.mitre.org/specification/) in which the vulnerability manifests. Examples include distro or storage location for vulnerable jar.
        &quot;description&quot;: &quot;A String&quot;, # A vendor-specific description of this note.
        &quot;fixedLocation&quot;: { # The location of the vulnerability. # The fix for this specific package version.
          &quot;cpeUri&quot;: &quot;A String&quot;, # Required. The CPE URI in [cpe format](https://cpe.mitre.org/specification/) format. Examples include distro or storage location for vulnerable jar.
          &quot;package&quot;: &quot;A String&quot;, # Required. The package being described.
          &quot;version&quot;: { # Version contains structured information about the version of a package. # Required. The version of the package being described.
            &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
            &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;maxAffectedVersion&quot;: { # Version contains structured information about the version of a package. # The max version of the package in which the vulnerability exists.
          &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
          &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;minAffectedVersion&quot;: { # Version contains structured information about the version of a package. # The min version of the package in which the vulnerability exists.
          &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
          &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;package&quot;: &quot;A String&quot;, # Required. The name of the package where the vulnerability was found.
        &quot;packageType&quot;: &quot;A String&quot;, # The type of package; whether native or non native(ruby gems, node.js packages etc).
        &quot;severityName&quot;: &quot;A String&quot;, # The severity (eg: distro assigned severity) for 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;severity&quot;: &quot;A String&quot;, # Note provider assigned impact of the 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 in [cpe format](https://cpe.mitre.org/specification/) in which the vulnerability manifests. Examples include distro or storage location for vulnerable jar.
        &quot;description&quot;: &quot;A String&quot;, # The description of the 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 kb&#x27;s presence is considered a fix.
          {
            &quot;name&quot;: &quot;A String&quot;, # The KB name (generally of the form KB[0-9]+ i.e. 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 the vulnerability.
      },
    ],
  },
}

  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;attestationAuthority&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;baseImage&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;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;signature&quot;: { # Message encapsulating the signature of the verified build. # Signature of the build in occurrences pointing to this build note containing build details.
      &quot;keyId&quot;: &quot;A String&quot;, # An ID for the key used to sign. This could be either an ID for the key stored in `public_key` (such as the ID or fingerprint for a PGP key, or the CN for a cert), or a reference to an external key (such as a reference to a key in Cloud Key Management Service).
      &quot;keyType&quot;: &quot;A String&quot;, # The type of the key, either stored in `public_key` or referenced in `key_id`.
      &quot;publicKey&quot;: &quot;A String&quot;, # Public key of the builder which can be used to verify that the related findings are valid and unchanged. If `key_type` is empty, this defaults to PEM encoded public keys. This field may be empty if `key_id` references an external key. For Cloud Build based signatures, this is a PEM encoded public key. To verify the Cloud Build signature, place the contents of this field into a file (public.pem). The signature field is base64-decoded into its binary representation in signature.bin, and the provenance bytes from `BuildDetails` are base64-decoded into a binary representation in signed.bin. OpenSSL can then verify the signature: `openssl sha256 -verify public.pem -signature signature.bin signed.bin`
      &quot;signature&quot;: &quot;A String&quot;, # Required. Signature of the related `BuildProvenance`. In JSON, this is base-64 encoded.
    },
  },
  &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;deployable&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;expirationTime&quot;: &quot;A String&quot;, # Time of expiration for this note. Empty if note does not expire.
  &quot;intoto&quot;: { # This contains the fields corresponding to the definition of a software supply chain step in an in-toto layout. This information goes into a Grafeas note. # A note describing an in-toto link.
    &quot;expectedCommand&quot;: [ # This field contains the expected command used to perform the step.
      &quot;A String&quot;,
    ],
    &quot;expectedMaterials&quot;: [ # The following fields contain in-toto artifact rules identifying the artifacts that enter this supply chain step, and exit the supply chain step, i.e. materials and products of the step.
      { # Defines an object to declare an in-toto artifact rule
        &quot;artifactRule&quot;: [
          &quot;A String&quot;,
        ],
      },
    ],
    &quot;expectedProducts&quot;: [
      { # Defines an object to declare an in-toto artifact rule
        &quot;artifactRule&quot;: [
          &quot;A String&quot;,
        ],
      },
    ],
    &quot;signingKeys&quot;: [ # This field contains the public keys that can be used to verify the signatures on the step metadata.
      { # This defines the format used to record keys used in the software supply chain. An in-toto link is attested using one or more keys defined in the in-toto layout. An example of this is: { &quot;key_id&quot;: &quot;776a00e29f3559e0141b3b096f696abc6cfb0c657ab40f441132b345b0...&quot;, &quot;key_type&quot;: &quot;rsa&quot;, &quot;public_key_value&quot;: &quot;-----BEGIN PUBLIC KEY-----\nMIIBojANBgkqhkiG9w0B...&quot;, &quot;key_scheme&quot;: &quot;rsassa-pss-sha256&quot; } The format for in-toto&#x27;s key definition can be found in section 4.2 of the in-toto specification.
        &quot;keyId&quot;: &quot;A String&quot;, # key_id is an identifier for the signing key.
        &quot;keyScheme&quot;: &quot;A String&quot;, # This field contains the corresponding signature scheme. Eg: &quot;rsassa-pss-sha256&quot;.
        &quot;keyType&quot;: &quot;A String&quot;, # This field identifies the specific signing method. Eg: &quot;rsa&quot;, &quot;ed25519&quot;, and &quot;ecdsa&quot;.
        &quot;publicKeyValue&quot;: &quot;A String&quot;, # This field contains the actual public key.
      },
    ],
    &quot;stepName&quot;: &quot;A String&quot;, # This field identifies the name of the step in the supply chain.
    &quot;threshold&quot;: &quot;A String&quot;, # This field contains a value that indicates the minimum number of keys that need to be used to sign the step&#x27;s in-toto link.
  },
  &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;: { # This represents a particular package that is distributed over various channels. E.g., glibc (aka libc6) is distributed by many, at various versions. # A note describing a package hosted by various package managers.
    &quot;distribution&quot;: [ # 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;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;name&quot;: &quot;A String&quot;, # Required. Immutable. The name of the package.
  },
  &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;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;vulnerability&quot;: { # Vulnerability provides metadata about a security vulnerability in a Note. # A note describing a package vulnerability.
    &quot;cvssScore&quot;: 3.14, # The CVSS score for this vulnerability.
    &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.
      &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;details&quot;: [ # All information about the package to specifically identify this vulnerability. One entry per (version range and cpe_uri) the package vulnerability has manifested in.
      { # Identifies all appearances of this vulnerability in the package for a specific distro/location. For example: glibc in cpe:/o:debian:debian_linux:8 for versions 2.1 - 2.2
        &quot;cpeUri&quot;: &quot;A String&quot;, # Required. The CPE URI in [cpe format](https://cpe.mitre.org/specification/) in which the vulnerability manifests. Examples include distro or storage location for vulnerable jar.
        &quot;description&quot;: &quot;A String&quot;, # A vendor-specific description of this note.
        &quot;fixedLocation&quot;: { # The location of the vulnerability. # The fix for this specific package version.
          &quot;cpeUri&quot;: &quot;A String&quot;, # Required. The CPE URI in [cpe format](https://cpe.mitre.org/specification/) format. Examples include distro or storage location for vulnerable jar.
          &quot;package&quot;: &quot;A String&quot;, # Required. The package being described.
          &quot;version&quot;: { # Version contains structured information about the version of a package. # Required. The version of the package being described.
            &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
            &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;maxAffectedVersion&quot;: { # Version contains structured information about the version of a package. # The max version of the package in which the vulnerability exists.
          &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
          &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;minAffectedVersion&quot;: { # Version contains structured information about the version of a package. # The min version of the package in which the vulnerability exists.
          &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
          &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;package&quot;: &quot;A String&quot;, # Required. The name of the package where the vulnerability was found.
        &quot;packageType&quot;: &quot;A String&quot;, # The type of package; whether native or non native(ruby gems, node.js packages etc).
        &quot;severityName&quot;: &quot;A String&quot;, # The severity (eg: distro assigned severity) for 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;severity&quot;: &quot;A String&quot;, # Note provider assigned impact of the 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 in [cpe format](https://cpe.mitre.org/specification/) in which the vulnerability manifests. Examples include distro or storage location for vulnerable jar.
        &quot;description&quot;: &quot;A String&quot;, # The description of the 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 kb&#x27;s presence is considered a fix.
          {
            &quot;name&quot;: &quot;A String&quot;, # The KB name (generally of the form KB[0-9]+ i.e. 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 the vulnerability.
      },
    ],
  },
}</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); } The JSON representation for `Empty` is empty JSON object `{}`.
}</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;attestationAuthority&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;baseImage&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;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;signature&quot;: { # Message encapsulating the signature of the verified build. # Signature of the build in occurrences pointing to this build note containing build details.
      &quot;keyId&quot;: &quot;A String&quot;, # An ID for the key used to sign. This could be either an ID for the key stored in `public_key` (such as the ID or fingerprint for a PGP key, or the CN for a cert), or a reference to an external key (such as a reference to a key in Cloud Key Management Service).
      &quot;keyType&quot;: &quot;A String&quot;, # The type of the key, either stored in `public_key` or referenced in `key_id`.
      &quot;publicKey&quot;: &quot;A String&quot;, # Public key of the builder which can be used to verify that the related findings are valid and unchanged. If `key_type` is empty, this defaults to PEM encoded public keys. This field may be empty if `key_id` references an external key. For Cloud Build based signatures, this is a PEM encoded public key. To verify the Cloud Build signature, place the contents of this field into a file (public.pem). The signature field is base64-decoded into its binary representation in signature.bin, and the provenance bytes from `BuildDetails` are base64-decoded into a binary representation in signed.bin. OpenSSL can then verify the signature: `openssl sha256 -verify public.pem -signature signature.bin signed.bin`
      &quot;signature&quot;: &quot;A String&quot;, # Required. Signature of the related `BuildProvenance`. In JSON, this is base-64 encoded.
    },
  },
  &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;deployable&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;expirationTime&quot;: &quot;A String&quot;, # Time of expiration for this note. Empty if note does not expire.
  &quot;intoto&quot;: { # This contains the fields corresponding to the definition of a software supply chain step in an in-toto layout. This information goes into a Grafeas note. # A note describing an in-toto link.
    &quot;expectedCommand&quot;: [ # This field contains the expected command used to perform the step.
      &quot;A String&quot;,
    ],
    &quot;expectedMaterials&quot;: [ # The following fields contain in-toto artifact rules identifying the artifacts that enter this supply chain step, and exit the supply chain step, i.e. materials and products of the step.
      { # Defines an object to declare an in-toto artifact rule
        &quot;artifactRule&quot;: [
          &quot;A String&quot;,
        ],
      },
    ],
    &quot;expectedProducts&quot;: [
      { # Defines an object to declare an in-toto artifact rule
        &quot;artifactRule&quot;: [
          &quot;A String&quot;,
        ],
      },
    ],
    &quot;signingKeys&quot;: [ # This field contains the public keys that can be used to verify the signatures on the step metadata.
      { # This defines the format used to record keys used in the software supply chain. An in-toto link is attested using one or more keys defined in the in-toto layout. An example of this is: { &quot;key_id&quot;: &quot;776a00e29f3559e0141b3b096f696abc6cfb0c657ab40f441132b345b0...&quot;, &quot;key_type&quot;: &quot;rsa&quot;, &quot;public_key_value&quot;: &quot;-----BEGIN PUBLIC KEY-----\nMIIBojANBgkqhkiG9w0B...&quot;, &quot;key_scheme&quot;: &quot;rsassa-pss-sha256&quot; } The format for in-toto&#x27;s key definition can be found in section 4.2 of the in-toto specification.
        &quot;keyId&quot;: &quot;A String&quot;, # key_id is an identifier for the signing key.
        &quot;keyScheme&quot;: &quot;A String&quot;, # This field contains the corresponding signature scheme. Eg: &quot;rsassa-pss-sha256&quot;.
        &quot;keyType&quot;: &quot;A String&quot;, # This field identifies the specific signing method. Eg: &quot;rsa&quot;, &quot;ed25519&quot;, and &quot;ecdsa&quot;.
        &quot;publicKeyValue&quot;: &quot;A String&quot;, # This field contains the actual public key.
      },
    ],
    &quot;stepName&quot;: &quot;A String&quot;, # This field identifies the name of the step in the supply chain.
    &quot;threshold&quot;: &quot;A String&quot;, # This field contains a value that indicates the minimum number of keys that need to be used to sign the step&#x27;s in-toto link.
  },
  &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;: { # This represents a particular package that is distributed over various channels. E.g., glibc (aka libc6) is distributed by many, at various versions. # A note describing a package hosted by various package managers.
    &quot;distribution&quot;: [ # 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;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;name&quot;: &quot;A String&quot;, # Required. Immutable. The name of the package.
  },
  &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;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;vulnerability&quot;: { # Vulnerability provides metadata about a security vulnerability in a Note. # A note describing a package vulnerability.
    &quot;cvssScore&quot;: 3.14, # The CVSS score for this vulnerability.
    &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.
      &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;details&quot;: [ # All information about the package to specifically identify this vulnerability. One entry per (version range and cpe_uri) the package vulnerability has manifested in.
      { # Identifies all appearances of this vulnerability in the package for a specific distro/location. For example: glibc in cpe:/o:debian:debian_linux:8 for versions 2.1 - 2.2
        &quot;cpeUri&quot;: &quot;A String&quot;, # Required. The CPE URI in [cpe format](https://cpe.mitre.org/specification/) in which the vulnerability manifests. Examples include distro or storage location for vulnerable jar.
        &quot;description&quot;: &quot;A String&quot;, # A vendor-specific description of this note.
        &quot;fixedLocation&quot;: { # The location of the vulnerability. # The fix for this specific package version.
          &quot;cpeUri&quot;: &quot;A String&quot;, # Required. The CPE URI in [cpe format](https://cpe.mitre.org/specification/) format. Examples include distro or storage location for vulnerable jar.
          &quot;package&quot;: &quot;A String&quot;, # Required. The package being described.
          &quot;version&quot;: { # Version contains structured information about the version of a package. # Required. The version of the package being described.
            &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
            &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;maxAffectedVersion&quot;: { # Version contains structured information about the version of a package. # The max version of the package in which the vulnerability exists.
          &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
          &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;minAffectedVersion&quot;: { # Version contains structured information about the version of a package. # The min version of the package in which the vulnerability exists.
          &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
          &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;package&quot;: &quot;A String&quot;, # Required. The name of the package where the vulnerability was found.
        &quot;packageType&quot;: &quot;A String&quot;, # The type of package; whether native or non native(ruby gems, node.js packages etc).
        &quot;severityName&quot;: &quot;A String&quot;, # The severity (eg: distro assigned severity) for 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;severity&quot;: &quot;A String&quot;, # Note provider assigned impact of the 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 in [cpe format](https://cpe.mitre.org/specification/) in which the vulnerability manifests. Examples include distro or storage location for vulnerable jar.
        &quot;description&quot;: &quot;A String&quot;, # The description of the 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 kb&#x27;s presence is considered a fix.
          {
            &quot;name&quot;: &quot;A String&quot;, # The KB name (generally of the form KB[0-9]+ i.e. 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 the vulnerability.
      },
    ],
  },
}</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 the operation documentation 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 policy format version to be returned. Valid values are 0, 1, and 3. Requests specifying an invalid value will be rejected. Requests for policies with any conditional bindings must specify version 3. Policies without any conditional bindings may specify any valid value 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` to a single `role`. Members 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` to 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 member.
    { # Associates `members` 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 members 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 identities requesting access for a Cloud Platform 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. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`.
        &quot;A String&quot;,
      ],
      &quot;role&quot;: &quot;A String&quot;, # Role that is assigned to `members`. For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
    },
  ],
  &quot;etag&quot;: &quot;A String&quot;, # `etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.
  &quot;version&quot;: 42, # Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
}</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;attestationAuthority&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;baseImage&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;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;signature&quot;: { # Message encapsulating the signature of the verified build. # Signature of the build in occurrences pointing to this build note containing build details.
          &quot;keyId&quot;: &quot;A String&quot;, # An ID for the key used to sign. This could be either an ID for the key stored in `public_key` (such as the ID or fingerprint for a PGP key, or the CN for a cert), or a reference to an external key (such as a reference to a key in Cloud Key Management Service).
          &quot;keyType&quot;: &quot;A String&quot;, # The type of the key, either stored in `public_key` or referenced in `key_id`.
          &quot;publicKey&quot;: &quot;A String&quot;, # Public key of the builder which can be used to verify that the related findings are valid and unchanged. If `key_type` is empty, this defaults to PEM encoded public keys. This field may be empty if `key_id` references an external key. For Cloud Build based signatures, this is a PEM encoded public key. To verify the Cloud Build signature, place the contents of this field into a file (public.pem). The signature field is base64-decoded into its binary representation in signature.bin, and the provenance bytes from `BuildDetails` are base64-decoded into a binary representation in signed.bin. OpenSSL can then verify the signature: `openssl sha256 -verify public.pem -signature signature.bin signed.bin`
          &quot;signature&quot;: &quot;A String&quot;, # Required. Signature of the related `BuildProvenance`. In JSON, this is base-64 encoded.
        },
      },
      &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;deployable&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;expirationTime&quot;: &quot;A String&quot;, # Time of expiration for this note. Empty if note does not expire.
      &quot;intoto&quot;: { # This contains the fields corresponding to the definition of a software supply chain step in an in-toto layout. This information goes into a Grafeas note. # A note describing an in-toto link.
        &quot;expectedCommand&quot;: [ # This field contains the expected command used to perform the step.
          &quot;A String&quot;,
        ],
        &quot;expectedMaterials&quot;: [ # The following fields contain in-toto artifact rules identifying the artifacts that enter this supply chain step, and exit the supply chain step, i.e. materials and products of the step.
          { # Defines an object to declare an in-toto artifact rule
            &quot;artifactRule&quot;: [
              &quot;A String&quot;,
            ],
          },
        ],
        &quot;expectedProducts&quot;: [
          { # Defines an object to declare an in-toto artifact rule
            &quot;artifactRule&quot;: [
              &quot;A String&quot;,
            ],
          },
        ],
        &quot;signingKeys&quot;: [ # This field contains the public keys that can be used to verify the signatures on the step metadata.
          { # This defines the format used to record keys used in the software supply chain. An in-toto link is attested using one or more keys defined in the in-toto layout. An example of this is: { &quot;key_id&quot;: &quot;776a00e29f3559e0141b3b096f696abc6cfb0c657ab40f441132b345b0...&quot;, &quot;key_type&quot;: &quot;rsa&quot;, &quot;public_key_value&quot;: &quot;-----BEGIN PUBLIC KEY-----\nMIIBojANBgkqhkiG9w0B...&quot;, &quot;key_scheme&quot;: &quot;rsassa-pss-sha256&quot; } The format for in-toto&#x27;s key definition can be found in section 4.2 of the in-toto specification.
            &quot;keyId&quot;: &quot;A String&quot;, # key_id is an identifier for the signing key.
            &quot;keyScheme&quot;: &quot;A String&quot;, # This field contains the corresponding signature scheme. Eg: &quot;rsassa-pss-sha256&quot;.
            &quot;keyType&quot;: &quot;A String&quot;, # This field identifies the specific signing method. Eg: &quot;rsa&quot;, &quot;ed25519&quot;, and &quot;ecdsa&quot;.
            &quot;publicKeyValue&quot;: &quot;A String&quot;, # This field contains the actual public key.
          },
        ],
        &quot;stepName&quot;: &quot;A String&quot;, # This field identifies the name of the step in the supply chain.
        &quot;threshold&quot;: &quot;A String&quot;, # This field contains a value that indicates the minimum number of keys that need to be used to sign the step&#x27;s in-toto link.
      },
      &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;: { # This represents a particular package that is distributed over various channels. E.g., glibc (aka libc6) is distributed by many, at various versions. # A note describing a package hosted by various package managers.
        &quot;distribution&quot;: [ # 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;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;name&quot;: &quot;A String&quot;, # Required. Immutable. The name of the package.
      },
      &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;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;vulnerability&quot;: { # Vulnerability provides metadata about a security vulnerability in a Note. # A note describing a package vulnerability.
        &quot;cvssScore&quot;: 3.14, # The CVSS score for this vulnerability.
        &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.
          &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;details&quot;: [ # All information about the package to specifically identify this vulnerability. One entry per (version range and cpe_uri) the package vulnerability has manifested in.
          { # Identifies all appearances of this vulnerability in the package for a specific distro/location. For example: glibc in cpe:/o:debian:debian_linux:8 for versions 2.1 - 2.2
            &quot;cpeUri&quot;: &quot;A String&quot;, # Required. The CPE URI in [cpe format](https://cpe.mitre.org/specification/) in which the vulnerability manifests. Examples include distro or storage location for vulnerable jar.
            &quot;description&quot;: &quot;A String&quot;, # A vendor-specific description of this note.
            &quot;fixedLocation&quot;: { # The location of the vulnerability. # The fix for this specific package version.
              &quot;cpeUri&quot;: &quot;A String&quot;, # Required. The CPE URI in [cpe format](https://cpe.mitre.org/specification/) format. Examples include distro or storage location for vulnerable jar.
              &quot;package&quot;: &quot;A String&quot;, # Required. The package being described.
              &quot;version&quot;: { # Version contains structured information about the version of a package. # Required. The version of the package being described.
                &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
                &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;maxAffectedVersion&quot;: { # Version contains structured information about the version of a package. # The max version of the package in which the vulnerability exists.
              &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
              &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;minAffectedVersion&quot;: { # Version contains structured information about the version of a package. # The min version of the package in which the vulnerability exists.
              &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
              &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;package&quot;: &quot;A String&quot;, # Required. The name of the package where the vulnerability was found.
            &quot;packageType&quot;: &quot;A String&quot;, # The type of package; whether native or non native(ruby gems, node.js packages etc).
            &quot;severityName&quot;: &quot;A String&quot;, # The severity (eg: distro assigned severity) for 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;severity&quot;: &quot;A String&quot;, # Note provider assigned impact of the 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 in [cpe format](https://cpe.mitre.org/specification/) in which the vulnerability manifests. Examples include distro or storage location for vulnerable jar.
            &quot;description&quot;: &quot;A String&quot;, # The description of the 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 kb&#x27;s presence is considered a fix.
              {
                &quot;name&quot;: &quot;A String&quot;, # The KB name (generally of the form KB[0-9]+ i.e. 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 the vulnerability.
          },
        ],
      },
    },
  ],
}</pre>
</div>

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

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

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

<div class="method">
    <code class="details" id="patch">patch(name, body=None, updateMask=None, x__xgafv=None)</code>
  <pre>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;attestationAuthority&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;baseImage&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;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;signature&quot;: { # Message encapsulating the signature of the verified build. # Signature of the build in occurrences pointing to this build note containing build details.
      &quot;keyId&quot;: &quot;A String&quot;, # An ID for the key used to sign. This could be either an ID for the key stored in `public_key` (such as the ID or fingerprint for a PGP key, or the CN for a cert), or a reference to an external key (such as a reference to a key in Cloud Key Management Service).
      &quot;keyType&quot;: &quot;A String&quot;, # The type of the key, either stored in `public_key` or referenced in `key_id`.
      &quot;publicKey&quot;: &quot;A String&quot;, # Public key of the builder which can be used to verify that the related findings are valid and unchanged. If `key_type` is empty, this defaults to PEM encoded public keys. This field may be empty if `key_id` references an external key. For Cloud Build based signatures, this is a PEM encoded public key. To verify the Cloud Build signature, place the contents of this field into a file (public.pem). The signature field is base64-decoded into its binary representation in signature.bin, and the provenance bytes from `BuildDetails` are base64-decoded into a binary representation in signed.bin. OpenSSL can then verify the signature: `openssl sha256 -verify public.pem -signature signature.bin signed.bin`
      &quot;signature&quot;: &quot;A String&quot;, # Required. Signature of the related `BuildProvenance`. In JSON, this is base-64 encoded.
    },
  },
  &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;deployable&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;expirationTime&quot;: &quot;A String&quot;, # Time of expiration for this note. Empty if note does not expire.
  &quot;intoto&quot;: { # This contains the fields corresponding to the definition of a software supply chain step in an in-toto layout. This information goes into a Grafeas note. # A note describing an in-toto link.
    &quot;expectedCommand&quot;: [ # This field contains the expected command used to perform the step.
      &quot;A String&quot;,
    ],
    &quot;expectedMaterials&quot;: [ # The following fields contain in-toto artifact rules identifying the artifacts that enter this supply chain step, and exit the supply chain step, i.e. materials and products of the step.
      { # Defines an object to declare an in-toto artifact rule
        &quot;artifactRule&quot;: [
          &quot;A String&quot;,
        ],
      },
    ],
    &quot;expectedProducts&quot;: [
      { # Defines an object to declare an in-toto artifact rule
        &quot;artifactRule&quot;: [
          &quot;A String&quot;,
        ],
      },
    ],
    &quot;signingKeys&quot;: [ # This field contains the public keys that can be used to verify the signatures on the step metadata.
      { # This defines the format used to record keys used in the software supply chain. An in-toto link is attested using one or more keys defined in the in-toto layout. An example of this is: { &quot;key_id&quot;: &quot;776a00e29f3559e0141b3b096f696abc6cfb0c657ab40f441132b345b0...&quot;, &quot;key_type&quot;: &quot;rsa&quot;, &quot;public_key_value&quot;: &quot;-----BEGIN PUBLIC KEY-----\nMIIBojANBgkqhkiG9w0B...&quot;, &quot;key_scheme&quot;: &quot;rsassa-pss-sha256&quot; } The format for in-toto&#x27;s key definition can be found in section 4.2 of the in-toto specification.
        &quot;keyId&quot;: &quot;A String&quot;, # key_id is an identifier for the signing key.
        &quot;keyScheme&quot;: &quot;A String&quot;, # This field contains the corresponding signature scheme. Eg: &quot;rsassa-pss-sha256&quot;.
        &quot;keyType&quot;: &quot;A String&quot;, # This field identifies the specific signing method. Eg: &quot;rsa&quot;, &quot;ed25519&quot;, and &quot;ecdsa&quot;.
        &quot;publicKeyValue&quot;: &quot;A String&quot;, # This field contains the actual public key.
      },
    ],
    &quot;stepName&quot;: &quot;A String&quot;, # This field identifies the name of the step in the supply chain.
    &quot;threshold&quot;: &quot;A String&quot;, # This field contains a value that indicates the minimum number of keys that need to be used to sign the step&#x27;s in-toto link.
  },
  &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;: { # This represents a particular package that is distributed over various channels. E.g., glibc (aka libc6) is distributed by many, at various versions. # A note describing a package hosted by various package managers.
    &quot;distribution&quot;: [ # 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;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;name&quot;: &quot;A String&quot;, # Required. Immutable. The name of the package.
  },
  &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;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;vulnerability&quot;: { # Vulnerability provides metadata about a security vulnerability in a Note. # A note describing a package vulnerability.
    &quot;cvssScore&quot;: 3.14, # The CVSS score for this vulnerability.
    &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.
      &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;details&quot;: [ # All information about the package to specifically identify this vulnerability. One entry per (version range and cpe_uri) the package vulnerability has manifested in.
      { # Identifies all appearances of this vulnerability in the package for a specific distro/location. For example: glibc in cpe:/o:debian:debian_linux:8 for versions 2.1 - 2.2
        &quot;cpeUri&quot;: &quot;A String&quot;, # Required. The CPE URI in [cpe format](https://cpe.mitre.org/specification/) in which the vulnerability manifests. Examples include distro or storage location for vulnerable jar.
        &quot;description&quot;: &quot;A String&quot;, # A vendor-specific description of this note.
        &quot;fixedLocation&quot;: { # The location of the vulnerability. # The fix for this specific package version.
          &quot;cpeUri&quot;: &quot;A String&quot;, # Required. The CPE URI in [cpe format](https://cpe.mitre.org/specification/) format. Examples include distro or storage location for vulnerable jar.
          &quot;package&quot;: &quot;A String&quot;, # Required. The package being described.
          &quot;version&quot;: { # Version contains structured information about the version of a package. # Required. The version of the package being described.
            &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
            &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;maxAffectedVersion&quot;: { # Version contains structured information about the version of a package. # The max version of the package in which the vulnerability exists.
          &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
          &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;minAffectedVersion&quot;: { # Version contains structured information about the version of a package. # The min version of the package in which the vulnerability exists.
          &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
          &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;package&quot;: &quot;A String&quot;, # Required. The name of the package where the vulnerability was found.
        &quot;packageType&quot;: &quot;A String&quot;, # The type of package; whether native or non native(ruby gems, node.js packages etc).
        &quot;severityName&quot;: &quot;A String&quot;, # The severity (eg: distro assigned severity) for 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;severity&quot;: &quot;A String&quot;, # Note provider assigned impact of the 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 in [cpe format](https://cpe.mitre.org/specification/) in which the vulnerability manifests. Examples include distro or storage location for vulnerable jar.
        &quot;description&quot;: &quot;A String&quot;, # The description of the 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 kb&#x27;s presence is considered a fix.
          {
            &quot;name&quot;: &quot;A String&quot;, # The KB name (generally of the form KB[0-9]+ i.e. 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 the vulnerability.
      },
    ],
  },
}

  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;attestationAuthority&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;baseImage&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;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;signature&quot;: { # Message encapsulating the signature of the verified build. # Signature of the build in occurrences pointing to this build note containing build details.
      &quot;keyId&quot;: &quot;A String&quot;, # An ID for the key used to sign. This could be either an ID for the key stored in `public_key` (such as the ID or fingerprint for a PGP key, or the CN for a cert), or a reference to an external key (such as a reference to a key in Cloud Key Management Service).
      &quot;keyType&quot;: &quot;A String&quot;, # The type of the key, either stored in `public_key` or referenced in `key_id`.
      &quot;publicKey&quot;: &quot;A String&quot;, # Public key of the builder which can be used to verify that the related findings are valid and unchanged. If `key_type` is empty, this defaults to PEM encoded public keys. This field may be empty if `key_id` references an external key. For Cloud Build based signatures, this is a PEM encoded public key. To verify the Cloud Build signature, place the contents of this field into a file (public.pem). The signature field is base64-decoded into its binary representation in signature.bin, and the provenance bytes from `BuildDetails` are base64-decoded into a binary representation in signed.bin. OpenSSL can then verify the signature: `openssl sha256 -verify public.pem -signature signature.bin signed.bin`
      &quot;signature&quot;: &quot;A String&quot;, # Required. Signature of the related `BuildProvenance`. In JSON, this is base-64 encoded.
    },
  },
  &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;deployable&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;expirationTime&quot;: &quot;A String&quot;, # Time of expiration for this note. Empty if note does not expire.
  &quot;intoto&quot;: { # This contains the fields corresponding to the definition of a software supply chain step in an in-toto layout. This information goes into a Grafeas note. # A note describing an in-toto link.
    &quot;expectedCommand&quot;: [ # This field contains the expected command used to perform the step.
      &quot;A String&quot;,
    ],
    &quot;expectedMaterials&quot;: [ # The following fields contain in-toto artifact rules identifying the artifacts that enter this supply chain step, and exit the supply chain step, i.e. materials and products of the step.
      { # Defines an object to declare an in-toto artifact rule
        &quot;artifactRule&quot;: [
          &quot;A String&quot;,
        ],
      },
    ],
    &quot;expectedProducts&quot;: [
      { # Defines an object to declare an in-toto artifact rule
        &quot;artifactRule&quot;: [
          &quot;A String&quot;,
        ],
      },
    ],
    &quot;signingKeys&quot;: [ # This field contains the public keys that can be used to verify the signatures on the step metadata.
      { # This defines the format used to record keys used in the software supply chain. An in-toto link is attested using one or more keys defined in the in-toto layout. An example of this is: { &quot;key_id&quot;: &quot;776a00e29f3559e0141b3b096f696abc6cfb0c657ab40f441132b345b0...&quot;, &quot;key_type&quot;: &quot;rsa&quot;, &quot;public_key_value&quot;: &quot;-----BEGIN PUBLIC KEY-----\nMIIBojANBgkqhkiG9w0B...&quot;, &quot;key_scheme&quot;: &quot;rsassa-pss-sha256&quot; } The format for in-toto&#x27;s key definition can be found in section 4.2 of the in-toto specification.
        &quot;keyId&quot;: &quot;A String&quot;, # key_id is an identifier for the signing key.
        &quot;keyScheme&quot;: &quot;A String&quot;, # This field contains the corresponding signature scheme. Eg: &quot;rsassa-pss-sha256&quot;.
        &quot;keyType&quot;: &quot;A String&quot;, # This field identifies the specific signing method. Eg: &quot;rsa&quot;, &quot;ed25519&quot;, and &quot;ecdsa&quot;.
        &quot;publicKeyValue&quot;: &quot;A String&quot;, # This field contains the actual public key.
      },
    ],
    &quot;stepName&quot;: &quot;A String&quot;, # This field identifies the name of the step in the supply chain.
    &quot;threshold&quot;: &quot;A String&quot;, # This field contains a value that indicates the minimum number of keys that need to be used to sign the step&#x27;s in-toto link.
  },
  &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;: { # This represents a particular package that is distributed over various channels. E.g., glibc (aka libc6) is distributed by many, at various versions. # A note describing a package hosted by various package managers.
    &quot;distribution&quot;: [ # 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;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;name&quot;: &quot;A String&quot;, # Required. Immutable. The name of the package.
  },
  &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;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;vulnerability&quot;: { # Vulnerability provides metadata about a security vulnerability in a Note. # A note describing a package vulnerability.
    &quot;cvssScore&quot;: 3.14, # The CVSS score for this vulnerability.
    &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.
      &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;details&quot;: [ # All information about the package to specifically identify this vulnerability. One entry per (version range and cpe_uri) the package vulnerability has manifested in.
      { # Identifies all appearances of this vulnerability in the package for a specific distro/location. For example: glibc in cpe:/o:debian:debian_linux:8 for versions 2.1 - 2.2
        &quot;cpeUri&quot;: &quot;A String&quot;, # Required. The CPE URI in [cpe format](https://cpe.mitre.org/specification/) in which the vulnerability manifests. Examples include distro or storage location for vulnerable jar.
        &quot;description&quot;: &quot;A String&quot;, # A vendor-specific description of this note.
        &quot;fixedLocation&quot;: { # The location of the vulnerability. # The fix for this specific package version.
          &quot;cpeUri&quot;: &quot;A String&quot;, # Required. The CPE URI in [cpe format](https://cpe.mitre.org/specification/) format. Examples include distro or storage location for vulnerable jar.
          &quot;package&quot;: &quot;A String&quot;, # Required. The package being described.
          &quot;version&quot;: { # Version contains structured information about the version of a package. # Required. The version of the package being described.
            &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
            &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;maxAffectedVersion&quot;: { # Version contains structured information about the version of a package. # The max version of the package in which the vulnerability exists.
          &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
          &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;minAffectedVersion&quot;: { # Version contains structured information about the version of a package. # The min version of the package in which the vulnerability exists.
          &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
          &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;package&quot;: &quot;A String&quot;, # Required. The name of the package where the vulnerability was found.
        &quot;packageType&quot;: &quot;A String&quot;, # The type of package; whether native or non native(ruby gems, node.js packages etc).
        &quot;severityName&quot;: &quot;A String&quot;, # The severity (eg: distro assigned severity) for 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;severity&quot;: &quot;A String&quot;, # Note provider assigned impact of the 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 in [cpe format](https://cpe.mitre.org/specification/) in which the vulnerability manifests. Examples include distro or storage location for vulnerable jar.
        &quot;description&quot;: &quot;A String&quot;, # The description of the 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 kb&#x27;s presence is considered a fix.
          {
            &quot;name&quot;: &quot;A String&quot;, # The KB name (generally of the form KB[0-9]+ i.e. 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 the vulnerability.
      },
    ],
  },
}</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 the operation documentation 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` to a single `role`. Members 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 Cloud Platform services (such as Projects) might reject them.
    &quot;bindings&quot;: [ # Associates a list of `members` to 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 member.
      { # Associates `members` 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 members 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 identities requesting access for a Cloud Platform 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. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`.
          &quot;A String&quot;,
        ],
        &quot;role&quot;: &quot;A String&quot;, # Role that is assigned to `members`. For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
      },
    ],
    &quot;etag&quot;: &quot;A String&quot;, # `etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.
    &quot;version&quot;: 42, # Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
  },
}

  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` to a single `role`. Members 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` to 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 member.
    { # Associates `members` 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 members 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 identities requesting access for a Cloud Platform 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. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`.
        &quot;A String&quot;,
      ],
      &quot;role&quot;: &quot;A String&quot;, # Role that is assigned to `members`. For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
    },
  ],
  &quot;etag&quot;: &quot;A String&quot;, # `etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.
  &quot;version&quot;: 42, # Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
}</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 the operation documentation 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 &#x27;*&#x27; or &#x27;storage.*&#x27;) 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>