<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_v1alpha1.html">Container Analysis API</a> . <a href="containeranalysis_v1alpha1.projects.html">projects</a> . <a href="containeranalysis_v1alpha1.projects.occurrences.html">occurrences</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#create">create(parent, body=None, name=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a new `Occurrence`. Use this method to create `Occurrences` for a resource.</p>
<p class="toc_element">
  <code><a href="#delete">delete(name, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes the given `Occurrence` from the system. Use this when an `Occurrence` is no longer applicable for the given resource.</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Returns the requested `Occurrence`.</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. Attempting to call this method on a resource without the required permission will result in a `PERMISSION_DENIED` error. Attempting to call this method on a non-existent resource will result in a `NOT_FOUND` error if the user has list permission on the project, or a `PERMISSION_DENIED` error otherwise. The resource takes the following formats: `projects/{PROJECT_ID}/occurrences/{OCCURRENCE_ID}` for occurrences and projects/{PROJECT_ID}/notes/{NOTE_ID} for notes</p>
<p class="toc_element">
  <code><a href="#getNotes">getNotes(name, x__xgafv=None)</a></code></p>
<p class="firstline">Gets the `Note` attached to the given `Occurrence`.</p>
<p class="toc_element">
  <code><a href="#getVulnerabilitySummary">getVulnerabilitySummary(parent, filter=None, x__xgafv=None)</a></code></p>
<p class="firstline">Gets a summary of the number and severity of occurrences.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, filter=None, kind=None, name=None, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists active `Occurrences` for a given project matching the filters.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next()</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#patch">patch(name, body=None, updateMask=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates an existing occurrence.</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. Attempting to call this method without these permissions will result in a ` `PERMISSION_DENIED` error. Attempting to call this method on a non-existent resource will result in a `NOT_FOUND` error if the user has `containeranalysis.notes.list` permission on a `Note` or `containeranalysis.occurrences.list` on an `Occurrence`, or a `PERMISSION_DENIED` error otherwise. The resource takes the following formats: `projects/{projectid}/occurrences/{occurrenceid}` for occurrences and projects/{projectid}/notes/{noteid} for notes</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 resource. Requires list permission on the project (for example, "storage.objects.list" on the containing bucket for testing permission of an object). Attempting to call this method on a non-existent resource will result in a `NOT_FOUND` error if the user has list permission on the project, or a `PERMISSION_DENIED` error otherwise. The resource takes the following formats: `projects/{PROJECT_ID}/occurrences/{OCCURRENCE_ID}` for `Occurrences` and `projects/{PROJECT_ID}/notes/{NOTE_ID}` for `Notes`</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="create">create(parent, body=None, name=None, x__xgafv=None)</code>
  <pre>Creates a new `Occurrence`. Use this method to create `Occurrences` for a resource.

Args:
  parent: string, This field contains the project Id for example: &quot;projects/{project_id}&quot; (required)
  body: object, The request body.
    The object takes the form of:

{ # `Occurrence` includes information about analysis occurrences for an image.
  &quot;attestation&quot;: { # Occurrence that represents a single &quot;attestation&quot;. The authenticity of an Attestation can be verified using the attached signature. If the verifier trusts the public key of the signer, then verifying the signature is sufficient to establish trust. In this circumstance, the AttestationAuthority to which this Attestation is attached is primarily useful for look-up (how to find this Attestation if you already know the Authority and artifact to be verified) and intent (which authority was this attestation intended to sign for). # Describes an attestation of an artifact.
    &quot;pgpSignedAttestation&quot;: { # An attestation wrapper with a PGP-compatible signature. This message only supports `ATTACHED` signatures, where the payload that is signed is included alongside the signature itself in the same file.
      &quot;contentType&quot;: &quot;A String&quot;, # Type (for example schema) of the attestation payload that was signed. The verifier must ensure that the provided type is one that the verifier supports, and that the attestation payload is a valid instantiation of that type (for example by validating a JSON schema).
      &quot;pgpKeyId&quot;: &quot;A String&quot;, # The cryptographic fingerprint of the key used to generate the signature, as output by, e.g. `gpg --list-keys`. This should be the version 4, full 160-bit fingerprint, expressed as a 40 character hexadecimal string. See https://tools.ietf.org/html/rfc4880#section-12.2 for details. Implementations may choose to acknowledge &quot;LONG&quot;, &quot;SHORT&quot;, or other abbreviated key IDs, but only the full fingerprint is guaranteed to work. In gpg, the full fingerprint can be retrieved from the `fpr` field returned when calling --list-keys with --with-colons. For example: ``` gpg --with-colons --with-fingerprint --force-v4-certs \ --list-keys attester@example.com tru::1:1513631572:0:3:1:5 pub:...... fpr:::::::::24FF6481B76AC91E66A00AC657A93A81EF3AE6FB: ``` Above, the fingerprint is `24FF6481B76AC91E66A00AC657A93A81EF3AE6FB`.
      &quot;signature&quot;: &quot;A String&quot;, # The raw content of the signature, as output by GNU Privacy Guard (GPG) or equivalent. Since this message only supports attached signatures, the payload that was signed must be attached. While the signature format supported is dependent on the verification implementation, currently only ASCII-armored (`--armor` to gpg), non-clearsigned (`--sign` rather than `--clearsign` to gpg) are supported. Concretely, `gpg --sign --armor --output=signature.gpg payload.json` will create the signature content expected in this field in `signature.gpg` for the `payload.json` attestation payload.
    },
  },
  &quot;buildDetails&quot;: { # Message encapsulating build provenance details. # Build details for a verifiable build.
    &quot;inTotoSlsaProvenanceV1&quot;: { # In-Toto Slsa Provenance V1 represents a slsa provenance meeting the slsa spec, wrapped in an in-toto statement. This allows for direct jsonification of a to-spec in-toto slsa statement with a to-spec slsa provenance.
      &quot;_type&quot;: &quot;A String&quot;, # InToto spec defined at https://github.com/in-toto/attestation/tree/main/spec#statement
      &quot;predicate&quot;: { # Keep in sync with schema at https://github.com/slsa-framework/slsa/blob/main/docs/provenance/schema/v1/provenance.proto Builder renamed to ProvenanceBuilder because of Java conflicts.
        &quot;buildDefinition&quot;: {
          &quot;buildType&quot;: &quot;A String&quot;,
          &quot;externalParameters&quot;: {
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
          },
          &quot;internalParameters&quot;: {
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
          },
          &quot;resolvedDependencies&quot;: [
            {
              &quot;annotations&quot;: {
                &quot;a_key&quot;: &quot;&quot;,
              },
              &quot;content&quot;: &quot;A String&quot;,
              &quot;digest&quot;: {
                &quot;a_key&quot;: &quot;A String&quot;,
              },
              &quot;downloadLocation&quot;: &quot;A String&quot;,
              &quot;mediaType&quot;: &quot;A String&quot;,
              &quot;name&quot;: &quot;A String&quot;,
              &quot;uri&quot;: &quot;A String&quot;,
            },
          ],
        },
        &quot;runDetails&quot;: {
          &quot;builder&quot;: {
            &quot;builderDependencies&quot;: [
              {
                &quot;annotations&quot;: {
                  &quot;a_key&quot;: &quot;&quot;,
                },
                &quot;content&quot;: &quot;A String&quot;,
                &quot;digest&quot;: {
                  &quot;a_key&quot;: &quot;A String&quot;,
                },
                &quot;downloadLocation&quot;: &quot;A String&quot;,
                &quot;mediaType&quot;: &quot;A String&quot;,
                &quot;name&quot;: &quot;A String&quot;,
                &quot;uri&quot;: &quot;A String&quot;,
              },
            ],
            &quot;id&quot;: &quot;A String&quot;,
            &quot;version&quot;: {
              &quot;a_key&quot;: &quot;A String&quot;,
            },
          },
          &quot;byproducts&quot;: [
            {
              &quot;annotations&quot;: {
                &quot;a_key&quot;: &quot;&quot;,
              },
              &quot;content&quot;: &quot;A String&quot;,
              &quot;digest&quot;: {
                &quot;a_key&quot;: &quot;A String&quot;,
              },
              &quot;downloadLocation&quot;: &quot;A String&quot;,
              &quot;mediaType&quot;: &quot;A String&quot;,
              &quot;name&quot;: &quot;A String&quot;,
              &quot;uri&quot;: &quot;A String&quot;,
            },
          ],
          &quot;metadata&quot;: {
            &quot;finishedOn&quot;: &quot;A String&quot;,
            &quot;invocationId&quot;: &quot;A String&quot;,
            &quot;startedOn&quot;: &quot;A String&quot;,
          },
        },
      },
      &quot;predicateType&quot;: &quot;A String&quot;,
      &quot;subject&quot;: [
        { # Subject refers to the subject of the intoto statement
          &quot;digest&quot;: { # &quot;&quot;: &quot;&quot; Algorithms can be e.g. sha256, sha512 See https://github.com/in-toto/attestation/blob/main/spec/field_types.md#DigestSet
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;name&quot;: &quot;A String&quot;, # name is the name of the Subject used here
        },
      ],
    },
    &quot;intotoProvenance&quot;: { # Deprecated. See InTotoStatement for the replacement. In-toto Provenance representation as defined in spec.
      &quot;builderConfig&quot;: { # required
        &quot;id&quot;: &quot;A String&quot;,
      },
      &quot;materials&quot;: [ # The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on. This is considered to be incomplete unless metadata.completeness.materials is true. Unset or null is equivalent to empty.
        &quot;A String&quot;,
      ],
      &quot;metadata&quot;: { # Other properties of the build.
        &quot;buildFinishedOn&quot;: &quot;A String&quot;, # The timestamp of when the build completed.
        &quot;buildInvocationId&quot;: &quot;A String&quot;, # Identifies the particular build invocation, which can be useful for finding associated logs or other ad-hoc analysis. The value SHOULD be globally unique, per in-toto Provenance spec.
        &quot;buildStartedOn&quot;: &quot;A String&quot;, # The timestamp of when the build started.
        &quot;completeness&quot;: { # Indicates that the builder claims certain fields in this message to be complete. # Indicates that the builder claims certain fields in this message to be complete.
          &quot;arguments&quot;: True or False, # If true, the builder claims that recipe.arguments is complete, meaning that all external inputs are properly captured in the recipe.
          &quot;environment&quot;: True or False, # If true, the builder claims that recipe.environment is claimed to be complete.
          &quot;materials&quot;: True or False, # If true, the builder claims that materials are complete, usually through some controls to prevent network access. Sometimes called &quot;hermetic&quot;.
        },
        &quot;reproducible&quot;: True or False, # If true, the builder claims that running the recipe on materials will produce bit-for-bit identical output.
      },
      &quot;recipe&quot;: { # Steps taken to build the artifact. For a TaskRun, typically each container corresponds to one step in the recipe. # Identifies the configuration used for the build. When combined with materials, this SHOULD fully describe the build, such that re-running this recipe results in bit-for-bit identical output (if the build is reproducible). required
        &quot;arguments&quot;: [ # Collection of all external inputs that influenced the build on top of recipe.definedInMaterial and recipe.entryPoint. For example, if the recipe type were &quot;make&quot;, then this might be the flags passed to make aside from the target, which is captured in recipe.entryPoint.
          {
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
          },
        ],
        &quot;definedInMaterial&quot;: &quot;A String&quot;, # Index in materials containing the recipe steps that are not implied by recipe.type. For example, if the recipe type were &quot;make&quot;, then this would point to the source containing the Makefile, not the make program itself. Set to -1 if the recipe doesn&#x27;t come from a material, as zero is default unset value for int64.
        &quot;entryPoint&quot;: &quot;A String&quot;, # String identifying the entry point into the build. This is often a path to a configuration file and/or a target label within that file. The syntax and meaning are defined by recipe.type. For example, if the recipe type were &quot;make&quot;, then this would reference the directory in which to run make as well as which target to use.
        &quot;environment&quot;: [ # Any other builder-controlled inputs necessary for correctly evaluating the recipe. Usually only needed for reproducing the build but not evaluated as part of policy.
          {
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
          },
        ],
        &quot;type&quot;: &quot;A String&quot;, # URI indicating what type of recipe was performed. It determines the meaning of recipe.entryPoint, recipe.arguments, recipe.environment, and materials.
      },
    },
    &quot;intotoStatement&quot;: { # Spec defined at https://github.com/in-toto/attestation/tree/main/spec#statement The serialized InTotoStatement will be stored as Envelope.payload. Envelope.payloadType is always &quot;application/vnd.in-toto+json&quot;. # In-toto Statement representation as defined in spec. The intoto_statement can contain any type of provenance. The serialized payload of the statement can be stored and signed in the Occurrence&#x27;s envelope.
      &quot;_type&quot;: &quot;A String&quot;, # Always &quot;https://in-toto.io/Statement/v0.1&quot;.
      &quot;predicateType&quot;: &quot;A String&quot;, # &quot;https://slsa.dev/provenance/v0.1&quot; for SlsaProvenance.
      &quot;provenance&quot;: { # Generic Grafeas provenance.
        &quot;builderConfig&quot;: { # required
          &quot;id&quot;: &quot;A String&quot;,
        },
        &quot;materials&quot;: [ # The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on. This is considered to be incomplete unless metadata.completeness.materials is true. Unset or null is equivalent to empty.
          &quot;A String&quot;,
        ],
        &quot;metadata&quot;: { # Other properties of the build.
          &quot;buildFinishedOn&quot;: &quot;A String&quot;, # The timestamp of when the build completed.
          &quot;buildInvocationId&quot;: &quot;A String&quot;, # Identifies the particular build invocation, which can be useful for finding associated logs or other ad-hoc analysis. The value SHOULD be globally unique, per in-toto Provenance spec.
          &quot;buildStartedOn&quot;: &quot;A String&quot;, # The timestamp of when the build started.
          &quot;completeness&quot;: { # Indicates that the builder claims certain fields in this message to be complete. # Indicates that the builder claims certain fields in this message to be complete.
            &quot;arguments&quot;: True or False, # If true, the builder claims that recipe.arguments is complete, meaning that all external inputs are properly captured in the recipe.
            &quot;environment&quot;: True or False, # If true, the builder claims that recipe.environment is claimed to be complete.
            &quot;materials&quot;: True or False, # If true, the builder claims that materials are complete, usually through some controls to prevent network access. Sometimes called &quot;hermetic&quot;.
          },
          &quot;reproducible&quot;: True or False, # If true, the builder claims that running the recipe on materials will produce bit-for-bit identical output.
        },
        &quot;recipe&quot;: { # Steps taken to build the artifact. For a TaskRun, typically each container corresponds to one step in the recipe. # Identifies the configuration used for the build. When combined with materials, this SHOULD fully describe the build, such that re-running this recipe results in bit-for-bit identical output (if the build is reproducible). required
          &quot;arguments&quot;: [ # Collection of all external inputs that influenced the build on top of recipe.definedInMaterial and recipe.entryPoint. For example, if the recipe type were &quot;make&quot;, then this might be the flags passed to make aside from the target, which is captured in recipe.entryPoint.
            {
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
            },
          ],
          &quot;definedInMaterial&quot;: &quot;A String&quot;, # Index in materials containing the recipe steps that are not implied by recipe.type. For example, if the recipe type were &quot;make&quot;, then this would point to the source containing the Makefile, not the make program itself. Set to -1 if the recipe doesn&#x27;t come from a material, as zero is default unset value for int64.
          &quot;entryPoint&quot;: &quot;A String&quot;, # String identifying the entry point into the build. This is often a path to a configuration file and/or a target label within that file. The syntax and meaning are defined by recipe.type. For example, if the recipe type were &quot;make&quot;, then this would reference the directory in which to run make as well as which target to use.
          &quot;environment&quot;: [ # Any other builder-controlled inputs necessary for correctly evaluating the recipe. Usually only needed for reproducing the build but not evaluated as part of policy.
            {
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
            },
          ],
          &quot;type&quot;: &quot;A String&quot;, # URI indicating what type of recipe was performed. It determines the meaning of recipe.entryPoint, recipe.arguments, recipe.environment, and materials.
        },
      },
      &quot;slsaProvenance&quot;: { # SlsaProvenance is the slsa provenance as defined by the slsa spec. # SLSA 0.1 provenance.
        &quot;builder&quot;: { # SlsaBuilder encapsulates the identity of the builder of this provenance. # builder is the builder of this provenance
          &quot;id&quot;: &quot;A String&quot;, # id is the id of the slsa provenance builder
        },
        &quot;materials&quot;: [ # The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on. This is considered to be incomplete unless metadata.completeness.materials is true. Unset or null is equivalent to empty.
          { # Material is a material used in the generation of the provenance
            &quot;digest&quot;: { # digest is a map from a hash algorithm (e.g. sha256) to the value in the material
              &quot;a_key&quot;: &quot;A String&quot;,
            },
            &quot;uri&quot;: &quot;A String&quot;, # uri is the uri of the material
          },
        ],
        &quot;metadata&quot;: { # Other properties of the build. # metadata is the metadata of the provenance
          &quot;buildFinishedOn&quot;: &quot;A String&quot;, # The timestamp of when the build completed.
          &quot;buildInvocationId&quot;: &quot;A String&quot;, # Identifies the particular build invocation, which can be useful for finding associated logs or other ad-hoc analysis. The value SHOULD be globally unique, per in-toto Provenance spec.
          &quot;buildStartedOn&quot;: &quot;A String&quot;, # The timestamp of when the build started.
          &quot;completeness&quot;: { # Indicates that the builder claims certain fields in this message to be complete. # Indicates that the builder claims certain fields in this message to be complete.
            &quot;arguments&quot;: True or False, # If true, the builder claims that recipe.arguments is complete, meaning that all external inputs are properly captured in the recipe.
            &quot;environment&quot;: True or False, # If true, the builder claims that recipe.environment is claimed to be complete.
            &quot;materials&quot;: True or False, # If true, the builder claims that materials are complete, usually through some controls to prevent network access. Sometimes called &quot;hermetic&quot;.
          },
          &quot;reproducible&quot;: True or False, # If true, the builder claims that running the recipe on materials will produce bit-for-bit identical output.
        },
        &quot;recipe&quot;: { # Steps taken to build the artifact. For a TaskRun, typically each container corresponds to one step in the recipe. # Identifies the configuration used for the build. When combined with materials, this SHOULD fully describe the build, such that re-running this recipe results in bit-for-bit identical output (if the build is reproducible).
          &quot;arguments&quot;: { # Collection of all external inputs that influenced the build on top of recipe.definedInMaterial and recipe.entryPoint. For example, if the recipe type were &quot;make&quot;, then this might be the flags passed to make aside from the target, which is captured in recipe.entryPoint. Depending on the recipe Type, the structure may be different.
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
          },
          &quot;definedInMaterial&quot;: &quot;A String&quot;, # Index in materials containing the recipe steps that are not implied by recipe.type. For example, if the recipe type were &quot;make&quot;, then this would point to the source containing the Makefile, not the make program itself. Set to -1 if the recipe doesn&#x27;t come from a material, as zero is default unset value for int64.
          &quot;entryPoint&quot;: &quot;A String&quot;, # String identifying the entry point into the build. This is often a path to a configuration file and/or a target label within that file. The syntax and meaning are defined by recipe.type. For example, if the recipe type were &quot;make&quot;, then this would reference the directory in which to run make as well as which target to use.
          &quot;environment&quot;: { # Any other builder-controlled inputs necessary for correctly evaluating the recipe. Usually only needed for reproducing the build but not evaluated as part of policy. Depending on the recipe Type, the structure may be different.
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
          },
          &quot;type&quot;: &quot;A String&quot;, # URI indicating what type of recipe was performed. It determines the meaning of recipe.entryPoint, recipe.arguments, recipe.environment, and materials.
        },
      },
      &quot;slsaProvenanceZeroTwo&quot;: { # SlsaProvenanceZeroTwo is the slsa provenance as defined by the slsa spec. See full explanation of fields at slsa.dev/provenance/v0.2. # SLSA 0.2 provenance.
        &quot;buildConfig&quot;: { # Lists the steps in the build.
          &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
        },
        &quot;buildType&quot;: &quot;A String&quot;, # URI indicating what type of build was performed.
        &quot;builder&quot;: { # Identifies the entity that executed the recipe, which is trusted to have correctly performed the operation and populated this provenance. # Identifies the entity that executed the recipe, which is trusted to have correctly performed the operation and populated this provenance.
          &quot;id&quot;: &quot;A String&quot;, # URI indicating the builder’s identity.
        },
        &quot;invocation&quot;: { # Identifies the event that kicked off the build. # Identifies the event that kicked off the build.
          &quot;configSource&quot;: { # Describes where the config file that kicked off the build came from. This is effectively a pointer to the source where buildConfig came from. # Describes where the config file that kicked off the build came from.
            &quot;digest&quot;: { # Collection of cryptographic digests for the contents of the artifact specified by invocation.configSource.uri.
              &quot;a_key&quot;: &quot;A String&quot;,
            },
            &quot;entryPoint&quot;: &quot;A String&quot;, # String identifying the entry point into the build.
            &quot;uri&quot;: &quot;A String&quot;, # URI indicating the identity of the source of the config.
          },
          &quot;environment&quot;: { # Any other builder-controlled inputs necessary for correctly evaluating the build.
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
          },
          &quot;parameters&quot;: { # Collection of all external inputs that influenced the build on top of invocation.configSource.
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
          },
        },
        &quot;materials&quot;: [ # The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on.
          { # The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on.
            &quot;digest&quot;: { # Collection of cryptographic digests for the contents of this artifact.
              &quot;a_key&quot;: &quot;A String&quot;,
            },
            &quot;uri&quot;: &quot;A String&quot;, # The method by which this artifact was referenced during the build.
          },
        ],
        &quot;metadata&quot;: { # Other properties of the build. # Other properties of the build.
          &quot;buildFinishedOn&quot;: &quot;A String&quot;, # The timestamp of when the build completed.
          &quot;buildInvocationId&quot;: &quot;A String&quot;, # Identifies this particular build invocation, which can be useful for finding associated logs or other ad-hoc analysis.
          &quot;buildStartedOn&quot;: &quot;A String&quot;, # The timestamp of when the build started.
          &quot;completeness&quot;: { # Indicates that the builder claims certain fields in this message to be complete. # Indicates that the builder claims certain fields in this message to be complete.
            &quot;environment&quot;: True or False, # If true, the builder claims that invocation.environment is complete.
            &quot;materials&quot;: True or False, # If true, the builder claims that materials is complete.
            &quot;parameters&quot;: True or False, # If true, the builder claims that invocation.parameters is complete.
          },
          &quot;reproducible&quot;: True or False, # If true, the builder claims that running invocation on materials will produce bit-for-bit identical output.
        },
      },
      &quot;subject&quot;: [ # subject is the subjects of the intoto statement
        { # Subject refers to the subject of the intoto statement
          &quot;digest&quot;: { # &quot;&quot;: &quot;&quot; Algorithms can be e.g. sha256, sha512 See https://github.com/in-toto/attestation/blob/main/spec/field_types.md#DigestSet
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;name&quot;: &quot;A String&quot;, # name is the name of the Subject used here
        },
      ],
    },
    &quot;provenance&quot;: { # Provenance of a build. Contains all information needed to verify the full details about the build from source to completion. # The actual provenance
      &quot;buildOptions&quot;: { # Special options applied to this build. This is a catch-all field where build providers can enter any desired additional details.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;builderVersion&quot;: &quot;A String&quot;, # Version string of the builder at the time this build was executed.
      &quot;builtArtifacts&quot;: [ # Output of the build.
        { # Artifact describes a build product.
          &quot;checksum&quot;: &quot;A String&quot;, # Hash or checksum value of a binary, or Docker Registry 2.0 digest of a container.
          &quot;id&quot;: &quot;A String&quot;, # Artifact ID, if any; for container images, this will be a URL by digest like gcr.io/projectID/imagename@sha256:123456
          &quot;name&quot;: &quot;A String&quot;, # Name of the artifact. This may be the path to a binary or jar file, or in the case of a container build, the name used to push the container image to Google Container Registry, as presented to `docker push`. This field is deprecated in favor of the plural `names` field; it continues to exist here to allow existing BuildProvenance serialized to json in google.devtools.containeranalysis.v1alpha1.BuildDetails.provenance_bytes to deserialize back into proto.
          &quot;names&quot;: [ # Related artifact names. This may be the path to a binary or jar file, or in the case of a container build, the name used to push the container image to Google Container Registry, as presented to `docker push`. Note that a single Artifact ID can have multiple names, for example if two tags are applied to one image.
            &quot;A String&quot;,
          ],
        },
      ],
      &quot;commands&quot;: [ # Commands requested by the build.
        { # Command describes a step performed as part of the build pipeline.
          &quot;args&quot;: [ # Command-line arguments used when executing this Command.
            &quot;A String&quot;,
          ],
          &quot;dir&quot;: &quot;A String&quot;, # Working directory (relative to project source root) used when running this Command.
          &quot;env&quot;: [ # Environment variables set before running this Command.
            &quot;A String&quot;,
          ],
          &quot;id&quot;: &quot;A String&quot;, # Optional unique identifier for this Command, used in wait_for to reference this Command as a dependency.
          &quot;name&quot;: &quot;A String&quot;, # Name of the command, as presented on the command line, or if the command is packaged as a Docker container, as presented to `docker pull`.
          &quot;waitFor&quot;: [ # The ID(s) of the Command(s) that this Command depends on.
            &quot;A String&quot;,
          ],
        },
      ],
      &quot;createTime&quot;: &quot;A String&quot;, # Time at which the build was created.
      &quot;creator&quot;: &quot;A String&quot;, # E-mail address of the user who initiated this build. Note that this was the user&#x27;s e-mail address at the time the build was initiated; this address may not represent the same end-user for all time.
      &quot;finishTime&quot;: &quot;A String&quot;, # Time at which execution of the build was finished.
      &quot;id&quot;: &quot;A String&quot;, # Unique identifier of the build.
      &quot;logsBucket&quot;: &quot;A String&quot;, # Google Cloud Storage bucket where logs were written.
      &quot;projectId&quot;: &quot;A String&quot;, # ID of the project.
      &quot;sourceProvenance&quot;: { # Source describes the location of the source used for the build. # Details of the Source input to the build.
        &quot;additionalContexts&quot;: [ # If provided, some of the source code used for the build may be found in these locations, in the case where the source repository had multiple remotes or submodules. This list will not include the context specified in the context field.
          { # A SourceContext is a reference to a tree of files. A SourceContext together with a path point to a unique revision of a single file or directory.
            &quot;cloudRepo&quot;: { # A CloudRepoSourceContext denotes a particular revision in a Google Cloud Source Repo. # A SourceContext referring to a revision in a Google Cloud Source Repo.
              &quot;aliasContext&quot;: { # An alias to a repo revision. # An alias, which may be a branch or tag.
                &quot;kind&quot;: &quot;A String&quot;, # The alias kind.
                &quot;name&quot;: &quot;A String&quot;, # The alias name.
              },
              &quot;repoId&quot;: { # A unique identifier for a Cloud Repo. # The ID of the repo.
                &quot;projectRepoId&quot;: { # Selects a repo using a Google Cloud Platform project ID (e.g., winged-cargo-31) and a repo name within that project. # A combination of a project ID and a repo name.
                  &quot;projectId&quot;: &quot;A String&quot;, # The ID of the project.
                  &quot;repoName&quot;: &quot;A String&quot;, # The name of the repo. Leave empty for the default repo.
                },
                &quot;uid&quot;: &quot;A String&quot;, # A server-assigned, globally unique identifier.
              },
              &quot;revisionId&quot;: &quot;A String&quot;, # A revision ID.
            },
            &quot;gerrit&quot;: { # A SourceContext referring to a Gerrit project. # A SourceContext referring to a Gerrit project.
              &quot;aliasContext&quot;: { # An alias to a repo revision. # An alias, which may be a branch or tag.
                &quot;kind&quot;: &quot;A String&quot;, # The alias kind.
                &quot;name&quot;: &quot;A String&quot;, # The alias name.
              },
              &quot;gerritProject&quot;: &quot;A String&quot;, # The full project name within the host. Projects may be nested, so &quot;project/subproject&quot; is a valid project name. The &quot;repo name&quot; is the hostURI/project.
              &quot;hostUri&quot;: &quot;A String&quot;, # The URI of a running Gerrit instance.
              &quot;revisionId&quot;: &quot;A String&quot;, # A revision (commit) ID.
            },
            &quot;git&quot;: { # A GitSourceContext denotes a particular revision in a third party Git repository (e.g., GitHub). # A SourceContext referring to any third party Git repo (e.g., GitHub).
              &quot;revisionId&quot;: &quot;A String&quot;, # Required. Git commit hash.
              &quot;url&quot;: &quot;A String&quot;, # Git repository URL.
            },
            &quot;labels&quot;: { # Labels with user defined metadata.
              &quot;a_key&quot;: &quot;A String&quot;,
            },
          },
        ],
        &quot;artifactStorageSource&quot;: { # StorageSource describes the location of the source in an archive file in Google Cloud Storage. # If provided, the input binary artifacts for the build came from this location.
          &quot;bucket&quot;: &quot;A String&quot;, # Google Cloud Storage bucket containing source (see [Bucket Name Requirements] (https://cloud.google.com/storage/docs/bucket-naming#requirements)).
          &quot;generation&quot;: &quot;A String&quot;, # Google Cloud Storage generation for the object.
          &quot;object&quot;: &quot;A String&quot;, # Google Cloud Storage object containing source.
        },
        &quot;context&quot;: { # A SourceContext is a reference to a tree of files. A SourceContext together with a path point to a unique revision of a single file or directory. # If provided, the source code used for the build came from this location.
          &quot;cloudRepo&quot;: { # A CloudRepoSourceContext denotes a particular revision in a Google Cloud Source Repo. # A SourceContext referring to a revision in a Google Cloud Source Repo.
            &quot;aliasContext&quot;: { # An alias to a repo revision. # An alias, which may be a branch or tag.
              &quot;kind&quot;: &quot;A String&quot;, # The alias kind.
              &quot;name&quot;: &quot;A String&quot;, # The alias name.
            },
            &quot;repoId&quot;: { # A unique identifier for a Cloud Repo. # The ID of the repo.
              &quot;projectRepoId&quot;: { # Selects a repo using a Google Cloud Platform project ID (e.g., winged-cargo-31) and a repo name within that project. # A combination of a project ID and a repo name.
                &quot;projectId&quot;: &quot;A String&quot;, # The ID of the project.
                &quot;repoName&quot;: &quot;A String&quot;, # The name of the repo. Leave empty for the default repo.
              },
              &quot;uid&quot;: &quot;A String&quot;, # A server-assigned, globally unique identifier.
            },
            &quot;revisionId&quot;: &quot;A String&quot;, # A revision ID.
          },
          &quot;gerrit&quot;: { # A SourceContext referring to a Gerrit project. # A SourceContext referring to a Gerrit project.
            &quot;aliasContext&quot;: { # An alias to a repo revision. # An alias, which may be a branch or tag.
              &quot;kind&quot;: &quot;A String&quot;, # The alias kind.
              &quot;name&quot;: &quot;A String&quot;, # The alias name.
            },
            &quot;gerritProject&quot;: &quot;A String&quot;, # The full project name within the host. Projects may be nested, so &quot;project/subproject&quot; is a valid project name. The &quot;repo name&quot; is the hostURI/project.
            &quot;hostUri&quot;: &quot;A String&quot;, # The URI of a running Gerrit instance.
            &quot;revisionId&quot;: &quot;A String&quot;, # A revision (commit) ID.
          },
          &quot;git&quot;: { # A GitSourceContext denotes a particular revision in a third party Git repository (e.g., GitHub). # A SourceContext referring to any third party Git repo (e.g., GitHub).
            &quot;revisionId&quot;: &quot;A String&quot;, # Required. Git commit hash.
            &quot;url&quot;: &quot;A String&quot;, # Git repository URL.
          },
          &quot;labels&quot;: { # Labels with user defined metadata.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
        },
        &quot;fileHashes&quot;: { # Hash(es) of the build source, which can be used to verify that the original source integrity was maintained in the build. The keys to this map are file paths used as build source and the values contain the hash values for those files. If the build source came in a single package such as a gzipped tarfile (.tar.gz), the FileHash will be for the single path to that file.
          &quot;a_key&quot;: { # Container message for hashes of byte content of files, used in Source messages to verify integrity of source input to the build.
            &quot;fileHash&quot;: [ # Collection of file hashes.
              { # Container message for hash values.
                &quot;type&quot;: &quot;A String&quot;, # The type of hash that was performed.
                &quot;value&quot;: &quot;A String&quot;, # The hash value.
              },
            ],
          },
        },
        &quot;repoSource&quot;: { # RepoSource describes the location of the source in a Google Cloud Source Repository. # If provided, get source from this location in a Cloud Repo.
          &quot;branchName&quot;: &quot;A String&quot;, # Name of the branch to build.
          &quot;commitSha&quot;: &quot;A String&quot;, # Explicit commit SHA to build.
          &quot;projectId&quot;: &quot;A String&quot;, # ID of the project that owns the repo.
          &quot;repoName&quot;: &quot;A String&quot;, # Name of the repo.
          &quot;tagName&quot;: &quot;A String&quot;, # Name of the tag to build.
        },
        &quot;storageSource&quot;: { # StorageSource describes the location of the source in an archive file in Google Cloud Storage. # If provided, get the source from this location in Google Cloud Storage.
          &quot;bucket&quot;: &quot;A String&quot;, # Google Cloud Storage bucket containing source (see [Bucket Name Requirements] (https://cloud.google.com/storage/docs/bucket-naming#requirements)).
          &quot;generation&quot;: &quot;A String&quot;, # Google Cloud Storage generation for the object.
          &quot;object&quot;: &quot;A String&quot;, # Google Cloud Storage object containing source.
        },
      },
      &quot;startTime&quot;: &quot;A String&quot;, # Time at which execution of the build was started.
      &quot;triggerId&quot;: &quot;A String&quot;, # Trigger identifier if the build was triggered automatically; empty if not.
    },
    &quot;provenanceBytes&quot;: &quot;A String&quot;, # Serialized JSON representation of the provenance, used in generating the `BuildSignature` in the corresponding Result. After verifying the signature, `provenance_bytes` can be unmarshalled and compared to the provenance to confirm that it is unchanged. A base64-encoded string representation of the provenance bytes is used for the signature in order to interoperate with openssl which expects this format for signature verification. The serialized form is captured both to avoid ambiguity in how the provenance is marshalled to json as well to prevent incompatibilities with future changes.
  },
  &quot;compliance&quot;: { # An indication that the compliance checks in the associated ComplianceNote were not satisfied for particular resources or a specified reason. # Describes whether or not a resource passes compliance checks.
    &quot;nonComplianceReason&quot;: &quot;A String&quot;, # The reason for non compliance of these files.
    &quot;nonCompliantFiles&quot;: [ # A list of files which are violating compliance checks.
      { # Details about files that caused a compliance check to fail.
        &quot;displayCommand&quot;: &quot;A String&quot;, # Command to display the non-compliant files.
        &quot;path&quot;: &quot;A String&quot;, # display_command is a single command that can be used to display a list of non compliant files. When there is no such command, we can also iterate a list of non compliant file using &#x27;path&#x27;. Empty if `display_command` is set.
        &quot;reason&quot;: &quot;A String&quot;, # Explains why a file is non compliant for a CIS check.
      },
    ],
  },
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time this `Occurrence` was created.
  &quot;deployment&quot;: { # The period during which some deployable was active in a runtime. # Describes the deployment of an artifact on a runtime.
    &quot;address&quot;: &quot;A String&quot;, # Address of the runtime element hosting this deployment.
    &quot;config&quot;: &quot;A String&quot;, # Configuration used to create this deployment.
    &quot;deployTime&quot;: &quot;A String&quot;, # Beginning of the lifetime of this deployment.
    &quot;platform&quot;: &quot;A String&quot;, # Platform hosting this deployment.
    &quot;resourceUri&quot;: [ # Resource URI for the artifact being deployed taken from the deployable field with the same name.
      &quot;A String&quot;,
    ],
    &quot;undeployTime&quot;: &quot;A String&quot;, # End of the lifetime of this deployment.
    &quot;userEmail&quot;: &quot;A String&quot;, # Identity of the user that triggered this deployment.
  },
  &quot;derivedImage&quot;: { # Derived describes the derived image portion (Occurrence) of the DockerImage relationship. This image would be produced from a Dockerfile with FROM . # Describes how this resource derives from the basis in the associated note.
    &quot;baseResourceUrl&quot;: &quot;A String&quot;, # Output only. This contains the base image URL for the derived image occurrence.
    &quot;distance&quot;: 42, # Output only. The number of layers by which this image differs from the associated image basis.
    &quot;fingerprint&quot;: { # A set of properties that uniquely identify a given Docker image. # The fingerprint of the derived image.
      &quot;v1Name&quot;: &quot;A String&quot;, # The layer-id of the final layer in the Docker image&#x27;s v1 representation. This field can be used as a filter in list requests.
      &quot;v2Blob&quot;: [ # 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. This field can be used as a filter in list requests.
    },
    &quot;layerInfo&quot;: [ # This contains layer-specific metadata, if populated it has length &quot;distance&quot; and is ordered with [distance] being the layer immediately following the base image and [1] being the final layer.
      { # Layer holds metadata specific to a layer of a Docker image.
        &quot;arguments&quot;: &quot;A String&quot;, # The recovered arguments to the Dockerfile directive.
        &quot;directive&quot;: &quot;A String&quot;, # The recovered Dockerfile directive used to construct this layer.
      },
    ],
  },
  &quot;discovered&quot;: { # Provides information about the scan status of a discovered resource. # Describes the initial scan status for this resource.
    &quot;analysisCompleted&quot;: { # Indicates which analysis completed successfully. Multiple types of analysis can be performed on a single resource. # The list of analysis that were completed for a resource.
      &quot;analysisType&quot;: [ # type of analysis that were completed on a resource.
        &quot;A String&quot;,
      ],
    },
    &quot;analysisError&quot;: [ # Indicates any errors encountered during analysis of a resource. There could be 0 or more of these errors.
      { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).
        &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
        &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
          {
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
          },
        ],
        &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
      },
    ],
    &quot;analysisStatus&quot;: &quot;A String&quot;, # The status of discovery for the resource.
    &quot;analysisStatusError&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # When an error is encountered this will contain a LocalizedMessage under details to show to the user. The LocalizedMessage output only and populated by the API.
      &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
      &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
        {
          &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
        },
      ],
      &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
    },
    &quot;archiveTime&quot;: &quot;A String&quot;, # The time occurrences related to this discovery occurrence were archived.
    &quot;continuousAnalysis&quot;: &quot;A String&quot;, # Whether the resource is continuously analyzed.
    &quot;cpe&quot;: &quot;A String&quot;, # The CPE of the resource being scanned.
    &quot;lastScanTime&quot;: &quot;A String&quot;, # The last time this resource was scanned.
    &quot;operation&quot;: { # This resource represents a long-running operation that is the result of a network API call. # Output only. An operation that indicates the status of the current scan. This field is deprecated, do not use.
      &quot;done&quot;: True or False, # If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.
      &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure or cancellation.
        &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
        &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
          {
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
          },
        ],
        &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
      },
      &quot;metadata&quot;: { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
      &quot;name&quot;: &quot;A String&quot;, # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.
      &quot;response&quot;: { # The normal, successful response of the operation. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    },
    &quot;sbomStatus&quot;: { # The status of an SBOM generation. # Output only. The status of an SBOM generation.
      &quot;error&quot;: &quot;A String&quot;, # Output only. If there was an error generating an SBOM, this will indicate what that error was.
      &quot;sbomState&quot;: &quot;A String&quot;, # Output only. The progress of the SBOM generation.
    },
  },
  &quot;dsseAttestation&quot;: { # An occurrence describing an attestation on a resource # This represents a DSSE attestation occurrence
    &quot;envelope&quot;: { # MUST match https://github.com/secure-systems-lab/dsse/blob/master/envelope.proto. An authenticated message of arbitrary type. # If doing something security critical, make sure to verify the signatures in this metadata.
      &quot;payload&quot;: &quot;A String&quot;, # The bytes being signed
      &quot;payloadType&quot;: &quot;A String&quot;, # The type of payload being signed
      &quot;signatures&quot;: [ # The signatures over the payload
        { # A DSSE signature
          &quot;keyid&quot;: &quot;A String&quot;, # A reference id to the key being used for signing
          &quot;sig&quot;: &quot;A String&quot;, # The signature itself
        },
      ],
    },
    &quot;statement&quot;: { # Spec defined at https://github.com/in-toto/attestation/tree/main/spec#statement The serialized InTotoStatement will be stored as Envelope.payload. Envelope.payloadType is always &quot;application/vnd.in-toto+json&quot;.
      &quot;_type&quot;: &quot;A String&quot;, # Always &quot;https://in-toto.io/Statement/v0.1&quot;.
      &quot;predicateType&quot;: &quot;A String&quot;, # &quot;https://slsa.dev/provenance/v0.1&quot; for SlsaProvenance.
      &quot;provenance&quot;: { # Generic Grafeas provenance.
        &quot;builderConfig&quot;: { # required
          &quot;id&quot;: &quot;A String&quot;,
        },
        &quot;materials&quot;: [ # The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on. This is considered to be incomplete unless metadata.completeness.materials is true. Unset or null is equivalent to empty.
          &quot;A String&quot;,
        ],
        &quot;metadata&quot;: { # Other properties of the build.
          &quot;buildFinishedOn&quot;: &quot;A String&quot;, # The timestamp of when the build completed.
          &quot;buildInvocationId&quot;: &quot;A String&quot;, # Identifies the particular build invocation, which can be useful for finding associated logs or other ad-hoc analysis. The value SHOULD be globally unique, per in-toto Provenance spec.
          &quot;buildStartedOn&quot;: &quot;A String&quot;, # The timestamp of when the build started.
          &quot;completeness&quot;: { # Indicates that the builder claims certain fields in this message to be complete. # Indicates that the builder claims certain fields in this message to be complete.
            &quot;arguments&quot;: True or False, # If true, the builder claims that recipe.arguments is complete, meaning that all external inputs are properly captured in the recipe.
            &quot;environment&quot;: True or False, # If true, the builder claims that recipe.environment is claimed to be complete.
            &quot;materials&quot;: True or False, # If true, the builder claims that materials are complete, usually through some controls to prevent network access. Sometimes called &quot;hermetic&quot;.
          },
          &quot;reproducible&quot;: True or False, # If true, the builder claims that running the recipe on materials will produce bit-for-bit identical output.
        },
        &quot;recipe&quot;: { # Steps taken to build the artifact. For a TaskRun, typically each container corresponds to one step in the recipe. # Identifies the configuration used for the build. When combined with materials, this SHOULD fully describe the build, such that re-running this recipe results in bit-for-bit identical output (if the build is reproducible). required
          &quot;arguments&quot;: [ # Collection of all external inputs that influenced the build on top of recipe.definedInMaterial and recipe.entryPoint. For example, if the recipe type were &quot;make&quot;, then this might be the flags passed to make aside from the target, which is captured in recipe.entryPoint.
            {
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
            },
          ],
          &quot;definedInMaterial&quot;: &quot;A String&quot;, # Index in materials containing the recipe steps that are not implied by recipe.type. For example, if the recipe type were &quot;make&quot;, then this would point to the source containing the Makefile, not the make program itself. Set to -1 if the recipe doesn&#x27;t come from a material, as zero is default unset value for int64.
          &quot;entryPoint&quot;: &quot;A String&quot;, # String identifying the entry point into the build. This is often a path to a configuration file and/or a target label within that file. The syntax and meaning are defined by recipe.type. For example, if the recipe type were &quot;make&quot;, then this would reference the directory in which to run make as well as which target to use.
          &quot;environment&quot;: [ # Any other builder-controlled inputs necessary for correctly evaluating the recipe. Usually only needed for reproducing the build but not evaluated as part of policy.
            {
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
            },
          ],
          &quot;type&quot;: &quot;A String&quot;, # URI indicating what type of recipe was performed. It determines the meaning of recipe.entryPoint, recipe.arguments, recipe.environment, and materials.
        },
      },
      &quot;slsaProvenance&quot;: { # SlsaProvenance is the slsa provenance as defined by the slsa spec. # SLSA 0.1 provenance.
        &quot;builder&quot;: { # SlsaBuilder encapsulates the identity of the builder of this provenance. # builder is the builder of this provenance
          &quot;id&quot;: &quot;A String&quot;, # id is the id of the slsa provenance builder
        },
        &quot;materials&quot;: [ # The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on. This is considered to be incomplete unless metadata.completeness.materials is true. Unset or null is equivalent to empty.
          { # Material is a material used in the generation of the provenance
            &quot;digest&quot;: { # digest is a map from a hash algorithm (e.g. sha256) to the value in the material
              &quot;a_key&quot;: &quot;A String&quot;,
            },
            &quot;uri&quot;: &quot;A String&quot;, # uri is the uri of the material
          },
        ],
        &quot;metadata&quot;: { # Other properties of the build. # metadata is the metadata of the provenance
          &quot;buildFinishedOn&quot;: &quot;A String&quot;, # The timestamp of when the build completed.
          &quot;buildInvocationId&quot;: &quot;A String&quot;, # Identifies the particular build invocation, which can be useful for finding associated logs or other ad-hoc analysis. The value SHOULD be globally unique, per in-toto Provenance spec.
          &quot;buildStartedOn&quot;: &quot;A String&quot;, # The timestamp of when the build started.
          &quot;completeness&quot;: { # Indicates that the builder claims certain fields in this message to be complete. # Indicates that the builder claims certain fields in this message to be complete.
            &quot;arguments&quot;: True or False, # If true, the builder claims that recipe.arguments is complete, meaning that all external inputs are properly captured in the recipe.
            &quot;environment&quot;: True or False, # If true, the builder claims that recipe.environment is claimed to be complete.
            &quot;materials&quot;: True or False, # If true, the builder claims that materials are complete, usually through some controls to prevent network access. Sometimes called &quot;hermetic&quot;.
          },
          &quot;reproducible&quot;: True or False, # If true, the builder claims that running the recipe on materials will produce bit-for-bit identical output.
        },
        &quot;recipe&quot;: { # Steps taken to build the artifact. For a TaskRun, typically each container corresponds to one step in the recipe. # Identifies the configuration used for the build. When combined with materials, this SHOULD fully describe the build, such that re-running this recipe results in bit-for-bit identical output (if the build is reproducible).
          &quot;arguments&quot;: { # Collection of all external inputs that influenced the build on top of recipe.definedInMaterial and recipe.entryPoint. For example, if the recipe type were &quot;make&quot;, then this might be the flags passed to make aside from the target, which is captured in recipe.entryPoint. Depending on the recipe Type, the structure may be different.
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
          },
          &quot;definedInMaterial&quot;: &quot;A String&quot;, # Index in materials containing the recipe steps that are not implied by recipe.type. For example, if the recipe type were &quot;make&quot;, then this would point to the source containing the Makefile, not the make program itself. Set to -1 if the recipe doesn&#x27;t come from a material, as zero is default unset value for int64.
          &quot;entryPoint&quot;: &quot;A String&quot;, # String identifying the entry point into the build. This is often a path to a configuration file and/or a target label within that file. The syntax and meaning are defined by recipe.type. For example, if the recipe type were &quot;make&quot;, then this would reference the directory in which to run make as well as which target to use.
          &quot;environment&quot;: { # Any other builder-controlled inputs necessary for correctly evaluating the recipe. Usually only needed for reproducing the build but not evaluated as part of policy. Depending on the recipe Type, the structure may be different.
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
          },
          &quot;type&quot;: &quot;A String&quot;, # URI indicating what type of recipe was performed. It determines the meaning of recipe.entryPoint, recipe.arguments, recipe.environment, and materials.
        },
      },
      &quot;slsaProvenanceZeroTwo&quot;: { # SlsaProvenanceZeroTwo is the slsa provenance as defined by the slsa spec. See full explanation of fields at slsa.dev/provenance/v0.2. # SLSA 0.2 provenance.
        &quot;buildConfig&quot;: { # Lists the steps in the build.
          &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
        },
        &quot;buildType&quot;: &quot;A String&quot;, # URI indicating what type of build was performed.
        &quot;builder&quot;: { # Identifies the entity that executed the recipe, which is trusted to have correctly performed the operation and populated this provenance. # Identifies the entity that executed the recipe, which is trusted to have correctly performed the operation and populated this provenance.
          &quot;id&quot;: &quot;A String&quot;, # URI indicating the builder’s identity.
        },
        &quot;invocation&quot;: { # Identifies the event that kicked off the build. # Identifies the event that kicked off the build.
          &quot;configSource&quot;: { # Describes where the config file that kicked off the build came from. This is effectively a pointer to the source where buildConfig came from. # Describes where the config file that kicked off the build came from.
            &quot;digest&quot;: { # Collection of cryptographic digests for the contents of the artifact specified by invocation.configSource.uri.
              &quot;a_key&quot;: &quot;A String&quot;,
            },
            &quot;entryPoint&quot;: &quot;A String&quot;, # String identifying the entry point into the build.
            &quot;uri&quot;: &quot;A String&quot;, # URI indicating the identity of the source of the config.
          },
          &quot;environment&quot;: { # Any other builder-controlled inputs necessary for correctly evaluating the build.
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
          },
          &quot;parameters&quot;: { # Collection of all external inputs that influenced the build on top of invocation.configSource.
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
          },
        },
        &quot;materials&quot;: [ # The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on.
          { # The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on.
            &quot;digest&quot;: { # Collection of cryptographic digests for the contents of this artifact.
              &quot;a_key&quot;: &quot;A String&quot;,
            },
            &quot;uri&quot;: &quot;A String&quot;, # The method by which this artifact was referenced during the build.
          },
        ],
        &quot;metadata&quot;: { # Other properties of the build. # Other properties of the build.
          &quot;buildFinishedOn&quot;: &quot;A String&quot;, # The timestamp of when the build completed.
          &quot;buildInvocationId&quot;: &quot;A String&quot;, # Identifies this particular build invocation, which can be useful for finding associated logs or other ad-hoc analysis.
          &quot;buildStartedOn&quot;: &quot;A String&quot;, # The timestamp of when the build started.
          &quot;completeness&quot;: { # Indicates that the builder claims certain fields in this message to be complete. # Indicates that the builder claims certain fields in this message to be complete.
            &quot;environment&quot;: True or False, # If true, the builder claims that invocation.environment is complete.
            &quot;materials&quot;: True or False, # If true, the builder claims that materials is complete.
            &quot;parameters&quot;: True or False, # If true, the builder claims that invocation.parameters is complete.
          },
          &quot;reproducible&quot;: True or False, # If true, the builder claims that running invocation on materials will produce bit-for-bit identical output.
        },
      },
      &quot;subject&quot;: [ # subject is the subjects of the intoto statement
        { # Subject refers to the subject of the intoto statement
          &quot;digest&quot;: { # &quot;&quot;: &quot;&quot; Algorithms can be e.g. sha256, sha512 See https://github.com/in-toto/attestation/blob/main/spec/field_types.md#DigestSet
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;name&quot;: &quot;A String&quot;, # name is the name of the Subject used here
        },
      ],
    },
  },
  &quot;envelope&quot;: { # MUST match https://github.com/secure-systems-lab/dsse/blob/master/envelope.proto. An authenticated message of arbitrary type. # https://github.com/secure-systems-lab/dsse
    &quot;payload&quot;: &quot;A String&quot;, # The bytes being signed
    &quot;payloadType&quot;: &quot;A String&quot;, # The type of payload being signed
    &quot;signatures&quot;: [ # The signatures over the payload
      { # A DSSE signature
        &quot;keyid&quot;: &quot;A String&quot;, # A reference id to the key being used for signing
        &quot;sig&quot;: &quot;A String&quot;, # The signature itself
      },
    ],
  },
  &quot;installation&quot;: { # This represents how a particular software package may be installed on a system. # Describes the installation of a package on the linked resource.
    &quot;architecture&quot;: &quot;A String&quot;, # Output only. The CPU architecture for which packages in this distribution channel were built. Architecture will be blank for language packages.
    &quot;cpeUri&quot;: &quot;A String&quot;, # Output only. The cpe_uri in [CPE format](https://cpe.mitre.org/specification/) denoting the package manager version distributing a package. The cpe_uri will be blank for language packages.
    &quot;license&quot;: { # License information. # Licenses that have been declared by the authors of the package.
      &quot;comments&quot;: &quot;A String&quot;, # Comments
      &quot;expression&quot;: &quot;A String&quot;, # Often a single license can be used to represent the licensing terms. Sometimes it is necessary to include a choice of one or more licenses or some combination of license identifiers. Examples: &quot;LGPL-2.1-only OR MIT&quot;, &quot;LGPL-2.1-only AND MIT&quot;, &quot;GPL-2.0-or-later WITH Bison-exception-2.2&quot;.
    },
    &quot;location&quot;: [ # All of the places within the filesystem versions of this package have been found.
      { # An occurrence of a particular package installation found within a system&#x27;s filesystem. e.g. glibc was found in /var/lib/dpkg/status
        &quot;cpeUri&quot;: &quot;A String&quot;, # Deprecated. The cpe_uri in [cpe format](https://cpe.mitre.org/specification/) denoting the package manager version distributing a package.
        &quot;path&quot;: &quot;A String&quot;, # The path from which we gathered that this package/version is installed.
        &quot;version&quot;: { # Version contains structured information about the version of the package. For a discussion of this in Debian/Ubuntu: http://serverfault.com/questions/604541/debian-packages-version-convention For a discussion of this in Redhat/Fedora/Centos: http://blog.jasonantman.com/2014/07/how-yum-and-rpm-compare-versions/ # Deprecated. The version installed at this location.
          &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
          &quot;inclusive&quot;: True or False, # Whether this version is vulnerable, when defining the version bounds. For example, if the minimum version is 2.0, inclusive=true would say 2.0 is vulnerable, while inclusive=false would say it&#x27;s not
          &quot;kind&quot;: &quot;A String&quot;, # Distinguish between sentinel MIN/MAX versions and normal versions. If kind is not NORMAL, then the other fields are ignored.
          &quot;name&quot;: &quot;A String&quot;, # 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;name&quot;: &quot;A String&quot;, # Output only. The name of the installed package.
    &quot;packageType&quot;: &quot;A String&quot;, # Output only. The type of package; whether native or non native (e.g., ruby gems, node.js packages, etc.).
    &quot;version&quot;: { # Version contains structured information about the version of the package. For a discussion of this in Debian/Ubuntu: http://serverfault.com/questions/604541/debian-packages-version-convention For a discussion of this in Redhat/Fedora/Centos: http://blog.jasonantman.com/2014/07/how-yum-and-rpm-compare-versions/ # Output only. The version of the package.
      &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
      &quot;inclusive&quot;: True or False, # Whether this version is vulnerable, when defining the version bounds. For example, if the minimum version is 2.0, inclusive=true would say 2.0 is vulnerable, while inclusive=false would say it&#x27;s not
      &quot;kind&quot;: &quot;A String&quot;, # Distinguish between sentinel MIN/MAX versions and normal versions. If kind is not NORMAL, then the other fields are ignored.
      &quot;name&quot;: &quot;A String&quot;, # 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;kind&quot;: &quot;A String&quot;, # Output only. This explicitly denotes which of the `Occurrence` details are specified. This field can be used as a filter in list requests.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The name of the `Occurrence` in the form &quot;projects/{project_id}/occurrences/{OCCURRENCE_ID}&quot;
  &quot;noteName&quot;: &quot;A String&quot;, # An analysis note associated with this image, in the form &quot;providers/{provider_id}/notes/{NOTE_ID}&quot; This field can be used as a filter in list requests.
  &quot;remediation&quot;: &quot;A String&quot;, # A description of actions that can be taken to remedy the `Note`
  &quot;resource&quot;: { #  Resource is an entity that can have metadata. E.g., a Docker image. #  The resource for which the `Occurrence` applies.
    &quot;contentHash&quot;: { # Container message for hash values. # The hash of the resource content. E.g., the Docker digest.
      &quot;type&quot;: &quot;A String&quot;, # The type of hash that was performed.
      &quot;value&quot;: &quot;A String&quot;, # The hash value.
    },
    &quot;name&quot;: &quot;A String&quot;, # The name of the resource. E.g., the name of a Docker image - &quot;Debian&quot;.
    &quot;uri&quot;: &quot;A String&quot;, # The unique URI of the resource. E.g., &quot;https://gcr.io/project/image@sha256:foo&quot; for a Docker image.
  },
  &quot;resourceUrl&quot;: &quot;A String&quot;, # The unique URL of the image or the container for which the `Occurrence` applies. For example, https://gcr.io/project/image@sha256:foo This field can be used as a filter in list requests.
  &quot;sbom&quot;: { # DocumentOccurrence represents an SPDX Document Creation Information section: https://spdx.github.io/spdx-spec/2-document-creation-information/ # Describes a specific software bill of materials document.
    &quot;createTime&quot;: &quot;A String&quot;, # Identify when the SPDX file was originally created. The date is to be specified according to combined date and time in UTC format as specified in ISO 8601 standard
    &quot;creatorComment&quot;: &quot;A String&quot;, # A field for creators of the SPDX file to provide general comments about the creation of the SPDX file or any other relevant comment not included in the other fields
    &quot;creators&quot;: [ # Identify who (or what, in the case of a tool) created the SPDX file. If the SPDX file was created by an individual, indicate the person&#x27;s name
      &quot;A String&quot;,
    ],
    &quot;documentComment&quot;: &quot;A String&quot;, # A field for creators of the SPDX file content to provide comments to the consumers of the SPDX document
    &quot;externalDocumentRefs&quot;: [ # Identify any external SPDX documents referenced within this SPDX document
      &quot;A String&quot;,
    ],
    &quot;id&quot;: &quot;A String&quot;, # Identify the current SPDX document which may be referenced in relationships by other files, packages internally and documents externally
    &quot;licenseListVersion&quot;: &quot;A String&quot;, # A field for creators of the SPDX file to provide the version of the SPDX License List used when the SPDX file was created
    &quot;namespace&quot;: &quot;A String&quot;, # Provide an SPDX document specific namespace as a unique absolute Uniform Resource Identifier (URI) as specified in RFC-3986, with the exception of the ‘#’ delimiter
    &quot;title&quot;: &quot;A String&quot;, # Identify name of this document as designated by creator
  },
  &quot;sbomReference&quot;: { # The occurrence representing an SBOM reference as applied to a specific resource. The occurrence follows the DSSE specification. See https://github.com/secure-systems-lab/dsse/blob/master/envelope.md for more details. # This represents an SBOM reference occurrence
    &quot;payload&quot;: { # The actual payload that contains the SBOM Reference data. The payload follows the intoto statement specification. See https://github.com/in-toto/attestation/blob/main/spec/v1.0/statement.md for more details. # The actual payload that contains the SBOM reference data.
      &quot;_type&quot;: &quot;A String&quot;, # Identifier for the schema of the Statement.
      &quot;predicate&quot;: { # A predicate which describes the SBOM being referenced. # Additional parameters of the Predicate. Includes the actual data about the SBOM.
        &quot;digest&quot;: { # A map of algorithm to digest of the contents of the SBOM.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;location&quot;: &quot;A String&quot;, # The location of the SBOM.
        &quot;mimeType&quot;: &quot;A String&quot;, # The mime type of the SBOM.
        &quot;referrerId&quot;: &quot;A String&quot;, # The person or system referring this predicate to the consumer.
      },
      &quot;predicateType&quot;: &quot;A String&quot;, # URI identifying the type of the Predicate.
      &quot;subject&quot;: [ # Set of software artifacts that the attestation applies to. Each element represents a single software artifact.
        { # Subject refers to the subject of the intoto statement
          &quot;digest&quot;: { # &quot;&quot;: &quot;&quot; Algorithms can be e.g. sha256, sha512 See https://github.com/in-toto/attestation/blob/main/spec/field_types.md#DigestSet
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;name&quot;: &quot;A String&quot;, # name is the name of the Subject used here
        },
      ],
    },
    &quot;payloadType&quot;: &quot;A String&quot;, # The kind of payload that SbomReferenceIntotoPayload takes. Since it&#x27;s in the intoto format, this value is expected to be &#x27;application/vnd.in-toto+json&#x27;.
    &quot;signatures&quot;: [ # The signatures over the payload.
      { # A DSSE signature
        &quot;keyid&quot;: &quot;A String&quot;, # A reference id to the key being used for signing
        &quot;sig&quot;: &quot;A String&quot;, # The signature itself
      },
    ],
  },
  &quot;spdxFile&quot;: { # FileOccurrence represents an SPDX File Information section: https://spdx.github.io/spdx-spec/4-file-information/ # Describes a specific SPDX File.
    &quot;attributions&quot;: [ # This field provides a place for the SPDX data creator to record, at the file level, acknowledgements that may be needed to be communicated in some contexts
      &quot;A String&quot;,
    ],
    &quot;comment&quot;: &quot;A String&quot;, # This field provides a place for the SPDX file creator to record any general comments about the file
    &quot;contributors&quot;: [ # This field provides a place for the SPDX file creator to record file contributors
      &quot;A String&quot;,
    ],
    &quot;copyright&quot;: &quot;A String&quot;, # Identify the copyright holder of the file, as well as any dates present
    &quot;filesLicenseInfo&quot;: [ # This field contains the license information actually found in the file, if any
      &quot;A String&quot;,
    ],
    &quot;id&quot;: &quot;A String&quot;, # Uniquely identify any element in an SPDX document which may be referenced by other elements
    &quot;licenseConcluded&quot;: { # License information. # This field contains the license the SPDX file creator has concluded as governing the file or alternative values if the governing license cannot be determined
      &quot;comments&quot;: &quot;A String&quot;, # Comments
      &quot;expression&quot;: &quot;A String&quot;, # Often a single license can be used to represent the licensing terms. Sometimes it is necessary to include a choice of one or more licenses or some combination of license identifiers. Examples: &quot;LGPL-2.1-only OR MIT&quot;, &quot;LGPL-2.1-only AND MIT&quot;, &quot;GPL-2.0-or-later WITH Bison-exception-2.2&quot;.
    },
    &quot;notice&quot;: &quot;A String&quot;, # This field provides a place for the SPDX file creator to record license notices or other such related notices found in the file
  },
  &quot;spdxPackage&quot;: { # PackageInfoOccurrence represents an SPDX Package Information section: https://spdx.github.io/spdx-spec/3-package-information/ # Describes a specific SPDX Package.
    &quot;comment&quot;: &quot;A String&quot;, # A place for the SPDX file creator to record any general comments about the package being described
    &quot;filename&quot;: &quot;A String&quot;, # Provide the actual file name of the package, or path of the directory being treated as a package
    &quot;homePage&quot;: &quot;A String&quot;, # Output only. Provide a place for the SPDX file creator to record a web site that serves as the package&#x27;s home page
    &quot;id&quot;: &quot;A String&quot;, # Uniquely identify any element in an SPDX document which may be referenced by other elements
    &quot;licenseConcluded&quot;: { # License information. # package or alternative values, if the governing license cannot be determined
      &quot;comments&quot;: &quot;A String&quot;, # Comments
      &quot;expression&quot;: &quot;A String&quot;, # Often a single license can be used to represent the licensing terms. Sometimes it is necessary to include a choice of one or more licenses or some combination of license identifiers. Examples: &quot;LGPL-2.1-only OR MIT&quot;, &quot;LGPL-2.1-only AND MIT&quot;, &quot;GPL-2.0-or-later WITH Bison-exception-2.2&quot;.
    },
    &quot;packageType&quot;: &quot;A String&quot;, # Output only. The type of package: OS, MAVEN, GO, GO_STDLIB, etc.
    &quot;sourceInfo&quot;: &quot;A String&quot;, # Provide a place for the SPDX file creator to record any relevant background information or additional comments about the origin of the package
    &quot;summaryDescription&quot;: &quot;A String&quot;, # Output only. A short description of the package
    &quot;title&quot;: &quot;A String&quot;, # Output only. Identify the full name of the package as given by the Package Originator
    &quot;version&quot;: &quot;A String&quot;, # Output only. Identify the version of the package
  },
  &quot;spdxRelationship&quot;: { # RelationshipOccurrence represents an SPDX Relationship section: https://spdx.github.io/spdx-spec/7-relationships-between-SPDX-elements/ # Describes a specific relationship between SPDX elements.
    &quot;comment&quot;: &quot;A String&quot;, # A place for the SPDX file creator to record any general comments about the relationship
    &quot;source&quot;: &quot;A String&quot;, # Also referred to as SPDXRef-A The source SPDX element (file, package, etc)
    &quot;target&quot;: &quot;A String&quot;, # Also referred to as SPDXRef-B The target SPDC element (file, package, etc) In cases where there are &quot;known unknowns&quot;, the use of the keyword NOASSERTION can be used The keywords NONE can be used to indicate that an SPDX element (package/file/snippet) has no other elements connected by some relationship to it
    &quot;type&quot;: &quot;A String&quot;, # Output only. The type of relationship between the source and target SPDX elements
  },
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time this `Occurrence` was last updated.
  &quot;upgrade&quot;: { # An Upgrade Occurrence represents that a specific resource_url could install a specific upgrade. This presence is supplied via local sources (i.e. it is present in the mirror and the running system has noticed its availability). # Describes an upgrade.
    &quot;distribution&quot;: { # The Upgrade Distribution represents metadata about the Upgrade for each operating system (CPE). Some distributions have additional metadata around updates, classifying them into various categories and severities. # Metadata about the upgrade for available for the specific operating system for the resource_url. This allows efficient filtering, as well as making it easier to use the occurrence.
      &quot;classification&quot;: &quot;A String&quot;, # The operating system classification of this Upgrade, as specified by the upstream operating system upgrade feed.
      &quot;cpeUri&quot;: &quot;A String&quot;, # Required - The specific operating system this metadata applies to. See https://cpe.mitre.org/specification/.
      &quot;cve&quot;: [ # The cve that would be resolved by this upgrade.
        &quot;A String&quot;,
      ],
      &quot;severity&quot;: &quot;A String&quot;, # The severity as specified by the upstream operating system.
    },
    &quot;package&quot;: &quot;A String&quot;, # Required - The package this Upgrade is for.
    &quot;parsedVersion&quot;: { # Version contains structured information about the version of the package. For a discussion of this in Debian/Ubuntu: http://serverfault.com/questions/604541/debian-packages-version-convention For a discussion of this in Redhat/Fedora/Centos: http://blog.jasonantman.com/2014/07/how-yum-and-rpm-compare-versions/ # Required - The version of the package in a machine + human readable form.
      &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
      &quot;inclusive&quot;: True or False, # Whether this version is vulnerable, when defining the version bounds. For example, if the minimum version is 2.0, inclusive=true would say 2.0 is vulnerable, while inclusive=false would say it&#x27;s not
      &quot;kind&quot;: &quot;A String&quot;, # Distinguish between sentinel MIN/MAX versions and normal versions. If kind is not NORMAL, then the other fields are ignored.
      &quot;name&quot;: &quot;A String&quot;, # 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;vulnerabilityDetails&quot;: { # Used by Occurrence to point to where the vulnerability exists and how to fix it. # Details of a security vulnerability note.
    &quot;cvssScore&quot;: 3.14, # Output only. The CVSS score of this vulnerability. CVSS score is on a scale of 0-10 where 0 indicates low severity and 10 indicates high severity.
    &quot;cvssV2&quot;: { # Common Vulnerability Scoring System. This message is compatible with CVSS v2 and v3. For CVSS v2 details, see https://www.first.org/cvss/v2/guide CVSS v2 calculator: https://nvd.nist.gov/vuln-metrics/cvss/v2-calculator For CVSS v3 details, see https://www.first.org/cvss/specification-document CVSS v3 calculator: https://nvd.nist.gov/vuln-metrics/cvss/v3-calculator # The CVSS v2 score of this vulnerability.
      &quot;attackComplexity&quot;: &quot;A String&quot;, # Defined in CVSS v3, CVSS v2
      &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. Defined in CVSS v3, CVSS v2
      &quot;authentication&quot;: &quot;A String&quot;, # Defined in CVSS v2
      &quot;availabilityImpact&quot;: &quot;A String&quot;, # Defined in CVSS v3, CVSS v2
      &quot;baseScore&quot;: 3.14, # The base score is a function of the base metric scores.
      &quot;confidentialityImpact&quot;: &quot;A String&quot;, # Defined in CVSS v3, CVSS v2
      &quot;exploitabilityScore&quot;: 3.14,
      &quot;impactScore&quot;: 3.14,
      &quot;integrityImpact&quot;: &quot;A String&quot;, # Defined in CVSS v3, CVSS v2
      &quot;privilegesRequired&quot;: &quot;A String&quot;, # Defined in CVSS v3
      &quot;scope&quot;: &quot;A String&quot;, # Defined in CVSS v3
      &quot;userInteraction&quot;: &quot;A String&quot;, # Defined in CVSS v3
    },
    &quot;cvssV3&quot;: { # Common Vulnerability Scoring System. This message is compatible with CVSS v2 and v3. For CVSS v2 details, see https://www.first.org/cvss/v2/guide CVSS v2 calculator: https://nvd.nist.gov/vuln-metrics/cvss/v2-calculator For CVSS v3 details, see https://www.first.org/cvss/specification-document CVSS v3 calculator: https://nvd.nist.gov/vuln-metrics/cvss/v3-calculator # The CVSS v3 score of this vulnerability.
      &quot;attackComplexity&quot;: &quot;A String&quot;, # Defined in CVSS v3, CVSS v2
      &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. Defined in CVSS v3, CVSS v2
      &quot;authentication&quot;: &quot;A String&quot;, # Defined in CVSS v2
      &quot;availabilityImpact&quot;: &quot;A String&quot;, # Defined in CVSS v3, CVSS v2
      &quot;baseScore&quot;: 3.14, # The base score is a function of the base metric scores.
      &quot;confidentialityImpact&quot;: &quot;A String&quot;, # Defined in CVSS v3, CVSS v2
      &quot;exploitabilityScore&quot;: 3.14,
      &quot;impactScore&quot;: 3.14,
      &quot;integrityImpact&quot;: &quot;A String&quot;, # Defined in CVSS v3, CVSS v2
      &quot;privilegesRequired&quot;: &quot;A String&quot;, # Defined in CVSS v3
      &quot;scope&quot;: &quot;A String&quot;, # Defined in CVSS v3
      &quot;userInteraction&quot;: &quot;A String&quot;, # Defined in CVSS v3
    },
    &quot;cvssVersion&quot;: &quot;A String&quot;, # Output only. CVSS version used to populate cvss_score and severity.
    &quot;effectiveSeverity&quot;: &quot;A String&quot;, # The distro assigned severity for this vulnerability when that is available and note provider assigned severity when distro has not yet assigned a severity for this vulnerability. When there are multiple package issues for this vulnerability, they can have different effective severities because some might come from the distro and some might come from installed language packs (e.g. Maven JARs or Go binaries). For this reason, it is advised to use the effective severity on the PackageIssue level, as this field may eventually be deprecated. In the case where multiple PackageIssues have different effective severities, the one set here will be the highest severity of any of the PackageIssues.
    &quot;extraDetails&quot;: &quot;A String&quot;, # Occurrence-specific extra details about the vulnerability.
    &quot;packageIssue&quot;: [ # The set of affected locations and their fixes (if available) within the associated resource.
      { # This message wraps a location affected by a vulnerability and its associated fix (if one is available).
        &quot;affectedLocation&quot;: { # The location of the vulnerability # The location of the vulnerability.
          &quot;cpeUri&quot;: &quot;A String&quot;, # The cpe_uri in [cpe format] (https://cpe.mitre.org/specification/) format. Examples include distro or storage location for vulnerable jar. This field can be used as a filter in list requests.
          &quot;fileLocation&quot;: [ # The file location at which this package was found.
            { # Indicates the location at which a package was found.
              &quot;filePath&quot;: &quot;A String&quot;, # For jars that are contained inside .war files, this filepath can indicate the path to war file combined with the path to jar file.
            },
          ],
          &quot;package&quot;: &quot;A String&quot;, # The package being described.
          &quot;version&quot;: { # Version contains structured information about the version of the package. For a discussion of this in Debian/Ubuntu: http://serverfault.com/questions/604541/debian-packages-version-convention For a discussion of this in Redhat/Fedora/Centos: http://blog.jasonantman.com/2014/07/how-yum-and-rpm-compare-versions/ # The version of the package being described. This field can be used as a filter in list requests.
            &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
            &quot;inclusive&quot;: True or False, # Whether this version is vulnerable, when defining the version bounds. For example, if the minimum version is 2.0, inclusive=true would say 2.0 is vulnerable, while inclusive=false would say it&#x27;s not
            &quot;kind&quot;: &quot;A String&quot;, # Distinguish between sentinel MIN/MAX versions and normal versions. If kind is not NORMAL, then the other fields are ignored.
            &quot;name&quot;: &quot;A String&quot;, # 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;effectiveSeverity&quot;: &quot;A String&quot;, # Output only. The distro or language system assigned severity for this vulnerability when that is available and note provider assigned severity when distro or language system has not yet assigned a severity for this vulnerability.
        &quot;fixedLocation&quot;: { # The location of the vulnerability # The location of the available fix for vulnerability.
          &quot;cpeUri&quot;: &quot;A String&quot;, # The cpe_uri in [cpe format] (https://cpe.mitre.org/specification/) format. Examples include distro or storage location for vulnerable jar. This field can be used as a filter in list requests.
          &quot;fileLocation&quot;: [ # The file location at which this package was found.
            { # Indicates the location at which a package was found.
              &quot;filePath&quot;: &quot;A String&quot;, # For jars that are contained inside .war files, this filepath can indicate the path to war file combined with the path to jar file.
            },
          ],
          &quot;package&quot;: &quot;A String&quot;, # The package being described.
          &quot;version&quot;: { # Version contains structured information about the version of the package. For a discussion of this in Debian/Ubuntu: http://serverfault.com/questions/604541/debian-packages-version-convention For a discussion of this in Redhat/Fedora/Centos: http://blog.jasonantman.com/2014/07/how-yum-and-rpm-compare-versions/ # The version of the package being described. This field can be used as a filter in list requests.
            &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
            &quot;inclusive&quot;: True or False, # Whether this version is vulnerable, when defining the version bounds. For example, if the minimum version is 2.0, inclusive=true would say 2.0 is vulnerable, while inclusive=false would say it&#x27;s not
            &quot;kind&quot;: &quot;A String&quot;, # Distinguish between sentinel MIN/MAX versions and normal versions. If kind is not NORMAL, then the other fields are ignored.
            &quot;name&quot;: &quot;A String&quot;, # 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;packageType&quot;: &quot;A String&quot;, # The type of package (e.g. OS, MAVEN, GO).
        &quot;severityName&quot;: &quot;A String&quot;,
      },
    ],
    &quot;severity&quot;: &quot;A String&quot;, # Output only. The note provider assigned Severity of the vulnerability.
    &quot;type&quot;: &quot;A String&quot;, # The type of package; whether native or non native(ruby gems, node.js packages etc). This may be deprecated in the future because we can have multiple PackageIssues with different package types.
    &quot;vexAssessment&quot;: { # VexAssessment provides all publisher provided Vex information that is related to this vulnerability. # VexAssessment provides all publisher provided Vex information that is related to this vulnerability for this resource.
      &quot;cve&quot;: &quot;A String&quot;, # Holds the MITRE standard Common Vulnerabilities and Exposures (CVE) tracking number for the vulnerability.
      &quot;impacts&quot;: [ # Contains information about the impact of this vulnerability, this will change with time.
        &quot;A String&quot;,
      ],
      &quot;justification&quot;: { # Justification provides the justification when the state of the assessment if NOT_AFFECTED. # Justification provides the justification when the state of the assessment if NOT_AFFECTED.
        &quot;details&quot;: &quot;A String&quot;, # Additional details on why this justification was chosen.
        &quot;justificationType&quot;: &quot;A String&quot;, # The justification type for this vulnerability.
      },
      &quot;noteName&quot;: &quot;A String&quot;, # The VulnerabilityAssessment note from which this VexAssessment was generated. This will be of the form: `projects/[PROJECT_ID]/notes/[NOTE_ID]`.
      &quot;relatedUris&quot;: [ # Holds a list of references associated with this vulnerability item and assessment. These uris have additional information about the vulnerability and the assessment itself. E.g. Link to a document which details how this assessment concluded the state of this vulnerability.
        { # An URI message.
          &quot;label&quot;: &quot;A String&quot;, # A label for the URI.
          &quot;uri&quot;: &quot;A String&quot;, # The unique resource identifier.
        },
      ],
      &quot;remediations&quot;: [ # Specifies details on how to handle (and presumably, fix) a vulnerability.
        { # Specifies details on how to handle (and presumably, fix) a vulnerability.
          &quot;details&quot;: &quot;A String&quot;, # Contains a comprehensive human-readable discussion of the remediation.
          &quot;remediationType&quot;: &quot;A String&quot;, # The type of remediation that can be applied.
          &quot;remediationUri&quot;: { # An URI message. # Contains the URL where to obtain the remediation.
            &quot;label&quot;: &quot;A String&quot;, # A label for the URI.
            &quot;uri&quot;: &quot;A String&quot;, # The unique resource identifier.
          },
        },
      ],
      &quot;state&quot;: &quot;A String&quot;, # Provides the state of this Vulnerability assessment.
      &quot;vulnerabilityId&quot;: &quot;A String&quot;, # The vulnerability identifier for this Assessment. Will hold one of common identifiers e.g. CVE, GHSA etc.
    },
  },
}

  name: string, The name of the project. Should be of the form &quot;projects/{project_id}&quot;. @Deprecated
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # `Occurrence` includes information about analysis occurrences for an image.
  &quot;attestation&quot;: { # Occurrence that represents a single &quot;attestation&quot;. The authenticity of an Attestation can be verified using the attached signature. If the verifier trusts the public key of the signer, then verifying the signature is sufficient to establish trust. In this circumstance, the AttestationAuthority to which this Attestation is attached is primarily useful for look-up (how to find this Attestation if you already know the Authority and artifact to be verified) and intent (which authority was this attestation intended to sign for). # Describes an attestation of an artifact.
    &quot;pgpSignedAttestation&quot;: { # An attestation wrapper with a PGP-compatible signature. This message only supports `ATTACHED` signatures, where the payload that is signed is included alongside the signature itself in the same file.
      &quot;contentType&quot;: &quot;A String&quot;, # Type (for example schema) of the attestation payload that was signed. The verifier must ensure that the provided type is one that the verifier supports, and that the attestation payload is a valid instantiation of that type (for example by validating a JSON schema).
      &quot;pgpKeyId&quot;: &quot;A String&quot;, # The cryptographic fingerprint of the key used to generate the signature, as output by, e.g. `gpg --list-keys`. This should be the version 4, full 160-bit fingerprint, expressed as a 40 character hexadecimal string. See https://tools.ietf.org/html/rfc4880#section-12.2 for details. Implementations may choose to acknowledge &quot;LONG&quot;, &quot;SHORT&quot;, or other abbreviated key IDs, but only the full fingerprint is guaranteed to work. In gpg, the full fingerprint can be retrieved from the `fpr` field returned when calling --list-keys with --with-colons. For example: ``` gpg --with-colons --with-fingerprint --force-v4-certs \ --list-keys attester@example.com tru::1:1513631572:0:3:1:5 pub:...... fpr:::::::::24FF6481B76AC91E66A00AC657A93A81EF3AE6FB: ``` Above, the fingerprint is `24FF6481B76AC91E66A00AC657A93A81EF3AE6FB`.
      &quot;signature&quot;: &quot;A String&quot;, # The raw content of the signature, as output by GNU Privacy Guard (GPG) or equivalent. Since this message only supports attached signatures, the payload that was signed must be attached. While the signature format supported is dependent on the verification implementation, currently only ASCII-armored (`--armor` to gpg), non-clearsigned (`--sign` rather than `--clearsign` to gpg) are supported. Concretely, `gpg --sign --armor --output=signature.gpg payload.json` will create the signature content expected in this field in `signature.gpg` for the `payload.json` attestation payload.
    },
  },
  &quot;buildDetails&quot;: { # Message encapsulating build provenance details. # Build details for a verifiable build.
    &quot;inTotoSlsaProvenanceV1&quot;: { # In-Toto Slsa Provenance V1 represents a slsa provenance meeting the slsa spec, wrapped in an in-toto statement. This allows for direct jsonification of a to-spec in-toto slsa statement with a to-spec slsa provenance.
      &quot;_type&quot;: &quot;A String&quot;, # InToto spec defined at https://github.com/in-toto/attestation/tree/main/spec#statement
      &quot;predicate&quot;: { # Keep in sync with schema at https://github.com/slsa-framework/slsa/blob/main/docs/provenance/schema/v1/provenance.proto Builder renamed to ProvenanceBuilder because of Java conflicts.
        &quot;buildDefinition&quot;: {
          &quot;buildType&quot;: &quot;A String&quot;,
          &quot;externalParameters&quot;: {
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
          },
          &quot;internalParameters&quot;: {
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
          },
          &quot;resolvedDependencies&quot;: [
            {
              &quot;annotations&quot;: {
                &quot;a_key&quot;: &quot;&quot;,
              },
              &quot;content&quot;: &quot;A String&quot;,
              &quot;digest&quot;: {
                &quot;a_key&quot;: &quot;A String&quot;,
              },
              &quot;downloadLocation&quot;: &quot;A String&quot;,
              &quot;mediaType&quot;: &quot;A String&quot;,
              &quot;name&quot;: &quot;A String&quot;,
              &quot;uri&quot;: &quot;A String&quot;,
            },
          ],
        },
        &quot;runDetails&quot;: {
          &quot;builder&quot;: {
            &quot;builderDependencies&quot;: [
              {
                &quot;annotations&quot;: {
                  &quot;a_key&quot;: &quot;&quot;,
                },
                &quot;content&quot;: &quot;A String&quot;,
                &quot;digest&quot;: {
                  &quot;a_key&quot;: &quot;A String&quot;,
                },
                &quot;downloadLocation&quot;: &quot;A String&quot;,
                &quot;mediaType&quot;: &quot;A String&quot;,
                &quot;name&quot;: &quot;A String&quot;,
                &quot;uri&quot;: &quot;A String&quot;,
              },
            ],
            &quot;id&quot;: &quot;A String&quot;,
            &quot;version&quot;: {
              &quot;a_key&quot;: &quot;A String&quot;,
            },
          },
          &quot;byproducts&quot;: [
            {
              &quot;annotations&quot;: {
                &quot;a_key&quot;: &quot;&quot;,
              },
              &quot;content&quot;: &quot;A String&quot;,
              &quot;digest&quot;: {
                &quot;a_key&quot;: &quot;A String&quot;,
              },
              &quot;downloadLocation&quot;: &quot;A String&quot;,
              &quot;mediaType&quot;: &quot;A String&quot;,
              &quot;name&quot;: &quot;A String&quot;,
              &quot;uri&quot;: &quot;A String&quot;,
            },
          ],
          &quot;metadata&quot;: {
            &quot;finishedOn&quot;: &quot;A String&quot;,
            &quot;invocationId&quot;: &quot;A String&quot;,
            &quot;startedOn&quot;: &quot;A String&quot;,
          },
        },
      },
      &quot;predicateType&quot;: &quot;A String&quot;,
      &quot;subject&quot;: [
        { # Subject refers to the subject of the intoto statement
          &quot;digest&quot;: { # &quot;&quot;: &quot;&quot; Algorithms can be e.g. sha256, sha512 See https://github.com/in-toto/attestation/blob/main/spec/field_types.md#DigestSet
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;name&quot;: &quot;A String&quot;, # name is the name of the Subject used here
        },
      ],
    },
    &quot;intotoProvenance&quot;: { # Deprecated. See InTotoStatement for the replacement. In-toto Provenance representation as defined in spec.
      &quot;builderConfig&quot;: { # required
        &quot;id&quot;: &quot;A String&quot;,
      },
      &quot;materials&quot;: [ # The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on. This is considered to be incomplete unless metadata.completeness.materials is true. Unset or null is equivalent to empty.
        &quot;A String&quot;,
      ],
      &quot;metadata&quot;: { # Other properties of the build.
        &quot;buildFinishedOn&quot;: &quot;A String&quot;, # The timestamp of when the build completed.
        &quot;buildInvocationId&quot;: &quot;A String&quot;, # Identifies the particular build invocation, which can be useful for finding associated logs or other ad-hoc analysis. The value SHOULD be globally unique, per in-toto Provenance spec.
        &quot;buildStartedOn&quot;: &quot;A String&quot;, # The timestamp of when the build started.
        &quot;completeness&quot;: { # Indicates that the builder claims certain fields in this message to be complete. # Indicates that the builder claims certain fields in this message to be complete.
          &quot;arguments&quot;: True or False, # If true, the builder claims that recipe.arguments is complete, meaning that all external inputs are properly captured in the recipe.
          &quot;environment&quot;: True or False, # If true, the builder claims that recipe.environment is claimed to be complete.
          &quot;materials&quot;: True or False, # If true, the builder claims that materials are complete, usually through some controls to prevent network access. Sometimes called &quot;hermetic&quot;.
        },
        &quot;reproducible&quot;: True or False, # If true, the builder claims that running the recipe on materials will produce bit-for-bit identical output.
      },
      &quot;recipe&quot;: { # Steps taken to build the artifact. For a TaskRun, typically each container corresponds to one step in the recipe. # Identifies the configuration used for the build. When combined with materials, this SHOULD fully describe the build, such that re-running this recipe results in bit-for-bit identical output (if the build is reproducible). required
        &quot;arguments&quot;: [ # Collection of all external inputs that influenced the build on top of recipe.definedInMaterial and recipe.entryPoint. For example, if the recipe type were &quot;make&quot;, then this might be the flags passed to make aside from the target, which is captured in recipe.entryPoint.
          {
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
          },
        ],
        &quot;definedInMaterial&quot;: &quot;A String&quot;, # Index in materials containing the recipe steps that are not implied by recipe.type. For example, if the recipe type were &quot;make&quot;, then this would point to the source containing the Makefile, not the make program itself. Set to -1 if the recipe doesn&#x27;t come from a material, as zero is default unset value for int64.
        &quot;entryPoint&quot;: &quot;A String&quot;, # String identifying the entry point into the build. This is often a path to a configuration file and/or a target label within that file. The syntax and meaning are defined by recipe.type. For example, if the recipe type were &quot;make&quot;, then this would reference the directory in which to run make as well as which target to use.
        &quot;environment&quot;: [ # Any other builder-controlled inputs necessary for correctly evaluating the recipe. Usually only needed for reproducing the build but not evaluated as part of policy.
          {
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
          },
        ],
        &quot;type&quot;: &quot;A String&quot;, # URI indicating what type of recipe was performed. It determines the meaning of recipe.entryPoint, recipe.arguments, recipe.environment, and materials.
      },
    },
    &quot;intotoStatement&quot;: { # Spec defined at https://github.com/in-toto/attestation/tree/main/spec#statement The serialized InTotoStatement will be stored as Envelope.payload. Envelope.payloadType is always &quot;application/vnd.in-toto+json&quot;. # In-toto Statement representation as defined in spec. The intoto_statement can contain any type of provenance. The serialized payload of the statement can be stored and signed in the Occurrence&#x27;s envelope.
      &quot;_type&quot;: &quot;A String&quot;, # Always &quot;https://in-toto.io/Statement/v0.1&quot;.
      &quot;predicateType&quot;: &quot;A String&quot;, # &quot;https://slsa.dev/provenance/v0.1&quot; for SlsaProvenance.
      &quot;provenance&quot;: { # Generic Grafeas provenance.
        &quot;builderConfig&quot;: { # required
          &quot;id&quot;: &quot;A String&quot;,
        },
        &quot;materials&quot;: [ # The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on. This is considered to be incomplete unless metadata.completeness.materials is true. Unset or null is equivalent to empty.
          &quot;A String&quot;,
        ],
        &quot;metadata&quot;: { # Other properties of the build.
          &quot;buildFinishedOn&quot;: &quot;A String&quot;, # The timestamp of when the build completed.
          &quot;buildInvocationId&quot;: &quot;A String&quot;, # Identifies the particular build invocation, which can be useful for finding associated logs or other ad-hoc analysis. The value SHOULD be globally unique, per in-toto Provenance spec.
          &quot;buildStartedOn&quot;: &quot;A String&quot;, # The timestamp of when the build started.
          &quot;completeness&quot;: { # Indicates that the builder claims certain fields in this message to be complete. # Indicates that the builder claims certain fields in this message to be complete.
            &quot;arguments&quot;: True or False, # If true, the builder claims that recipe.arguments is complete, meaning that all external inputs are properly captured in the recipe.
            &quot;environment&quot;: True or False, # If true, the builder claims that recipe.environment is claimed to be complete.
            &quot;materials&quot;: True or False, # If true, the builder claims that materials are complete, usually through some controls to prevent network access. Sometimes called &quot;hermetic&quot;.
          },
          &quot;reproducible&quot;: True or False, # If true, the builder claims that running the recipe on materials will produce bit-for-bit identical output.
        },
        &quot;recipe&quot;: { # Steps taken to build the artifact. For a TaskRun, typically each container corresponds to one step in the recipe. # Identifies the configuration used for the build. When combined with materials, this SHOULD fully describe the build, such that re-running this recipe results in bit-for-bit identical output (if the build is reproducible). required
          &quot;arguments&quot;: [ # Collection of all external inputs that influenced the build on top of recipe.definedInMaterial and recipe.entryPoint. For example, if the recipe type were &quot;make&quot;, then this might be the flags passed to make aside from the target, which is captured in recipe.entryPoint.
            {
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
            },
          ],
          &quot;definedInMaterial&quot;: &quot;A String&quot;, # Index in materials containing the recipe steps that are not implied by recipe.type. For example, if the recipe type were &quot;make&quot;, then this would point to the source containing the Makefile, not the make program itself. Set to -1 if the recipe doesn&#x27;t come from a material, as zero is default unset value for int64.
          &quot;entryPoint&quot;: &quot;A String&quot;, # String identifying the entry point into the build. This is often a path to a configuration file and/or a target label within that file. The syntax and meaning are defined by recipe.type. For example, if the recipe type were &quot;make&quot;, then this would reference the directory in which to run make as well as which target to use.
          &quot;environment&quot;: [ # Any other builder-controlled inputs necessary for correctly evaluating the recipe. Usually only needed for reproducing the build but not evaluated as part of policy.
            {
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
            },
          ],
          &quot;type&quot;: &quot;A String&quot;, # URI indicating what type of recipe was performed. It determines the meaning of recipe.entryPoint, recipe.arguments, recipe.environment, and materials.
        },
      },
      &quot;slsaProvenance&quot;: { # SlsaProvenance is the slsa provenance as defined by the slsa spec. # SLSA 0.1 provenance.
        &quot;builder&quot;: { # SlsaBuilder encapsulates the identity of the builder of this provenance. # builder is the builder of this provenance
          &quot;id&quot;: &quot;A String&quot;, # id is the id of the slsa provenance builder
        },
        &quot;materials&quot;: [ # The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on. This is considered to be incomplete unless metadata.completeness.materials is true. Unset or null is equivalent to empty.
          { # Material is a material used in the generation of the provenance
            &quot;digest&quot;: { # digest is a map from a hash algorithm (e.g. sha256) to the value in the material
              &quot;a_key&quot;: &quot;A String&quot;,
            },
            &quot;uri&quot;: &quot;A String&quot;, # uri is the uri of the material
          },
        ],
        &quot;metadata&quot;: { # Other properties of the build. # metadata is the metadata of the provenance
          &quot;buildFinishedOn&quot;: &quot;A String&quot;, # The timestamp of when the build completed.
          &quot;buildInvocationId&quot;: &quot;A String&quot;, # Identifies the particular build invocation, which can be useful for finding associated logs or other ad-hoc analysis. The value SHOULD be globally unique, per in-toto Provenance spec.
          &quot;buildStartedOn&quot;: &quot;A String&quot;, # The timestamp of when the build started.
          &quot;completeness&quot;: { # Indicates that the builder claims certain fields in this message to be complete. # Indicates that the builder claims certain fields in this message to be complete.
            &quot;arguments&quot;: True or False, # If true, the builder claims that recipe.arguments is complete, meaning that all external inputs are properly captured in the recipe.
            &quot;environment&quot;: True or False, # If true, the builder claims that recipe.environment is claimed to be complete.
            &quot;materials&quot;: True or False, # If true, the builder claims that materials are complete, usually through some controls to prevent network access. Sometimes called &quot;hermetic&quot;.
          },
          &quot;reproducible&quot;: True or False, # If true, the builder claims that running the recipe on materials will produce bit-for-bit identical output.
        },
        &quot;recipe&quot;: { # Steps taken to build the artifact. For a TaskRun, typically each container corresponds to one step in the recipe. # Identifies the configuration used for the build. When combined with materials, this SHOULD fully describe the build, such that re-running this recipe results in bit-for-bit identical output (if the build is reproducible).
          &quot;arguments&quot;: { # Collection of all external inputs that influenced the build on top of recipe.definedInMaterial and recipe.entryPoint. For example, if the recipe type were &quot;make&quot;, then this might be the flags passed to make aside from the target, which is captured in recipe.entryPoint. Depending on the recipe Type, the structure may be different.
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
          },
          &quot;definedInMaterial&quot;: &quot;A String&quot;, # Index in materials containing the recipe steps that are not implied by recipe.type. For example, if the recipe type were &quot;make&quot;, then this would point to the source containing the Makefile, not the make program itself. Set to -1 if the recipe doesn&#x27;t come from a material, as zero is default unset value for int64.
          &quot;entryPoint&quot;: &quot;A String&quot;, # String identifying the entry point into the build. This is often a path to a configuration file and/or a target label within that file. The syntax and meaning are defined by recipe.type. For example, if the recipe type were &quot;make&quot;, then this would reference the directory in which to run make as well as which target to use.
          &quot;environment&quot;: { # Any other builder-controlled inputs necessary for correctly evaluating the recipe. Usually only needed for reproducing the build but not evaluated as part of policy. Depending on the recipe Type, the structure may be different.
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
          },
          &quot;type&quot;: &quot;A String&quot;, # URI indicating what type of recipe was performed. It determines the meaning of recipe.entryPoint, recipe.arguments, recipe.environment, and materials.
        },
      },
      &quot;slsaProvenanceZeroTwo&quot;: { # SlsaProvenanceZeroTwo is the slsa provenance as defined by the slsa spec. See full explanation of fields at slsa.dev/provenance/v0.2. # SLSA 0.2 provenance.
        &quot;buildConfig&quot;: { # Lists the steps in the build.
          &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
        },
        &quot;buildType&quot;: &quot;A String&quot;, # URI indicating what type of build was performed.
        &quot;builder&quot;: { # Identifies the entity that executed the recipe, which is trusted to have correctly performed the operation and populated this provenance. # Identifies the entity that executed the recipe, which is trusted to have correctly performed the operation and populated this provenance.
          &quot;id&quot;: &quot;A String&quot;, # URI indicating the builder’s identity.
        },
        &quot;invocation&quot;: { # Identifies the event that kicked off the build. # Identifies the event that kicked off the build.
          &quot;configSource&quot;: { # Describes where the config file that kicked off the build came from. This is effectively a pointer to the source where buildConfig came from. # Describes where the config file that kicked off the build came from.
            &quot;digest&quot;: { # Collection of cryptographic digests for the contents of the artifact specified by invocation.configSource.uri.
              &quot;a_key&quot;: &quot;A String&quot;,
            },
            &quot;entryPoint&quot;: &quot;A String&quot;, # String identifying the entry point into the build.
            &quot;uri&quot;: &quot;A String&quot;, # URI indicating the identity of the source of the config.
          },
          &quot;environment&quot;: { # Any other builder-controlled inputs necessary for correctly evaluating the build.
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
          },
          &quot;parameters&quot;: { # Collection of all external inputs that influenced the build on top of invocation.configSource.
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
          },
        },
        &quot;materials&quot;: [ # The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on.
          { # The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on.
            &quot;digest&quot;: { # Collection of cryptographic digests for the contents of this artifact.
              &quot;a_key&quot;: &quot;A String&quot;,
            },
            &quot;uri&quot;: &quot;A String&quot;, # The method by which this artifact was referenced during the build.
          },
        ],
        &quot;metadata&quot;: { # Other properties of the build. # Other properties of the build.
          &quot;buildFinishedOn&quot;: &quot;A String&quot;, # The timestamp of when the build completed.
          &quot;buildInvocationId&quot;: &quot;A String&quot;, # Identifies this particular build invocation, which can be useful for finding associated logs or other ad-hoc analysis.
          &quot;buildStartedOn&quot;: &quot;A String&quot;, # The timestamp of when the build started.
          &quot;completeness&quot;: { # Indicates that the builder claims certain fields in this message to be complete. # Indicates that the builder claims certain fields in this message to be complete.
            &quot;environment&quot;: True or False, # If true, the builder claims that invocation.environment is complete.
            &quot;materials&quot;: True or False, # If true, the builder claims that materials is complete.
            &quot;parameters&quot;: True or False, # If true, the builder claims that invocation.parameters is complete.
          },
          &quot;reproducible&quot;: True or False, # If true, the builder claims that running invocation on materials will produce bit-for-bit identical output.
        },
      },
      &quot;subject&quot;: [ # subject is the subjects of the intoto statement
        { # Subject refers to the subject of the intoto statement
          &quot;digest&quot;: { # &quot;&quot;: &quot;&quot; Algorithms can be e.g. sha256, sha512 See https://github.com/in-toto/attestation/blob/main/spec/field_types.md#DigestSet
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;name&quot;: &quot;A String&quot;, # name is the name of the Subject used here
        },
      ],
    },
    &quot;provenance&quot;: { # Provenance of a build. Contains all information needed to verify the full details about the build from source to completion. # The actual provenance
      &quot;buildOptions&quot;: { # Special options applied to this build. This is a catch-all field where build providers can enter any desired additional details.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;builderVersion&quot;: &quot;A String&quot;, # Version string of the builder at the time this build was executed.
      &quot;builtArtifacts&quot;: [ # Output of the build.
        { # Artifact describes a build product.
          &quot;checksum&quot;: &quot;A String&quot;, # Hash or checksum value of a binary, or Docker Registry 2.0 digest of a container.
          &quot;id&quot;: &quot;A String&quot;, # Artifact ID, if any; for container images, this will be a URL by digest like gcr.io/projectID/imagename@sha256:123456
          &quot;name&quot;: &quot;A String&quot;, # Name of the artifact. This may be the path to a binary or jar file, or in the case of a container build, the name used to push the container image to Google Container Registry, as presented to `docker push`. This field is deprecated in favor of the plural `names` field; it continues to exist here to allow existing BuildProvenance serialized to json in google.devtools.containeranalysis.v1alpha1.BuildDetails.provenance_bytes to deserialize back into proto.
          &quot;names&quot;: [ # Related artifact names. This may be the path to a binary or jar file, or in the case of a container build, the name used to push the container image to Google Container Registry, as presented to `docker push`. Note that a single Artifact ID can have multiple names, for example if two tags are applied to one image.
            &quot;A String&quot;,
          ],
        },
      ],
      &quot;commands&quot;: [ # Commands requested by the build.
        { # Command describes a step performed as part of the build pipeline.
          &quot;args&quot;: [ # Command-line arguments used when executing this Command.
            &quot;A String&quot;,
          ],
          &quot;dir&quot;: &quot;A String&quot;, # Working directory (relative to project source root) used when running this Command.
          &quot;env&quot;: [ # Environment variables set before running this Command.
            &quot;A String&quot;,
          ],
          &quot;id&quot;: &quot;A String&quot;, # Optional unique identifier for this Command, used in wait_for to reference this Command as a dependency.
          &quot;name&quot;: &quot;A String&quot;, # Name of the command, as presented on the command line, or if the command is packaged as a Docker container, as presented to `docker pull`.
          &quot;waitFor&quot;: [ # The ID(s) of the Command(s) that this Command depends on.
            &quot;A String&quot;,
          ],
        },
      ],
      &quot;createTime&quot;: &quot;A String&quot;, # Time at which the build was created.
      &quot;creator&quot;: &quot;A String&quot;, # E-mail address of the user who initiated this build. Note that this was the user&#x27;s e-mail address at the time the build was initiated; this address may not represent the same end-user for all time.
      &quot;finishTime&quot;: &quot;A String&quot;, # Time at which execution of the build was finished.
      &quot;id&quot;: &quot;A String&quot;, # Unique identifier of the build.
      &quot;logsBucket&quot;: &quot;A String&quot;, # Google Cloud Storage bucket where logs were written.
      &quot;projectId&quot;: &quot;A String&quot;, # ID of the project.
      &quot;sourceProvenance&quot;: { # Source describes the location of the source used for the build. # Details of the Source input to the build.
        &quot;additionalContexts&quot;: [ # If provided, some of the source code used for the build may be found in these locations, in the case where the source repository had multiple remotes or submodules. This list will not include the context specified in the context field.
          { # A SourceContext is a reference to a tree of files. A SourceContext together with a path point to a unique revision of a single file or directory.
            &quot;cloudRepo&quot;: { # A CloudRepoSourceContext denotes a particular revision in a Google Cloud Source Repo. # A SourceContext referring to a revision in a Google Cloud Source Repo.
              &quot;aliasContext&quot;: { # An alias to a repo revision. # An alias, which may be a branch or tag.
                &quot;kind&quot;: &quot;A String&quot;, # The alias kind.
                &quot;name&quot;: &quot;A String&quot;, # The alias name.
              },
              &quot;repoId&quot;: { # A unique identifier for a Cloud Repo. # The ID of the repo.
                &quot;projectRepoId&quot;: { # Selects a repo using a Google Cloud Platform project ID (e.g., winged-cargo-31) and a repo name within that project. # A combination of a project ID and a repo name.
                  &quot;projectId&quot;: &quot;A String&quot;, # The ID of the project.
                  &quot;repoName&quot;: &quot;A String&quot;, # The name of the repo. Leave empty for the default repo.
                },
                &quot;uid&quot;: &quot;A String&quot;, # A server-assigned, globally unique identifier.
              },
              &quot;revisionId&quot;: &quot;A String&quot;, # A revision ID.
            },
            &quot;gerrit&quot;: { # A SourceContext referring to a Gerrit project. # A SourceContext referring to a Gerrit project.
              &quot;aliasContext&quot;: { # An alias to a repo revision. # An alias, which may be a branch or tag.
                &quot;kind&quot;: &quot;A String&quot;, # The alias kind.
                &quot;name&quot;: &quot;A String&quot;, # The alias name.
              },
              &quot;gerritProject&quot;: &quot;A String&quot;, # The full project name within the host. Projects may be nested, so &quot;project/subproject&quot; is a valid project name. The &quot;repo name&quot; is the hostURI/project.
              &quot;hostUri&quot;: &quot;A String&quot;, # The URI of a running Gerrit instance.
              &quot;revisionId&quot;: &quot;A String&quot;, # A revision (commit) ID.
            },
            &quot;git&quot;: { # A GitSourceContext denotes a particular revision in a third party Git repository (e.g., GitHub). # A SourceContext referring to any third party Git repo (e.g., GitHub).
              &quot;revisionId&quot;: &quot;A String&quot;, # Required. Git commit hash.
              &quot;url&quot;: &quot;A String&quot;, # Git repository URL.
            },
            &quot;labels&quot;: { # Labels with user defined metadata.
              &quot;a_key&quot;: &quot;A String&quot;,
            },
          },
        ],
        &quot;artifactStorageSource&quot;: { # StorageSource describes the location of the source in an archive file in Google Cloud Storage. # If provided, the input binary artifacts for the build came from this location.
          &quot;bucket&quot;: &quot;A String&quot;, # Google Cloud Storage bucket containing source (see [Bucket Name Requirements] (https://cloud.google.com/storage/docs/bucket-naming#requirements)).
          &quot;generation&quot;: &quot;A String&quot;, # Google Cloud Storage generation for the object.
          &quot;object&quot;: &quot;A String&quot;, # Google Cloud Storage object containing source.
        },
        &quot;context&quot;: { # A SourceContext is a reference to a tree of files. A SourceContext together with a path point to a unique revision of a single file or directory. # If provided, the source code used for the build came from this location.
          &quot;cloudRepo&quot;: { # A CloudRepoSourceContext denotes a particular revision in a Google Cloud Source Repo. # A SourceContext referring to a revision in a Google Cloud Source Repo.
            &quot;aliasContext&quot;: { # An alias to a repo revision. # An alias, which may be a branch or tag.
              &quot;kind&quot;: &quot;A String&quot;, # The alias kind.
              &quot;name&quot;: &quot;A String&quot;, # The alias name.
            },
            &quot;repoId&quot;: { # A unique identifier for a Cloud Repo. # The ID of the repo.
              &quot;projectRepoId&quot;: { # Selects a repo using a Google Cloud Platform project ID (e.g., winged-cargo-31) and a repo name within that project. # A combination of a project ID and a repo name.
                &quot;projectId&quot;: &quot;A String&quot;, # The ID of the project.
                &quot;repoName&quot;: &quot;A String&quot;, # The name of the repo. Leave empty for the default repo.
              },
              &quot;uid&quot;: &quot;A String&quot;, # A server-assigned, globally unique identifier.
            },
            &quot;revisionId&quot;: &quot;A String&quot;, # A revision ID.
          },
          &quot;gerrit&quot;: { # A SourceContext referring to a Gerrit project. # A SourceContext referring to a Gerrit project.
            &quot;aliasContext&quot;: { # An alias to a repo revision. # An alias, which may be a branch or tag.
              &quot;kind&quot;: &quot;A String&quot;, # The alias kind.
              &quot;name&quot;: &quot;A String&quot;, # The alias name.
            },
            &quot;gerritProject&quot;: &quot;A String&quot;, # The full project name within the host. Projects may be nested, so &quot;project/subproject&quot; is a valid project name. The &quot;repo name&quot; is the hostURI/project.
            &quot;hostUri&quot;: &quot;A String&quot;, # The URI of a running Gerrit instance.
            &quot;revisionId&quot;: &quot;A String&quot;, # A revision (commit) ID.
          },
          &quot;git&quot;: { # A GitSourceContext denotes a particular revision in a third party Git repository (e.g., GitHub). # A SourceContext referring to any third party Git repo (e.g., GitHub).
            &quot;revisionId&quot;: &quot;A String&quot;, # Required. Git commit hash.
            &quot;url&quot;: &quot;A String&quot;, # Git repository URL.
          },
          &quot;labels&quot;: { # Labels with user defined metadata.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
        },
        &quot;fileHashes&quot;: { # Hash(es) of the build source, which can be used to verify that the original source integrity was maintained in the build. The keys to this map are file paths used as build source and the values contain the hash values for those files. If the build source came in a single package such as a gzipped tarfile (.tar.gz), the FileHash will be for the single path to that file.
          &quot;a_key&quot;: { # Container message for hashes of byte content of files, used in Source messages to verify integrity of source input to the build.
            &quot;fileHash&quot;: [ # Collection of file hashes.
              { # Container message for hash values.
                &quot;type&quot;: &quot;A String&quot;, # The type of hash that was performed.
                &quot;value&quot;: &quot;A String&quot;, # The hash value.
              },
            ],
          },
        },
        &quot;repoSource&quot;: { # RepoSource describes the location of the source in a Google Cloud Source Repository. # If provided, get source from this location in a Cloud Repo.
          &quot;branchName&quot;: &quot;A String&quot;, # Name of the branch to build.
          &quot;commitSha&quot;: &quot;A String&quot;, # Explicit commit SHA to build.
          &quot;projectId&quot;: &quot;A String&quot;, # ID of the project that owns the repo.
          &quot;repoName&quot;: &quot;A String&quot;, # Name of the repo.
          &quot;tagName&quot;: &quot;A String&quot;, # Name of the tag to build.
        },
        &quot;storageSource&quot;: { # StorageSource describes the location of the source in an archive file in Google Cloud Storage. # If provided, get the source from this location in Google Cloud Storage.
          &quot;bucket&quot;: &quot;A String&quot;, # Google Cloud Storage bucket containing source (see [Bucket Name Requirements] (https://cloud.google.com/storage/docs/bucket-naming#requirements)).
          &quot;generation&quot;: &quot;A String&quot;, # Google Cloud Storage generation for the object.
          &quot;object&quot;: &quot;A String&quot;, # Google Cloud Storage object containing source.
        },
      },
      &quot;startTime&quot;: &quot;A String&quot;, # Time at which execution of the build was started.
      &quot;triggerId&quot;: &quot;A String&quot;, # Trigger identifier if the build was triggered automatically; empty if not.
    },
    &quot;provenanceBytes&quot;: &quot;A String&quot;, # Serialized JSON representation of the provenance, used in generating the `BuildSignature` in the corresponding Result. After verifying the signature, `provenance_bytes` can be unmarshalled and compared to the provenance to confirm that it is unchanged. A base64-encoded string representation of the provenance bytes is used for the signature in order to interoperate with openssl which expects this format for signature verification. The serialized form is captured both to avoid ambiguity in how the provenance is marshalled to json as well to prevent incompatibilities with future changes.
  },
  &quot;compliance&quot;: { # An indication that the compliance checks in the associated ComplianceNote were not satisfied for particular resources or a specified reason. # Describes whether or not a resource passes compliance checks.
    &quot;nonComplianceReason&quot;: &quot;A String&quot;, # The reason for non compliance of these files.
    &quot;nonCompliantFiles&quot;: [ # A list of files which are violating compliance checks.
      { # Details about files that caused a compliance check to fail.
        &quot;displayCommand&quot;: &quot;A String&quot;, # Command to display the non-compliant files.
        &quot;path&quot;: &quot;A String&quot;, # display_command is a single command that can be used to display a list of non compliant files. When there is no such command, we can also iterate a list of non compliant file using &#x27;path&#x27;. Empty if `display_command` is set.
        &quot;reason&quot;: &quot;A String&quot;, # Explains why a file is non compliant for a CIS check.
      },
    ],
  },
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time this `Occurrence` was created.
  &quot;deployment&quot;: { # The period during which some deployable was active in a runtime. # Describes the deployment of an artifact on a runtime.
    &quot;address&quot;: &quot;A String&quot;, # Address of the runtime element hosting this deployment.
    &quot;config&quot;: &quot;A String&quot;, # Configuration used to create this deployment.
    &quot;deployTime&quot;: &quot;A String&quot;, # Beginning of the lifetime of this deployment.
    &quot;platform&quot;: &quot;A String&quot;, # Platform hosting this deployment.
    &quot;resourceUri&quot;: [ # Resource URI for the artifact being deployed taken from the deployable field with the same name.
      &quot;A String&quot;,
    ],
    &quot;undeployTime&quot;: &quot;A String&quot;, # End of the lifetime of this deployment.
    &quot;userEmail&quot;: &quot;A String&quot;, # Identity of the user that triggered this deployment.
  },
  &quot;derivedImage&quot;: { # Derived describes the derived image portion (Occurrence) of the DockerImage relationship. This image would be produced from a Dockerfile with FROM . # Describes how this resource derives from the basis in the associated note.
    &quot;baseResourceUrl&quot;: &quot;A String&quot;, # Output only. This contains the base image URL for the derived image occurrence.
    &quot;distance&quot;: 42, # Output only. The number of layers by which this image differs from the associated image basis.
    &quot;fingerprint&quot;: { # A set of properties that uniquely identify a given Docker image. # The fingerprint of the derived image.
      &quot;v1Name&quot;: &quot;A String&quot;, # The layer-id of the final layer in the Docker image&#x27;s v1 representation. This field can be used as a filter in list requests.
      &quot;v2Blob&quot;: [ # 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. This field can be used as a filter in list requests.
    },
    &quot;layerInfo&quot;: [ # This contains layer-specific metadata, if populated it has length &quot;distance&quot; and is ordered with [distance] being the layer immediately following the base image and [1] being the final layer.
      { # Layer holds metadata specific to a layer of a Docker image.
        &quot;arguments&quot;: &quot;A String&quot;, # The recovered arguments to the Dockerfile directive.
        &quot;directive&quot;: &quot;A String&quot;, # The recovered Dockerfile directive used to construct this layer.
      },
    ],
  },
  &quot;discovered&quot;: { # Provides information about the scan status of a discovered resource. # Describes the initial scan status for this resource.
    &quot;analysisCompleted&quot;: { # Indicates which analysis completed successfully. Multiple types of analysis can be performed on a single resource. # The list of analysis that were completed for a resource.
      &quot;analysisType&quot;: [ # type of analysis that were completed on a resource.
        &quot;A String&quot;,
      ],
    },
    &quot;analysisError&quot;: [ # Indicates any errors encountered during analysis of a resource. There could be 0 or more of these errors.
      { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).
        &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
        &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
          {
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
          },
        ],
        &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
      },
    ],
    &quot;analysisStatus&quot;: &quot;A String&quot;, # The status of discovery for the resource.
    &quot;analysisStatusError&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # When an error is encountered this will contain a LocalizedMessage under details to show to the user. The LocalizedMessage output only and populated by the API.
      &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
      &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
        {
          &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
        },
      ],
      &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
    },
    &quot;archiveTime&quot;: &quot;A String&quot;, # The time occurrences related to this discovery occurrence were archived.
    &quot;continuousAnalysis&quot;: &quot;A String&quot;, # Whether the resource is continuously analyzed.
    &quot;cpe&quot;: &quot;A String&quot;, # The CPE of the resource being scanned.
    &quot;lastScanTime&quot;: &quot;A String&quot;, # The last time this resource was scanned.
    &quot;operation&quot;: { # This resource represents a long-running operation that is the result of a network API call. # Output only. An operation that indicates the status of the current scan. This field is deprecated, do not use.
      &quot;done&quot;: True or False, # If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.
      &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure or cancellation.
        &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
        &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
          {
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
          },
        ],
        &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
      },
      &quot;metadata&quot;: { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
      &quot;name&quot;: &quot;A String&quot;, # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.
      &quot;response&quot;: { # The normal, successful response of the operation. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    },
    &quot;sbomStatus&quot;: { # The status of an SBOM generation. # Output only. The status of an SBOM generation.
      &quot;error&quot;: &quot;A String&quot;, # Output only. If there was an error generating an SBOM, this will indicate what that error was.
      &quot;sbomState&quot;: &quot;A String&quot;, # Output only. The progress of the SBOM generation.
    },
  },
  &quot;dsseAttestation&quot;: { # An occurrence describing an attestation on a resource # This represents a DSSE attestation occurrence
    &quot;envelope&quot;: { # MUST match https://github.com/secure-systems-lab/dsse/blob/master/envelope.proto. An authenticated message of arbitrary type. # If doing something security critical, make sure to verify the signatures in this metadata.
      &quot;payload&quot;: &quot;A String&quot;, # The bytes being signed
      &quot;payloadType&quot;: &quot;A String&quot;, # The type of payload being signed
      &quot;signatures&quot;: [ # The signatures over the payload
        { # A DSSE signature
          &quot;keyid&quot;: &quot;A String&quot;, # A reference id to the key being used for signing
          &quot;sig&quot;: &quot;A String&quot;, # The signature itself
        },
      ],
    },
    &quot;statement&quot;: { # Spec defined at https://github.com/in-toto/attestation/tree/main/spec#statement The serialized InTotoStatement will be stored as Envelope.payload. Envelope.payloadType is always &quot;application/vnd.in-toto+json&quot;.
      &quot;_type&quot;: &quot;A String&quot;, # Always &quot;https://in-toto.io/Statement/v0.1&quot;.
      &quot;predicateType&quot;: &quot;A String&quot;, # &quot;https://slsa.dev/provenance/v0.1&quot; for SlsaProvenance.
      &quot;provenance&quot;: { # Generic Grafeas provenance.
        &quot;builderConfig&quot;: { # required
          &quot;id&quot;: &quot;A String&quot;,
        },
        &quot;materials&quot;: [ # The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on. This is considered to be incomplete unless metadata.completeness.materials is true. Unset or null is equivalent to empty.
          &quot;A String&quot;,
        ],
        &quot;metadata&quot;: { # Other properties of the build.
          &quot;buildFinishedOn&quot;: &quot;A String&quot;, # The timestamp of when the build completed.
          &quot;buildInvocationId&quot;: &quot;A String&quot;, # Identifies the particular build invocation, which can be useful for finding associated logs or other ad-hoc analysis. The value SHOULD be globally unique, per in-toto Provenance spec.
          &quot;buildStartedOn&quot;: &quot;A String&quot;, # The timestamp of when the build started.
          &quot;completeness&quot;: { # Indicates that the builder claims certain fields in this message to be complete. # Indicates that the builder claims certain fields in this message to be complete.
            &quot;arguments&quot;: True or False, # If true, the builder claims that recipe.arguments is complete, meaning that all external inputs are properly captured in the recipe.
            &quot;environment&quot;: True or False, # If true, the builder claims that recipe.environment is claimed to be complete.
            &quot;materials&quot;: True or False, # If true, the builder claims that materials are complete, usually through some controls to prevent network access. Sometimes called &quot;hermetic&quot;.
          },
          &quot;reproducible&quot;: True or False, # If true, the builder claims that running the recipe on materials will produce bit-for-bit identical output.
        },
        &quot;recipe&quot;: { # Steps taken to build the artifact. For a TaskRun, typically each container corresponds to one step in the recipe. # Identifies the configuration used for the build. When combined with materials, this SHOULD fully describe the build, such that re-running this recipe results in bit-for-bit identical output (if the build is reproducible). required
          &quot;arguments&quot;: [ # Collection of all external inputs that influenced the build on top of recipe.definedInMaterial and recipe.entryPoint. For example, if the recipe type were &quot;make&quot;, then this might be the flags passed to make aside from the target, which is captured in recipe.entryPoint.
            {
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
            },
          ],
          &quot;definedInMaterial&quot;: &quot;A String&quot;, # Index in materials containing the recipe steps that are not implied by recipe.type. For example, if the recipe type were &quot;make&quot;, then this would point to the source containing the Makefile, not the make program itself. Set to -1 if the recipe doesn&#x27;t come from a material, as zero is default unset value for int64.
          &quot;entryPoint&quot;: &quot;A String&quot;, # String identifying the entry point into the build. This is often a path to a configuration file and/or a target label within that file. The syntax and meaning are defined by recipe.type. For example, if the recipe type were &quot;make&quot;, then this would reference the directory in which to run make as well as which target to use.
          &quot;environment&quot;: [ # Any other builder-controlled inputs necessary for correctly evaluating the recipe. Usually only needed for reproducing the build but not evaluated as part of policy.
            {
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
            },
          ],
          &quot;type&quot;: &quot;A String&quot;, # URI indicating what type of recipe was performed. It determines the meaning of recipe.entryPoint, recipe.arguments, recipe.environment, and materials.
        },
      },
      &quot;slsaProvenance&quot;: { # SlsaProvenance is the slsa provenance as defined by the slsa spec. # SLSA 0.1 provenance.
        &quot;builder&quot;: { # SlsaBuilder encapsulates the identity of the builder of this provenance. # builder is the builder of this provenance
          &quot;id&quot;: &quot;A String&quot;, # id is the id of the slsa provenance builder
        },
        &quot;materials&quot;: [ # The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on. This is considered to be incomplete unless metadata.completeness.materials is true. Unset or null is equivalent to empty.
          { # Material is a material used in the generation of the provenance
            &quot;digest&quot;: { # digest is a map from a hash algorithm (e.g. sha256) to the value in the material
              &quot;a_key&quot;: &quot;A String&quot;,
            },
            &quot;uri&quot;: &quot;A String&quot;, # uri is the uri of the material
          },
        ],
        &quot;metadata&quot;: { # Other properties of the build. # metadata is the metadata of the provenance
          &quot;buildFinishedOn&quot;: &quot;A String&quot;, # The timestamp of when the build completed.
          &quot;buildInvocationId&quot;: &quot;A String&quot;, # Identifies the particular build invocation, which can be useful for finding associated logs or other ad-hoc analysis. The value SHOULD be globally unique, per in-toto Provenance spec.
          &quot;buildStartedOn&quot;: &quot;A String&quot;, # The timestamp of when the build started.
          &quot;completeness&quot;: { # Indicates that the builder claims certain fields in this message to be complete. # Indicates that the builder claims certain fields in this message to be complete.
            &quot;arguments&quot;: True or False, # If true, the builder claims that recipe.arguments is complete, meaning that all external inputs are properly captured in the recipe.
            &quot;environment&quot;: True or False, # If true, the builder claims that recipe.environment is claimed to be complete.
            &quot;materials&quot;: True or False, # If true, the builder claims that materials are complete, usually through some controls to prevent network access. Sometimes called &quot;hermetic&quot;.
          },
          &quot;reproducible&quot;: True or False, # If true, the builder claims that running the recipe on materials will produce bit-for-bit identical output.
        },
        &quot;recipe&quot;: { # Steps taken to build the artifact. For a TaskRun, typically each container corresponds to one step in the recipe. # Identifies the configuration used for the build. When combined with materials, this SHOULD fully describe the build, such that re-running this recipe results in bit-for-bit identical output (if the build is reproducible).
          &quot;arguments&quot;: { # Collection of all external inputs that influenced the build on top of recipe.definedInMaterial and recipe.entryPoint. For example, if the recipe type were &quot;make&quot;, then this might be the flags passed to make aside from the target, which is captured in recipe.entryPoint. Depending on the recipe Type, the structure may be different.
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
          },
          &quot;definedInMaterial&quot;: &quot;A String&quot;, # Index in materials containing the recipe steps that are not implied by recipe.type. For example, if the recipe type were &quot;make&quot;, then this would point to the source containing the Makefile, not the make program itself. Set to -1 if the recipe doesn&#x27;t come from a material, as zero is default unset value for int64.
          &quot;entryPoint&quot;: &quot;A String&quot;, # String identifying the entry point into the build. This is often a path to a configuration file and/or a target label within that file. The syntax and meaning are defined by recipe.type. For example, if the recipe type were &quot;make&quot;, then this would reference the directory in which to run make as well as which target to use.
          &quot;environment&quot;: { # Any other builder-controlled inputs necessary for correctly evaluating the recipe. Usually only needed for reproducing the build but not evaluated as part of policy. Depending on the recipe Type, the structure may be different.
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
          },
          &quot;type&quot;: &quot;A String&quot;, # URI indicating what type of recipe was performed. It determines the meaning of recipe.entryPoint, recipe.arguments, recipe.environment, and materials.
        },
      },
      &quot;slsaProvenanceZeroTwo&quot;: { # SlsaProvenanceZeroTwo is the slsa provenance as defined by the slsa spec. See full explanation of fields at slsa.dev/provenance/v0.2. # SLSA 0.2 provenance.
        &quot;buildConfig&quot;: { # Lists the steps in the build.
          &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
        },
        &quot;buildType&quot;: &quot;A String&quot;, # URI indicating what type of build was performed.
        &quot;builder&quot;: { # Identifies the entity that executed the recipe, which is trusted to have correctly performed the operation and populated this provenance. # Identifies the entity that executed the recipe, which is trusted to have correctly performed the operation and populated this provenance.
          &quot;id&quot;: &quot;A String&quot;, # URI indicating the builder’s identity.
        },
        &quot;invocation&quot;: { # Identifies the event that kicked off the build. # Identifies the event that kicked off the build.
          &quot;configSource&quot;: { # Describes where the config file that kicked off the build came from. This is effectively a pointer to the source where buildConfig came from. # Describes where the config file that kicked off the build came from.
            &quot;digest&quot;: { # Collection of cryptographic digests for the contents of the artifact specified by invocation.configSource.uri.
              &quot;a_key&quot;: &quot;A String&quot;,
            },
            &quot;entryPoint&quot;: &quot;A String&quot;, # String identifying the entry point into the build.
            &quot;uri&quot;: &quot;A String&quot;, # URI indicating the identity of the source of the config.
          },
          &quot;environment&quot;: { # Any other builder-controlled inputs necessary for correctly evaluating the build.
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
          },
          &quot;parameters&quot;: { # Collection of all external inputs that influenced the build on top of invocation.configSource.
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
          },
        },
        &quot;materials&quot;: [ # The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on.
          { # The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on.
            &quot;digest&quot;: { # Collection of cryptographic digests for the contents of this artifact.
              &quot;a_key&quot;: &quot;A String&quot;,
            },
            &quot;uri&quot;: &quot;A String&quot;, # The method by which this artifact was referenced during the build.
          },
        ],
        &quot;metadata&quot;: { # Other properties of the build. # Other properties of the build.
          &quot;buildFinishedOn&quot;: &quot;A String&quot;, # The timestamp of when the build completed.
          &quot;buildInvocationId&quot;: &quot;A String&quot;, # Identifies this particular build invocation, which can be useful for finding associated logs or other ad-hoc analysis.
          &quot;buildStartedOn&quot;: &quot;A String&quot;, # The timestamp of when the build started.
          &quot;completeness&quot;: { # Indicates that the builder claims certain fields in this message to be complete. # Indicates that the builder claims certain fields in this message to be complete.
            &quot;environment&quot;: True or False, # If true, the builder claims that invocation.environment is complete.
            &quot;materials&quot;: True or False, # If true, the builder claims that materials is complete.
            &quot;parameters&quot;: True or False, # If true, the builder claims that invocation.parameters is complete.
          },
          &quot;reproducible&quot;: True or False, # If true, the builder claims that running invocation on materials will produce bit-for-bit identical output.
        },
      },
      &quot;subject&quot;: [ # subject is the subjects of the intoto statement
        { # Subject refers to the subject of the intoto statement
          &quot;digest&quot;: { # &quot;&quot;: &quot;&quot; Algorithms can be e.g. sha256, sha512 See https://github.com/in-toto/attestation/blob/main/spec/field_types.md#DigestSet
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;name&quot;: &quot;A String&quot;, # name is the name of the Subject used here
        },
      ],
    },
  },
  &quot;envelope&quot;: { # MUST match https://github.com/secure-systems-lab/dsse/blob/master/envelope.proto. An authenticated message of arbitrary type. # https://github.com/secure-systems-lab/dsse
    &quot;payload&quot;: &quot;A String&quot;, # The bytes being signed
    &quot;payloadType&quot;: &quot;A String&quot;, # The type of payload being signed
    &quot;signatures&quot;: [ # The signatures over the payload
      { # A DSSE signature
        &quot;keyid&quot;: &quot;A String&quot;, # A reference id to the key being used for signing
        &quot;sig&quot;: &quot;A String&quot;, # The signature itself
      },
    ],
  },
  &quot;installation&quot;: { # This represents how a particular software package may be installed on a system. # Describes the installation of a package on the linked resource.
    &quot;architecture&quot;: &quot;A String&quot;, # Output only. The CPU architecture for which packages in this distribution channel were built. Architecture will be blank for language packages.
    &quot;cpeUri&quot;: &quot;A String&quot;, # Output only. The cpe_uri in [CPE format](https://cpe.mitre.org/specification/) denoting the package manager version distributing a package. The cpe_uri will be blank for language packages.
    &quot;license&quot;: { # License information. # Licenses that have been declared by the authors of the package.
      &quot;comments&quot;: &quot;A String&quot;, # Comments
      &quot;expression&quot;: &quot;A String&quot;, # Often a single license can be used to represent the licensing terms. Sometimes it is necessary to include a choice of one or more licenses or some combination of license identifiers. Examples: &quot;LGPL-2.1-only OR MIT&quot;, &quot;LGPL-2.1-only AND MIT&quot;, &quot;GPL-2.0-or-later WITH Bison-exception-2.2&quot;.
    },
    &quot;location&quot;: [ # All of the places within the filesystem versions of this package have been found.
      { # An occurrence of a particular package installation found within a system&#x27;s filesystem. e.g. glibc was found in /var/lib/dpkg/status
        &quot;cpeUri&quot;: &quot;A String&quot;, # Deprecated. The cpe_uri in [cpe format](https://cpe.mitre.org/specification/) denoting the package manager version distributing a package.
        &quot;path&quot;: &quot;A String&quot;, # The path from which we gathered that this package/version is installed.
        &quot;version&quot;: { # Version contains structured information about the version of the package. For a discussion of this in Debian/Ubuntu: http://serverfault.com/questions/604541/debian-packages-version-convention For a discussion of this in Redhat/Fedora/Centos: http://blog.jasonantman.com/2014/07/how-yum-and-rpm-compare-versions/ # Deprecated. The version installed at this location.
          &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
          &quot;inclusive&quot;: True or False, # Whether this version is vulnerable, when defining the version bounds. For example, if the minimum version is 2.0, inclusive=true would say 2.0 is vulnerable, while inclusive=false would say it&#x27;s not
          &quot;kind&quot;: &quot;A String&quot;, # Distinguish between sentinel MIN/MAX versions and normal versions. If kind is not NORMAL, then the other fields are ignored.
          &quot;name&quot;: &quot;A String&quot;, # 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;name&quot;: &quot;A String&quot;, # Output only. The name of the installed package.
    &quot;packageType&quot;: &quot;A String&quot;, # Output only. The type of package; whether native or non native (e.g., ruby gems, node.js packages, etc.).
    &quot;version&quot;: { # Version contains structured information about the version of the package. For a discussion of this in Debian/Ubuntu: http://serverfault.com/questions/604541/debian-packages-version-convention For a discussion of this in Redhat/Fedora/Centos: http://blog.jasonantman.com/2014/07/how-yum-and-rpm-compare-versions/ # Output only. The version of the package.
      &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
      &quot;inclusive&quot;: True or False, # Whether this version is vulnerable, when defining the version bounds. For example, if the minimum version is 2.0, inclusive=true would say 2.0 is vulnerable, while inclusive=false would say it&#x27;s not
      &quot;kind&quot;: &quot;A String&quot;, # Distinguish between sentinel MIN/MAX versions and normal versions. If kind is not NORMAL, then the other fields are ignored.
      &quot;name&quot;: &quot;A String&quot;, # 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;kind&quot;: &quot;A String&quot;, # Output only. This explicitly denotes which of the `Occurrence` details are specified. This field can be used as a filter in list requests.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The name of the `Occurrence` in the form &quot;projects/{project_id}/occurrences/{OCCURRENCE_ID}&quot;
  &quot;noteName&quot;: &quot;A String&quot;, # An analysis note associated with this image, in the form &quot;providers/{provider_id}/notes/{NOTE_ID}&quot; This field can be used as a filter in list requests.
  &quot;remediation&quot;: &quot;A String&quot;, # A description of actions that can be taken to remedy the `Note`
  &quot;resource&quot;: { #  Resource is an entity that can have metadata. E.g., a Docker image. #  The resource for which the `Occurrence` applies.
    &quot;contentHash&quot;: { # Container message for hash values. # The hash of the resource content. E.g., the Docker digest.
      &quot;type&quot;: &quot;A String&quot;, # The type of hash that was performed.
      &quot;value&quot;: &quot;A String&quot;, # The hash value.
    },
    &quot;name&quot;: &quot;A String&quot;, # The name of the resource. E.g., the name of a Docker image - &quot;Debian&quot;.
    &quot;uri&quot;: &quot;A String&quot;, # The unique URI of the resource. E.g., &quot;https://gcr.io/project/image@sha256:foo&quot; for a Docker image.
  },
  &quot;resourceUrl&quot;: &quot;A String&quot;, # The unique URL of the image or the container for which the `Occurrence` applies. For example, https://gcr.io/project/image@sha256:foo This field can be used as a filter in list requests.
  &quot;sbom&quot;: { # DocumentOccurrence represents an SPDX Document Creation Information section: https://spdx.github.io/spdx-spec/2-document-creation-information/ # Describes a specific software bill of materials document.
    &quot;createTime&quot;: &quot;A String&quot;, # Identify when the SPDX file was originally created. The date is to be specified according to combined date and time in UTC format as specified in ISO 8601 standard
    &quot;creatorComment&quot;: &quot;A String&quot;, # A field for creators of the SPDX file to provide general comments about the creation of the SPDX file or any other relevant comment not included in the other fields
    &quot;creators&quot;: [ # Identify who (or what, in the case of a tool) created the SPDX file. If the SPDX file was created by an individual, indicate the person&#x27;s name
      &quot;A String&quot;,
    ],
    &quot;documentComment&quot;: &quot;A String&quot;, # A field for creators of the SPDX file content to provide comments to the consumers of the SPDX document
    &quot;externalDocumentRefs&quot;: [ # Identify any external SPDX documents referenced within this SPDX document
      &quot;A String&quot;,
    ],
    &quot;id&quot;: &quot;A String&quot;, # Identify the current SPDX document which may be referenced in relationships by other files, packages internally and documents externally
    &quot;licenseListVersion&quot;: &quot;A String&quot;, # A field for creators of the SPDX file to provide the version of the SPDX License List used when the SPDX file was created
    &quot;namespace&quot;: &quot;A String&quot;, # Provide an SPDX document specific namespace as a unique absolute Uniform Resource Identifier (URI) as specified in RFC-3986, with the exception of the ‘#’ delimiter
    &quot;title&quot;: &quot;A String&quot;, # Identify name of this document as designated by creator
  },
  &quot;sbomReference&quot;: { # The occurrence representing an SBOM reference as applied to a specific resource. The occurrence follows the DSSE specification. See https://github.com/secure-systems-lab/dsse/blob/master/envelope.md for more details. # This represents an SBOM reference occurrence
    &quot;payload&quot;: { # The actual payload that contains the SBOM Reference data. The payload follows the intoto statement specification. See https://github.com/in-toto/attestation/blob/main/spec/v1.0/statement.md for more details. # The actual payload that contains the SBOM reference data.
      &quot;_type&quot;: &quot;A String&quot;, # Identifier for the schema of the Statement.
      &quot;predicate&quot;: { # A predicate which describes the SBOM being referenced. # Additional parameters of the Predicate. Includes the actual data about the SBOM.
        &quot;digest&quot;: { # A map of algorithm to digest of the contents of the SBOM.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;location&quot;: &quot;A String&quot;, # The location of the SBOM.
        &quot;mimeType&quot;: &quot;A String&quot;, # The mime type of the SBOM.
        &quot;referrerId&quot;: &quot;A String&quot;, # The person or system referring this predicate to the consumer.
      },
      &quot;predicateType&quot;: &quot;A String&quot;, # URI identifying the type of the Predicate.
      &quot;subject&quot;: [ # Set of software artifacts that the attestation applies to. Each element represents a single software artifact.
        { # Subject refers to the subject of the intoto statement
          &quot;digest&quot;: { # &quot;&quot;: &quot;&quot; Algorithms can be e.g. sha256, sha512 See https://github.com/in-toto/attestation/blob/main/spec/field_types.md#DigestSet
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;name&quot;: &quot;A String&quot;, # name is the name of the Subject used here
        },
      ],
    },
    &quot;payloadType&quot;: &quot;A String&quot;, # The kind of payload that SbomReferenceIntotoPayload takes. Since it&#x27;s in the intoto format, this value is expected to be &#x27;application/vnd.in-toto+json&#x27;.
    &quot;signatures&quot;: [ # The signatures over the payload.
      { # A DSSE signature
        &quot;keyid&quot;: &quot;A String&quot;, # A reference id to the key being used for signing
        &quot;sig&quot;: &quot;A String&quot;, # The signature itself
      },
    ],
  },
  &quot;spdxFile&quot;: { # FileOccurrence represents an SPDX File Information section: https://spdx.github.io/spdx-spec/4-file-information/ # Describes a specific SPDX File.
    &quot;attributions&quot;: [ # This field provides a place for the SPDX data creator to record, at the file level, acknowledgements that may be needed to be communicated in some contexts
      &quot;A String&quot;,
    ],
    &quot;comment&quot;: &quot;A String&quot;, # This field provides a place for the SPDX file creator to record any general comments about the file
    &quot;contributors&quot;: [ # This field provides a place for the SPDX file creator to record file contributors
      &quot;A String&quot;,
    ],
    &quot;copyright&quot;: &quot;A String&quot;, # Identify the copyright holder of the file, as well as any dates present
    &quot;filesLicenseInfo&quot;: [ # This field contains the license information actually found in the file, if any
      &quot;A String&quot;,
    ],
    &quot;id&quot;: &quot;A String&quot;, # Uniquely identify any element in an SPDX document which may be referenced by other elements
    &quot;licenseConcluded&quot;: { # License information. # This field contains the license the SPDX file creator has concluded as governing the file or alternative values if the governing license cannot be determined
      &quot;comments&quot;: &quot;A String&quot;, # Comments
      &quot;expression&quot;: &quot;A String&quot;, # Often a single license can be used to represent the licensing terms. Sometimes it is necessary to include a choice of one or more licenses or some combination of license identifiers. Examples: &quot;LGPL-2.1-only OR MIT&quot;, &quot;LGPL-2.1-only AND MIT&quot;, &quot;GPL-2.0-or-later WITH Bison-exception-2.2&quot;.
    },
    &quot;notice&quot;: &quot;A String&quot;, # This field provides a place for the SPDX file creator to record license notices or other such related notices found in the file
  },
  &quot;spdxPackage&quot;: { # PackageInfoOccurrence represents an SPDX Package Information section: https://spdx.github.io/spdx-spec/3-package-information/ # Describes a specific SPDX Package.
    &quot;comment&quot;: &quot;A String&quot;, # A place for the SPDX file creator to record any general comments about the package being described
    &quot;filename&quot;: &quot;A String&quot;, # Provide the actual file name of the package, or path of the directory being treated as a package
    &quot;homePage&quot;: &quot;A String&quot;, # Output only. Provide a place for the SPDX file creator to record a web site that serves as the package&#x27;s home page
    &quot;id&quot;: &quot;A String&quot;, # Uniquely identify any element in an SPDX document which may be referenced by other elements
    &quot;licenseConcluded&quot;: { # License information. # package or alternative values, if the governing license cannot be determined
      &quot;comments&quot;: &quot;A String&quot;, # Comments
      &quot;expression&quot;: &quot;A String&quot;, # Often a single license can be used to represent the licensing terms. Sometimes it is necessary to include a choice of one or more licenses or some combination of license identifiers. Examples: &quot;LGPL-2.1-only OR MIT&quot;, &quot;LGPL-2.1-only AND MIT&quot;, &quot;GPL-2.0-or-later WITH Bison-exception-2.2&quot;.
    },
    &quot;packageType&quot;: &quot;A String&quot;, # Output only. The type of package: OS, MAVEN, GO, GO_STDLIB, etc.
    &quot;sourceInfo&quot;: &quot;A String&quot;, # Provide a place for the SPDX file creator to record any relevant background information or additional comments about the origin of the package
    &quot;summaryDescription&quot;: &quot;A String&quot;, # Output only. A short description of the package
    &quot;title&quot;: &quot;A String&quot;, # Output only. Identify the full name of the package as given by the Package Originator
    &quot;version&quot;: &quot;A String&quot;, # Output only. Identify the version of the package
  },
  &quot;spdxRelationship&quot;: { # RelationshipOccurrence represents an SPDX Relationship section: https://spdx.github.io/spdx-spec/7-relationships-between-SPDX-elements/ # Describes a specific relationship between SPDX elements.
    &quot;comment&quot;: &quot;A String&quot;, # A place for the SPDX file creator to record any general comments about the relationship
    &quot;source&quot;: &quot;A String&quot;, # Also referred to as SPDXRef-A The source SPDX element (file, package, etc)
    &quot;target&quot;: &quot;A String&quot;, # Also referred to as SPDXRef-B The target SPDC element (file, package, etc) In cases where there are &quot;known unknowns&quot;, the use of the keyword NOASSERTION can be used The keywords NONE can be used to indicate that an SPDX element (package/file/snippet) has no other elements connected by some relationship to it
    &quot;type&quot;: &quot;A String&quot;, # Output only. The type of relationship between the source and target SPDX elements
  },
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time this `Occurrence` was last updated.
  &quot;upgrade&quot;: { # An Upgrade Occurrence represents that a specific resource_url could install a specific upgrade. This presence is supplied via local sources (i.e. it is present in the mirror and the running system has noticed its availability). # Describes an upgrade.
    &quot;distribution&quot;: { # The Upgrade Distribution represents metadata about the Upgrade for each operating system (CPE). Some distributions have additional metadata around updates, classifying them into various categories and severities. # Metadata about the upgrade for available for the specific operating system for the resource_url. This allows efficient filtering, as well as making it easier to use the occurrence.
      &quot;classification&quot;: &quot;A String&quot;, # The operating system classification of this Upgrade, as specified by the upstream operating system upgrade feed.
      &quot;cpeUri&quot;: &quot;A String&quot;, # Required - The specific operating system this metadata applies to. See https://cpe.mitre.org/specification/.
      &quot;cve&quot;: [ # The cve that would be resolved by this upgrade.
        &quot;A String&quot;,
      ],
      &quot;severity&quot;: &quot;A String&quot;, # The severity as specified by the upstream operating system.
    },
    &quot;package&quot;: &quot;A String&quot;, # Required - The package this Upgrade is for.
    &quot;parsedVersion&quot;: { # Version contains structured information about the version of the package. For a discussion of this in Debian/Ubuntu: http://serverfault.com/questions/604541/debian-packages-version-convention For a discussion of this in Redhat/Fedora/Centos: http://blog.jasonantman.com/2014/07/how-yum-and-rpm-compare-versions/ # Required - The version of the package in a machine + human readable form.
      &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
      &quot;inclusive&quot;: True or False, # Whether this version is vulnerable, when defining the version bounds. For example, if the minimum version is 2.0, inclusive=true would say 2.0 is vulnerable, while inclusive=false would say it&#x27;s not
      &quot;kind&quot;: &quot;A String&quot;, # Distinguish between sentinel MIN/MAX versions and normal versions. If kind is not NORMAL, then the other fields are ignored.
      &quot;name&quot;: &quot;A String&quot;, # 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;vulnerabilityDetails&quot;: { # Used by Occurrence to point to where the vulnerability exists and how to fix it. # Details of a security vulnerability note.
    &quot;cvssScore&quot;: 3.14, # Output only. The CVSS score of this vulnerability. CVSS score is on a scale of 0-10 where 0 indicates low severity and 10 indicates high severity.
    &quot;cvssV2&quot;: { # Common Vulnerability Scoring System. This message is compatible with CVSS v2 and v3. For CVSS v2 details, see https://www.first.org/cvss/v2/guide CVSS v2 calculator: https://nvd.nist.gov/vuln-metrics/cvss/v2-calculator For CVSS v3 details, see https://www.first.org/cvss/specification-document CVSS v3 calculator: https://nvd.nist.gov/vuln-metrics/cvss/v3-calculator # The CVSS v2 score of this vulnerability.
      &quot;attackComplexity&quot;: &quot;A String&quot;, # Defined in CVSS v3, CVSS v2
      &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. Defined in CVSS v3, CVSS v2
      &quot;authentication&quot;: &quot;A String&quot;, # Defined in CVSS v2
      &quot;availabilityImpact&quot;: &quot;A String&quot;, # Defined in CVSS v3, CVSS v2
      &quot;baseScore&quot;: 3.14, # The base score is a function of the base metric scores.
      &quot;confidentialityImpact&quot;: &quot;A String&quot;, # Defined in CVSS v3, CVSS v2
      &quot;exploitabilityScore&quot;: 3.14,
      &quot;impactScore&quot;: 3.14,
      &quot;integrityImpact&quot;: &quot;A String&quot;, # Defined in CVSS v3, CVSS v2
      &quot;privilegesRequired&quot;: &quot;A String&quot;, # Defined in CVSS v3
      &quot;scope&quot;: &quot;A String&quot;, # Defined in CVSS v3
      &quot;userInteraction&quot;: &quot;A String&quot;, # Defined in CVSS v3
    },
    &quot;cvssV3&quot;: { # Common Vulnerability Scoring System. This message is compatible with CVSS v2 and v3. For CVSS v2 details, see https://www.first.org/cvss/v2/guide CVSS v2 calculator: https://nvd.nist.gov/vuln-metrics/cvss/v2-calculator For CVSS v3 details, see https://www.first.org/cvss/specification-document CVSS v3 calculator: https://nvd.nist.gov/vuln-metrics/cvss/v3-calculator # The CVSS v3 score of this vulnerability.
      &quot;attackComplexity&quot;: &quot;A String&quot;, # Defined in CVSS v3, CVSS v2
      &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. Defined in CVSS v3, CVSS v2
      &quot;authentication&quot;: &quot;A String&quot;, # Defined in CVSS v2
      &quot;availabilityImpact&quot;: &quot;A String&quot;, # Defined in CVSS v3, CVSS v2
      &quot;baseScore&quot;: 3.14, # The base score is a function of the base metric scores.
      &quot;confidentialityImpact&quot;: &quot;A String&quot;, # Defined in CVSS v3, CVSS v2
      &quot;exploitabilityScore&quot;: 3.14,
      &quot;impactScore&quot;: 3.14,
      &quot;integrityImpact&quot;: &quot;A String&quot;, # Defined in CVSS v3, CVSS v2
      &quot;privilegesRequired&quot;: &quot;A String&quot;, # Defined in CVSS v3
      &quot;scope&quot;: &quot;A String&quot;, # Defined in CVSS v3
      &quot;userInteraction&quot;: &quot;A String&quot;, # Defined in CVSS v3
    },
    &quot;cvssVersion&quot;: &quot;A String&quot;, # Output only. CVSS version used to populate cvss_score and severity.
    &quot;effectiveSeverity&quot;: &quot;A String&quot;, # The distro assigned severity for this vulnerability when that is available and note provider assigned severity when distro has not yet assigned a severity for this vulnerability. When there are multiple package issues for this vulnerability, they can have different effective severities because some might come from the distro and some might come from installed language packs (e.g. Maven JARs or Go binaries). For this reason, it is advised to use the effective severity on the PackageIssue level, as this field may eventually be deprecated. In the case where multiple PackageIssues have different effective severities, the one set here will be the highest severity of any of the PackageIssues.
    &quot;extraDetails&quot;: &quot;A String&quot;, # Occurrence-specific extra details about the vulnerability.
    &quot;packageIssue&quot;: [ # The set of affected locations and their fixes (if available) within the associated resource.
      { # This message wraps a location affected by a vulnerability and its associated fix (if one is available).
        &quot;affectedLocation&quot;: { # The location of the vulnerability # The location of the vulnerability.
          &quot;cpeUri&quot;: &quot;A String&quot;, # The cpe_uri in [cpe format] (https://cpe.mitre.org/specification/) format. Examples include distro or storage location for vulnerable jar. This field can be used as a filter in list requests.
          &quot;fileLocation&quot;: [ # The file location at which this package was found.
            { # Indicates the location at which a package was found.
              &quot;filePath&quot;: &quot;A String&quot;, # For jars that are contained inside .war files, this filepath can indicate the path to war file combined with the path to jar file.
            },
          ],
          &quot;package&quot;: &quot;A String&quot;, # The package being described.
          &quot;version&quot;: { # Version contains structured information about the version of the package. For a discussion of this in Debian/Ubuntu: http://serverfault.com/questions/604541/debian-packages-version-convention For a discussion of this in Redhat/Fedora/Centos: http://blog.jasonantman.com/2014/07/how-yum-and-rpm-compare-versions/ # The version of the package being described. This field can be used as a filter in list requests.
            &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
            &quot;inclusive&quot;: True or False, # Whether this version is vulnerable, when defining the version bounds. For example, if the minimum version is 2.0, inclusive=true would say 2.0 is vulnerable, while inclusive=false would say it&#x27;s not
            &quot;kind&quot;: &quot;A String&quot;, # Distinguish between sentinel MIN/MAX versions and normal versions. If kind is not NORMAL, then the other fields are ignored.
            &quot;name&quot;: &quot;A String&quot;, # 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;effectiveSeverity&quot;: &quot;A String&quot;, # Output only. The distro or language system assigned severity for this vulnerability when that is available and note provider assigned severity when distro or language system has not yet assigned a severity for this vulnerability.
        &quot;fixedLocation&quot;: { # The location of the vulnerability # The location of the available fix for vulnerability.
          &quot;cpeUri&quot;: &quot;A String&quot;, # The cpe_uri in [cpe format] (https://cpe.mitre.org/specification/) format. Examples include distro or storage location for vulnerable jar. This field can be used as a filter in list requests.
          &quot;fileLocation&quot;: [ # The file location at which this package was found.
            { # Indicates the location at which a package was found.
              &quot;filePath&quot;: &quot;A String&quot;, # For jars that are contained inside .war files, this filepath can indicate the path to war file combined with the path to jar file.
            },
          ],
          &quot;package&quot;: &quot;A String&quot;, # The package being described.
          &quot;version&quot;: { # Version contains structured information about the version of the package. For a discussion of this in Debian/Ubuntu: http://serverfault.com/questions/604541/debian-packages-version-convention For a discussion of this in Redhat/Fedora/Centos: http://blog.jasonantman.com/2014/07/how-yum-and-rpm-compare-versions/ # The version of the package being described. This field can be used as a filter in list requests.
            &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
            &quot;inclusive&quot;: True or False, # Whether this version is vulnerable, when defining the version bounds. For example, if the minimum version is 2.0, inclusive=true would say 2.0 is vulnerable, while inclusive=false would say it&#x27;s not
            &quot;kind&quot;: &quot;A String&quot;, # Distinguish between sentinel MIN/MAX versions and normal versions. If kind is not NORMAL, then the other fields are ignored.
            &quot;name&quot;: &quot;A String&quot;, # 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;packageType&quot;: &quot;A String&quot;, # The type of package (e.g. OS, MAVEN, GO).
        &quot;severityName&quot;: &quot;A String&quot;,
      },
    ],
    &quot;severity&quot;: &quot;A String&quot;, # Output only. The note provider assigned Severity of the vulnerability.
    &quot;type&quot;: &quot;A String&quot;, # The type of package; whether native or non native(ruby gems, node.js packages etc). This may be deprecated in the future because we can have multiple PackageIssues with different package types.
    &quot;vexAssessment&quot;: { # VexAssessment provides all publisher provided Vex information that is related to this vulnerability. # VexAssessment provides all publisher provided Vex information that is related to this vulnerability for this resource.
      &quot;cve&quot;: &quot;A String&quot;, # Holds the MITRE standard Common Vulnerabilities and Exposures (CVE) tracking number for the vulnerability.
      &quot;impacts&quot;: [ # Contains information about the impact of this vulnerability, this will change with time.
        &quot;A String&quot;,
      ],
      &quot;justification&quot;: { # Justification provides the justification when the state of the assessment if NOT_AFFECTED. # Justification provides the justification when the state of the assessment if NOT_AFFECTED.
        &quot;details&quot;: &quot;A String&quot;, # Additional details on why this justification was chosen.
        &quot;justificationType&quot;: &quot;A String&quot;, # The justification type for this vulnerability.
      },
      &quot;noteName&quot;: &quot;A String&quot;, # The VulnerabilityAssessment note from which this VexAssessment was generated. This will be of the form: `projects/[PROJECT_ID]/notes/[NOTE_ID]`.
      &quot;relatedUris&quot;: [ # Holds a list of references associated with this vulnerability item and assessment. These uris have additional information about the vulnerability and the assessment itself. E.g. Link to a document which details how this assessment concluded the state of this vulnerability.
        { # An URI message.
          &quot;label&quot;: &quot;A String&quot;, # A label for the URI.
          &quot;uri&quot;: &quot;A String&quot;, # The unique resource identifier.
        },
      ],
      &quot;remediations&quot;: [ # Specifies details on how to handle (and presumably, fix) a vulnerability.
        { # Specifies details on how to handle (and presumably, fix) a vulnerability.
          &quot;details&quot;: &quot;A String&quot;, # Contains a comprehensive human-readable discussion of the remediation.
          &quot;remediationType&quot;: &quot;A String&quot;, # The type of remediation that can be applied.
          &quot;remediationUri&quot;: { # An URI message. # Contains the URL where to obtain the remediation.
            &quot;label&quot;: &quot;A String&quot;, # A label for the URI.
            &quot;uri&quot;: &quot;A String&quot;, # The unique resource identifier.
          },
        },
      ],
      &quot;state&quot;: &quot;A String&quot;, # Provides the state of this Vulnerability assessment.
      &quot;vulnerabilityId&quot;: &quot;A String&quot;, # The vulnerability identifier for this Assessment. Will hold one of common identifiers e.g. CVE, GHSA etc.
    },
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(name, x__xgafv=None)</code>
  <pre>Deletes the given `Occurrence` from the system. Use this when an `Occurrence` is no longer applicable for the given resource.

Args:
  name: string, The name of the occurrence in the form of &quot;projects/{project_id}/occurrences/{OCCURRENCE_ID}&quot; (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

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

<div class="method">
    <code class="details" id="get">get(name, x__xgafv=None)</code>
  <pre>Returns the requested `Occurrence`.

Args:
  name: string, The name of the occurrence of the form &quot;projects/{project_id}/occurrences/{OCCURRENCE_ID}&quot; (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # `Occurrence` includes information about analysis occurrences for an image.
  &quot;attestation&quot;: { # Occurrence that represents a single &quot;attestation&quot;. The authenticity of an Attestation can be verified using the attached signature. If the verifier trusts the public key of the signer, then verifying the signature is sufficient to establish trust. In this circumstance, the AttestationAuthority to which this Attestation is attached is primarily useful for look-up (how to find this Attestation if you already know the Authority and artifact to be verified) and intent (which authority was this attestation intended to sign for). # Describes an attestation of an artifact.
    &quot;pgpSignedAttestation&quot;: { # An attestation wrapper with a PGP-compatible signature. This message only supports `ATTACHED` signatures, where the payload that is signed is included alongside the signature itself in the same file.
      &quot;contentType&quot;: &quot;A String&quot;, # Type (for example schema) of the attestation payload that was signed. The verifier must ensure that the provided type is one that the verifier supports, and that the attestation payload is a valid instantiation of that type (for example by validating a JSON schema).
      &quot;pgpKeyId&quot;: &quot;A String&quot;, # The cryptographic fingerprint of the key used to generate the signature, as output by, e.g. `gpg --list-keys`. This should be the version 4, full 160-bit fingerprint, expressed as a 40 character hexadecimal string. See https://tools.ietf.org/html/rfc4880#section-12.2 for details. Implementations may choose to acknowledge &quot;LONG&quot;, &quot;SHORT&quot;, or other abbreviated key IDs, but only the full fingerprint is guaranteed to work. In gpg, the full fingerprint can be retrieved from the `fpr` field returned when calling --list-keys with --with-colons. For example: ``` gpg --with-colons --with-fingerprint --force-v4-certs \ --list-keys attester@example.com tru::1:1513631572:0:3:1:5 pub:...... fpr:::::::::24FF6481B76AC91E66A00AC657A93A81EF3AE6FB: ``` Above, the fingerprint is `24FF6481B76AC91E66A00AC657A93A81EF3AE6FB`.
      &quot;signature&quot;: &quot;A String&quot;, # The raw content of the signature, as output by GNU Privacy Guard (GPG) or equivalent. Since this message only supports attached signatures, the payload that was signed must be attached. While the signature format supported is dependent on the verification implementation, currently only ASCII-armored (`--armor` to gpg), non-clearsigned (`--sign` rather than `--clearsign` to gpg) are supported. Concretely, `gpg --sign --armor --output=signature.gpg payload.json` will create the signature content expected in this field in `signature.gpg` for the `payload.json` attestation payload.
    },
  },
  &quot;buildDetails&quot;: { # Message encapsulating build provenance details. # Build details for a verifiable build.
    &quot;inTotoSlsaProvenanceV1&quot;: { # In-Toto Slsa Provenance V1 represents a slsa provenance meeting the slsa spec, wrapped in an in-toto statement. This allows for direct jsonification of a to-spec in-toto slsa statement with a to-spec slsa provenance.
      &quot;_type&quot;: &quot;A String&quot;, # InToto spec defined at https://github.com/in-toto/attestation/tree/main/spec#statement
      &quot;predicate&quot;: { # Keep in sync with schema at https://github.com/slsa-framework/slsa/blob/main/docs/provenance/schema/v1/provenance.proto Builder renamed to ProvenanceBuilder because of Java conflicts.
        &quot;buildDefinition&quot;: {
          &quot;buildType&quot;: &quot;A String&quot;,
          &quot;externalParameters&quot;: {
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
          },
          &quot;internalParameters&quot;: {
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
          },
          &quot;resolvedDependencies&quot;: [
            {
              &quot;annotations&quot;: {
                &quot;a_key&quot;: &quot;&quot;,
              },
              &quot;content&quot;: &quot;A String&quot;,
              &quot;digest&quot;: {
                &quot;a_key&quot;: &quot;A String&quot;,
              },
              &quot;downloadLocation&quot;: &quot;A String&quot;,
              &quot;mediaType&quot;: &quot;A String&quot;,
              &quot;name&quot;: &quot;A String&quot;,
              &quot;uri&quot;: &quot;A String&quot;,
            },
          ],
        },
        &quot;runDetails&quot;: {
          &quot;builder&quot;: {
            &quot;builderDependencies&quot;: [
              {
                &quot;annotations&quot;: {
                  &quot;a_key&quot;: &quot;&quot;,
                },
                &quot;content&quot;: &quot;A String&quot;,
                &quot;digest&quot;: {
                  &quot;a_key&quot;: &quot;A String&quot;,
                },
                &quot;downloadLocation&quot;: &quot;A String&quot;,
                &quot;mediaType&quot;: &quot;A String&quot;,
                &quot;name&quot;: &quot;A String&quot;,
                &quot;uri&quot;: &quot;A String&quot;,
              },
            ],
            &quot;id&quot;: &quot;A String&quot;,
            &quot;version&quot;: {
              &quot;a_key&quot;: &quot;A String&quot;,
            },
          },
          &quot;byproducts&quot;: [
            {
              &quot;annotations&quot;: {
                &quot;a_key&quot;: &quot;&quot;,
              },
              &quot;content&quot;: &quot;A String&quot;,
              &quot;digest&quot;: {
                &quot;a_key&quot;: &quot;A String&quot;,
              },
              &quot;downloadLocation&quot;: &quot;A String&quot;,
              &quot;mediaType&quot;: &quot;A String&quot;,
              &quot;name&quot;: &quot;A String&quot;,
              &quot;uri&quot;: &quot;A String&quot;,
            },
          ],
          &quot;metadata&quot;: {
            &quot;finishedOn&quot;: &quot;A String&quot;,
            &quot;invocationId&quot;: &quot;A String&quot;,
            &quot;startedOn&quot;: &quot;A String&quot;,
          },
        },
      },
      &quot;predicateType&quot;: &quot;A String&quot;,
      &quot;subject&quot;: [
        { # Subject refers to the subject of the intoto statement
          &quot;digest&quot;: { # &quot;&quot;: &quot;&quot; Algorithms can be e.g. sha256, sha512 See https://github.com/in-toto/attestation/blob/main/spec/field_types.md#DigestSet
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;name&quot;: &quot;A String&quot;, # name is the name of the Subject used here
        },
      ],
    },
    &quot;intotoProvenance&quot;: { # Deprecated. See InTotoStatement for the replacement. In-toto Provenance representation as defined in spec.
      &quot;builderConfig&quot;: { # required
        &quot;id&quot;: &quot;A String&quot;,
      },
      &quot;materials&quot;: [ # The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on. This is considered to be incomplete unless metadata.completeness.materials is true. Unset or null is equivalent to empty.
        &quot;A String&quot;,
      ],
      &quot;metadata&quot;: { # Other properties of the build.
        &quot;buildFinishedOn&quot;: &quot;A String&quot;, # The timestamp of when the build completed.
        &quot;buildInvocationId&quot;: &quot;A String&quot;, # Identifies the particular build invocation, which can be useful for finding associated logs or other ad-hoc analysis. The value SHOULD be globally unique, per in-toto Provenance spec.
        &quot;buildStartedOn&quot;: &quot;A String&quot;, # The timestamp of when the build started.
        &quot;completeness&quot;: { # Indicates that the builder claims certain fields in this message to be complete. # Indicates that the builder claims certain fields in this message to be complete.
          &quot;arguments&quot;: True or False, # If true, the builder claims that recipe.arguments is complete, meaning that all external inputs are properly captured in the recipe.
          &quot;environment&quot;: True or False, # If true, the builder claims that recipe.environment is claimed to be complete.
          &quot;materials&quot;: True or False, # If true, the builder claims that materials are complete, usually through some controls to prevent network access. Sometimes called &quot;hermetic&quot;.
        },
        &quot;reproducible&quot;: True or False, # If true, the builder claims that running the recipe on materials will produce bit-for-bit identical output.
      },
      &quot;recipe&quot;: { # Steps taken to build the artifact. For a TaskRun, typically each container corresponds to one step in the recipe. # Identifies the configuration used for the build. When combined with materials, this SHOULD fully describe the build, such that re-running this recipe results in bit-for-bit identical output (if the build is reproducible). required
        &quot;arguments&quot;: [ # Collection of all external inputs that influenced the build on top of recipe.definedInMaterial and recipe.entryPoint. For example, if the recipe type were &quot;make&quot;, then this might be the flags passed to make aside from the target, which is captured in recipe.entryPoint.
          {
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
          },
        ],
        &quot;definedInMaterial&quot;: &quot;A String&quot;, # Index in materials containing the recipe steps that are not implied by recipe.type. For example, if the recipe type were &quot;make&quot;, then this would point to the source containing the Makefile, not the make program itself. Set to -1 if the recipe doesn&#x27;t come from a material, as zero is default unset value for int64.
        &quot;entryPoint&quot;: &quot;A String&quot;, # String identifying the entry point into the build. This is often a path to a configuration file and/or a target label within that file. The syntax and meaning are defined by recipe.type. For example, if the recipe type were &quot;make&quot;, then this would reference the directory in which to run make as well as which target to use.
        &quot;environment&quot;: [ # Any other builder-controlled inputs necessary for correctly evaluating the recipe. Usually only needed for reproducing the build but not evaluated as part of policy.
          {
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
          },
        ],
        &quot;type&quot;: &quot;A String&quot;, # URI indicating what type of recipe was performed. It determines the meaning of recipe.entryPoint, recipe.arguments, recipe.environment, and materials.
      },
    },
    &quot;intotoStatement&quot;: { # Spec defined at https://github.com/in-toto/attestation/tree/main/spec#statement The serialized InTotoStatement will be stored as Envelope.payload. Envelope.payloadType is always &quot;application/vnd.in-toto+json&quot;. # In-toto Statement representation as defined in spec. The intoto_statement can contain any type of provenance. The serialized payload of the statement can be stored and signed in the Occurrence&#x27;s envelope.
      &quot;_type&quot;: &quot;A String&quot;, # Always &quot;https://in-toto.io/Statement/v0.1&quot;.
      &quot;predicateType&quot;: &quot;A String&quot;, # &quot;https://slsa.dev/provenance/v0.1&quot; for SlsaProvenance.
      &quot;provenance&quot;: { # Generic Grafeas provenance.
        &quot;builderConfig&quot;: { # required
          &quot;id&quot;: &quot;A String&quot;,
        },
        &quot;materials&quot;: [ # The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on. This is considered to be incomplete unless metadata.completeness.materials is true. Unset or null is equivalent to empty.
          &quot;A String&quot;,
        ],
        &quot;metadata&quot;: { # Other properties of the build.
          &quot;buildFinishedOn&quot;: &quot;A String&quot;, # The timestamp of when the build completed.
          &quot;buildInvocationId&quot;: &quot;A String&quot;, # Identifies the particular build invocation, which can be useful for finding associated logs or other ad-hoc analysis. The value SHOULD be globally unique, per in-toto Provenance spec.
          &quot;buildStartedOn&quot;: &quot;A String&quot;, # The timestamp of when the build started.
          &quot;completeness&quot;: { # Indicates that the builder claims certain fields in this message to be complete. # Indicates that the builder claims certain fields in this message to be complete.
            &quot;arguments&quot;: True or False, # If true, the builder claims that recipe.arguments is complete, meaning that all external inputs are properly captured in the recipe.
            &quot;environment&quot;: True or False, # If true, the builder claims that recipe.environment is claimed to be complete.
            &quot;materials&quot;: True or False, # If true, the builder claims that materials are complete, usually through some controls to prevent network access. Sometimes called &quot;hermetic&quot;.
          },
          &quot;reproducible&quot;: True or False, # If true, the builder claims that running the recipe on materials will produce bit-for-bit identical output.
        },
        &quot;recipe&quot;: { # Steps taken to build the artifact. For a TaskRun, typically each container corresponds to one step in the recipe. # Identifies the configuration used for the build. When combined with materials, this SHOULD fully describe the build, such that re-running this recipe results in bit-for-bit identical output (if the build is reproducible). required
          &quot;arguments&quot;: [ # Collection of all external inputs that influenced the build on top of recipe.definedInMaterial and recipe.entryPoint. For example, if the recipe type were &quot;make&quot;, then this might be the flags passed to make aside from the target, which is captured in recipe.entryPoint.
            {
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
            },
          ],
          &quot;definedInMaterial&quot;: &quot;A String&quot;, # Index in materials containing the recipe steps that are not implied by recipe.type. For example, if the recipe type were &quot;make&quot;, then this would point to the source containing the Makefile, not the make program itself. Set to -1 if the recipe doesn&#x27;t come from a material, as zero is default unset value for int64.
          &quot;entryPoint&quot;: &quot;A String&quot;, # String identifying the entry point into the build. This is often a path to a configuration file and/or a target label within that file. The syntax and meaning are defined by recipe.type. For example, if the recipe type were &quot;make&quot;, then this would reference the directory in which to run make as well as which target to use.
          &quot;environment&quot;: [ # Any other builder-controlled inputs necessary for correctly evaluating the recipe. Usually only needed for reproducing the build but not evaluated as part of policy.
            {
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
            },
          ],
          &quot;type&quot;: &quot;A String&quot;, # URI indicating what type of recipe was performed. It determines the meaning of recipe.entryPoint, recipe.arguments, recipe.environment, and materials.
        },
      },
      &quot;slsaProvenance&quot;: { # SlsaProvenance is the slsa provenance as defined by the slsa spec. # SLSA 0.1 provenance.
        &quot;builder&quot;: { # SlsaBuilder encapsulates the identity of the builder of this provenance. # builder is the builder of this provenance
          &quot;id&quot;: &quot;A String&quot;, # id is the id of the slsa provenance builder
        },
        &quot;materials&quot;: [ # The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on. This is considered to be incomplete unless metadata.completeness.materials is true. Unset or null is equivalent to empty.
          { # Material is a material used in the generation of the provenance
            &quot;digest&quot;: { # digest is a map from a hash algorithm (e.g. sha256) to the value in the material
              &quot;a_key&quot;: &quot;A String&quot;,
            },
            &quot;uri&quot;: &quot;A String&quot;, # uri is the uri of the material
          },
        ],
        &quot;metadata&quot;: { # Other properties of the build. # metadata is the metadata of the provenance
          &quot;buildFinishedOn&quot;: &quot;A String&quot;, # The timestamp of when the build completed.
          &quot;buildInvocationId&quot;: &quot;A String&quot;, # Identifies the particular build invocation, which can be useful for finding associated logs or other ad-hoc analysis. The value SHOULD be globally unique, per in-toto Provenance spec.
          &quot;buildStartedOn&quot;: &quot;A String&quot;, # The timestamp of when the build started.
          &quot;completeness&quot;: { # Indicates that the builder claims certain fields in this message to be complete. # Indicates that the builder claims certain fields in this message to be complete.
            &quot;arguments&quot;: True or False, # If true, the builder claims that recipe.arguments is complete, meaning that all external inputs are properly captured in the recipe.
            &quot;environment&quot;: True or False, # If true, the builder claims that recipe.environment is claimed to be complete.
            &quot;materials&quot;: True or False, # If true, the builder claims that materials are complete, usually through some controls to prevent network access. Sometimes called &quot;hermetic&quot;.
          },
          &quot;reproducible&quot;: True or False, # If true, the builder claims that running the recipe on materials will produce bit-for-bit identical output.
        },
        &quot;recipe&quot;: { # Steps taken to build the artifact. For a TaskRun, typically each container corresponds to one step in the recipe. # Identifies the configuration used for the build. When combined with materials, this SHOULD fully describe the build, such that re-running this recipe results in bit-for-bit identical output (if the build is reproducible).
          &quot;arguments&quot;: { # Collection of all external inputs that influenced the build on top of recipe.definedInMaterial and recipe.entryPoint. For example, if the recipe type were &quot;make&quot;, then this might be the flags passed to make aside from the target, which is captured in recipe.entryPoint. Depending on the recipe Type, the structure may be different.
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
          },
          &quot;definedInMaterial&quot;: &quot;A String&quot;, # Index in materials containing the recipe steps that are not implied by recipe.type. For example, if the recipe type were &quot;make&quot;, then this would point to the source containing the Makefile, not the make program itself. Set to -1 if the recipe doesn&#x27;t come from a material, as zero is default unset value for int64.
          &quot;entryPoint&quot;: &quot;A String&quot;, # String identifying the entry point into the build. This is often a path to a configuration file and/or a target label within that file. The syntax and meaning are defined by recipe.type. For example, if the recipe type were &quot;make&quot;, then this would reference the directory in which to run make as well as which target to use.
          &quot;environment&quot;: { # Any other builder-controlled inputs necessary for correctly evaluating the recipe. Usually only needed for reproducing the build but not evaluated as part of policy. Depending on the recipe Type, the structure may be different.
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
          },
          &quot;type&quot;: &quot;A String&quot;, # URI indicating what type of recipe was performed. It determines the meaning of recipe.entryPoint, recipe.arguments, recipe.environment, and materials.
        },
      },
      &quot;slsaProvenanceZeroTwo&quot;: { # SlsaProvenanceZeroTwo is the slsa provenance as defined by the slsa spec. See full explanation of fields at slsa.dev/provenance/v0.2. # SLSA 0.2 provenance.
        &quot;buildConfig&quot;: { # Lists the steps in the build.
          &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
        },
        &quot;buildType&quot;: &quot;A String&quot;, # URI indicating what type of build was performed.
        &quot;builder&quot;: { # Identifies the entity that executed the recipe, which is trusted to have correctly performed the operation and populated this provenance. # Identifies the entity that executed the recipe, which is trusted to have correctly performed the operation and populated this provenance.
          &quot;id&quot;: &quot;A String&quot;, # URI indicating the builder’s identity.
        },
        &quot;invocation&quot;: { # Identifies the event that kicked off the build. # Identifies the event that kicked off the build.
          &quot;configSource&quot;: { # Describes where the config file that kicked off the build came from. This is effectively a pointer to the source where buildConfig came from. # Describes where the config file that kicked off the build came from.
            &quot;digest&quot;: { # Collection of cryptographic digests for the contents of the artifact specified by invocation.configSource.uri.
              &quot;a_key&quot;: &quot;A String&quot;,
            },
            &quot;entryPoint&quot;: &quot;A String&quot;, # String identifying the entry point into the build.
            &quot;uri&quot;: &quot;A String&quot;, # URI indicating the identity of the source of the config.
          },
          &quot;environment&quot;: { # Any other builder-controlled inputs necessary for correctly evaluating the build.
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
          },
          &quot;parameters&quot;: { # Collection of all external inputs that influenced the build on top of invocation.configSource.
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
          },
        },
        &quot;materials&quot;: [ # The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on.
          { # The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on.
            &quot;digest&quot;: { # Collection of cryptographic digests for the contents of this artifact.
              &quot;a_key&quot;: &quot;A String&quot;,
            },
            &quot;uri&quot;: &quot;A String&quot;, # The method by which this artifact was referenced during the build.
          },
        ],
        &quot;metadata&quot;: { # Other properties of the build. # Other properties of the build.
          &quot;buildFinishedOn&quot;: &quot;A String&quot;, # The timestamp of when the build completed.
          &quot;buildInvocationId&quot;: &quot;A String&quot;, # Identifies this particular build invocation, which can be useful for finding associated logs or other ad-hoc analysis.
          &quot;buildStartedOn&quot;: &quot;A String&quot;, # The timestamp of when the build started.
          &quot;completeness&quot;: { # Indicates that the builder claims certain fields in this message to be complete. # Indicates that the builder claims certain fields in this message to be complete.
            &quot;environment&quot;: True or False, # If true, the builder claims that invocation.environment is complete.
            &quot;materials&quot;: True or False, # If true, the builder claims that materials is complete.
            &quot;parameters&quot;: True or False, # If true, the builder claims that invocation.parameters is complete.
          },
          &quot;reproducible&quot;: True or False, # If true, the builder claims that running invocation on materials will produce bit-for-bit identical output.
        },
      },
      &quot;subject&quot;: [ # subject is the subjects of the intoto statement
        { # Subject refers to the subject of the intoto statement
          &quot;digest&quot;: { # &quot;&quot;: &quot;&quot; Algorithms can be e.g. sha256, sha512 See https://github.com/in-toto/attestation/blob/main/spec/field_types.md#DigestSet
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;name&quot;: &quot;A String&quot;, # name is the name of the Subject used here
        },
      ],
    },
    &quot;provenance&quot;: { # Provenance of a build. Contains all information needed to verify the full details about the build from source to completion. # The actual provenance
      &quot;buildOptions&quot;: { # Special options applied to this build. This is a catch-all field where build providers can enter any desired additional details.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;builderVersion&quot;: &quot;A String&quot;, # Version string of the builder at the time this build was executed.
      &quot;builtArtifacts&quot;: [ # Output of the build.
        { # Artifact describes a build product.
          &quot;checksum&quot;: &quot;A String&quot;, # Hash or checksum value of a binary, or Docker Registry 2.0 digest of a container.
          &quot;id&quot;: &quot;A String&quot;, # Artifact ID, if any; for container images, this will be a URL by digest like gcr.io/projectID/imagename@sha256:123456
          &quot;name&quot;: &quot;A String&quot;, # Name of the artifact. This may be the path to a binary or jar file, or in the case of a container build, the name used to push the container image to Google Container Registry, as presented to `docker push`. This field is deprecated in favor of the plural `names` field; it continues to exist here to allow existing BuildProvenance serialized to json in google.devtools.containeranalysis.v1alpha1.BuildDetails.provenance_bytes to deserialize back into proto.
          &quot;names&quot;: [ # Related artifact names. This may be the path to a binary or jar file, or in the case of a container build, the name used to push the container image to Google Container Registry, as presented to `docker push`. Note that a single Artifact ID can have multiple names, for example if two tags are applied to one image.
            &quot;A String&quot;,
          ],
        },
      ],
      &quot;commands&quot;: [ # Commands requested by the build.
        { # Command describes a step performed as part of the build pipeline.
          &quot;args&quot;: [ # Command-line arguments used when executing this Command.
            &quot;A String&quot;,
          ],
          &quot;dir&quot;: &quot;A String&quot;, # Working directory (relative to project source root) used when running this Command.
          &quot;env&quot;: [ # Environment variables set before running this Command.
            &quot;A String&quot;,
          ],
          &quot;id&quot;: &quot;A String&quot;, # Optional unique identifier for this Command, used in wait_for to reference this Command as a dependency.
          &quot;name&quot;: &quot;A String&quot;, # Name of the command, as presented on the command line, or if the command is packaged as a Docker container, as presented to `docker pull`.
          &quot;waitFor&quot;: [ # The ID(s) of the Command(s) that this Command depends on.
            &quot;A String&quot;,
          ],
        },
      ],
      &quot;createTime&quot;: &quot;A String&quot;, # Time at which the build was created.
      &quot;creator&quot;: &quot;A String&quot;, # E-mail address of the user who initiated this build. Note that this was the user&#x27;s e-mail address at the time the build was initiated; this address may not represent the same end-user for all time.
      &quot;finishTime&quot;: &quot;A String&quot;, # Time at which execution of the build was finished.
      &quot;id&quot;: &quot;A String&quot;, # Unique identifier of the build.
      &quot;logsBucket&quot;: &quot;A String&quot;, # Google Cloud Storage bucket where logs were written.
      &quot;projectId&quot;: &quot;A String&quot;, # ID of the project.
      &quot;sourceProvenance&quot;: { # Source describes the location of the source used for the build. # Details of the Source input to the build.
        &quot;additionalContexts&quot;: [ # If provided, some of the source code used for the build may be found in these locations, in the case where the source repository had multiple remotes or submodules. This list will not include the context specified in the context field.
          { # A SourceContext is a reference to a tree of files. A SourceContext together with a path point to a unique revision of a single file or directory.
            &quot;cloudRepo&quot;: { # A CloudRepoSourceContext denotes a particular revision in a Google Cloud Source Repo. # A SourceContext referring to a revision in a Google Cloud Source Repo.
              &quot;aliasContext&quot;: { # An alias to a repo revision. # An alias, which may be a branch or tag.
                &quot;kind&quot;: &quot;A String&quot;, # The alias kind.
                &quot;name&quot;: &quot;A String&quot;, # The alias name.
              },
              &quot;repoId&quot;: { # A unique identifier for a Cloud Repo. # The ID of the repo.
                &quot;projectRepoId&quot;: { # Selects a repo using a Google Cloud Platform project ID (e.g., winged-cargo-31) and a repo name within that project. # A combination of a project ID and a repo name.
                  &quot;projectId&quot;: &quot;A String&quot;, # The ID of the project.
                  &quot;repoName&quot;: &quot;A String&quot;, # The name of the repo. Leave empty for the default repo.
                },
                &quot;uid&quot;: &quot;A String&quot;, # A server-assigned, globally unique identifier.
              },
              &quot;revisionId&quot;: &quot;A String&quot;, # A revision ID.
            },
            &quot;gerrit&quot;: { # A SourceContext referring to a Gerrit project. # A SourceContext referring to a Gerrit project.
              &quot;aliasContext&quot;: { # An alias to a repo revision. # An alias, which may be a branch or tag.
                &quot;kind&quot;: &quot;A String&quot;, # The alias kind.
                &quot;name&quot;: &quot;A String&quot;, # The alias name.
              },
              &quot;gerritProject&quot;: &quot;A String&quot;, # The full project name within the host. Projects may be nested, so &quot;project/subproject&quot; is a valid project name. The &quot;repo name&quot; is the hostURI/project.
              &quot;hostUri&quot;: &quot;A String&quot;, # The URI of a running Gerrit instance.
              &quot;revisionId&quot;: &quot;A String&quot;, # A revision (commit) ID.
            },
            &quot;git&quot;: { # A GitSourceContext denotes a particular revision in a third party Git repository (e.g., GitHub). # A SourceContext referring to any third party Git repo (e.g., GitHub).
              &quot;revisionId&quot;: &quot;A String&quot;, # Required. Git commit hash.
              &quot;url&quot;: &quot;A String&quot;, # Git repository URL.
            },
            &quot;labels&quot;: { # Labels with user defined metadata.
              &quot;a_key&quot;: &quot;A String&quot;,
            },
          },
        ],
        &quot;artifactStorageSource&quot;: { # StorageSource describes the location of the source in an archive file in Google Cloud Storage. # If provided, the input binary artifacts for the build came from this location.
          &quot;bucket&quot;: &quot;A String&quot;, # Google Cloud Storage bucket containing source (see [Bucket Name Requirements] (https://cloud.google.com/storage/docs/bucket-naming#requirements)).
          &quot;generation&quot;: &quot;A String&quot;, # Google Cloud Storage generation for the object.
          &quot;object&quot;: &quot;A String&quot;, # Google Cloud Storage object containing source.
        },
        &quot;context&quot;: { # A SourceContext is a reference to a tree of files. A SourceContext together with a path point to a unique revision of a single file or directory. # If provided, the source code used for the build came from this location.
          &quot;cloudRepo&quot;: { # A CloudRepoSourceContext denotes a particular revision in a Google Cloud Source Repo. # A SourceContext referring to a revision in a Google Cloud Source Repo.
            &quot;aliasContext&quot;: { # An alias to a repo revision. # An alias, which may be a branch or tag.
              &quot;kind&quot;: &quot;A String&quot;, # The alias kind.
              &quot;name&quot;: &quot;A String&quot;, # The alias name.
            },
            &quot;repoId&quot;: { # A unique identifier for a Cloud Repo. # The ID of the repo.
              &quot;projectRepoId&quot;: { # Selects a repo using a Google Cloud Platform project ID (e.g., winged-cargo-31) and a repo name within that project. # A combination of a project ID and a repo name.
                &quot;projectId&quot;: &quot;A String&quot;, # The ID of the project.
                &quot;repoName&quot;: &quot;A String&quot;, # The name of the repo. Leave empty for the default repo.
              },
              &quot;uid&quot;: &quot;A String&quot;, # A server-assigned, globally unique identifier.
            },
            &quot;revisionId&quot;: &quot;A String&quot;, # A revision ID.
          },
          &quot;gerrit&quot;: { # A SourceContext referring to a Gerrit project. # A SourceContext referring to a Gerrit project.
            &quot;aliasContext&quot;: { # An alias to a repo revision. # An alias, which may be a branch or tag.
              &quot;kind&quot;: &quot;A String&quot;, # The alias kind.
              &quot;name&quot;: &quot;A String&quot;, # The alias name.
            },
            &quot;gerritProject&quot;: &quot;A String&quot;, # The full project name within the host. Projects may be nested, so &quot;project/subproject&quot; is a valid project name. The &quot;repo name&quot; is the hostURI/project.
            &quot;hostUri&quot;: &quot;A String&quot;, # The URI of a running Gerrit instance.
            &quot;revisionId&quot;: &quot;A String&quot;, # A revision (commit) ID.
          },
          &quot;git&quot;: { # A GitSourceContext denotes a particular revision in a third party Git repository (e.g., GitHub). # A SourceContext referring to any third party Git repo (e.g., GitHub).
            &quot;revisionId&quot;: &quot;A String&quot;, # Required. Git commit hash.
            &quot;url&quot;: &quot;A String&quot;, # Git repository URL.
          },
          &quot;labels&quot;: { # Labels with user defined metadata.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
        },
        &quot;fileHashes&quot;: { # Hash(es) of the build source, which can be used to verify that the original source integrity was maintained in the build. The keys to this map are file paths used as build source and the values contain the hash values for those files. If the build source came in a single package such as a gzipped tarfile (.tar.gz), the FileHash will be for the single path to that file.
          &quot;a_key&quot;: { # Container message for hashes of byte content of files, used in Source messages to verify integrity of source input to the build.
            &quot;fileHash&quot;: [ # Collection of file hashes.
              { # Container message for hash values.
                &quot;type&quot;: &quot;A String&quot;, # The type of hash that was performed.
                &quot;value&quot;: &quot;A String&quot;, # The hash value.
              },
            ],
          },
        },
        &quot;repoSource&quot;: { # RepoSource describes the location of the source in a Google Cloud Source Repository. # If provided, get source from this location in a Cloud Repo.
          &quot;branchName&quot;: &quot;A String&quot;, # Name of the branch to build.
          &quot;commitSha&quot;: &quot;A String&quot;, # Explicit commit SHA to build.
          &quot;projectId&quot;: &quot;A String&quot;, # ID of the project that owns the repo.
          &quot;repoName&quot;: &quot;A String&quot;, # Name of the repo.
          &quot;tagName&quot;: &quot;A String&quot;, # Name of the tag to build.
        },
        &quot;storageSource&quot;: { # StorageSource describes the location of the source in an archive file in Google Cloud Storage. # If provided, get the source from this location in Google Cloud Storage.
          &quot;bucket&quot;: &quot;A String&quot;, # Google Cloud Storage bucket containing source (see [Bucket Name Requirements] (https://cloud.google.com/storage/docs/bucket-naming#requirements)).
          &quot;generation&quot;: &quot;A String&quot;, # Google Cloud Storage generation for the object.
          &quot;object&quot;: &quot;A String&quot;, # Google Cloud Storage object containing source.
        },
      },
      &quot;startTime&quot;: &quot;A String&quot;, # Time at which execution of the build was started.
      &quot;triggerId&quot;: &quot;A String&quot;, # Trigger identifier if the build was triggered automatically; empty if not.
    },
    &quot;provenanceBytes&quot;: &quot;A String&quot;, # Serialized JSON representation of the provenance, used in generating the `BuildSignature` in the corresponding Result. After verifying the signature, `provenance_bytes` can be unmarshalled and compared to the provenance to confirm that it is unchanged. A base64-encoded string representation of the provenance bytes is used for the signature in order to interoperate with openssl which expects this format for signature verification. The serialized form is captured both to avoid ambiguity in how the provenance is marshalled to json as well to prevent incompatibilities with future changes.
  },
  &quot;compliance&quot;: { # An indication that the compliance checks in the associated ComplianceNote were not satisfied for particular resources or a specified reason. # Describes whether or not a resource passes compliance checks.
    &quot;nonComplianceReason&quot;: &quot;A String&quot;, # The reason for non compliance of these files.
    &quot;nonCompliantFiles&quot;: [ # A list of files which are violating compliance checks.
      { # Details about files that caused a compliance check to fail.
        &quot;displayCommand&quot;: &quot;A String&quot;, # Command to display the non-compliant files.
        &quot;path&quot;: &quot;A String&quot;, # display_command is a single command that can be used to display a list of non compliant files. When there is no such command, we can also iterate a list of non compliant file using &#x27;path&#x27;. Empty if `display_command` is set.
        &quot;reason&quot;: &quot;A String&quot;, # Explains why a file is non compliant for a CIS check.
      },
    ],
  },
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time this `Occurrence` was created.
  &quot;deployment&quot;: { # The period during which some deployable was active in a runtime. # Describes the deployment of an artifact on a runtime.
    &quot;address&quot;: &quot;A String&quot;, # Address of the runtime element hosting this deployment.
    &quot;config&quot;: &quot;A String&quot;, # Configuration used to create this deployment.
    &quot;deployTime&quot;: &quot;A String&quot;, # Beginning of the lifetime of this deployment.
    &quot;platform&quot;: &quot;A String&quot;, # Platform hosting this deployment.
    &quot;resourceUri&quot;: [ # Resource URI for the artifact being deployed taken from the deployable field with the same name.
      &quot;A String&quot;,
    ],
    &quot;undeployTime&quot;: &quot;A String&quot;, # End of the lifetime of this deployment.
    &quot;userEmail&quot;: &quot;A String&quot;, # Identity of the user that triggered this deployment.
  },
  &quot;derivedImage&quot;: { # Derived describes the derived image portion (Occurrence) of the DockerImage relationship. This image would be produced from a Dockerfile with FROM . # Describes how this resource derives from the basis in the associated note.
    &quot;baseResourceUrl&quot;: &quot;A String&quot;, # Output only. This contains the base image URL for the derived image occurrence.
    &quot;distance&quot;: 42, # Output only. The number of layers by which this image differs from the associated image basis.
    &quot;fingerprint&quot;: { # A set of properties that uniquely identify a given Docker image. # The fingerprint of the derived image.
      &quot;v1Name&quot;: &quot;A String&quot;, # The layer-id of the final layer in the Docker image&#x27;s v1 representation. This field can be used as a filter in list requests.
      &quot;v2Blob&quot;: [ # 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. This field can be used as a filter in list requests.
    },
    &quot;layerInfo&quot;: [ # This contains layer-specific metadata, if populated it has length &quot;distance&quot; and is ordered with [distance] being the layer immediately following the base image and [1] being the final layer.
      { # Layer holds metadata specific to a layer of a Docker image.
        &quot;arguments&quot;: &quot;A String&quot;, # The recovered arguments to the Dockerfile directive.
        &quot;directive&quot;: &quot;A String&quot;, # The recovered Dockerfile directive used to construct this layer.
      },
    ],
  },
  &quot;discovered&quot;: { # Provides information about the scan status of a discovered resource. # Describes the initial scan status for this resource.
    &quot;analysisCompleted&quot;: { # Indicates which analysis completed successfully. Multiple types of analysis can be performed on a single resource. # The list of analysis that were completed for a resource.
      &quot;analysisType&quot;: [ # type of analysis that were completed on a resource.
        &quot;A String&quot;,
      ],
    },
    &quot;analysisError&quot;: [ # Indicates any errors encountered during analysis of a resource. There could be 0 or more of these errors.
      { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).
        &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
        &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
          {
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
          },
        ],
        &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
      },
    ],
    &quot;analysisStatus&quot;: &quot;A String&quot;, # The status of discovery for the resource.
    &quot;analysisStatusError&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # When an error is encountered this will contain a LocalizedMessage under details to show to the user. The LocalizedMessage output only and populated by the API.
      &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
      &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
        {
          &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
        },
      ],
      &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
    },
    &quot;archiveTime&quot;: &quot;A String&quot;, # The time occurrences related to this discovery occurrence were archived.
    &quot;continuousAnalysis&quot;: &quot;A String&quot;, # Whether the resource is continuously analyzed.
    &quot;cpe&quot;: &quot;A String&quot;, # The CPE of the resource being scanned.
    &quot;lastScanTime&quot;: &quot;A String&quot;, # The last time this resource was scanned.
    &quot;operation&quot;: { # This resource represents a long-running operation that is the result of a network API call. # Output only. An operation that indicates the status of the current scan. This field is deprecated, do not use.
      &quot;done&quot;: True or False, # If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.
      &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure or cancellation.
        &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
        &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
          {
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
          },
        ],
        &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
      },
      &quot;metadata&quot;: { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
      &quot;name&quot;: &quot;A String&quot;, # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.
      &quot;response&quot;: { # The normal, successful response of the operation. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    },
    &quot;sbomStatus&quot;: { # The status of an SBOM generation. # Output only. The status of an SBOM generation.
      &quot;error&quot;: &quot;A String&quot;, # Output only. If there was an error generating an SBOM, this will indicate what that error was.
      &quot;sbomState&quot;: &quot;A String&quot;, # Output only. The progress of the SBOM generation.
    },
  },
  &quot;dsseAttestation&quot;: { # An occurrence describing an attestation on a resource # This represents a DSSE attestation occurrence
    &quot;envelope&quot;: { # MUST match https://github.com/secure-systems-lab/dsse/blob/master/envelope.proto. An authenticated message of arbitrary type. # If doing something security critical, make sure to verify the signatures in this metadata.
      &quot;payload&quot;: &quot;A String&quot;, # The bytes being signed
      &quot;payloadType&quot;: &quot;A String&quot;, # The type of payload being signed
      &quot;signatures&quot;: [ # The signatures over the payload
        { # A DSSE signature
          &quot;keyid&quot;: &quot;A String&quot;, # A reference id to the key being used for signing
          &quot;sig&quot;: &quot;A String&quot;, # The signature itself
        },
      ],
    },
    &quot;statement&quot;: { # Spec defined at https://github.com/in-toto/attestation/tree/main/spec#statement The serialized InTotoStatement will be stored as Envelope.payload. Envelope.payloadType is always &quot;application/vnd.in-toto+json&quot;.
      &quot;_type&quot;: &quot;A String&quot;, # Always &quot;https://in-toto.io/Statement/v0.1&quot;.
      &quot;predicateType&quot;: &quot;A String&quot;, # &quot;https://slsa.dev/provenance/v0.1&quot; for SlsaProvenance.
      &quot;provenance&quot;: { # Generic Grafeas provenance.
        &quot;builderConfig&quot;: { # required
          &quot;id&quot;: &quot;A String&quot;,
        },
        &quot;materials&quot;: [ # The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on. This is considered to be incomplete unless metadata.completeness.materials is true. Unset or null is equivalent to empty.
          &quot;A String&quot;,
        ],
        &quot;metadata&quot;: { # Other properties of the build.
          &quot;buildFinishedOn&quot;: &quot;A String&quot;, # The timestamp of when the build completed.
          &quot;buildInvocationId&quot;: &quot;A String&quot;, # Identifies the particular build invocation, which can be useful for finding associated logs or other ad-hoc analysis. The value SHOULD be globally unique, per in-toto Provenance spec.
          &quot;buildStartedOn&quot;: &quot;A String&quot;, # The timestamp of when the build started.
          &quot;completeness&quot;: { # Indicates that the builder claims certain fields in this message to be complete. # Indicates that the builder claims certain fields in this message to be complete.
            &quot;arguments&quot;: True or False, # If true, the builder claims that recipe.arguments is complete, meaning that all external inputs are properly captured in the recipe.
            &quot;environment&quot;: True or False, # If true, the builder claims that recipe.environment is claimed to be complete.
            &quot;materials&quot;: True or False, # If true, the builder claims that materials are complete, usually through some controls to prevent network access. Sometimes called &quot;hermetic&quot;.
          },
          &quot;reproducible&quot;: True or False, # If true, the builder claims that running the recipe on materials will produce bit-for-bit identical output.
        },
        &quot;recipe&quot;: { # Steps taken to build the artifact. For a TaskRun, typically each container corresponds to one step in the recipe. # Identifies the configuration used for the build. When combined with materials, this SHOULD fully describe the build, such that re-running this recipe results in bit-for-bit identical output (if the build is reproducible). required
          &quot;arguments&quot;: [ # Collection of all external inputs that influenced the build on top of recipe.definedInMaterial and recipe.entryPoint. For example, if the recipe type were &quot;make&quot;, then this might be the flags passed to make aside from the target, which is captured in recipe.entryPoint.
            {
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
            },
          ],
          &quot;definedInMaterial&quot;: &quot;A String&quot;, # Index in materials containing the recipe steps that are not implied by recipe.type. For example, if the recipe type were &quot;make&quot;, then this would point to the source containing the Makefile, not the make program itself. Set to -1 if the recipe doesn&#x27;t come from a material, as zero is default unset value for int64.
          &quot;entryPoint&quot;: &quot;A String&quot;, # String identifying the entry point into the build. This is often a path to a configuration file and/or a target label within that file. The syntax and meaning are defined by recipe.type. For example, if the recipe type were &quot;make&quot;, then this would reference the directory in which to run make as well as which target to use.
          &quot;environment&quot;: [ # Any other builder-controlled inputs necessary for correctly evaluating the recipe. Usually only needed for reproducing the build but not evaluated as part of policy.
            {
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
            },
          ],
          &quot;type&quot;: &quot;A String&quot;, # URI indicating what type of recipe was performed. It determines the meaning of recipe.entryPoint, recipe.arguments, recipe.environment, and materials.
        },
      },
      &quot;slsaProvenance&quot;: { # SlsaProvenance is the slsa provenance as defined by the slsa spec. # SLSA 0.1 provenance.
        &quot;builder&quot;: { # SlsaBuilder encapsulates the identity of the builder of this provenance. # builder is the builder of this provenance
          &quot;id&quot;: &quot;A String&quot;, # id is the id of the slsa provenance builder
        },
        &quot;materials&quot;: [ # The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on. This is considered to be incomplete unless metadata.completeness.materials is true. Unset or null is equivalent to empty.
          { # Material is a material used in the generation of the provenance
            &quot;digest&quot;: { # digest is a map from a hash algorithm (e.g. sha256) to the value in the material
              &quot;a_key&quot;: &quot;A String&quot;,
            },
            &quot;uri&quot;: &quot;A String&quot;, # uri is the uri of the material
          },
        ],
        &quot;metadata&quot;: { # Other properties of the build. # metadata is the metadata of the provenance
          &quot;buildFinishedOn&quot;: &quot;A String&quot;, # The timestamp of when the build completed.
          &quot;buildInvocationId&quot;: &quot;A String&quot;, # Identifies the particular build invocation, which can be useful for finding associated logs or other ad-hoc analysis. The value SHOULD be globally unique, per in-toto Provenance spec.
          &quot;buildStartedOn&quot;: &quot;A String&quot;, # The timestamp of when the build started.
          &quot;completeness&quot;: { # Indicates that the builder claims certain fields in this message to be complete. # Indicates that the builder claims certain fields in this message to be complete.
            &quot;arguments&quot;: True or False, # If true, the builder claims that recipe.arguments is complete, meaning that all external inputs are properly captured in the recipe.
            &quot;environment&quot;: True or False, # If true, the builder claims that recipe.environment is claimed to be complete.
            &quot;materials&quot;: True or False, # If true, the builder claims that materials are complete, usually through some controls to prevent network access. Sometimes called &quot;hermetic&quot;.
          },
          &quot;reproducible&quot;: True or False, # If true, the builder claims that running the recipe on materials will produce bit-for-bit identical output.
        },
        &quot;recipe&quot;: { # Steps taken to build the artifact. For a TaskRun, typically each container corresponds to one step in the recipe. # Identifies the configuration used for the build. When combined with materials, this SHOULD fully describe the build, such that re-running this recipe results in bit-for-bit identical output (if the build is reproducible).
          &quot;arguments&quot;: { # Collection of all external inputs that influenced the build on top of recipe.definedInMaterial and recipe.entryPoint. For example, if the recipe type were &quot;make&quot;, then this might be the flags passed to make aside from the target, which is captured in recipe.entryPoint. Depending on the recipe Type, the structure may be different.
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
          },
          &quot;definedInMaterial&quot;: &quot;A String&quot;, # Index in materials containing the recipe steps that are not implied by recipe.type. For example, if the recipe type were &quot;make&quot;, then this would point to the source containing the Makefile, not the make program itself. Set to -1 if the recipe doesn&#x27;t come from a material, as zero is default unset value for int64.
          &quot;entryPoint&quot;: &quot;A String&quot;, # String identifying the entry point into the build. This is often a path to a configuration file and/or a target label within that file. The syntax and meaning are defined by recipe.type. For example, if the recipe type were &quot;make&quot;, then this would reference the directory in which to run make as well as which target to use.
          &quot;environment&quot;: { # Any other builder-controlled inputs necessary for correctly evaluating the recipe. Usually only needed for reproducing the build but not evaluated as part of policy. Depending on the recipe Type, the structure may be different.
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
          },
          &quot;type&quot;: &quot;A String&quot;, # URI indicating what type of recipe was performed. It determines the meaning of recipe.entryPoint, recipe.arguments, recipe.environment, and materials.
        },
      },
      &quot;slsaProvenanceZeroTwo&quot;: { # SlsaProvenanceZeroTwo is the slsa provenance as defined by the slsa spec. See full explanation of fields at slsa.dev/provenance/v0.2. # SLSA 0.2 provenance.
        &quot;buildConfig&quot;: { # Lists the steps in the build.
          &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
        },
        &quot;buildType&quot;: &quot;A String&quot;, # URI indicating what type of build was performed.
        &quot;builder&quot;: { # Identifies the entity that executed the recipe, which is trusted to have correctly performed the operation and populated this provenance. # Identifies the entity that executed the recipe, which is trusted to have correctly performed the operation and populated this provenance.
          &quot;id&quot;: &quot;A String&quot;, # URI indicating the builder’s identity.
        },
        &quot;invocation&quot;: { # Identifies the event that kicked off the build. # Identifies the event that kicked off the build.
          &quot;configSource&quot;: { # Describes where the config file that kicked off the build came from. This is effectively a pointer to the source where buildConfig came from. # Describes where the config file that kicked off the build came from.
            &quot;digest&quot;: { # Collection of cryptographic digests for the contents of the artifact specified by invocation.configSource.uri.
              &quot;a_key&quot;: &quot;A String&quot;,
            },
            &quot;entryPoint&quot;: &quot;A String&quot;, # String identifying the entry point into the build.
            &quot;uri&quot;: &quot;A String&quot;, # URI indicating the identity of the source of the config.
          },
          &quot;environment&quot;: { # Any other builder-controlled inputs necessary for correctly evaluating the build.
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
          },
          &quot;parameters&quot;: { # Collection of all external inputs that influenced the build on top of invocation.configSource.
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
          },
        },
        &quot;materials&quot;: [ # The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on.
          { # The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on.
            &quot;digest&quot;: { # Collection of cryptographic digests for the contents of this artifact.
              &quot;a_key&quot;: &quot;A String&quot;,
            },
            &quot;uri&quot;: &quot;A String&quot;, # The method by which this artifact was referenced during the build.
          },
        ],
        &quot;metadata&quot;: { # Other properties of the build. # Other properties of the build.
          &quot;buildFinishedOn&quot;: &quot;A String&quot;, # The timestamp of when the build completed.
          &quot;buildInvocationId&quot;: &quot;A String&quot;, # Identifies this particular build invocation, which can be useful for finding associated logs or other ad-hoc analysis.
          &quot;buildStartedOn&quot;: &quot;A String&quot;, # The timestamp of when the build started.
          &quot;completeness&quot;: { # Indicates that the builder claims certain fields in this message to be complete. # Indicates that the builder claims certain fields in this message to be complete.
            &quot;environment&quot;: True or False, # If true, the builder claims that invocation.environment is complete.
            &quot;materials&quot;: True or False, # If true, the builder claims that materials is complete.
            &quot;parameters&quot;: True or False, # If true, the builder claims that invocation.parameters is complete.
          },
          &quot;reproducible&quot;: True or False, # If true, the builder claims that running invocation on materials will produce bit-for-bit identical output.
        },
      },
      &quot;subject&quot;: [ # subject is the subjects of the intoto statement
        { # Subject refers to the subject of the intoto statement
          &quot;digest&quot;: { # &quot;&quot;: &quot;&quot; Algorithms can be e.g. sha256, sha512 See https://github.com/in-toto/attestation/blob/main/spec/field_types.md#DigestSet
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;name&quot;: &quot;A String&quot;, # name is the name of the Subject used here
        },
      ],
    },
  },
  &quot;envelope&quot;: { # MUST match https://github.com/secure-systems-lab/dsse/blob/master/envelope.proto. An authenticated message of arbitrary type. # https://github.com/secure-systems-lab/dsse
    &quot;payload&quot;: &quot;A String&quot;, # The bytes being signed
    &quot;payloadType&quot;: &quot;A String&quot;, # The type of payload being signed
    &quot;signatures&quot;: [ # The signatures over the payload
      { # A DSSE signature
        &quot;keyid&quot;: &quot;A String&quot;, # A reference id to the key being used for signing
        &quot;sig&quot;: &quot;A String&quot;, # The signature itself
      },
    ],
  },
  &quot;installation&quot;: { # This represents how a particular software package may be installed on a system. # Describes the installation of a package on the linked resource.
    &quot;architecture&quot;: &quot;A String&quot;, # Output only. The CPU architecture for which packages in this distribution channel were built. Architecture will be blank for language packages.
    &quot;cpeUri&quot;: &quot;A String&quot;, # Output only. The cpe_uri in [CPE format](https://cpe.mitre.org/specification/) denoting the package manager version distributing a package. The cpe_uri will be blank for language packages.
    &quot;license&quot;: { # License information. # Licenses that have been declared by the authors of the package.
      &quot;comments&quot;: &quot;A String&quot;, # Comments
      &quot;expression&quot;: &quot;A String&quot;, # Often a single license can be used to represent the licensing terms. Sometimes it is necessary to include a choice of one or more licenses or some combination of license identifiers. Examples: &quot;LGPL-2.1-only OR MIT&quot;, &quot;LGPL-2.1-only AND MIT&quot;, &quot;GPL-2.0-or-later WITH Bison-exception-2.2&quot;.
    },
    &quot;location&quot;: [ # All of the places within the filesystem versions of this package have been found.
      { # An occurrence of a particular package installation found within a system&#x27;s filesystem. e.g. glibc was found in /var/lib/dpkg/status
        &quot;cpeUri&quot;: &quot;A String&quot;, # Deprecated. The cpe_uri in [cpe format](https://cpe.mitre.org/specification/) denoting the package manager version distributing a package.
        &quot;path&quot;: &quot;A String&quot;, # The path from which we gathered that this package/version is installed.
        &quot;version&quot;: { # Version contains structured information about the version of the package. For a discussion of this in Debian/Ubuntu: http://serverfault.com/questions/604541/debian-packages-version-convention For a discussion of this in Redhat/Fedora/Centos: http://blog.jasonantman.com/2014/07/how-yum-and-rpm-compare-versions/ # Deprecated. The version installed at this location.
          &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
          &quot;inclusive&quot;: True or False, # Whether this version is vulnerable, when defining the version bounds. For example, if the minimum version is 2.0, inclusive=true would say 2.0 is vulnerable, while inclusive=false would say it&#x27;s not
          &quot;kind&quot;: &quot;A String&quot;, # Distinguish between sentinel MIN/MAX versions and normal versions. If kind is not NORMAL, then the other fields are ignored.
          &quot;name&quot;: &quot;A String&quot;, # 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;name&quot;: &quot;A String&quot;, # Output only. The name of the installed package.
    &quot;packageType&quot;: &quot;A String&quot;, # Output only. The type of package; whether native or non native (e.g., ruby gems, node.js packages, etc.).
    &quot;version&quot;: { # Version contains structured information about the version of the package. For a discussion of this in Debian/Ubuntu: http://serverfault.com/questions/604541/debian-packages-version-convention For a discussion of this in Redhat/Fedora/Centos: http://blog.jasonantman.com/2014/07/how-yum-and-rpm-compare-versions/ # Output only. The version of the package.
      &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
      &quot;inclusive&quot;: True or False, # Whether this version is vulnerable, when defining the version bounds. For example, if the minimum version is 2.0, inclusive=true would say 2.0 is vulnerable, while inclusive=false would say it&#x27;s not
      &quot;kind&quot;: &quot;A String&quot;, # Distinguish between sentinel MIN/MAX versions and normal versions. If kind is not NORMAL, then the other fields are ignored.
      &quot;name&quot;: &quot;A String&quot;, # 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;kind&quot;: &quot;A String&quot;, # Output only. This explicitly denotes which of the `Occurrence` details are specified. This field can be used as a filter in list requests.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The name of the `Occurrence` in the form &quot;projects/{project_id}/occurrences/{OCCURRENCE_ID}&quot;
  &quot;noteName&quot;: &quot;A String&quot;, # An analysis note associated with this image, in the form &quot;providers/{provider_id}/notes/{NOTE_ID}&quot; This field can be used as a filter in list requests.
  &quot;remediation&quot;: &quot;A String&quot;, # A description of actions that can be taken to remedy the `Note`
  &quot;resource&quot;: { #  Resource is an entity that can have metadata. E.g., a Docker image. #  The resource for which the `Occurrence` applies.
    &quot;contentHash&quot;: { # Container message for hash values. # The hash of the resource content. E.g., the Docker digest.
      &quot;type&quot;: &quot;A String&quot;, # The type of hash that was performed.
      &quot;value&quot;: &quot;A String&quot;, # The hash value.
    },
    &quot;name&quot;: &quot;A String&quot;, # The name of the resource. E.g., the name of a Docker image - &quot;Debian&quot;.
    &quot;uri&quot;: &quot;A String&quot;, # The unique URI of the resource. E.g., &quot;https://gcr.io/project/image@sha256:foo&quot; for a Docker image.
  },
  &quot;resourceUrl&quot;: &quot;A String&quot;, # The unique URL of the image or the container for which the `Occurrence` applies. For example, https://gcr.io/project/image@sha256:foo This field can be used as a filter in list requests.
  &quot;sbom&quot;: { # DocumentOccurrence represents an SPDX Document Creation Information section: https://spdx.github.io/spdx-spec/2-document-creation-information/ # Describes a specific software bill of materials document.
    &quot;createTime&quot;: &quot;A String&quot;, # Identify when the SPDX file was originally created. The date is to be specified according to combined date and time in UTC format as specified in ISO 8601 standard
    &quot;creatorComment&quot;: &quot;A String&quot;, # A field for creators of the SPDX file to provide general comments about the creation of the SPDX file or any other relevant comment not included in the other fields
    &quot;creators&quot;: [ # Identify who (or what, in the case of a tool) created the SPDX file. If the SPDX file was created by an individual, indicate the person&#x27;s name
      &quot;A String&quot;,
    ],
    &quot;documentComment&quot;: &quot;A String&quot;, # A field for creators of the SPDX file content to provide comments to the consumers of the SPDX document
    &quot;externalDocumentRefs&quot;: [ # Identify any external SPDX documents referenced within this SPDX document
      &quot;A String&quot;,
    ],
    &quot;id&quot;: &quot;A String&quot;, # Identify the current SPDX document which may be referenced in relationships by other files, packages internally and documents externally
    &quot;licenseListVersion&quot;: &quot;A String&quot;, # A field for creators of the SPDX file to provide the version of the SPDX License List used when the SPDX file was created
    &quot;namespace&quot;: &quot;A String&quot;, # Provide an SPDX document specific namespace as a unique absolute Uniform Resource Identifier (URI) as specified in RFC-3986, with the exception of the ‘#’ delimiter
    &quot;title&quot;: &quot;A String&quot;, # Identify name of this document as designated by creator
  },
  &quot;sbomReference&quot;: { # The occurrence representing an SBOM reference as applied to a specific resource. The occurrence follows the DSSE specification. See https://github.com/secure-systems-lab/dsse/blob/master/envelope.md for more details. # This represents an SBOM reference occurrence
    &quot;payload&quot;: { # The actual payload that contains the SBOM Reference data. The payload follows the intoto statement specification. See https://github.com/in-toto/attestation/blob/main/spec/v1.0/statement.md for more details. # The actual payload that contains the SBOM reference data.
      &quot;_type&quot;: &quot;A String&quot;, # Identifier for the schema of the Statement.
      &quot;predicate&quot;: { # A predicate which describes the SBOM being referenced. # Additional parameters of the Predicate. Includes the actual data about the SBOM.
        &quot;digest&quot;: { # A map of algorithm to digest of the contents of the SBOM.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;location&quot;: &quot;A String&quot;, # The location of the SBOM.
        &quot;mimeType&quot;: &quot;A String&quot;, # The mime type of the SBOM.
        &quot;referrerId&quot;: &quot;A String&quot;, # The person or system referring this predicate to the consumer.
      },
      &quot;predicateType&quot;: &quot;A String&quot;, # URI identifying the type of the Predicate.
      &quot;subject&quot;: [ # Set of software artifacts that the attestation applies to. Each element represents a single software artifact.
        { # Subject refers to the subject of the intoto statement
          &quot;digest&quot;: { # &quot;&quot;: &quot;&quot; Algorithms can be e.g. sha256, sha512 See https://github.com/in-toto/attestation/blob/main/spec/field_types.md#DigestSet
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;name&quot;: &quot;A String&quot;, # name is the name of the Subject used here
        },
      ],
    },
    &quot;payloadType&quot;: &quot;A String&quot;, # The kind of payload that SbomReferenceIntotoPayload takes. Since it&#x27;s in the intoto format, this value is expected to be &#x27;application/vnd.in-toto+json&#x27;.
    &quot;signatures&quot;: [ # The signatures over the payload.
      { # A DSSE signature
        &quot;keyid&quot;: &quot;A String&quot;, # A reference id to the key being used for signing
        &quot;sig&quot;: &quot;A String&quot;, # The signature itself
      },
    ],
  },
  &quot;spdxFile&quot;: { # FileOccurrence represents an SPDX File Information section: https://spdx.github.io/spdx-spec/4-file-information/ # Describes a specific SPDX File.
    &quot;attributions&quot;: [ # This field provides a place for the SPDX data creator to record, at the file level, acknowledgements that may be needed to be communicated in some contexts
      &quot;A String&quot;,
    ],
    &quot;comment&quot;: &quot;A String&quot;, # This field provides a place for the SPDX file creator to record any general comments about the file
    &quot;contributors&quot;: [ # This field provides a place for the SPDX file creator to record file contributors
      &quot;A String&quot;,
    ],
    &quot;copyright&quot;: &quot;A String&quot;, # Identify the copyright holder of the file, as well as any dates present
    &quot;filesLicenseInfo&quot;: [ # This field contains the license information actually found in the file, if any
      &quot;A String&quot;,
    ],
    &quot;id&quot;: &quot;A String&quot;, # Uniquely identify any element in an SPDX document which may be referenced by other elements
    &quot;licenseConcluded&quot;: { # License information. # This field contains the license the SPDX file creator has concluded as governing the file or alternative values if the governing license cannot be determined
      &quot;comments&quot;: &quot;A String&quot;, # Comments
      &quot;expression&quot;: &quot;A String&quot;, # Often a single license can be used to represent the licensing terms. Sometimes it is necessary to include a choice of one or more licenses or some combination of license identifiers. Examples: &quot;LGPL-2.1-only OR MIT&quot;, &quot;LGPL-2.1-only AND MIT&quot;, &quot;GPL-2.0-or-later WITH Bison-exception-2.2&quot;.
    },
    &quot;notice&quot;: &quot;A String&quot;, # This field provides a place for the SPDX file creator to record license notices or other such related notices found in the file
  },
  &quot;spdxPackage&quot;: { # PackageInfoOccurrence represents an SPDX Package Information section: https://spdx.github.io/spdx-spec/3-package-information/ # Describes a specific SPDX Package.
    &quot;comment&quot;: &quot;A String&quot;, # A place for the SPDX file creator to record any general comments about the package being described
    &quot;filename&quot;: &quot;A String&quot;, # Provide the actual file name of the package, or path of the directory being treated as a package
    &quot;homePage&quot;: &quot;A String&quot;, # Output only. Provide a place for the SPDX file creator to record a web site that serves as the package&#x27;s home page
    &quot;id&quot;: &quot;A String&quot;, # Uniquely identify any element in an SPDX document which may be referenced by other elements
    &quot;licenseConcluded&quot;: { # License information. # package or alternative values, if the governing license cannot be determined
      &quot;comments&quot;: &quot;A String&quot;, # Comments
      &quot;expression&quot;: &quot;A String&quot;, # Often a single license can be used to represent the licensing terms. Sometimes it is necessary to include a choice of one or more licenses or some combination of license identifiers. Examples: &quot;LGPL-2.1-only OR MIT&quot;, &quot;LGPL-2.1-only AND MIT&quot;, &quot;GPL-2.0-or-later WITH Bison-exception-2.2&quot;.
    },
    &quot;packageType&quot;: &quot;A String&quot;, # Output only. The type of package: OS, MAVEN, GO, GO_STDLIB, etc.
    &quot;sourceInfo&quot;: &quot;A String&quot;, # Provide a place for the SPDX file creator to record any relevant background information or additional comments about the origin of the package
    &quot;summaryDescription&quot;: &quot;A String&quot;, # Output only. A short description of the package
    &quot;title&quot;: &quot;A String&quot;, # Output only. Identify the full name of the package as given by the Package Originator
    &quot;version&quot;: &quot;A String&quot;, # Output only. Identify the version of the package
  },
  &quot;spdxRelationship&quot;: { # RelationshipOccurrence represents an SPDX Relationship section: https://spdx.github.io/spdx-spec/7-relationships-between-SPDX-elements/ # Describes a specific relationship between SPDX elements.
    &quot;comment&quot;: &quot;A String&quot;, # A place for the SPDX file creator to record any general comments about the relationship
    &quot;source&quot;: &quot;A String&quot;, # Also referred to as SPDXRef-A The source SPDX element (file, package, etc)
    &quot;target&quot;: &quot;A String&quot;, # Also referred to as SPDXRef-B The target SPDC element (file, package, etc) In cases where there are &quot;known unknowns&quot;, the use of the keyword NOASSERTION can be used The keywords NONE can be used to indicate that an SPDX element (package/file/snippet) has no other elements connected by some relationship to it
    &quot;type&quot;: &quot;A String&quot;, # Output only. The type of relationship between the source and target SPDX elements
  },
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time this `Occurrence` was last updated.
  &quot;upgrade&quot;: { # An Upgrade Occurrence represents that a specific resource_url could install a specific upgrade. This presence is supplied via local sources (i.e. it is present in the mirror and the running system has noticed its availability). # Describes an upgrade.
    &quot;distribution&quot;: { # The Upgrade Distribution represents metadata about the Upgrade for each operating system (CPE). Some distributions have additional metadata around updates, classifying them into various categories and severities. # Metadata about the upgrade for available for the specific operating system for the resource_url. This allows efficient filtering, as well as making it easier to use the occurrence.
      &quot;classification&quot;: &quot;A String&quot;, # The operating system classification of this Upgrade, as specified by the upstream operating system upgrade feed.
      &quot;cpeUri&quot;: &quot;A String&quot;, # Required - The specific operating system this metadata applies to. See https://cpe.mitre.org/specification/.
      &quot;cve&quot;: [ # The cve that would be resolved by this upgrade.
        &quot;A String&quot;,
      ],
      &quot;severity&quot;: &quot;A String&quot;, # The severity as specified by the upstream operating system.
    },
    &quot;package&quot;: &quot;A String&quot;, # Required - The package this Upgrade is for.
    &quot;parsedVersion&quot;: { # Version contains structured information about the version of the package. For a discussion of this in Debian/Ubuntu: http://serverfault.com/questions/604541/debian-packages-version-convention For a discussion of this in Redhat/Fedora/Centos: http://blog.jasonantman.com/2014/07/how-yum-and-rpm-compare-versions/ # Required - The version of the package in a machine + human readable form.
      &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
      &quot;inclusive&quot;: True or False, # Whether this version is vulnerable, when defining the version bounds. For example, if the minimum version is 2.0, inclusive=true would say 2.0 is vulnerable, while inclusive=false would say it&#x27;s not
      &quot;kind&quot;: &quot;A String&quot;, # Distinguish between sentinel MIN/MAX versions and normal versions. If kind is not NORMAL, then the other fields are ignored.
      &quot;name&quot;: &quot;A String&quot;, # 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;vulnerabilityDetails&quot;: { # Used by Occurrence to point to where the vulnerability exists and how to fix it. # Details of a security vulnerability note.
    &quot;cvssScore&quot;: 3.14, # Output only. The CVSS score of this vulnerability. CVSS score is on a scale of 0-10 where 0 indicates low severity and 10 indicates high severity.
    &quot;cvssV2&quot;: { # Common Vulnerability Scoring System. This message is compatible with CVSS v2 and v3. For CVSS v2 details, see https://www.first.org/cvss/v2/guide CVSS v2 calculator: https://nvd.nist.gov/vuln-metrics/cvss/v2-calculator For CVSS v3 details, see https://www.first.org/cvss/specification-document CVSS v3 calculator: https://nvd.nist.gov/vuln-metrics/cvss/v3-calculator # The CVSS v2 score of this vulnerability.
      &quot;attackComplexity&quot;: &quot;A String&quot;, # Defined in CVSS v3, CVSS v2
      &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. Defined in CVSS v3, CVSS v2
      &quot;authentication&quot;: &quot;A String&quot;, # Defined in CVSS v2
      &quot;availabilityImpact&quot;: &quot;A String&quot;, # Defined in CVSS v3, CVSS v2
      &quot;baseScore&quot;: 3.14, # The base score is a function of the base metric scores.
      &quot;confidentialityImpact&quot;: &quot;A String&quot;, # Defined in CVSS v3, CVSS v2
      &quot;exploitabilityScore&quot;: 3.14,
      &quot;impactScore&quot;: 3.14,
      &quot;integrityImpact&quot;: &quot;A String&quot;, # Defined in CVSS v3, CVSS v2
      &quot;privilegesRequired&quot;: &quot;A String&quot;, # Defined in CVSS v3
      &quot;scope&quot;: &quot;A String&quot;, # Defined in CVSS v3
      &quot;userInteraction&quot;: &quot;A String&quot;, # Defined in CVSS v3
    },
    &quot;cvssV3&quot;: { # Common Vulnerability Scoring System. This message is compatible with CVSS v2 and v3. For CVSS v2 details, see https://www.first.org/cvss/v2/guide CVSS v2 calculator: https://nvd.nist.gov/vuln-metrics/cvss/v2-calculator For CVSS v3 details, see https://www.first.org/cvss/specification-document CVSS v3 calculator: https://nvd.nist.gov/vuln-metrics/cvss/v3-calculator # The CVSS v3 score of this vulnerability.
      &quot;attackComplexity&quot;: &quot;A String&quot;, # Defined in CVSS v3, CVSS v2
      &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. Defined in CVSS v3, CVSS v2
      &quot;authentication&quot;: &quot;A String&quot;, # Defined in CVSS v2
      &quot;availabilityImpact&quot;: &quot;A String&quot;, # Defined in CVSS v3, CVSS v2
      &quot;baseScore&quot;: 3.14, # The base score is a function of the base metric scores.
      &quot;confidentialityImpact&quot;: &quot;A String&quot;, # Defined in CVSS v3, CVSS v2
      &quot;exploitabilityScore&quot;: 3.14,
      &quot;impactScore&quot;: 3.14,
      &quot;integrityImpact&quot;: &quot;A String&quot;, # Defined in CVSS v3, CVSS v2
      &quot;privilegesRequired&quot;: &quot;A String&quot;, # Defined in CVSS v3
      &quot;scope&quot;: &quot;A String&quot;, # Defined in CVSS v3
      &quot;userInteraction&quot;: &quot;A String&quot;, # Defined in CVSS v3
    },
    &quot;cvssVersion&quot;: &quot;A String&quot;, # Output only. CVSS version used to populate cvss_score and severity.
    &quot;effectiveSeverity&quot;: &quot;A String&quot;, # The distro assigned severity for this vulnerability when that is available and note provider assigned severity when distro has not yet assigned a severity for this vulnerability. When there are multiple package issues for this vulnerability, they can have different effective severities because some might come from the distro and some might come from installed language packs (e.g. Maven JARs or Go binaries). For this reason, it is advised to use the effective severity on the PackageIssue level, as this field may eventually be deprecated. In the case where multiple PackageIssues have different effective severities, the one set here will be the highest severity of any of the PackageIssues.
    &quot;extraDetails&quot;: &quot;A String&quot;, # Occurrence-specific extra details about the vulnerability.
    &quot;packageIssue&quot;: [ # The set of affected locations and their fixes (if available) within the associated resource.
      { # This message wraps a location affected by a vulnerability and its associated fix (if one is available).
        &quot;affectedLocation&quot;: { # The location of the vulnerability # The location of the vulnerability.
          &quot;cpeUri&quot;: &quot;A String&quot;, # The cpe_uri in [cpe format] (https://cpe.mitre.org/specification/) format. Examples include distro or storage location for vulnerable jar. This field can be used as a filter in list requests.
          &quot;fileLocation&quot;: [ # The file location at which this package was found.
            { # Indicates the location at which a package was found.
              &quot;filePath&quot;: &quot;A String&quot;, # For jars that are contained inside .war files, this filepath can indicate the path to war file combined with the path to jar file.
            },
          ],
          &quot;package&quot;: &quot;A String&quot;, # The package being described.
          &quot;version&quot;: { # Version contains structured information about the version of the package. For a discussion of this in Debian/Ubuntu: http://serverfault.com/questions/604541/debian-packages-version-convention For a discussion of this in Redhat/Fedora/Centos: http://blog.jasonantman.com/2014/07/how-yum-and-rpm-compare-versions/ # The version of the package being described. This field can be used as a filter in list requests.
            &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
            &quot;inclusive&quot;: True or False, # Whether this version is vulnerable, when defining the version bounds. For example, if the minimum version is 2.0, inclusive=true would say 2.0 is vulnerable, while inclusive=false would say it&#x27;s not
            &quot;kind&quot;: &quot;A String&quot;, # Distinguish between sentinel MIN/MAX versions and normal versions. If kind is not NORMAL, then the other fields are ignored.
            &quot;name&quot;: &quot;A String&quot;, # 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;effectiveSeverity&quot;: &quot;A String&quot;, # Output only. The distro or language system assigned severity for this vulnerability when that is available and note provider assigned severity when distro or language system has not yet assigned a severity for this vulnerability.
        &quot;fixedLocation&quot;: { # The location of the vulnerability # The location of the available fix for vulnerability.
          &quot;cpeUri&quot;: &quot;A String&quot;, # The cpe_uri in [cpe format] (https://cpe.mitre.org/specification/) format. Examples include distro or storage location for vulnerable jar. This field can be used as a filter in list requests.
          &quot;fileLocation&quot;: [ # The file location at which this package was found.
            { # Indicates the location at which a package was found.
              &quot;filePath&quot;: &quot;A String&quot;, # For jars that are contained inside .war files, this filepath can indicate the path to war file combined with the path to jar file.
            },
          ],
          &quot;package&quot;: &quot;A String&quot;, # The package being described.
          &quot;version&quot;: { # Version contains structured information about the version of the package. For a discussion of this in Debian/Ubuntu: http://serverfault.com/questions/604541/debian-packages-version-convention For a discussion of this in Redhat/Fedora/Centos: http://blog.jasonantman.com/2014/07/how-yum-and-rpm-compare-versions/ # The version of the package being described. This field can be used as a filter in list requests.
            &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
            &quot;inclusive&quot;: True or False, # Whether this version is vulnerable, when defining the version bounds. For example, if the minimum version is 2.0, inclusive=true would say 2.0 is vulnerable, while inclusive=false would say it&#x27;s not
            &quot;kind&quot;: &quot;A String&quot;, # Distinguish between sentinel MIN/MAX versions and normal versions. If kind is not NORMAL, then the other fields are ignored.
            &quot;name&quot;: &quot;A String&quot;, # 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;packageType&quot;: &quot;A String&quot;, # The type of package (e.g. OS, MAVEN, GO).
        &quot;severityName&quot;: &quot;A String&quot;,
      },
    ],
    &quot;severity&quot;: &quot;A String&quot;, # Output only. The note provider assigned Severity of the vulnerability.
    &quot;type&quot;: &quot;A String&quot;, # The type of package; whether native or non native(ruby gems, node.js packages etc). This may be deprecated in the future because we can have multiple PackageIssues with different package types.
    &quot;vexAssessment&quot;: { # VexAssessment provides all publisher provided Vex information that is related to this vulnerability. # VexAssessment provides all publisher provided Vex information that is related to this vulnerability for this resource.
      &quot;cve&quot;: &quot;A String&quot;, # Holds the MITRE standard Common Vulnerabilities and Exposures (CVE) tracking number for the vulnerability.
      &quot;impacts&quot;: [ # Contains information about the impact of this vulnerability, this will change with time.
        &quot;A String&quot;,
      ],
      &quot;justification&quot;: { # Justification provides the justification when the state of the assessment if NOT_AFFECTED. # Justification provides the justification when the state of the assessment if NOT_AFFECTED.
        &quot;details&quot;: &quot;A String&quot;, # Additional details on why this justification was chosen.
        &quot;justificationType&quot;: &quot;A String&quot;, # The justification type for this vulnerability.
      },
      &quot;noteName&quot;: &quot;A String&quot;, # The VulnerabilityAssessment note from which this VexAssessment was generated. This will be of the form: `projects/[PROJECT_ID]/notes/[NOTE_ID]`.
      &quot;relatedUris&quot;: [ # Holds a list of references associated with this vulnerability item and assessment. These uris have additional information about the vulnerability and the assessment itself. E.g. Link to a document which details how this assessment concluded the state of this vulnerability.
        { # An URI message.
          &quot;label&quot;: &quot;A String&quot;, # A label for the URI.
          &quot;uri&quot;: &quot;A String&quot;, # The unique resource identifier.
        },
      ],
      &quot;remediations&quot;: [ # Specifies details on how to handle (and presumably, fix) a vulnerability.
        { # Specifies details on how to handle (and presumably, fix) a vulnerability.
          &quot;details&quot;: &quot;A String&quot;, # Contains a comprehensive human-readable discussion of the remediation.
          &quot;remediationType&quot;: &quot;A String&quot;, # The type of remediation that can be applied.
          &quot;remediationUri&quot;: { # An URI message. # Contains the URL where to obtain the remediation.
            &quot;label&quot;: &quot;A String&quot;, # A label for the URI.
            &quot;uri&quot;: &quot;A String&quot;, # The unique resource identifier.
          },
        },
      ],
      &quot;state&quot;: &quot;A String&quot;, # Provides the state of this Vulnerability assessment.
      &quot;vulnerabilityId&quot;: &quot;A String&quot;, # The vulnerability identifier for this Assessment. Will hold one of common identifiers e.g. CVE, GHSA etc.
    },
  },
}</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. Attempting to call this method on a resource without the required permission will result in a `PERMISSION_DENIED` error. Attempting to call this method on a non-existent resource will result in a `NOT_FOUND` error if the user has list permission on the project, or a `PERMISSION_DENIED` error otherwise. The resource takes the following formats: `projects/{PROJECT_ID}/occurrences/{OCCURRENCE_ID}` for occurrences and projects/{PROJECT_ID}/notes/{NOTE_ID} for notes

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

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

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

Returns:
  An object of the form:

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

<div class="method">
    <code class="details" id="getNotes">getNotes(name, x__xgafv=None)</code>
  <pre>Gets the `Note` attached to the given `Occurrence`.

Args:
  name: string, The name of the occurrence in the form &quot;projects/{project_id}/occurrences/{OCCURRENCE_ID}&quot; (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Provides a detailed description of a `Note`.
  &quot;attestationAuthority&quot;: { # Note kind that represents a logical attestation &quot;role&quot; or &quot;authority&quot;. For example, an organization might have one `AttestationAuthority` 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 AttestationAuthority. 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 AttestationAuthorities in security sensitive contexts, such as when looking up Attestations to verify.
      &quot;humanReadableName&quot;: &quot;A String&quot;, # 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. # The fingerprint of the base image.
      &quot;v1Name&quot;: &quot;A String&quot;, # The layer-id of the final layer in the Docker image&#x27;s v1 representation. This field can be used as a filter in list requests.
      &quot;v2Blob&quot;: [ # 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. This field can be used as a filter in list requests.
    },
    &quot;resourceUrl&quot;: &quot;A String&quot;, # The resource_url for the resource representing the basis of associated occurrence images.
  },
  &quot;buildType&quot;: { # Note holding the version of the provider&#x27;s builder and the signature of the provenance message in linked BuildDetails. # Build provenance type for a verifiable build.
    &quot;builderVersion&quot;: &quot;A String&quot;, # Version of the builder which produced this Note.
    &quot;signature&quot;: { # Message encapsulating the signature of the verified build. # Signature of the build in Occurrences pointing to the Note containing this `BuilderDetails`.
      &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;, # Signature of the related `BuildProvenance`, encoded in a base64 string.
    },
  },
  &quot;compliance&quot;: { # ComplianceNote encapsulates all information about a specific compliance check. # A note describing a compliance check.
    &quot;cisBenchmark&quot;: { # A compliance check that is a CIS benchmark. # Right now we only have one compliance type, but we may add additional types in the future.
      &quot;profileLevel&quot;: 42, # The profile level of this CIS benchmark check.
      &quot;severity&quot;: &quot;A String&quot;, # The severity level of this CIS benchmark check.
    },
    &quot;description&quot;: &quot;A String&quot;, # A description about this compliance check.
    &quot;rationale&quot;: &quot;A String&quot;, # A rationale for the existence of this compliance check.
    &quot;remediation&quot;: &quot;A String&quot;, # A description of remediation steps if the compliance check fails.
    &quot;scanInstructions&quot;: &quot;A String&quot;, # Serialized scan instructions with a predefined format.
    &quot;title&quot;: &quot;A String&quot;, # The title that identifies this compliance check.
    &quot;version&quot;: [ # The OS and config versions the benchmark applies to.
      { # Describes the CIS benchmark version that is applicable to a given OS and os version.
        &quot;benchmarkDocument&quot;: &quot;A String&quot;, # The name of the document that defines this benchmark, e.g. &quot;CIS Container-Optimized OS&quot;.
        &quot;cpeUri&quot;: &quot;A String&quot;, # The CPE URI (https://cpe.mitre.org/specification/) this benchmark is applicable to.
        &quot;version&quot;: &quot;A String&quot;, # The version of the benchmark. This is set to the version of the OS-specific CIS document the benchmark is defined in.
      },
    ],
  },
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time this note was created. This field can be used as a filter in list requests.
  &quot;deployable&quot;: { # An artifact that can be deployed in some runtime. # A note describing something that can be deployed.
    &quot;resourceUri&quot;: [ # 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. The occurrence&#x27;s operation will indicate the status of the analysis. Absence of an occurrence linked to this note for a resource indicates that analysis hasn&#x27;t started. # A note describing a provider/analysis type.
    &quot;analysisKind&quot;: &quot;A String&quot;, # The kind of analysis that is handled by this discovery.
  },
  &quot;dsseAttestation&quot;: { # A note describing an attestation # A note describing a dsse attestation note.
    &quot;hint&quot;: { # This submessage provides human-readable hints about the purpose of the authority. Because the name of a note acts as its resource reference, it is important to disambiguate the canonical name of the Note (which might be a UUID for security purposes) from &quot;readable&quot; names more suitable for debug output. Note that these hints should not be used to look up authorities in security sensitive contexts, such as when looking up attestations to verify. # DSSEHint hints at the purpose of the attestation authority.
      &quot;humanReadableName&quot;: &quot;A String&quot;, # Required. The human readable name of this attestation authority, for example &quot;cloudbuild-prod&quot;.
    },
  },
  &quot;expirationTime&quot;: &quot;A String&quot;, # Time of expiration for this note, null if note does not expire.
  &quot;kind&quot;: &quot;A String&quot;, # Output only. This explicitly denotes which kind of note is specified. 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;, # The name of the note in the form &quot;projects/{provider_project_id}/notes/{NOTE_ID}&quot;
  &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;architecture&quot;: &quot;A String&quot;, # The CPU architecture for which packages in this distribution channel were built. Architecture will be blank for language packages.
    &quot;cpeUri&quot;: &quot;A String&quot;, # The cpe_uri in [CPE format](https://cpe.mitre.org/specification/) denoting the package manager version distributing a package. The cpe_uri will be blank for language packages.
    &quot;description&quot;: &quot;A String&quot;, # The description of this package.
    &quot;digest&quot;: [ # Hash value, typically a file digest, that allows unique identification a specific package.
      { # Digest information.
        &quot;algo&quot;: &quot;A String&quot;, # `SHA1`, `SHA512` etc.
        &quot;digestBytes&quot;: &quot;A String&quot;, # Value of the digest.
      },
    ],
    &quot;distribution&quot;: [ # 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;, # 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 the package. For a discussion of this in Debian/Ubuntu: http://serverfault.com/questions/604541/debian-packages-version-convention For a discussion of this in Redhat/Fedora/Centos: http://blog.jasonantman.com/2014/07/how-yum-and-rpm-compare-versions/ # 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;inclusive&quot;: True or False, # Whether this version is vulnerable, when defining the version bounds. For example, if the minimum version is 2.0, inclusive=true would say 2.0 is vulnerable, while inclusive=false would say it&#x27;s not
          &quot;kind&quot;: &quot;A String&quot;, # Distinguish between sentinel MIN/MAX versions and normal versions. If kind is not NORMAL, then the other fields are ignored.
          &quot;name&quot;: &quot;A String&quot;, # The main part of the version name.
          &quot;revision&quot;: &quot;A String&quot;, # The iteration of the package build from the above version.
        },
        &quot;maintainer&quot;: &quot;A String&quot;, # A freeform string denoting the maintainer of this package.
        &quot;url&quot;: &quot;A String&quot;, # The distribution channel-specific homepage for this package.
      },
    ],
    &quot;license&quot;: { # License information. # Licenses that have been declared by the authors of the package.
      &quot;comments&quot;: &quot;A String&quot;, # Comments
      &quot;expression&quot;: &quot;A String&quot;, # Often a single license can be used to represent the licensing terms. Sometimes it is necessary to include a choice of one or more licenses or some combination of license identifiers. Examples: &quot;LGPL-2.1-only OR MIT&quot;, &quot;LGPL-2.1-only AND MIT&quot;, &quot;GPL-2.0-or-later WITH Bison-exception-2.2&quot;.
    },
    &quot;maintainer&quot;: &quot;A String&quot;, # A freeform text denoting the maintainer of this package.
    &quot;name&quot;: &quot;A String&quot;, # The name of the package.
    &quot;packageType&quot;: &quot;A String&quot;, # The type of package; whether native or non native (e.g., ruby gems, node.js packages, etc.).
    &quot;url&quot;: &quot;A String&quot;, # The homepage for this package.
    &quot;version&quot;: { # Version contains structured information about the version of the package. For a discussion of this in Debian/Ubuntu: http://serverfault.com/questions/604541/debian-packages-version-convention For a discussion of this in Redhat/Fedora/Centos: http://blog.jasonantman.com/2014/07/how-yum-and-rpm-compare-versions/ # The version of the package.
      &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
      &quot;inclusive&quot;: True or False, # Whether this version is vulnerable, when defining the version bounds. For example, if the minimum version is 2.0, inclusive=true would say 2.0 is vulnerable, while inclusive=false would say it&#x27;s not
      &quot;kind&quot;: &quot;A String&quot;, # Distinguish between sentinel MIN/MAX versions and normal versions. If kind is not NORMAL, then the other fields are ignored.
      &quot;name&quot;: &quot;A String&quot;, # 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;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 to associate with the note
    },
  ],
  &quot;sbom&quot;: { # DocumentNote represents an SPDX Document Creation Infromation section: https://spdx.github.io/spdx-spec/2-document-creation-information/ # A note describing a software bill of materials.
    &quot;dataLicence&quot;: &quot;A String&quot;, # Compliance with the SPDX specification includes populating the SPDX fields therein with data related to such fields (&quot;SPDX-Metadata&quot;)
    &quot;spdxVersion&quot;: &quot;A String&quot;, # Provide a reference number that can be used to understand how to parse and interpret the rest of the file
  },
  &quot;sbomReference&quot;: { # The note representing an SBOM reference. # A note describing a reference to an SBOM.
    &quot;format&quot;: &quot;A String&quot;, # The format that SBOM takes. E.g. may be spdx, cyclonedx, etc...
    &quot;version&quot;: &quot;A String&quot;, # The version of the format that the SBOM takes. E.g. if the format is spdx, the version may be 2.3.
  },
  &quot;shortDescription&quot;: &quot;A String&quot;, # A one sentence description of this `Note`.
  &quot;spdxFile&quot;: { # FileNote represents an SPDX File Information section: https://spdx.github.io/spdx-spec/4-file-information/ # A note describing an SPDX File.
    &quot;checksum&quot;: [ # Provide a unique identifier to match analysis information on each specific file in a package
      &quot;A String&quot;,
    ],
    &quot;fileType&quot;: &quot;A String&quot;, # This field provides information about the type of file identified
    &quot;title&quot;: &quot;A String&quot;, # Identify the full path and filename that corresponds to the file information in this section
  },
  &quot;spdxPackage&quot;: { # PackageInfoNote represents an SPDX Package Information section: https://spdx.github.io/spdx-spec/3-package-information/ # A note describing an SPDX Package.
    &quot;analyzed&quot;: True or False, # Indicates whether the file content of this package has been available for or subjected to analysis when creating the SPDX document
    &quot;attribution&quot;: &quot;A String&quot;, # A place for the SPDX data creator to record, at the package level, acknowledgements that may be needed to be communicated in some contexts
    &quot;checksum&quot;: &quot;A String&quot;, # Provide an independently reproducible mechanism that permits unique identification of a specific package that correlates to the data in this SPDX file
    &quot;copyright&quot;: &quot;A String&quot;, # Identify the copyright holders of the package, as well as any dates present
    &quot;detailedDescription&quot;: &quot;A String&quot;, # A more detailed description of the package
    &quot;downloadLocation&quot;: &quot;A String&quot;, # This section identifies the download Universal Resource Locator (URL), or a specific location within a version control system (VCS) for the package at the time that the SPDX file was created
    &quot;externalRefs&quot;: [ # ExternalRef
      { # An External Reference allows a Package to reference an external source of additional information, metadata, enumerations, asset identifiers, or downloadable content believed to be relevant to the Package
        &quot;category&quot;: &quot;A String&quot;, # An External Reference allows a Package to reference an external source of additional information, metadata, enumerations, asset identifiers, or downloadable content believed to be relevant to the Package
        &quot;comment&quot;: &quot;A String&quot;, # Human-readable information about the purpose and target of the reference
        &quot;locator&quot;: &quot;A String&quot;, # The unique string with no spaces necessary to access the package-specific information, metadata, or content within the target location
        &quot;type&quot;: &quot;A String&quot;, # Type of category (e.g. &#x27;npm&#x27; for the PACKAGE_MANAGER category)
      },
    ],
    &quot;filesLicenseInfo&quot;: [ # Contain the license the SPDX file creator has concluded as governing the This field is to contain a list of all licenses found in the package. The relationship between licenses (i.e., conjunctive, disjunctive) is not specified in this field – it is simply a listing of all licenses found
      &quot;A String&quot;,
    ],
    &quot;homePage&quot;: &quot;A String&quot;, # Provide a place for the SPDX file creator to record a web site that serves as the package&#x27;s home page
    &quot;licenseDeclared&quot;: { # License information. # List the licenses that have been declared by the authors of the package
      &quot;comments&quot;: &quot;A String&quot;, # Comments
      &quot;expression&quot;: &quot;A String&quot;, # Often a single license can be used to represent the licensing terms. Sometimes it is necessary to include a choice of one or more licenses or some combination of license identifiers. Examples: &quot;LGPL-2.1-only OR MIT&quot;, &quot;LGPL-2.1-only AND MIT&quot;, &quot;GPL-2.0-or-later WITH Bison-exception-2.2&quot;.
    },
    &quot;originator&quot;: &quot;A String&quot;, # If the package identified in the SPDX file originated from a different person or organization than identified as Package Supplier, this field identifies from where or whom the package originally came
    &quot;packageType&quot;: &quot;A String&quot;, # The type of package: OS, MAVEN, GO, GO_STDLIB, etc.
    &quot;summaryDescription&quot;: &quot;A String&quot;, # A short description of the package
    &quot;supplier&quot;: &quot;A String&quot;, # Identify the actual distribution source for the package/directory identified in the SPDX file
    &quot;title&quot;: &quot;A String&quot;, # Identify the full name of the package as given by the Package Originator
    &quot;verificationCode&quot;: &quot;A String&quot;, # This field provides an independently reproducible mechanism identifying specific contents of a package based on the actual files (except the SPDX file itself, if it is included in the package) that make up each package and that correlates to the data in this SPDX file
    &quot;version&quot;: &quot;A String&quot;, # Identify the version of the package
  },
  &quot;spdxRelationship&quot;: { # RelationshipNote represents an SPDX Relationship section: https://spdx.github.io/spdx-spec/7-relationships-between-SPDX-elements/ # A note describing a relationship between SPDX elements.
    &quot;type&quot;: &quot;A String&quot;, # The type of relationship between the source and target SPDX elements
  },
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time this note was last updated. This field can be used as a filter in list requests.
  &quot;upgrade&quot;: { # An Upgrade Note represents a potential upgrade of a package to a given version. For each package version combination (i.e. bash 4.0, bash 4.1, bash 4.1.2), there will be a Upgrade Note. # A note describing an upgrade.
    &quot;distributions&quot;: [ # Metadata about the upgrade for each specific operating system.
      { # The Upgrade Distribution represents metadata about the Upgrade for each operating system (CPE). Some distributions have additional metadata around updates, classifying them into various categories and severities.
        &quot;classification&quot;: &quot;A String&quot;, # The operating system classification of this Upgrade, as specified by the upstream operating system upgrade feed.
        &quot;cpeUri&quot;: &quot;A String&quot;, # Required - The specific operating system this metadata applies to. See https://cpe.mitre.org/specification/.
        &quot;cve&quot;: [ # The cve that would be resolved by this upgrade.
          &quot;A String&quot;,
        ],
        &quot;severity&quot;: &quot;A String&quot;, # The severity as specified by the upstream operating system.
      },
    ],
    &quot;package&quot;: &quot;A String&quot;, # Required - The package this Upgrade is for.
    &quot;version&quot;: { # Version contains structured information about the version of the package. For a discussion of this in Debian/Ubuntu: http://serverfault.com/questions/604541/debian-packages-version-convention For a discussion of this in Redhat/Fedora/Centos: http://blog.jasonantman.com/2014/07/how-yum-and-rpm-compare-versions/ # Required - The version of the package in machine + human readable form.
      &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
      &quot;inclusive&quot;: True or False, # Whether this version is vulnerable, when defining the version bounds. For example, if the minimum version is 2.0, inclusive=true would say 2.0 is vulnerable, while inclusive=false would say it&#x27;s not
      &quot;kind&quot;: &quot;A String&quot;, # Distinguish between sentinel MIN/MAX versions and normal versions. If kind is not NORMAL, then the other fields are ignored.
      &quot;name&quot;: &quot;A String&quot;, # 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;vulnerabilityAssessment&quot;: { # A single VulnerabilityAssessmentNote represents one particular product&#x27;s vulnerability assessment for one CVE. Multiple VulnerabilityAssessmentNotes together form a Vex statement. Please go/sds-vex-example for a sample Vex statement in the CSAF format. # A note describing a vulnerability assessment.
    &quot;assessment&quot;: { # Assessment provides all information that is related to a single vulnerability for this product. # Represents a vulnerability assessment for the product.
      &quot;cve&quot;: &quot;A String&quot;, # Holds the MITRE standard Common Vulnerabilities and Exposures (CVE) tracking number for the vulnerability.
      &quot;impacts&quot;: [ # Contains information about the impact of this vulnerability, this will change with time.
        &quot;A String&quot;,
      ],
      &quot;justification&quot;: { # Justification provides the justification when the state of the assessment if NOT_AFFECTED. # Justification provides the justification when the state of the assessment if NOT_AFFECTED.
        &quot;details&quot;: &quot;A String&quot;, # Additional details on why this justification was chosen.
        &quot;justificationType&quot;: &quot;A String&quot;, # The justification type for this vulnerability.
      },
      &quot;longDescription&quot;: &quot;A String&quot;, # A detailed description of this Vex.
      &quot;relatedUris&quot;: [ # Holds a list of references associated with this vulnerability item and assessment. These uris have additional information about the vulnerability and the assessment itself. E.g. Link to a document which details how this assessment concluded the state of this vulnerability.
        { # An URI message.
          &quot;label&quot;: &quot;A String&quot;, # A label for the URI.
          &quot;uri&quot;: &quot;A String&quot;, # The unique resource identifier.
        },
      ],
      &quot;remediations&quot;: [ # Specifies details on how to handle (and presumably, fix) a vulnerability.
        { # Specifies details on how to handle (and presumably, fix) a vulnerability.
          &quot;details&quot;: &quot;A String&quot;, # Contains a comprehensive human-readable discussion of the remediation.
          &quot;remediationType&quot;: &quot;A String&quot;, # The type of remediation that can be applied.
          &quot;remediationUri&quot;: { # An URI message. # Contains the URL where to obtain the remediation.
            &quot;label&quot;: &quot;A String&quot;, # A label for the URI.
            &quot;uri&quot;: &quot;A String&quot;, # The unique resource identifier.
          },
        },
      ],
      &quot;shortDescription&quot;: &quot;A String&quot;, # A one sentence description of this Vex.
      &quot;state&quot;: &quot;A String&quot;, # Provides the state of this Vulnerability assessment.
      &quot;vulnerabilityId&quot;: &quot;A String&quot;, # The vulnerability identifier for this Assessment. Will hold one of common identifiers e.g. CVE, GHSA etc.
    },
    &quot;languageCode&quot;: &quot;A String&quot;, # Identifies the language used by this document, corresponding to IETF BCP 47 / RFC 5646.
    &quot;longDescription&quot;: &quot;A String&quot;, # A detailed description of this Vex.
    &quot;product&quot;: { # Product contains information about a product and how to uniquely identify it. # The product affected by this vex.
      &quot;id&quot;: &quot;A String&quot;, # Token that identifies a product so that it can be referred to from other parts in the document. There is no predefined format as long as it uniquely identifies a group in the context of the current document.
      &quot;identifierHelper&quot;: { # Helps in identifying the underlying product. This should be treated like a one-of field. Only one field should be set in this proto. This is a workaround because spanner indexes on one-of fields restrict addition and deletion of fields. # Helps in identifying the underlying product.
        &quot;field&quot;: &quot;A String&quot;, # The field that is set in the API proto.
        &quot;genericUri&quot;: &quot;A String&quot;, # Contains a URI which is vendor-specific. Example: The artifact repository URL of an image.
      },
      &quot;name&quot;: &quot;A String&quot;, # Name of the product.
    },
    &quot;publisher&quot;: { # Publisher contains information about the publisher of this Note. # Publisher details of this Note.
      &quot;issuingAuthority&quot;: &quot;A String&quot;, # Provides information about the authority of the issuing party to release the document, in particular, the party&#x27;s constituency and responsibilities or other obligations.
      &quot;name&quot;: &quot;A String&quot;, # Name of the publisher. Examples: &#x27;Google&#x27;, &#x27;Google Cloud Platform&#x27;.
      &quot;publisherNamespace&quot;: &quot;A String&quot;, # The context or namespace. Contains a URL which is under control of the issuing party and can be used as a globally unique identifier for that issuing party. Example: https://csaf.io
    },
    &quot;shortDescription&quot;: &quot;A String&quot;, # A one sentence description of this Vex.
    &quot;title&quot;: &quot;A String&quot;, # The title of the note. E.g. `Vex-Debian-11.4`
  },
  &quot;vulnerabilityType&quot;: { # VulnerabilityType provides metadata about a security vulnerability. # A package vulnerability type of note.
    &quot;cvssScore&quot;: 3.14, # The CVSS score for this Vulnerability.
    &quot;cvssV2&quot;: { # Common Vulnerability Scoring System. This message is compatible with CVSS v2 and v3. For CVSS v2 details, see https://www.first.org/cvss/v2/guide CVSS v2 calculator: https://nvd.nist.gov/vuln-metrics/cvss/v2-calculator For CVSS v3 details, see https://www.first.org/cvss/specification-document CVSS v3 calculator: https://nvd.nist.gov/vuln-metrics/cvss/v3-calculator # The full description of the CVSS for version 2.
      &quot;attackComplexity&quot;: &quot;A String&quot;, # Defined in CVSS v3, CVSS v2
      &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. Defined in CVSS v3, CVSS v2
      &quot;authentication&quot;: &quot;A String&quot;, # Defined in CVSS v2
      &quot;availabilityImpact&quot;: &quot;A String&quot;, # Defined in CVSS v3, CVSS v2
      &quot;baseScore&quot;: 3.14, # The base score is a function of the base metric scores.
      &quot;confidentialityImpact&quot;: &quot;A String&quot;, # Defined in CVSS v3, CVSS v2
      &quot;exploitabilityScore&quot;: 3.14,
      &quot;impactScore&quot;: 3.14,
      &quot;integrityImpact&quot;: &quot;A String&quot;, # Defined in CVSS v3, CVSS v2
      &quot;privilegesRequired&quot;: &quot;A String&quot;, # Defined in CVSS v3
      &quot;scope&quot;: &quot;A String&quot;, # Defined in CVSS v3
      &quot;userInteraction&quot;: &quot;A String&quot;, # Defined in CVSS v3
    },
    &quot;cvssVersion&quot;: &quot;A String&quot;, # CVSS version used to populate cvss_score and severity.
    &quot;cwe&quot;: [ # A list of CWE for this vulnerability. For details, see: https://cwe.mitre.org/index.html
      &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 occurrences 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;, # 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. This field can be used as a filter in list requests.
        &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;, # The cpe_uri in [cpe format] (https://cpe.mitre.org/specification/) format. Examples include distro or storage location for vulnerable jar. This field can be used as a filter in list requests.
          &quot;fileLocation&quot;: [ # The file location at which this package was found.
            { # Indicates the location at which a package was found.
              &quot;filePath&quot;: &quot;A String&quot;, # For jars that are contained inside .war files, this filepath can indicate the path to war file combined with the path to jar file.
            },
          ],
          &quot;package&quot;: &quot;A String&quot;, # The package being described.
          &quot;version&quot;: { # Version contains structured information about the version of the package. For a discussion of this in Debian/Ubuntu: http://serverfault.com/questions/604541/debian-packages-version-convention For a discussion of this in Redhat/Fedora/Centos: http://blog.jasonantman.com/2014/07/how-yum-and-rpm-compare-versions/ # The version of the package being described. This field can be used as a filter in list requests.
            &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
            &quot;inclusive&quot;: True or False, # Whether this version is vulnerable, when defining the version bounds. For example, if the minimum version is 2.0, inclusive=true would say 2.0 is vulnerable, while inclusive=false would say it&#x27;s not
            &quot;kind&quot;: &quot;A String&quot;, # Distinguish between sentinel MIN/MAX versions and normal versions. If kind is not NORMAL, then the other fields are ignored.
            &quot;name&quot;: &quot;A String&quot;, # 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 the package. For a discussion of this in Debian/Ubuntu: http://serverfault.com/questions/604541/debian-packages-version-convention For a discussion of this in Redhat/Fedora/Centos: http://blog.jasonantman.com/2014/07/how-yum-and-rpm-compare-versions/ # 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;inclusive&quot;: True or False, # Whether this version is vulnerable, when defining the version bounds. For example, if the minimum version is 2.0, inclusive=true would say 2.0 is vulnerable, while inclusive=false would say it&#x27;s not
          &quot;kind&quot;: &quot;A String&quot;, # Distinguish between sentinel MIN/MAX versions and normal versions. If kind is not NORMAL, then the other fields are ignored.
          &quot;name&quot;: &quot;A String&quot;, # 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 the package. For a discussion of this in Debian/Ubuntu: http://serverfault.com/questions/604541/debian-packages-version-convention For a discussion of this in Redhat/Fedora/Centos: http://blog.jasonantman.com/2014/07/how-yum-and-rpm-compare-versions/ # 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;inclusive&quot;: True or False, # Whether this version is vulnerable, when defining the version bounds. For example, if the minimum version is 2.0, inclusive=true would say 2.0 is vulnerable, while inclusive=false would say it&#x27;s not
          &quot;kind&quot;: &quot;A String&quot;, # Distinguish between sentinel MIN/MAX versions and normal versions. If kind is not NORMAL, then the other fields are ignored.
          &quot;name&quot;: &quot;A String&quot;, # 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;, # The name of the package where the vulnerability was found. This field can be used as a filter in list requests.
        &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;source&quot;: &quot;A String&quot;, # The source from which the information in this Detail was obtained.
        &quot;vendor&quot;: &quot;A String&quot;, # The vendor of the product. e.g. &quot;google&quot;
      },
    ],
    &quot;severity&quot;: &quot;A String&quot;, # Note provider assigned impact of the vulnerability
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="getVulnerabilitySummary">getVulnerabilitySummary(parent, filter=None, x__xgafv=None)</code>
  <pre>Gets a summary of the number and severity of occurrences.

Args:
  parent: string, This contains the project Id for example: projects/{project_id} (required)
  filter: string, The filter expression.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A summary of how many vulnz occurrences there are per severity type. counts by groups, or if we should have different summary messages like this.
  &quot;counts&quot;: [ # A map of how many occurrences were found for each severity.
    { # The number of occurrences created for a specific severity.
      &quot;count&quot;: &quot;A String&quot;, # The number of occurrences with the severity.
      &quot;severity&quot;: &quot;A String&quot;, # The severity of the occurrences.
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, filter=None, kind=None, name=None, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists active `Occurrences` for a given project matching the filters.

Args:
  parent: string, This contains the project Id for example: projects/{project_id}. (required)
  filter: string, The filter expression.
  kind: string, The kind of occurrences to filter on.
    Allowed values
      KIND_UNSPECIFIED - Unknown
      PACKAGE_VULNERABILITY - The note and occurrence represent a package vulnerability.
      BUILD_DETAILS - The note and occurrence assert build provenance.
      IMAGE_BASIS - This represents an image basis relationship.
      PACKAGE_MANAGER - This represents a package installed via a package manager.
      DEPLOYABLE - The note and occurrence track deployment events.
      DISCOVERY - The note and occurrence track the initial discovery status of a resource.
      ATTESTATION_AUTHORITY - This represents a logical &quot;role&quot; that can attest to artifacts.
      UPGRADE - This represents an available software upgrade.
      COMPLIANCE - This represents a compliance check that can be applied to a resource.
      SBOM - This represents a software bill of materials.
      SPDX_PACKAGE - This represents an SPDX Package.
      SPDX_FILE - This represents an SPDX File.
      SPDX_RELATIONSHIP - This represents an SPDX Relationship.
      DSSE_ATTESTATION - This represents a DSSE attestation Note
      VULNERABILITY_ASSESSMENT - This represents a Vulnerability Assessment.
      SBOM_REFERENCE - This represents a reference to an SBOM.
  name: string, The name field contains the project Id. For example: &quot;projects/{project_id} @Deprecated
  pageSize: integer, Number of occurrences to return in the list.
  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 including listed active occurrences.
  &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;occurrences&quot;: [ # The occurrences requested.
    { # `Occurrence` includes information about analysis occurrences for an image.
      &quot;attestation&quot;: { # Occurrence that represents a single &quot;attestation&quot;. The authenticity of an Attestation can be verified using the attached signature. If the verifier trusts the public key of the signer, then verifying the signature is sufficient to establish trust. In this circumstance, the AttestationAuthority to which this Attestation is attached is primarily useful for look-up (how to find this Attestation if you already know the Authority and artifact to be verified) and intent (which authority was this attestation intended to sign for). # Describes an attestation of an artifact.
        &quot;pgpSignedAttestation&quot;: { # An attestation wrapper with a PGP-compatible signature. This message only supports `ATTACHED` signatures, where the payload that is signed is included alongside the signature itself in the same file.
          &quot;contentType&quot;: &quot;A String&quot;, # Type (for example schema) of the attestation payload that was signed. The verifier must ensure that the provided type is one that the verifier supports, and that the attestation payload is a valid instantiation of that type (for example by validating a JSON schema).
          &quot;pgpKeyId&quot;: &quot;A String&quot;, # The cryptographic fingerprint of the key used to generate the signature, as output by, e.g. `gpg --list-keys`. This should be the version 4, full 160-bit fingerprint, expressed as a 40 character hexadecimal string. See https://tools.ietf.org/html/rfc4880#section-12.2 for details. Implementations may choose to acknowledge &quot;LONG&quot;, &quot;SHORT&quot;, or other abbreviated key IDs, but only the full fingerprint is guaranteed to work. In gpg, the full fingerprint can be retrieved from the `fpr` field returned when calling --list-keys with --with-colons. For example: ``` gpg --with-colons --with-fingerprint --force-v4-certs \ --list-keys attester@example.com tru::1:1513631572:0:3:1:5 pub:...... fpr:::::::::24FF6481B76AC91E66A00AC657A93A81EF3AE6FB: ``` Above, the fingerprint is `24FF6481B76AC91E66A00AC657A93A81EF3AE6FB`.
          &quot;signature&quot;: &quot;A String&quot;, # The raw content of the signature, as output by GNU Privacy Guard (GPG) or equivalent. Since this message only supports attached signatures, the payload that was signed must be attached. While the signature format supported is dependent on the verification implementation, currently only ASCII-armored (`--armor` to gpg), non-clearsigned (`--sign` rather than `--clearsign` to gpg) are supported. Concretely, `gpg --sign --armor --output=signature.gpg payload.json` will create the signature content expected in this field in `signature.gpg` for the `payload.json` attestation payload.
        },
      },
      &quot;buildDetails&quot;: { # Message encapsulating build provenance details. # Build details for a verifiable build.
        &quot;inTotoSlsaProvenanceV1&quot;: { # In-Toto Slsa Provenance V1 represents a slsa provenance meeting the slsa spec, wrapped in an in-toto statement. This allows for direct jsonification of a to-spec in-toto slsa statement with a to-spec slsa provenance.
          &quot;_type&quot;: &quot;A String&quot;, # InToto spec defined at https://github.com/in-toto/attestation/tree/main/spec#statement
          &quot;predicate&quot;: { # Keep in sync with schema at https://github.com/slsa-framework/slsa/blob/main/docs/provenance/schema/v1/provenance.proto Builder renamed to ProvenanceBuilder because of Java conflicts.
            &quot;buildDefinition&quot;: {
              &quot;buildType&quot;: &quot;A String&quot;,
              &quot;externalParameters&quot;: {
                &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
              },
              &quot;internalParameters&quot;: {
                &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
              },
              &quot;resolvedDependencies&quot;: [
                {
                  &quot;annotations&quot;: {
                    &quot;a_key&quot;: &quot;&quot;,
                  },
                  &quot;content&quot;: &quot;A String&quot;,
                  &quot;digest&quot;: {
                    &quot;a_key&quot;: &quot;A String&quot;,
                  },
                  &quot;downloadLocation&quot;: &quot;A String&quot;,
                  &quot;mediaType&quot;: &quot;A String&quot;,
                  &quot;name&quot;: &quot;A String&quot;,
                  &quot;uri&quot;: &quot;A String&quot;,
                },
              ],
            },
            &quot;runDetails&quot;: {
              &quot;builder&quot;: {
                &quot;builderDependencies&quot;: [
                  {
                    &quot;annotations&quot;: {
                      &quot;a_key&quot;: &quot;&quot;,
                    },
                    &quot;content&quot;: &quot;A String&quot;,
                    &quot;digest&quot;: {
                      &quot;a_key&quot;: &quot;A String&quot;,
                    },
                    &quot;downloadLocation&quot;: &quot;A String&quot;,
                    &quot;mediaType&quot;: &quot;A String&quot;,
                    &quot;name&quot;: &quot;A String&quot;,
                    &quot;uri&quot;: &quot;A String&quot;,
                  },
                ],
                &quot;id&quot;: &quot;A String&quot;,
                &quot;version&quot;: {
                  &quot;a_key&quot;: &quot;A String&quot;,
                },
              },
              &quot;byproducts&quot;: [
                {
                  &quot;annotations&quot;: {
                    &quot;a_key&quot;: &quot;&quot;,
                  },
                  &quot;content&quot;: &quot;A String&quot;,
                  &quot;digest&quot;: {
                    &quot;a_key&quot;: &quot;A String&quot;,
                  },
                  &quot;downloadLocation&quot;: &quot;A String&quot;,
                  &quot;mediaType&quot;: &quot;A String&quot;,
                  &quot;name&quot;: &quot;A String&quot;,
                  &quot;uri&quot;: &quot;A String&quot;,
                },
              ],
              &quot;metadata&quot;: {
                &quot;finishedOn&quot;: &quot;A String&quot;,
                &quot;invocationId&quot;: &quot;A String&quot;,
                &quot;startedOn&quot;: &quot;A String&quot;,
              },
            },
          },
          &quot;predicateType&quot;: &quot;A String&quot;,
          &quot;subject&quot;: [
            { # Subject refers to the subject of the intoto statement
              &quot;digest&quot;: { # &quot;&quot;: &quot;&quot; Algorithms can be e.g. sha256, sha512 See https://github.com/in-toto/attestation/blob/main/spec/field_types.md#DigestSet
                &quot;a_key&quot;: &quot;A String&quot;,
              },
              &quot;name&quot;: &quot;A String&quot;, # name is the name of the Subject used here
            },
          ],
        },
        &quot;intotoProvenance&quot;: { # Deprecated. See InTotoStatement for the replacement. In-toto Provenance representation as defined in spec.
          &quot;builderConfig&quot;: { # required
            &quot;id&quot;: &quot;A String&quot;,
          },
          &quot;materials&quot;: [ # The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on. This is considered to be incomplete unless metadata.completeness.materials is true. Unset or null is equivalent to empty.
            &quot;A String&quot;,
          ],
          &quot;metadata&quot;: { # Other properties of the build.
            &quot;buildFinishedOn&quot;: &quot;A String&quot;, # The timestamp of when the build completed.
            &quot;buildInvocationId&quot;: &quot;A String&quot;, # Identifies the particular build invocation, which can be useful for finding associated logs or other ad-hoc analysis. The value SHOULD be globally unique, per in-toto Provenance spec.
            &quot;buildStartedOn&quot;: &quot;A String&quot;, # The timestamp of when the build started.
            &quot;completeness&quot;: { # Indicates that the builder claims certain fields in this message to be complete. # Indicates that the builder claims certain fields in this message to be complete.
              &quot;arguments&quot;: True or False, # If true, the builder claims that recipe.arguments is complete, meaning that all external inputs are properly captured in the recipe.
              &quot;environment&quot;: True or False, # If true, the builder claims that recipe.environment is claimed to be complete.
              &quot;materials&quot;: True or False, # If true, the builder claims that materials are complete, usually through some controls to prevent network access. Sometimes called &quot;hermetic&quot;.
            },
            &quot;reproducible&quot;: True or False, # If true, the builder claims that running the recipe on materials will produce bit-for-bit identical output.
          },
          &quot;recipe&quot;: { # Steps taken to build the artifact. For a TaskRun, typically each container corresponds to one step in the recipe. # Identifies the configuration used for the build. When combined with materials, this SHOULD fully describe the build, such that re-running this recipe results in bit-for-bit identical output (if the build is reproducible). required
            &quot;arguments&quot;: [ # Collection of all external inputs that influenced the build on top of recipe.definedInMaterial and recipe.entryPoint. For example, if the recipe type were &quot;make&quot;, then this might be the flags passed to make aside from the target, which is captured in recipe.entryPoint.
              {
                &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
              },
            ],
            &quot;definedInMaterial&quot;: &quot;A String&quot;, # Index in materials containing the recipe steps that are not implied by recipe.type. For example, if the recipe type were &quot;make&quot;, then this would point to the source containing the Makefile, not the make program itself. Set to -1 if the recipe doesn&#x27;t come from a material, as zero is default unset value for int64.
            &quot;entryPoint&quot;: &quot;A String&quot;, # String identifying the entry point into the build. This is often a path to a configuration file and/or a target label within that file. The syntax and meaning are defined by recipe.type. For example, if the recipe type were &quot;make&quot;, then this would reference the directory in which to run make as well as which target to use.
            &quot;environment&quot;: [ # Any other builder-controlled inputs necessary for correctly evaluating the recipe. Usually only needed for reproducing the build but not evaluated as part of policy.
              {
                &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
              },
            ],
            &quot;type&quot;: &quot;A String&quot;, # URI indicating what type of recipe was performed. It determines the meaning of recipe.entryPoint, recipe.arguments, recipe.environment, and materials.
          },
        },
        &quot;intotoStatement&quot;: { # Spec defined at https://github.com/in-toto/attestation/tree/main/spec#statement The serialized InTotoStatement will be stored as Envelope.payload. Envelope.payloadType is always &quot;application/vnd.in-toto+json&quot;. # In-toto Statement representation as defined in spec. The intoto_statement can contain any type of provenance. The serialized payload of the statement can be stored and signed in the Occurrence&#x27;s envelope.
          &quot;_type&quot;: &quot;A String&quot;, # Always &quot;https://in-toto.io/Statement/v0.1&quot;.
          &quot;predicateType&quot;: &quot;A String&quot;, # &quot;https://slsa.dev/provenance/v0.1&quot; for SlsaProvenance.
          &quot;provenance&quot;: { # Generic Grafeas provenance.
            &quot;builderConfig&quot;: { # required
              &quot;id&quot;: &quot;A String&quot;,
            },
            &quot;materials&quot;: [ # The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on. This is considered to be incomplete unless metadata.completeness.materials is true. Unset or null is equivalent to empty.
              &quot;A String&quot;,
            ],
            &quot;metadata&quot;: { # Other properties of the build.
              &quot;buildFinishedOn&quot;: &quot;A String&quot;, # The timestamp of when the build completed.
              &quot;buildInvocationId&quot;: &quot;A String&quot;, # Identifies the particular build invocation, which can be useful for finding associated logs or other ad-hoc analysis. The value SHOULD be globally unique, per in-toto Provenance spec.
              &quot;buildStartedOn&quot;: &quot;A String&quot;, # The timestamp of when the build started.
              &quot;completeness&quot;: { # Indicates that the builder claims certain fields in this message to be complete. # Indicates that the builder claims certain fields in this message to be complete.
                &quot;arguments&quot;: True or False, # If true, the builder claims that recipe.arguments is complete, meaning that all external inputs are properly captured in the recipe.
                &quot;environment&quot;: True or False, # If true, the builder claims that recipe.environment is claimed to be complete.
                &quot;materials&quot;: True or False, # If true, the builder claims that materials are complete, usually through some controls to prevent network access. Sometimes called &quot;hermetic&quot;.
              },
              &quot;reproducible&quot;: True or False, # If true, the builder claims that running the recipe on materials will produce bit-for-bit identical output.
            },
            &quot;recipe&quot;: { # Steps taken to build the artifact. For a TaskRun, typically each container corresponds to one step in the recipe. # Identifies the configuration used for the build. When combined with materials, this SHOULD fully describe the build, such that re-running this recipe results in bit-for-bit identical output (if the build is reproducible). required
              &quot;arguments&quot;: [ # Collection of all external inputs that influenced the build on top of recipe.definedInMaterial and recipe.entryPoint. For example, if the recipe type were &quot;make&quot;, then this might be the flags passed to make aside from the target, which is captured in recipe.entryPoint.
                {
                  &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                },
              ],
              &quot;definedInMaterial&quot;: &quot;A String&quot;, # Index in materials containing the recipe steps that are not implied by recipe.type. For example, if the recipe type were &quot;make&quot;, then this would point to the source containing the Makefile, not the make program itself. Set to -1 if the recipe doesn&#x27;t come from a material, as zero is default unset value for int64.
              &quot;entryPoint&quot;: &quot;A String&quot;, # String identifying the entry point into the build. This is often a path to a configuration file and/or a target label within that file. The syntax and meaning are defined by recipe.type. For example, if the recipe type were &quot;make&quot;, then this would reference the directory in which to run make as well as which target to use.
              &quot;environment&quot;: [ # Any other builder-controlled inputs necessary for correctly evaluating the recipe. Usually only needed for reproducing the build but not evaluated as part of policy.
                {
                  &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                },
              ],
              &quot;type&quot;: &quot;A String&quot;, # URI indicating what type of recipe was performed. It determines the meaning of recipe.entryPoint, recipe.arguments, recipe.environment, and materials.
            },
          },
          &quot;slsaProvenance&quot;: { # SlsaProvenance is the slsa provenance as defined by the slsa spec. # SLSA 0.1 provenance.
            &quot;builder&quot;: { # SlsaBuilder encapsulates the identity of the builder of this provenance. # builder is the builder of this provenance
              &quot;id&quot;: &quot;A String&quot;, # id is the id of the slsa provenance builder
            },
            &quot;materials&quot;: [ # The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on. This is considered to be incomplete unless metadata.completeness.materials is true. Unset or null is equivalent to empty.
              { # Material is a material used in the generation of the provenance
                &quot;digest&quot;: { # digest is a map from a hash algorithm (e.g. sha256) to the value in the material
                  &quot;a_key&quot;: &quot;A String&quot;,
                },
                &quot;uri&quot;: &quot;A String&quot;, # uri is the uri of the material
              },
            ],
            &quot;metadata&quot;: { # Other properties of the build. # metadata is the metadata of the provenance
              &quot;buildFinishedOn&quot;: &quot;A String&quot;, # The timestamp of when the build completed.
              &quot;buildInvocationId&quot;: &quot;A String&quot;, # Identifies the particular build invocation, which can be useful for finding associated logs or other ad-hoc analysis. The value SHOULD be globally unique, per in-toto Provenance spec.
              &quot;buildStartedOn&quot;: &quot;A String&quot;, # The timestamp of when the build started.
              &quot;completeness&quot;: { # Indicates that the builder claims certain fields in this message to be complete. # Indicates that the builder claims certain fields in this message to be complete.
                &quot;arguments&quot;: True or False, # If true, the builder claims that recipe.arguments is complete, meaning that all external inputs are properly captured in the recipe.
                &quot;environment&quot;: True or False, # If true, the builder claims that recipe.environment is claimed to be complete.
                &quot;materials&quot;: True or False, # If true, the builder claims that materials are complete, usually through some controls to prevent network access. Sometimes called &quot;hermetic&quot;.
              },
              &quot;reproducible&quot;: True or False, # If true, the builder claims that running the recipe on materials will produce bit-for-bit identical output.
            },
            &quot;recipe&quot;: { # Steps taken to build the artifact. For a TaskRun, typically each container corresponds to one step in the recipe. # Identifies the configuration used for the build. When combined with materials, this SHOULD fully describe the build, such that re-running this recipe results in bit-for-bit identical output (if the build is reproducible).
              &quot;arguments&quot;: { # Collection of all external inputs that influenced the build on top of recipe.definedInMaterial and recipe.entryPoint. For example, if the recipe type were &quot;make&quot;, then this might be the flags passed to make aside from the target, which is captured in recipe.entryPoint. Depending on the recipe Type, the structure may be different.
                &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
              },
              &quot;definedInMaterial&quot;: &quot;A String&quot;, # Index in materials containing the recipe steps that are not implied by recipe.type. For example, if the recipe type were &quot;make&quot;, then this would point to the source containing the Makefile, not the make program itself. Set to -1 if the recipe doesn&#x27;t come from a material, as zero is default unset value for int64.
              &quot;entryPoint&quot;: &quot;A String&quot;, # String identifying the entry point into the build. This is often a path to a configuration file and/or a target label within that file. The syntax and meaning are defined by recipe.type. For example, if the recipe type were &quot;make&quot;, then this would reference the directory in which to run make as well as which target to use.
              &quot;environment&quot;: { # Any other builder-controlled inputs necessary for correctly evaluating the recipe. Usually only needed for reproducing the build but not evaluated as part of policy. Depending on the recipe Type, the structure may be different.
                &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
              },
              &quot;type&quot;: &quot;A String&quot;, # URI indicating what type of recipe was performed. It determines the meaning of recipe.entryPoint, recipe.arguments, recipe.environment, and materials.
            },
          },
          &quot;slsaProvenanceZeroTwo&quot;: { # SlsaProvenanceZeroTwo is the slsa provenance as defined by the slsa spec. See full explanation of fields at slsa.dev/provenance/v0.2. # SLSA 0.2 provenance.
            &quot;buildConfig&quot;: { # Lists the steps in the build.
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
            },
            &quot;buildType&quot;: &quot;A String&quot;, # URI indicating what type of build was performed.
            &quot;builder&quot;: { # Identifies the entity that executed the recipe, which is trusted to have correctly performed the operation and populated this provenance. # Identifies the entity that executed the recipe, which is trusted to have correctly performed the operation and populated this provenance.
              &quot;id&quot;: &quot;A String&quot;, # URI indicating the builder’s identity.
            },
            &quot;invocation&quot;: { # Identifies the event that kicked off the build. # Identifies the event that kicked off the build.
              &quot;configSource&quot;: { # Describes where the config file that kicked off the build came from. This is effectively a pointer to the source where buildConfig came from. # Describes where the config file that kicked off the build came from.
                &quot;digest&quot;: { # Collection of cryptographic digests for the contents of the artifact specified by invocation.configSource.uri.
                  &quot;a_key&quot;: &quot;A String&quot;,
                },
                &quot;entryPoint&quot;: &quot;A String&quot;, # String identifying the entry point into the build.
                &quot;uri&quot;: &quot;A String&quot;, # URI indicating the identity of the source of the config.
              },
              &quot;environment&quot;: { # Any other builder-controlled inputs necessary for correctly evaluating the build.
                &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
              },
              &quot;parameters&quot;: { # Collection of all external inputs that influenced the build on top of invocation.configSource.
                &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
              },
            },
            &quot;materials&quot;: [ # The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on.
              { # The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on.
                &quot;digest&quot;: { # Collection of cryptographic digests for the contents of this artifact.
                  &quot;a_key&quot;: &quot;A String&quot;,
                },
                &quot;uri&quot;: &quot;A String&quot;, # The method by which this artifact was referenced during the build.
              },
            ],
            &quot;metadata&quot;: { # Other properties of the build. # Other properties of the build.
              &quot;buildFinishedOn&quot;: &quot;A String&quot;, # The timestamp of when the build completed.
              &quot;buildInvocationId&quot;: &quot;A String&quot;, # Identifies this particular build invocation, which can be useful for finding associated logs or other ad-hoc analysis.
              &quot;buildStartedOn&quot;: &quot;A String&quot;, # The timestamp of when the build started.
              &quot;completeness&quot;: { # Indicates that the builder claims certain fields in this message to be complete. # Indicates that the builder claims certain fields in this message to be complete.
                &quot;environment&quot;: True or False, # If true, the builder claims that invocation.environment is complete.
                &quot;materials&quot;: True or False, # If true, the builder claims that materials is complete.
                &quot;parameters&quot;: True or False, # If true, the builder claims that invocation.parameters is complete.
              },
              &quot;reproducible&quot;: True or False, # If true, the builder claims that running invocation on materials will produce bit-for-bit identical output.
            },
          },
          &quot;subject&quot;: [ # subject is the subjects of the intoto statement
            { # Subject refers to the subject of the intoto statement
              &quot;digest&quot;: { # &quot;&quot;: &quot;&quot; Algorithms can be e.g. sha256, sha512 See https://github.com/in-toto/attestation/blob/main/spec/field_types.md#DigestSet
                &quot;a_key&quot;: &quot;A String&quot;,
              },
              &quot;name&quot;: &quot;A String&quot;, # name is the name of the Subject used here
            },
          ],
        },
        &quot;provenance&quot;: { # Provenance of a build. Contains all information needed to verify the full details about the build from source to completion. # The actual provenance
          &quot;buildOptions&quot;: { # Special options applied to this build. This is a catch-all field where build providers can enter any desired additional details.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;builderVersion&quot;: &quot;A String&quot;, # Version string of the builder at the time this build was executed.
          &quot;builtArtifacts&quot;: [ # Output of the build.
            { # Artifact describes a build product.
              &quot;checksum&quot;: &quot;A String&quot;, # Hash or checksum value of a binary, or Docker Registry 2.0 digest of a container.
              &quot;id&quot;: &quot;A String&quot;, # Artifact ID, if any; for container images, this will be a URL by digest like gcr.io/projectID/imagename@sha256:123456
              &quot;name&quot;: &quot;A String&quot;, # Name of the artifact. This may be the path to a binary or jar file, or in the case of a container build, the name used to push the container image to Google Container Registry, as presented to `docker push`. This field is deprecated in favor of the plural `names` field; it continues to exist here to allow existing BuildProvenance serialized to json in google.devtools.containeranalysis.v1alpha1.BuildDetails.provenance_bytes to deserialize back into proto.
              &quot;names&quot;: [ # Related artifact names. This may be the path to a binary or jar file, or in the case of a container build, the name used to push the container image to Google Container Registry, as presented to `docker push`. Note that a single Artifact ID can have multiple names, for example if two tags are applied to one image.
                &quot;A String&quot;,
              ],
            },
          ],
          &quot;commands&quot;: [ # Commands requested by the build.
            { # Command describes a step performed as part of the build pipeline.
              &quot;args&quot;: [ # Command-line arguments used when executing this Command.
                &quot;A String&quot;,
              ],
              &quot;dir&quot;: &quot;A String&quot;, # Working directory (relative to project source root) used when running this Command.
              &quot;env&quot;: [ # Environment variables set before running this Command.
                &quot;A String&quot;,
              ],
              &quot;id&quot;: &quot;A String&quot;, # Optional unique identifier for this Command, used in wait_for to reference this Command as a dependency.
              &quot;name&quot;: &quot;A String&quot;, # Name of the command, as presented on the command line, or if the command is packaged as a Docker container, as presented to `docker pull`.
              &quot;waitFor&quot;: [ # The ID(s) of the Command(s) that this Command depends on.
                &quot;A String&quot;,
              ],
            },
          ],
          &quot;createTime&quot;: &quot;A String&quot;, # Time at which the build was created.
          &quot;creator&quot;: &quot;A String&quot;, # E-mail address of the user who initiated this build. Note that this was the user&#x27;s e-mail address at the time the build was initiated; this address may not represent the same end-user for all time.
          &quot;finishTime&quot;: &quot;A String&quot;, # Time at which execution of the build was finished.
          &quot;id&quot;: &quot;A String&quot;, # Unique identifier of the build.
          &quot;logsBucket&quot;: &quot;A String&quot;, # Google Cloud Storage bucket where logs were written.
          &quot;projectId&quot;: &quot;A String&quot;, # ID of the project.
          &quot;sourceProvenance&quot;: { # Source describes the location of the source used for the build. # Details of the Source input to the build.
            &quot;additionalContexts&quot;: [ # If provided, some of the source code used for the build may be found in these locations, in the case where the source repository had multiple remotes or submodules. This list will not include the context specified in the context field.
              { # A SourceContext is a reference to a tree of files. A SourceContext together with a path point to a unique revision of a single file or directory.
                &quot;cloudRepo&quot;: { # A CloudRepoSourceContext denotes a particular revision in a Google Cloud Source Repo. # A SourceContext referring to a revision in a Google Cloud Source Repo.
                  &quot;aliasContext&quot;: { # An alias to a repo revision. # An alias, which may be a branch or tag.
                    &quot;kind&quot;: &quot;A String&quot;, # The alias kind.
                    &quot;name&quot;: &quot;A String&quot;, # The alias name.
                  },
                  &quot;repoId&quot;: { # A unique identifier for a Cloud Repo. # The ID of the repo.
                    &quot;projectRepoId&quot;: { # Selects a repo using a Google Cloud Platform project ID (e.g., winged-cargo-31) and a repo name within that project. # A combination of a project ID and a repo name.
                      &quot;projectId&quot;: &quot;A String&quot;, # The ID of the project.
                      &quot;repoName&quot;: &quot;A String&quot;, # The name of the repo. Leave empty for the default repo.
                    },
                    &quot;uid&quot;: &quot;A String&quot;, # A server-assigned, globally unique identifier.
                  },
                  &quot;revisionId&quot;: &quot;A String&quot;, # A revision ID.
                },
                &quot;gerrit&quot;: { # A SourceContext referring to a Gerrit project. # A SourceContext referring to a Gerrit project.
                  &quot;aliasContext&quot;: { # An alias to a repo revision. # An alias, which may be a branch or tag.
                    &quot;kind&quot;: &quot;A String&quot;, # The alias kind.
                    &quot;name&quot;: &quot;A String&quot;, # The alias name.
                  },
                  &quot;gerritProject&quot;: &quot;A String&quot;, # The full project name within the host. Projects may be nested, so &quot;project/subproject&quot; is a valid project name. The &quot;repo name&quot; is the hostURI/project.
                  &quot;hostUri&quot;: &quot;A String&quot;, # The URI of a running Gerrit instance.
                  &quot;revisionId&quot;: &quot;A String&quot;, # A revision (commit) ID.
                },
                &quot;git&quot;: { # A GitSourceContext denotes a particular revision in a third party Git repository (e.g., GitHub). # A SourceContext referring to any third party Git repo (e.g., GitHub).
                  &quot;revisionId&quot;: &quot;A String&quot;, # Required. Git commit hash.
                  &quot;url&quot;: &quot;A String&quot;, # Git repository URL.
                },
                &quot;labels&quot;: { # Labels with user defined metadata.
                  &quot;a_key&quot;: &quot;A String&quot;,
                },
              },
            ],
            &quot;artifactStorageSource&quot;: { # StorageSource describes the location of the source in an archive file in Google Cloud Storage. # If provided, the input binary artifacts for the build came from this location.
              &quot;bucket&quot;: &quot;A String&quot;, # Google Cloud Storage bucket containing source (see [Bucket Name Requirements] (https://cloud.google.com/storage/docs/bucket-naming#requirements)).
              &quot;generation&quot;: &quot;A String&quot;, # Google Cloud Storage generation for the object.
              &quot;object&quot;: &quot;A String&quot;, # Google Cloud Storage object containing source.
            },
            &quot;context&quot;: { # A SourceContext is a reference to a tree of files. A SourceContext together with a path point to a unique revision of a single file or directory. # If provided, the source code used for the build came from this location.
              &quot;cloudRepo&quot;: { # A CloudRepoSourceContext denotes a particular revision in a Google Cloud Source Repo. # A SourceContext referring to a revision in a Google Cloud Source Repo.
                &quot;aliasContext&quot;: { # An alias to a repo revision. # An alias, which may be a branch or tag.
                  &quot;kind&quot;: &quot;A String&quot;, # The alias kind.
                  &quot;name&quot;: &quot;A String&quot;, # The alias name.
                },
                &quot;repoId&quot;: { # A unique identifier for a Cloud Repo. # The ID of the repo.
                  &quot;projectRepoId&quot;: { # Selects a repo using a Google Cloud Platform project ID (e.g., winged-cargo-31) and a repo name within that project. # A combination of a project ID and a repo name.
                    &quot;projectId&quot;: &quot;A String&quot;, # The ID of the project.
                    &quot;repoName&quot;: &quot;A String&quot;, # The name of the repo. Leave empty for the default repo.
                  },
                  &quot;uid&quot;: &quot;A String&quot;, # A server-assigned, globally unique identifier.
                },
                &quot;revisionId&quot;: &quot;A String&quot;, # A revision ID.
              },
              &quot;gerrit&quot;: { # A SourceContext referring to a Gerrit project. # A SourceContext referring to a Gerrit project.
                &quot;aliasContext&quot;: { # An alias to a repo revision. # An alias, which may be a branch or tag.
                  &quot;kind&quot;: &quot;A String&quot;, # The alias kind.
                  &quot;name&quot;: &quot;A String&quot;, # The alias name.
                },
                &quot;gerritProject&quot;: &quot;A String&quot;, # The full project name within the host. Projects may be nested, so &quot;project/subproject&quot; is a valid project name. The &quot;repo name&quot; is the hostURI/project.
                &quot;hostUri&quot;: &quot;A String&quot;, # The URI of a running Gerrit instance.
                &quot;revisionId&quot;: &quot;A String&quot;, # A revision (commit) ID.
              },
              &quot;git&quot;: { # A GitSourceContext denotes a particular revision in a third party Git repository (e.g., GitHub). # A SourceContext referring to any third party Git repo (e.g., GitHub).
                &quot;revisionId&quot;: &quot;A String&quot;, # Required. Git commit hash.
                &quot;url&quot;: &quot;A String&quot;, # Git repository URL.
              },
              &quot;labels&quot;: { # Labels with user defined metadata.
                &quot;a_key&quot;: &quot;A String&quot;,
              },
            },
            &quot;fileHashes&quot;: { # Hash(es) of the build source, which can be used to verify that the original source integrity was maintained in the build. The keys to this map are file paths used as build source and the values contain the hash values for those files. If the build source came in a single package such as a gzipped tarfile (.tar.gz), the FileHash will be for the single path to that file.
              &quot;a_key&quot;: { # Container message for hashes of byte content of files, used in Source messages to verify integrity of source input to the build.
                &quot;fileHash&quot;: [ # Collection of file hashes.
                  { # Container message for hash values.
                    &quot;type&quot;: &quot;A String&quot;, # The type of hash that was performed.
                    &quot;value&quot;: &quot;A String&quot;, # The hash value.
                  },
                ],
              },
            },
            &quot;repoSource&quot;: { # RepoSource describes the location of the source in a Google Cloud Source Repository. # If provided, get source from this location in a Cloud Repo.
              &quot;branchName&quot;: &quot;A String&quot;, # Name of the branch to build.
              &quot;commitSha&quot;: &quot;A String&quot;, # Explicit commit SHA to build.
              &quot;projectId&quot;: &quot;A String&quot;, # ID of the project that owns the repo.
              &quot;repoName&quot;: &quot;A String&quot;, # Name of the repo.
              &quot;tagName&quot;: &quot;A String&quot;, # Name of the tag to build.
            },
            &quot;storageSource&quot;: { # StorageSource describes the location of the source in an archive file in Google Cloud Storage. # If provided, get the source from this location in Google Cloud Storage.
              &quot;bucket&quot;: &quot;A String&quot;, # Google Cloud Storage bucket containing source (see [Bucket Name Requirements] (https://cloud.google.com/storage/docs/bucket-naming#requirements)).
              &quot;generation&quot;: &quot;A String&quot;, # Google Cloud Storage generation for the object.
              &quot;object&quot;: &quot;A String&quot;, # Google Cloud Storage object containing source.
            },
          },
          &quot;startTime&quot;: &quot;A String&quot;, # Time at which execution of the build was started.
          &quot;triggerId&quot;: &quot;A String&quot;, # Trigger identifier if the build was triggered automatically; empty if not.
        },
        &quot;provenanceBytes&quot;: &quot;A String&quot;, # Serialized JSON representation of the provenance, used in generating the `BuildSignature` in the corresponding Result. After verifying the signature, `provenance_bytes` can be unmarshalled and compared to the provenance to confirm that it is unchanged. A base64-encoded string representation of the provenance bytes is used for the signature in order to interoperate with openssl which expects this format for signature verification. The serialized form is captured both to avoid ambiguity in how the provenance is marshalled to json as well to prevent incompatibilities with future changes.
      },
      &quot;compliance&quot;: { # An indication that the compliance checks in the associated ComplianceNote were not satisfied for particular resources or a specified reason. # Describes whether or not a resource passes compliance checks.
        &quot;nonComplianceReason&quot;: &quot;A String&quot;, # The reason for non compliance of these files.
        &quot;nonCompliantFiles&quot;: [ # A list of files which are violating compliance checks.
          { # Details about files that caused a compliance check to fail.
            &quot;displayCommand&quot;: &quot;A String&quot;, # Command to display the non-compliant files.
            &quot;path&quot;: &quot;A String&quot;, # display_command is a single command that can be used to display a list of non compliant files. When there is no such command, we can also iterate a list of non compliant file using &#x27;path&#x27;. Empty if `display_command` is set.
            &quot;reason&quot;: &quot;A String&quot;, # Explains why a file is non compliant for a CIS check.
          },
        ],
      },
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time this `Occurrence` was created.
      &quot;deployment&quot;: { # The period during which some deployable was active in a runtime. # Describes the deployment of an artifact on a runtime.
        &quot;address&quot;: &quot;A String&quot;, # Address of the runtime element hosting this deployment.
        &quot;config&quot;: &quot;A String&quot;, # Configuration used to create this deployment.
        &quot;deployTime&quot;: &quot;A String&quot;, # Beginning of the lifetime of this deployment.
        &quot;platform&quot;: &quot;A String&quot;, # Platform hosting this deployment.
        &quot;resourceUri&quot;: [ # Resource URI for the artifact being deployed taken from the deployable field with the same name.
          &quot;A String&quot;,
        ],
        &quot;undeployTime&quot;: &quot;A String&quot;, # End of the lifetime of this deployment.
        &quot;userEmail&quot;: &quot;A String&quot;, # Identity of the user that triggered this deployment.
      },
      &quot;derivedImage&quot;: { # Derived describes the derived image portion (Occurrence) of the DockerImage relationship. This image would be produced from a Dockerfile with FROM . # Describes how this resource derives from the basis in the associated note.
        &quot;baseResourceUrl&quot;: &quot;A String&quot;, # Output only. This contains the base image URL for the derived image occurrence.
        &quot;distance&quot;: 42, # Output only. The number of layers by which this image differs from the associated image basis.
        &quot;fingerprint&quot;: { # A set of properties that uniquely identify a given Docker image. # The fingerprint of the derived image.
          &quot;v1Name&quot;: &quot;A String&quot;, # The layer-id of the final layer in the Docker image&#x27;s v1 representation. This field can be used as a filter in list requests.
          &quot;v2Blob&quot;: [ # 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. This field can be used as a filter in list requests.
        },
        &quot;layerInfo&quot;: [ # This contains layer-specific metadata, if populated it has length &quot;distance&quot; and is ordered with [distance] being the layer immediately following the base image and [1] being the final layer.
          { # Layer holds metadata specific to a layer of a Docker image.
            &quot;arguments&quot;: &quot;A String&quot;, # The recovered arguments to the Dockerfile directive.
            &quot;directive&quot;: &quot;A String&quot;, # The recovered Dockerfile directive used to construct this layer.
          },
        ],
      },
      &quot;discovered&quot;: { # Provides information about the scan status of a discovered resource. # Describes the initial scan status for this resource.
        &quot;analysisCompleted&quot;: { # Indicates which analysis completed successfully. Multiple types of analysis can be performed on a single resource. # The list of analysis that were completed for a resource.
          &quot;analysisType&quot;: [ # type of analysis that were completed on a resource.
            &quot;A String&quot;,
          ],
        },
        &quot;analysisError&quot;: [ # Indicates any errors encountered during analysis of a resource. There could be 0 or more of these errors.
          { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).
            &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
            &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
              {
                &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
              },
            ],
            &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
          },
        ],
        &quot;analysisStatus&quot;: &quot;A String&quot;, # The status of discovery for the resource.
        &quot;analysisStatusError&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # When an error is encountered this will contain a LocalizedMessage under details to show to the user. The LocalizedMessage output only and populated by the API.
          &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
          &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
            {
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
            },
          ],
          &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
        },
        &quot;archiveTime&quot;: &quot;A String&quot;, # The time occurrences related to this discovery occurrence were archived.
        &quot;continuousAnalysis&quot;: &quot;A String&quot;, # Whether the resource is continuously analyzed.
        &quot;cpe&quot;: &quot;A String&quot;, # The CPE of the resource being scanned.
        &quot;lastScanTime&quot;: &quot;A String&quot;, # The last time this resource was scanned.
        &quot;operation&quot;: { # This resource represents a long-running operation that is the result of a network API call. # Output only. An operation that indicates the status of the current scan. This field is deprecated, do not use.
          &quot;done&quot;: True or False, # If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.
          &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure or cancellation.
            &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
            &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
              {
                &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
              },
            ],
            &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
          },
          &quot;metadata&quot;: { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
          },
          &quot;name&quot;: &quot;A String&quot;, # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.
          &quot;response&quot;: { # The normal, successful response of the operation. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
          },
        },
        &quot;sbomStatus&quot;: { # The status of an SBOM generation. # Output only. The status of an SBOM generation.
          &quot;error&quot;: &quot;A String&quot;, # Output only. If there was an error generating an SBOM, this will indicate what that error was.
          &quot;sbomState&quot;: &quot;A String&quot;, # Output only. The progress of the SBOM generation.
        },
      },
      &quot;dsseAttestation&quot;: { # An occurrence describing an attestation on a resource # This represents a DSSE attestation occurrence
        &quot;envelope&quot;: { # MUST match https://github.com/secure-systems-lab/dsse/blob/master/envelope.proto. An authenticated message of arbitrary type. # If doing something security critical, make sure to verify the signatures in this metadata.
          &quot;payload&quot;: &quot;A String&quot;, # The bytes being signed
          &quot;payloadType&quot;: &quot;A String&quot;, # The type of payload being signed
          &quot;signatures&quot;: [ # The signatures over the payload
            { # A DSSE signature
              &quot;keyid&quot;: &quot;A String&quot;, # A reference id to the key being used for signing
              &quot;sig&quot;: &quot;A String&quot;, # The signature itself
            },
          ],
        },
        &quot;statement&quot;: { # Spec defined at https://github.com/in-toto/attestation/tree/main/spec#statement The serialized InTotoStatement will be stored as Envelope.payload. Envelope.payloadType is always &quot;application/vnd.in-toto+json&quot;.
          &quot;_type&quot;: &quot;A String&quot;, # Always &quot;https://in-toto.io/Statement/v0.1&quot;.
          &quot;predicateType&quot;: &quot;A String&quot;, # &quot;https://slsa.dev/provenance/v0.1&quot; for SlsaProvenance.
          &quot;provenance&quot;: { # Generic Grafeas provenance.
            &quot;builderConfig&quot;: { # required
              &quot;id&quot;: &quot;A String&quot;,
            },
            &quot;materials&quot;: [ # The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on. This is considered to be incomplete unless metadata.completeness.materials is true. Unset or null is equivalent to empty.
              &quot;A String&quot;,
            ],
            &quot;metadata&quot;: { # Other properties of the build.
              &quot;buildFinishedOn&quot;: &quot;A String&quot;, # The timestamp of when the build completed.
              &quot;buildInvocationId&quot;: &quot;A String&quot;, # Identifies the particular build invocation, which can be useful for finding associated logs or other ad-hoc analysis. The value SHOULD be globally unique, per in-toto Provenance spec.
              &quot;buildStartedOn&quot;: &quot;A String&quot;, # The timestamp of when the build started.
              &quot;completeness&quot;: { # Indicates that the builder claims certain fields in this message to be complete. # Indicates that the builder claims certain fields in this message to be complete.
                &quot;arguments&quot;: True or False, # If true, the builder claims that recipe.arguments is complete, meaning that all external inputs are properly captured in the recipe.
                &quot;environment&quot;: True or False, # If true, the builder claims that recipe.environment is claimed to be complete.
                &quot;materials&quot;: True or False, # If true, the builder claims that materials are complete, usually through some controls to prevent network access. Sometimes called &quot;hermetic&quot;.
              },
              &quot;reproducible&quot;: True or False, # If true, the builder claims that running the recipe on materials will produce bit-for-bit identical output.
            },
            &quot;recipe&quot;: { # Steps taken to build the artifact. For a TaskRun, typically each container corresponds to one step in the recipe. # Identifies the configuration used for the build. When combined with materials, this SHOULD fully describe the build, such that re-running this recipe results in bit-for-bit identical output (if the build is reproducible). required
              &quot;arguments&quot;: [ # Collection of all external inputs that influenced the build on top of recipe.definedInMaterial and recipe.entryPoint. For example, if the recipe type were &quot;make&quot;, then this might be the flags passed to make aside from the target, which is captured in recipe.entryPoint.
                {
                  &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                },
              ],
              &quot;definedInMaterial&quot;: &quot;A String&quot;, # Index in materials containing the recipe steps that are not implied by recipe.type. For example, if the recipe type were &quot;make&quot;, then this would point to the source containing the Makefile, not the make program itself. Set to -1 if the recipe doesn&#x27;t come from a material, as zero is default unset value for int64.
              &quot;entryPoint&quot;: &quot;A String&quot;, # String identifying the entry point into the build. This is often a path to a configuration file and/or a target label within that file. The syntax and meaning are defined by recipe.type. For example, if the recipe type were &quot;make&quot;, then this would reference the directory in which to run make as well as which target to use.
              &quot;environment&quot;: [ # Any other builder-controlled inputs necessary for correctly evaluating the recipe. Usually only needed for reproducing the build but not evaluated as part of policy.
                {
                  &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                },
              ],
              &quot;type&quot;: &quot;A String&quot;, # URI indicating what type of recipe was performed. It determines the meaning of recipe.entryPoint, recipe.arguments, recipe.environment, and materials.
            },
          },
          &quot;slsaProvenance&quot;: { # SlsaProvenance is the slsa provenance as defined by the slsa spec. # SLSA 0.1 provenance.
            &quot;builder&quot;: { # SlsaBuilder encapsulates the identity of the builder of this provenance. # builder is the builder of this provenance
              &quot;id&quot;: &quot;A String&quot;, # id is the id of the slsa provenance builder
            },
            &quot;materials&quot;: [ # The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on. This is considered to be incomplete unless metadata.completeness.materials is true. Unset or null is equivalent to empty.
              { # Material is a material used in the generation of the provenance
                &quot;digest&quot;: { # digest is a map from a hash algorithm (e.g. sha256) to the value in the material
                  &quot;a_key&quot;: &quot;A String&quot;,
                },
                &quot;uri&quot;: &quot;A String&quot;, # uri is the uri of the material
              },
            ],
            &quot;metadata&quot;: { # Other properties of the build. # metadata is the metadata of the provenance
              &quot;buildFinishedOn&quot;: &quot;A String&quot;, # The timestamp of when the build completed.
              &quot;buildInvocationId&quot;: &quot;A String&quot;, # Identifies the particular build invocation, which can be useful for finding associated logs or other ad-hoc analysis. The value SHOULD be globally unique, per in-toto Provenance spec.
              &quot;buildStartedOn&quot;: &quot;A String&quot;, # The timestamp of when the build started.
              &quot;completeness&quot;: { # Indicates that the builder claims certain fields in this message to be complete. # Indicates that the builder claims certain fields in this message to be complete.
                &quot;arguments&quot;: True or False, # If true, the builder claims that recipe.arguments is complete, meaning that all external inputs are properly captured in the recipe.
                &quot;environment&quot;: True or False, # If true, the builder claims that recipe.environment is claimed to be complete.
                &quot;materials&quot;: True or False, # If true, the builder claims that materials are complete, usually through some controls to prevent network access. Sometimes called &quot;hermetic&quot;.
              },
              &quot;reproducible&quot;: True or False, # If true, the builder claims that running the recipe on materials will produce bit-for-bit identical output.
            },
            &quot;recipe&quot;: { # Steps taken to build the artifact. For a TaskRun, typically each container corresponds to one step in the recipe. # Identifies the configuration used for the build. When combined with materials, this SHOULD fully describe the build, such that re-running this recipe results in bit-for-bit identical output (if the build is reproducible).
              &quot;arguments&quot;: { # Collection of all external inputs that influenced the build on top of recipe.definedInMaterial and recipe.entryPoint. For example, if the recipe type were &quot;make&quot;, then this might be the flags passed to make aside from the target, which is captured in recipe.entryPoint. Depending on the recipe Type, the structure may be different.
                &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
              },
              &quot;definedInMaterial&quot;: &quot;A String&quot;, # Index in materials containing the recipe steps that are not implied by recipe.type. For example, if the recipe type were &quot;make&quot;, then this would point to the source containing the Makefile, not the make program itself. Set to -1 if the recipe doesn&#x27;t come from a material, as zero is default unset value for int64.
              &quot;entryPoint&quot;: &quot;A String&quot;, # String identifying the entry point into the build. This is often a path to a configuration file and/or a target label within that file. The syntax and meaning are defined by recipe.type. For example, if the recipe type were &quot;make&quot;, then this would reference the directory in which to run make as well as which target to use.
              &quot;environment&quot;: { # Any other builder-controlled inputs necessary for correctly evaluating the recipe. Usually only needed for reproducing the build but not evaluated as part of policy. Depending on the recipe Type, the structure may be different.
                &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
              },
              &quot;type&quot;: &quot;A String&quot;, # URI indicating what type of recipe was performed. It determines the meaning of recipe.entryPoint, recipe.arguments, recipe.environment, and materials.
            },
          },
          &quot;slsaProvenanceZeroTwo&quot;: { # SlsaProvenanceZeroTwo is the slsa provenance as defined by the slsa spec. See full explanation of fields at slsa.dev/provenance/v0.2. # SLSA 0.2 provenance.
            &quot;buildConfig&quot;: { # Lists the steps in the build.
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
            },
            &quot;buildType&quot;: &quot;A String&quot;, # URI indicating what type of build was performed.
            &quot;builder&quot;: { # Identifies the entity that executed the recipe, which is trusted to have correctly performed the operation and populated this provenance. # Identifies the entity that executed the recipe, which is trusted to have correctly performed the operation and populated this provenance.
              &quot;id&quot;: &quot;A String&quot;, # URI indicating the builder’s identity.
            },
            &quot;invocation&quot;: { # Identifies the event that kicked off the build. # Identifies the event that kicked off the build.
              &quot;configSource&quot;: { # Describes where the config file that kicked off the build came from. This is effectively a pointer to the source where buildConfig came from. # Describes where the config file that kicked off the build came from.
                &quot;digest&quot;: { # Collection of cryptographic digests for the contents of the artifact specified by invocation.configSource.uri.
                  &quot;a_key&quot;: &quot;A String&quot;,
                },
                &quot;entryPoint&quot;: &quot;A String&quot;, # String identifying the entry point into the build.
                &quot;uri&quot;: &quot;A String&quot;, # URI indicating the identity of the source of the config.
              },
              &quot;environment&quot;: { # Any other builder-controlled inputs necessary for correctly evaluating the build.
                &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
              },
              &quot;parameters&quot;: { # Collection of all external inputs that influenced the build on top of invocation.configSource.
                &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
              },
            },
            &quot;materials&quot;: [ # The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on.
              { # The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on.
                &quot;digest&quot;: { # Collection of cryptographic digests for the contents of this artifact.
                  &quot;a_key&quot;: &quot;A String&quot;,
                },
                &quot;uri&quot;: &quot;A String&quot;, # The method by which this artifact was referenced during the build.
              },
            ],
            &quot;metadata&quot;: { # Other properties of the build. # Other properties of the build.
              &quot;buildFinishedOn&quot;: &quot;A String&quot;, # The timestamp of when the build completed.
              &quot;buildInvocationId&quot;: &quot;A String&quot;, # Identifies this particular build invocation, which can be useful for finding associated logs or other ad-hoc analysis.
              &quot;buildStartedOn&quot;: &quot;A String&quot;, # The timestamp of when the build started.
              &quot;completeness&quot;: { # Indicates that the builder claims certain fields in this message to be complete. # Indicates that the builder claims certain fields in this message to be complete.
                &quot;environment&quot;: True or False, # If true, the builder claims that invocation.environment is complete.
                &quot;materials&quot;: True or False, # If true, the builder claims that materials is complete.
                &quot;parameters&quot;: True or False, # If true, the builder claims that invocation.parameters is complete.
              },
              &quot;reproducible&quot;: True or False, # If true, the builder claims that running invocation on materials will produce bit-for-bit identical output.
            },
          },
          &quot;subject&quot;: [ # subject is the subjects of the intoto statement
            { # Subject refers to the subject of the intoto statement
              &quot;digest&quot;: { # &quot;&quot;: &quot;&quot; Algorithms can be e.g. sha256, sha512 See https://github.com/in-toto/attestation/blob/main/spec/field_types.md#DigestSet
                &quot;a_key&quot;: &quot;A String&quot;,
              },
              &quot;name&quot;: &quot;A String&quot;, # name is the name of the Subject used here
            },
          ],
        },
      },
      &quot;envelope&quot;: { # MUST match https://github.com/secure-systems-lab/dsse/blob/master/envelope.proto. An authenticated message of arbitrary type. # https://github.com/secure-systems-lab/dsse
        &quot;payload&quot;: &quot;A String&quot;, # The bytes being signed
        &quot;payloadType&quot;: &quot;A String&quot;, # The type of payload being signed
        &quot;signatures&quot;: [ # The signatures over the payload
          { # A DSSE signature
            &quot;keyid&quot;: &quot;A String&quot;, # A reference id to the key being used for signing
            &quot;sig&quot;: &quot;A String&quot;, # The signature itself
          },
        ],
      },
      &quot;installation&quot;: { # This represents how a particular software package may be installed on a system. # Describes the installation of a package on the linked resource.
        &quot;architecture&quot;: &quot;A String&quot;, # Output only. The CPU architecture for which packages in this distribution channel were built. Architecture will be blank for language packages.
        &quot;cpeUri&quot;: &quot;A String&quot;, # Output only. The cpe_uri in [CPE format](https://cpe.mitre.org/specification/) denoting the package manager version distributing a package. The cpe_uri will be blank for language packages.
        &quot;license&quot;: { # License information. # Licenses that have been declared by the authors of the package.
          &quot;comments&quot;: &quot;A String&quot;, # Comments
          &quot;expression&quot;: &quot;A String&quot;, # Often a single license can be used to represent the licensing terms. Sometimes it is necessary to include a choice of one or more licenses or some combination of license identifiers. Examples: &quot;LGPL-2.1-only OR MIT&quot;, &quot;LGPL-2.1-only AND MIT&quot;, &quot;GPL-2.0-or-later WITH Bison-exception-2.2&quot;.
        },
        &quot;location&quot;: [ # All of the places within the filesystem versions of this package have been found.
          { # An occurrence of a particular package installation found within a system&#x27;s filesystem. e.g. glibc was found in /var/lib/dpkg/status
            &quot;cpeUri&quot;: &quot;A String&quot;, # Deprecated. The cpe_uri in [cpe format](https://cpe.mitre.org/specification/) denoting the package manager version distributing a package.
            &quot;path&quot;: &quot;A String&quot;, # The path from which we gathered that this package/version is installed.
            &quot;version&quot;: { # Version contains structured information about the version of the package. For a discussion of this in Debian/Ubuntu: http://serverfault.com/questions/604541/debian-packages-version-convention For a discussion of this in Redhat/Fedora/Centos: http://blog.jasonantman.com/2014/07/how-yum-and-rpm-compare-versions/ # Deprecated. The version installed at this location.
              &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
              &quot;inclusive&quot;: True or False, # Whether this version is vulnerable, when defining the version bounds. For example, if the minimum version is 2.0, inclusive=true would say 2.0 is vulnerable, while inclusive=false would say it&#x27;s not
              &quot;kind&quot;: &quot;A String&quot;, # Distinguish between sentinel MIN/MAX versions and normal versions. If kind is not NORMAL, then the other fields are ignored.
              &quot;name&quot;: &quot;A String&quot;, # 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;name&quot;: &quot;A String&quot;, # Output only. The name of the installed package.
        &quot;packageType&quot;: &quot;A String&quot;, # Output only. The type of package; whether native or non native (e.g., ruby gems, node.js packages, etc.).
        &quot;version&quot;: { # Version contains structured information about the version of the package. For a discussion of this in Debian/Ubuntu: http://serverfault.com/questions/604541/debian-packages-version-convention For a discussion of this in Redhat/Fedora/Centos: http://blog.jasonantman.com/2014/07/how-yum-and-rpm-compare-versions/ # Output only. The version of the package.
          &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
          &quot;inclusive&quot;: True or False, # Whether this version is vulnerable, when defining the version bounds. For example, if the minimum version is 2.0, inclusive=true would say 2.0 is vulnerable, while inclusive=false would say it&#x27;s not
          &quot;kind&quot;: &quot;A String&quot;, # Distinguish between sentinel MIN/MAX versions and normal versions. If kind is not NORMAL, then the other fields are ignored.
          &quot;name&quot;: &quot;A String&quot;, # 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;kind&quot;: &quot;A String&quot;, # Output only. This explicitly denotes which of the `Occurrence` details are specified. This field can be used as a filter in list requests.
      &quot;name&quot;: &quot;A String&quot;, # Output only. The name of the `Occurrence` in the form &quot;projects/{project_id}/occurrences/{OCCURRENCE_ID}&quot;
      &quot;noteName&quot;: &quot;A String&quot;, # An analysis note associated with this image, in the form &quot;providers/{provider_id}/notes/{NOTE_ID}&quot; This field can be used as a filter in list requests.
      &quot;remediation&quot;: &quot;A String&quot;, # A description of actions that can be taken to remedy the `Note`
      &quot;resource&quot;: { #  Resource is an entity that can have metadata. E.g., a Docker image. #  The resource for which the `Occurrence` applies.
        &quot;contentHash&quot;: { # Container message for hash values. # The hash of the resource content. E.g., the Docker digest.
          &quot;type&quot;: &quot;A String&quot;, # The type of hash that was performed.
          &quot;value&quot;: &quot;A String&quot;, # The hash value.
        },
        &quot;name&quot;: &quot;A String&quot;, # The name of the resource. E.g., the name of a Docker image - &quot;Debian&quot;.
        &quot;uri&quot;: &quot;A String&quot;, # The unique URI of the resource. E.g., &quot;https://gcr.io/project/image@sha256:foo&quot; for a Docker image.
      },
      &quot;resourceUrl&quot;: &quot;A String&quot;, # The unique URL of the image or the container for which the `Occurrence` applies. For example, https://gcr.io/project/image@sha256:foo This field can be used as a filter in list requests.
      &quot;sbom&quot;: { # DocumentOccurrence represents an SPDX Document Creation Information section: https://spdx.github.io/spdx-spec/2-document-creation-information/ # Describes a specific software bill of materials document.
        &quot;createTime&quot;: &quot;A String&quot;, # Identify when the SPDX file was originally created. The date is to be specified according to combined date and time in UTC format as specified in ISO 8601 standard
        &quot;creatorComment&quot;: &quot;A String&quot;, # A field for creators of the SPDX file to provide general comments about the creation of the SPDX file or any other relevant comment not included in the other fields
        &quot;creators&quot;: [ # Identify who (or what, in the case of a tool) created the SPDX file. If the SPDX file was created by an individual, indicate the person&#x27;s name
          &quot;A String&quot;,
        ],
        &quot;documentComment&quot;: &quot;A String&quot;, # A field for creators of the SPDX file content to provide comments to the consumers of the SPDX document
        &quot;externalDocumentRefs&quot;: [ # Identify any external SPDX documents referenced within this SPDX document
          &quot;A String&quot;,
        ],
        &quot;id&quot;: &quot;A String&quot;, # Identify the current SPDX document which may be referenced in relationships by other files, packages internally and documents externally
        &quot;licenseListVersion&quot;: &quot;A String&quot;, # A field for creators of the SPDX file to provide the version of the SPDX License List used when the SPDX file was created
        &quot;namespace&quot;: &quot;A String&quot;, # Provide an SPDX document specific namespace as a unique absolute Uniform Resource Identifier (URI) as specified in RFC-3986, with the exception of the ‘#’ delimiter
        &quot;title&quot;: &quot;A String&quot;, # Identify name of this document as designated by creator
      },
      &quot;sbomReference&quot;: { # The occurrence representing an SBOM reference as applied to a specific resource. The occurrence follows the DSSE specification. See https://github.com/secure-systems-lab/dsse/blob/master/envelope.md for more details. # This represents an SBOM reference occurrence
        &quot;payload&quot;: { # The actual payload that contains the SBOM Reference data. The payload follows the intoto statement specification. See https://github.com/in-toto/attestation/blob/main/spec/v1.0/statement.md for more details. # The actual payload that contains the SBOM reference data.
          &quot;_type&quot;: &quot;A String&quot;, # Identifier for the schema of the Statement.
          &quot;predicate&quot;: { # A predicate which describes the SBOM being referenced. # Additional parameters of the Predicate. Includes the actual data about the SBOM.
            &quot;digest&quot;: { # A map of algorithm to digest of the contents of the SBOM.
              &quot;a_key&quot;: &quot;A String&quot;,
            },
            &quot;location&quot;: &quot;A String&quot;, # The location of the SBOM.
            &quot;mimeType&quot;: &quot;A String&quot;, # The mime type of the SBOM.
            &quot;referrerId&quot;: &quot;A String&quot;, # The person or system referring this predicate to the consumer.
          },
          &quot;predicateType&quot;: &quot;A String&quot;, # URI identifying the type of the Predicate.
          &quot;subject&quot;: [ # Set of software artifacts that the attestation applies to. Each element represents a single software artifact.
            { # Subject refers to the subject of the intoto statement
              &quot;digest&quot;: { # &quot;&quot;: &quot;&quot; Algorithms can be e.g. sha256, sha512 See https://github.com/in-toto/attestation/blob/main/spec/field_types.md#DigestSet
                &quot;a_key&quot;: &quot;A String&quot;,
              },
              &quot;name&quot;: &quot;A String&quot;, # name is the name of the Subject used here
            },
          ],
        },
        &quot;payloadType&quot;: &quot;A String&quot;, # The kind of payload that SbomReferenceIntotoPayload takes. Since it&#x27;s in the intoto format, this value is expected to be &#x27;application/vnd.in-toto+json&#x27;.
        &quot;signatures&quot;: [ # The signatures over the payload.
          { # A DSSE signature
            &quot;keyid&quot;: &quot;A String&quot;, # A reference id to the key being used for signing
            &quot;sig&quot;: &quot;A String&quot;, # The signature itself
          },
        ],
      },
      &quot;spdxFile&quot;: { # FileOccurrence represents an SPDX File Information section: https://spdx.github.io/spdx-spec/4-file-information/ # Describes a specific SPDX File.
        &quot;attributions&quot;: [ # This field provides a place for the SPDX data creator to record, at the file level, acknowledgements that may be needed to be communicated in some contexts
          &quot;A String&quot;,
        ],
        &quot;comment&quot;: &quot;A String&quot;, # This field provides a place for the SPDX file creator to record any general comments about the file
        &quot;contributors&quot;: [ # This field provides a place for the SPDX file creator to record file contributors
          &quot;A String&quot;,
        ],
        &quot;copyright&quot;: &quot;A String&quot;, # Identify the copyright holder of the file, as well as any dates present
        &quot;filesLicenseInfo&quot;: [ # This field contains the license information actually found in the file, if any
          &quot;A String&quot;,
        ],
        &quot;id&quot;: &quot;A String&quot;, # Uniquely identify any element in an SPDX document which may be referenced by other elements
        &quot;licenseConcluded&quot;: { # License information. # This field contains the license the SPDX file creator has concluded as governing the file or alternative values if the governing license cannot be determined
          &quot;comments&quot;: &quot;A String&quot;, # Comments
          &quot;expression&quot;: &quot;A String&quot;, # Often a single license can be used to represent the licensing terms. Sometimes it is necessary to include a choice of one or more licenses or some combination of license identifiers. Examples: &quot;LGPL-2.1-only OR MIT&quot;, &quot;LGPL-2.1-only AND MIT&quot;, &quot;GPL-2.0-or-later WITH Bison-exception-2.2&quot;.
        },
        &quot;notice&quot;: &quot;A String&quot;, # This field provides a place for the SPDX file creator to record license notices or other such related notices found in the file
      },
      &quot;spdxPackage&quot;: { # PackageInfoOccurrence represents an SPDX Package Information section: https://spdx.github.io/spdx-spec/3-package-information/ # Describes a specific SPDX Package.
        &quot;comment&quot;: &quot;A String&quot;, # A place for the SPDX file creator to record any general comments about the package being described
        &quot;filename&quot;: &quot;A String&quot;, # Provide the actual file name of the package, or path of the directory being treated as a package
        &quot;homePage&quot;: &quot;A String&quot;, # Output only. Provide a place for the SPDX file creator to record a web site that serves as the package&#x27;s home page
        &quot;id&quot;: &quot;A String&quot;, # Uniquely identify any element in an SPDX document which may be referenced by other elements
        &quot;licenseConcluded&quot;: { # License information. # package or alternative values, if the governing license cannot be determined
          &quot;comments&quot;: &quot;A String&quot;, # Comments
          &quot;expression&quot;: &quot;A String&quot;, # Often a single license can be used to represent the licensing terms. Sometimes it is necessary to include a choice of one or more licenses or some combination of license identifiers. Examples: &quot;LGPL-2.1-only OR MIT&quot;, &quot;LGPL-2.1-only AND MIT&quot;, &quot;GPL-2.0-or-later WITH Bison-exception-2.2&quot;.
        },
        &quot;packageType&quot;: &quot;A String&quot;, # Output only. The type of package: OS, MAVEN, GO, GO_STDLIB, etc.
        &quot;sourceInfo&quot;: &quot;A String&quot;, # Provide a place for the SPDX file creator to record any relevant background information or additional comments about the origin of the package
        &quot;summaryDescription&quot;: &quot;A String&quot;, # Output only. A short description of the package
        &quot;title&quot;: &quot;A String&quot;, # Output only. Identify the full name of the package as given by the Package Originator
        &quot;version&quot;: &quot;A String&quot;, # Output only. Identify the version of the package
      },
      &quot;spdxRelationship&quot;: { # RelationshipOccurrence represents an SPDX Relationship section: https://spdx.github.io/spdx-spec/7-relationships-between-SPDX-elements/ # Describes a specific relationship between SPDX elements.
        &quot;comment&quot;: &quot;A String&quot;, # A place for the SPDX file creator to record any general comments about the relationship
        &quot;source&quot;: &quot;A String&quot;, # Also referred to as SPDXRef-A The source SPDX element (file, package, etc)
        &quot;target&quot;: &quot;A String&quot;, # Also referred to as SPDXRef-B The target SPDC element (file, package, etc) In cases where there are &quot;known unknowns&quot;, the use of the keyword NOASSERTION can be used The keywords NONE can be used to indicate that an SPDX element (package/file/snippet) has no other elements connected by some relationship to it
        &quot;type&quot;: &quot;A String&quot;, # Output only. The type of relationship between the source and target SPDX elements
      },
      &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time this `Occurrence` was last updated.
      &quot;upgrade&quot;: { # An Upgrade Occurrence represents that a specific resource_url could install a specific upgrade. This presence is supplied via local sources (i.e. it is present in the mirror and the running system has noticed its availability). # Describes an upgrade.
        &quot;distribution&quot;: { # The Upgrade Distribution represents metadata about the Upgrade for each operating system (CPE). Some distributions have additional metadata around updates, classifying them into various categories and severities. # Metadata about the upgrade for available for the specific operating system for the resource_url. This allows efficient filtering, as well as making it easier to use the occurrence.
          &quot;classification&quot;: &quot;A String&quot;, # The operating system classification of this Upgrade, as specified by the upstream operating system upgrade feed.
          &quot;cpeUri&quot;: &quot;A String&quot;, # Required - The specific operating system this metadata applies to. See https://cpe.mitre.org/specification/.
          &quot;cve&quot;: [ # The cve that would be resolved by this upgrade.
            &quot;A String&quot;,
          ],
          &quot;severity&quot;: &quot;A String&quot;, # The severity as specified by the upstream operating system.
        },
        &quot;package&quot;: &quot;A String&quot;, # Required - The package this Upgrade is for.
        &quot;parsedVersion&quot;: { # Version contains structured information about the version of the package. For a discussion of this in Debian/Ubuntu: http://serverfault.com/questions/604541/debian-packages-version-convention For a discussion of this in Redhat/Fedora/Centos: http://blog.jasonantman.com/2014/07/how-yum-and-rpm-compare-versions/ # Required - The version of the package in a machine + human readable form.
          &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
          &quot;inclusive&quot;: True or False, # Whether this version is vulnerable, when defining the version bounds. For example, if the minimum version is 2.0, inclusive=true would say 2.0 is vulnerable, while inclusive=false would say it&#x27;s not
          &quot;kind&quot;: &quot;A String&quot;, # Distinguish between sentinel MIN/MAX versions and normal versions. If kind is not NORMAL, then the other fields are ignored.
          &quot;name&quot;: &quot;A String&quot;, # 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;vulnerabilityDetails&quot;: { # Used by Occurrence to point to where the vulnerability exists and how to fix it. # Details of a security vulnerability note.
        &quot;cvssScore&quot;: 3.14, # Output only. The CVSS score of this vulnerability. CVSS score is on a scale of 0-10 where 0 indicates low severity and 10 indicates high severity.
        &quot;cvssV2&quot;: { # Common Vulnerability Scoring System. This message is compatible with CVSS v2 and v3. For CVSS v2 details, see https://www.first.org/cvss/v2/guide CVSS v2 calculator: https://nvd.nist.gov/vuln-metrics/cvss/v2-calculator For CVSS v3 details, see https://www.first.org/cvss/specification-document CVSS v3 calculator: https://nvd.nist.gov/vuln-metrics/cvss/v3-calculator # The CVSS v2 score of this vulnerability.
          &quot;attackComplexity&quot;: &quot;A String&quot;, # Defined in CVSS v3, CVSS v2
          &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. Defined in CVSS v3, CVSS v2
          &quot;authentication&quot;: &quot;A String&quot;, # Defined in CVSS v2
          &quot;availabilityImpact&quot;: &quot;A String&quot;, # Defined in CVSS v3, CVSS v2
          &quot;baseScore&quot;: 3.14, # The base score is a function of the base metric scores.
          &quot;confidentialityImpact&quot;: &quot;A String&quot;, # Defined in CVSS v3, CVSS v2
          &quot;exploitabilityScore&quot;: 3.14,
          &quot;impactScore&quot;: 3.14,
          &quot;integrityImpact&quot;: &quot;A String&quot;, # Defined in CVSS v3, CVSS v2
          &quot;privilegesRequired&quot;: &quot;A String&quot;, # Defined in CVSS v3
          &quot;scope&quot;: &quot;A String&quot;, # Defined in CVSS v3
          &quot;userInteraction&quot;: &quot;A String&quot;, # Defined in CVSS v3
        },
        &quot;cvssV3&quot;: { # Common Vulnerability Scoring System. This message is compatible with CVSS v2 and v3. For CVSS v2 details, see https://www.first.org/cvss/v2/guide CVSS v2 calculator: https://nvd.nist.gov/vuln-metrics/cvss/v2-calculator For CVSS v3 details, see https://www.first.org/cvss/specification-document CVSS v3 calculator: https://nvd.nist.gov/vuln-metrics/cvss/v3-calculator # The CVSS v3 score of this vulnerability.
          &quot;attackComplexity&quot;: &quot;A String&quot;, # Defined in CVSS v3, CVSS v2
          &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. Defined in CVSS v3, CVSS v2
          &quot;authentication&quot;: &quot;A String&quot;, # Defined in CVSS v2
          &quot;availabilityImpact&quot;: &quot;A String&quot;, # Defined in CVSS v3, CVSS v2
          &quot;baseScore&quot;: 3.14, # The base score is a function of the base metric scores.
          &quot;confidentialityImpact&quot;: &quot;A String&quot;, # Defined in CVSS v3, CVSS v2
          &quot;exploitabilityScore&quot;: 3.14,
          &quot;impactScore&quot;: 3.14,
          &quot;integrityImpact&quot;: &quot;A String&quot;, # Defined in CVSS v3, CVSS v2
          &quot;privilegesRequired&quot;: &quot;A String&quot;, # Defined in CVSS v3
          &quot;scope&quot;: &quot;A String&quot;, # Defined in CVSS v3
          &quot;userInteraction&quot;: &quot;A String&quot;, # Defined in CVSS v3
        },
        &quot;cvssVersion&quot;: &quot;A String&quot;, # Output only. CVSS version used to populate cvss_score and severity.
        &quot;effectiveSeverity&quot;: &quot;A String&quot;, # The distro assigned severity for this vulnerability when that is available and note provider assigned severity when distro has not yet assigned a severity for this vulnerability. When there are multiple package issues for this vulnerability, they can have different effective severities because some might come from the distro and some might come from installed language packs (e.g. Maven JARs or Go binaries). For this reason, it is advised to use the effective severity on the PackageIssue level, as this field may eventually be deprecated. In the case where multiple PackageIssues have different effective severities, the one set here will be the highest severity of any of the PackageIssues.
        &quot;extraDetails&quot;: &quot;A String&quot;, # Occurrence-specific extra details about the vulnerability.
        &quot;packageIssue&quot;: [ # The set of affected locations and their fixes (if available) within the associated resource.
          { # This message wraps a location affected by a vulnerability and its associated fix (if one is available).
            &quot;affectedLocation&quot;: { # The location of the vulnerability # The location of the vulnerability.
              &quot;cpeUri&quot;: &quot;A String&quot;, # The cpe_uri in [cpe format] (https://cpe.mitre.org/specification/) format. Examples include distro or storage location for vulnerable jar. This field can be used as a filter in list requests.
              &quot;fileLocation&quot;: [ # The file location at which this package was found.
                { # Indicates the location at which a package was found.
                  &quot;filePath&quot;: &quot;A String&quot;, # For jars that are contained inside .war files, this filepath can indicate the path to war file combined with the path to jar file.
                },
              ],
              &quot;package&quot;: &quot;A String&quot;, # The package being described.
              &quot;version&quot;: { # Version contains structured information about the version of the package. For a discussion of this in Debian/Ubuntu: http://serverfault.com/questions/604541/debian-packages-version-convention For a discussion of this in Redhat/Fedora/Centos: http://blog.jasonantman.com/2014/07/how-yum-and-rpm-compare-versions/ # The version of the package being described. This field can be used as a filter in list requests.
                &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
                &quot;inclusive&quot;: True or False, # Whether this version is vulnerable, when defining the version bounds. For example, if the minimum version is 2.0, inclusive=true would say 2.0 is vulnerable, while inclusive=false would say it&#x27;s not
                &quot;kind&quot;: &quot;A String&quot;, # Distinguish between sentinel MIN/MAX versions and normal versions. If kind is not NORMAL, then the other fields are ignored.
                &quot;name&quot;: &quot;A String&quot;, # 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;effectiveSeverity&quot;: &quot;A String&quot;, # Output only. The distro or language system assigned severity for this vulnerability when that is available and note provider assigned severity when distro or language system has not yet assigned a severity for this vulnerability.
            &quot;fixedLocation&quot;: { # The location of the vulnerability # The location of the available fix for vulnerability.
              &quot;cpeUri&quot;: &quot;A String&quot;, # The cpe_uri in [cpe format] (https://cpe.mitre.org/specification/) format. Examples include distro or storage location for vulnerable jar. This field can be used as a filter in list requests.
              &quot;fileLocation&quot;: [ # The file location at which this package was found.
                { # Indicates the location at which a package was found.
                  &quot;filePath&quot;: &quot;A String&quot;, # For jars that are contained inside .war files, this filepath can indicate the path to war file combined with the path to jar file.
                },
              ],
              &quot;package&quot;: &quot;A String&quot;, # The package being described.
              &quot;version&quot;: { # Version contains structured information about the version of the package. For a discussion of this in Debian/Ubuntu: http://serverfault.com/questions/604541/debian-packages-version-convention For a discussion of this in Redhat/Fedora/Centos: http://blog.jasonantman.com/2014/07/how-yum-and-rpm-compare-versions/ # The version of the package being described. This field can be used as a filter in list requests.
                &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
                &quot;inclusive&quot;: True or False, # Whether this version is vulnerable, when defining the version bounds. For example, if the minimum version is 2.0, inclusive=true would say 2.0 is vulnerable, while inclusive=false would say it&#x27;s not
                &quot;kind&quot;: &quot;A String&quot;, # Distinguish between sentinel MIN/MAX versions and normal versions. If kind is not NORMAL, then the other fields are ignored.
                &quot;name&quot;: &quot;A String&quot;, # 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;packageType&quot;: &quot;A String&quot;, # The type of package (e.g. OS, MAVEN, GO).
            &quot;severityName&quot;: &quot;A String&quot;,
          },
        ],
        &quot;severity&quot;: &quot;A String&quot;, # Output only. The note provider assigned Severity of the vulnerability.
        &quot;type&quot;: &quot;A String&quot;, # The type of package; whether native or non native(ruby gems, node.js packages etc). This may be deprecated in the future because we can have multiple PackageIssues with different package types.
        &quot;vexAssessment&quot;: { # VexAssessment provides all publisher provided Vex information that is related to this vulnerability. # VexAssessment provides all publisher provided Vex information that is related to this vulnerability for this resource.
          &quot;cve&quot;: &quot;A String&quot;, # Holds the MITRE standard Common Vulnerabilities and Exposures (CVE) tracking number for the vulnerability.
          &quot;impacts&quot;: [ # Contains information about the impact of this vulnerability, this will change with time.
            &quot;A String&quot;,
          ],
          &quot;justification&quot;: { # Justification provides the justification when the state of the assessment if NOT_AFFECTED. # Justification provides the justification when the state of the assessment if NOT_AFFECTED.
            &quot;details&quot;: &quot;A String&quot;, # Additional details on why this justification was chosen.
            &quot;justificationType&quot;: &quot;A String&quot;, # The justification type for this vulnerability.
          },
          &quot;noteName&quot;: &quot;A String&quot;, # The VulnerabilityAssessment note from which this VexAssessment was generated. This will be of the form: `projects/[PROJECT_ID]/notes/[NOTE_ID]`.
          &quot;relatedUris&quot;: [ # Holds a list of references associated with this vulnerability item and assessment. These uris have additional information about the vulnerability and the assessment itself. E.g. Link to a document which details how this assessment concluded the state of this vulnerability.
            { # An URI message.
              &quot;label&quot;: &quot;A String&quot;, # A label for the URI.
              &quot;uri&quot;: &quot;A String&quot;, # The unique resource identifier.
            },
          ],
          &quot;remediations&quot;: [ # Specifies details on how to handle (and presumably, fix) a vulnerability.
            { # Specifies details on how to handle (and presumably, fix) a vulnerability.
              &quot;details&quot;: &quot;A String&quot;, # Contains a comprehensive human-readable discussion of the remediation.
              &quot;remediationType&quot;: &quot;A String&quot;, # The type of remediation that can be applied.
              &quot;remediationUri&quot;: { # An URI message. # Contains the URL where to obtain the remediation.
                &quot;label&quot;: &quot;A String&quot;, # A label for the URI.
                &quot;uri&quot;: &quot;A String&quot;, # The unique resource identifier.
              },
            },
          ],
          &quot;state&quot;: &quot;A String&quot;, # Provides the state of this Vulnerability assessment.
          &quot;vulnerabilityId&quot;: &quot;A String&quot;, # The vulnerability identifier for this Assessment. Will hold one of common identifiers e.g. CVE, GHSA etc.
        },
      },
    },
  ],
}</pre>
</div>

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

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

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

<div class="method">
    <code class="details" id="patch">patch(name, body=None, updateMask=None, x__xgafv=None)</code>
  <pre>Updates an existing occurrence.

Args:
  name: string, The name of the occurrence. Should be of the form &quot;projects/{project_id}/occurrences/{OCCURRENCE_ID}&quot;. (required)
  body: object, The request body.
    The object takes the form of:

{ # `Occurrence` includes information about analysis occurrences for an image.
  &quot;attestation&quot;: { # Occurrence that represents a single &quot;attestation&quot;. The authenticity of an Attestation can be verified using the attached signature. If the verifier trusts the public key of the signer, then verifying the signature is sufficient to establish trust. In this circumstance, the AttestationAuthority to which this Attestation is attached is primarily useful for look-up (how to find this Attestation if you already know the Authority and artifact to be verified) and intent (which authority was this attestation intended to sign for). # Describes an attestation of an artifact.
    &quot;pgpSignedAttestation&quot;: { # An attestation wrapper with a PGP-compatible signature. This message only supports `ATTACHED` signatures, where the payload that is signed is included alongside the signature itself in the same file.
      &quot;contentType&quot;: &quot;A String&quot;, # Type (for example schema) of the attestation payload that was signed. The verifier must ensure that the provided type is one that the verifier supports, and that the attestation payload is a valid instantiation of that type (for example by validating a JSON schema).
      &quot;pgpKeyId&quot;: &quot;A String&quot;, # The cryptographic fingerprint of the key used to generate the signature, as output by, e.g. `gpg --list-keys`. This should be the version 4, full 160-bit fingerprint, expressed as a 40 character hexadecimal string. See https://tools.ietf.org/html/rfc4880#section-12.2 for details. Implementations may choose to acknowledge &quot;LONG&quot;, &quot;SHORT&quot;, or other abbreviated key IDs, but only the full fingerprint is guaranteed to work. In gpg, the full fingerprint can be retrieved from the `fpr` field returned when calling --list-keys with --with-colons. For example: ``` gpg --with-colons --with-fingerprint --force-v4-certs \ --list-keys attester@example.com tru::1:1513631572:0:3:1:5 pub:...... fpr:::::::::24FF6481B76AC91E66A00AC657A93A81EF3AE6FB: ``` Above, the fingerprint is `24FF6481B76AC91E66A00AC657A93A81EF3AE6FB`.
      &quot;signature&quot;: &quot;A String&quot;, # The raw content of the signature, as output by GNU Privacy Guard (GPG) or equivalent. Since this message only supports attached signatures, the payload that was signed must be attached. While the signature format supported is dependent on the verification implementation, currently only ASCII-armored (`--armor` to gpg), non-clearsigned (`--sign` rather than `--clearsign` to gpg) are supported. Concretely, `gpg --sign --armor --output=signature.gpg payload.json` will create the signature content expected in this field in `signature.gpg` for the `payload.json` attestation payload.
    },
  },
  &quot;buildDetails&quot;: { # Message encapsulating build provenance details. # Build details for a verifiable build.
    &quot;inTotoSlsaProvenanceV1&quot;: { # In-Toto Slsa Provenance V1 represents a slsa provenance meeting the slsa spec, wrapped in an in-toto statement. This allows for direct jsonification of a to-spec in-toto slsa statement with a to-spec slsa provenance.
      &quot;_type&quot;: &quot;A String&quot;, # InToto spec defined at https://github.com/in-toto/attestation/tree/main/spec#statement
      &quot;predicate&quot;: { # Keep in sync with schema at https://github.com/slsa-framework/slsa/blob/main/docs/provenance/schema/v1/provenance.proto Builder renamed to ProvenanceBuilder because of Java conflicts.
        &quot;buildDefinition&quot;: {
          &quot;buildType&quot;: &quot;A String&quot;,
          &quot;externalParameters&quot;: {
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
          },
          &quot;internalParameters&quot;: {
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
          },
          &quot;resolvedDependencies&quot;: [
            {
              &quot;annotations&quot;: {
                &quot;a_key&quot;: &quot;&quot;,
              },
              &quot;content&quot;: &quot;A String&quot;,
              &quot;digest&quot;: {
                &quot;a_key&quot;: &quot;A String&quot;,
              },
              &quot;downloadLocation&quot;: &quot;A String&quot;,
              &quot;mediaType&quot;: &quot;A String&quot;,
              &quot;name&quot;: &quot;A String&quot;,
              &quot;uri&quot;: &quot;A String&quot;,
            },
          ],
        },
        &quot;runDetails&quot;: {
          &quot;builder&quot;: {
            &quot;builderDependencies&quot;: [
              {
                &quot;annotations&quot;: {
                  &quot;a_key&quot;: &quot;&quot;,
                },
                &quot;content&quot;: &quot;A String&quot;,
                &quot;digest&quot;: {
                  &quot;a_key&quot;: &quot;A String&quot;,
                },
                &quot;downloadLocation&quot;: &quot;A String&quot;,
                &quot;mediaType&quot;: &quot;A String&quot;,
                &quot;name&quot;: &quot;A String&quot;,
                &quot;uri&quot;: &quot;A String&quot;,
              },
            ],
            &quot;id&quot;: &quot;A String&quot;,
            &quot;version&quot;: {
              &quot;a_key&quot;: &quot;A String&quot;,
            },
          },
          &quot;byproducts&quot;: [
            {
              &quot;annotations&quot;: {
                &quot;a_key&quot;: &quot;&quot;,
              },
              &quot;content&quot;: &quot;A String&quot;,
              &quot;digest&quot;: {
                &quot;a_key&quot;: &quot;A String&quot;,
              },
              &quot;downloadLocation&quot;: &quot;A String&quot;,
              &quot;mediaType&quot;: &quot;A String&quot;,
              &quot;name&quot;: &quot;A String&quot;,
              &quot;uri&quot;: &quot;A String&quot;,
            },
          ],
          &quot;metadata&quot;: {
            &quot;finishedOn&quot;: &quot;A String&quot;,
            &quot;invocationId&quot;: &quot;A String&quot;,
            &quot;startedOn&quot;: &quot;A String&quot;,
          },
        },
      },
      &quot;predicateType&quot;: &quot;A String&quot;,
      &quot;subject&quot;: [
        { # Subject refers to the subject of the intoto statement
          &quot;digest&quot;: { # &quot;&quot;: &quot;&quot; Algorithms can be e.g. sha256, sha512 See https://github.com/in-toto/attestation/blob/main/spec/field_types.md#DigestSet
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;name&quot;: &quot;A String&quot;, # name is the name of the Subject used here
        },
      ],
    },
    &quot;intotoProvenance&quot;: { # Deprecated. See InTotoStatement for the replacement. In-toto Provenance representation as defined in spec.
      &quot;builderConfig&quot;: { # required
        &quot;id&quot;: &quot;A String&quot;,
      },
      &quot;materials&quot;: [ # The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on. This is considered to be incomplete unless metadata.completeness.materials is true. Unset or null is equivalent to empty.
        &quot;A String&quot;,
      ],
      &quot;metadata&quot;: { # Other properties of the build.
        &quot;buildFinishedOn&quot;: &quot;A String&quot;, # The timestamp of when the build completed.
        &quot;buildInvocationId&quot;: &quot;A String&quot;, # Identifies the particular build invocation, which can be useful for finding associated logs or other ad-hoc analysis. The value SHOULD be globally unique, per in-toto Provenance spec.
        &quot;buildStartedOn&quot;: &quot;A String&quot;, # The timestamp of when the build started.
        &quot;completeness&quot;: { # Indicates that the builder claims certain fields in this message to be complete. # Indicates that the builder claims certain fields in this message to be complete.
          &quot;arguments&quot;: True or False, # If true, the builder claims that recipe.arguments is complete, meaning that all external inputs are properly captured in the recipe.
          &quot;environment&quot;: True or False, # If true, the builder claims that recipe.environment is claimed to be complete.
          &quot;materials&quot;: True or False, # If true, the builder claims that materials are complete, usually through some controls to prevent network access. Sometimes called &quot;hermetic&quot;.
        },
        &quot;reproducible&quot;: True or False, # If true, the builder claims that running the recipe on materials will produce bit-for-bit identical output.
      },
      &quot;recipe&quot;: { # Steps taken to build the artifact. For a TaskRun, typically each container corresponds to one step in the recipe. # Identifies the configuration used for the build. When combined with materials, this SHOULD fully describe the build, such that re-running this recipe results in bit-for-bit identical output (if the build is reproducible). required
        &quot;arguments&quot;: [ # Collection of all external inputs that influenced the build on top of recipe.definedInMaterial and recipe.entryPoint. For example, if the recipe type were &quot;make&quot;, then this might be the flags passed to make aside from the target, which is captured in recipe.entryPoint.
          {
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
          },
        ],
        &quot;definedInMaterial&quot;: &quot;A String&quot;, # Index in materials containing the recipe steps that are not implied by recipe.type. For example, if the recipe type were &quot;make&quot;, then this would point to the source containing the Makefile, not the make program itself. Set to -1 if the recipe doesn&#x27;t come from a material, as zero is default unset value for int64.
        &quot;entryPoint&quot;: &quot;A String&quot;, # String identifying the entry point into the build. This is often a path to a configuration file and/or a target label within that file. The syntax and meaning are defined by recipe.type. For example, if the recipe type were &quot;make&quot;, then this would reference the directory in which to run make as well as which target to use.
        &quot;environment&quot;: [ # Any other builder-controlled inputs necessary for correctly evaluating the recipe. Usually only needed for reproducing the build but not evaluated as part of policy.
          {
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
          },
        ],
        &quot;type&quot;: &quot;A String&quot;, # URI indicating what type of recipe was performed. It determines the meaning of recipe.entryPoint, recipe.arguments, recipe.environment, and materials.
      },
    },
    &quot;intotoStatement&quot;: { # Spec defined at https://github.com/in-toto/attestation/tree/main/spec#statement The serialized InTotoStatement will be stored as Envelope.payload. Envelope.payloadType is always &quot;application/vnd.in-toto+json&quot;. # In-toto Statement representation as defined in spec. The intoto_statement can contain any type of provenance. The serialized payload of the statement can be stored and signed in the Occurrence&#x27;s envelope.
      &quot;_type&quot;: &quot;A String&quot;, # Always &quot;https://in-toto.io/Statement/v0.1&quot;.
      &quot;predicateType&quot;: &quot;A String&quot;, # &quot;https://slsa.dev/provenance/v0.1&quot; for SlsaProvenance.
      &quot;provenance&quot;: { # Generic Grafeas provenance.
        &quot;builderConfig&quot;: { # required
          &quot;id&quot;: &quot;A String&quot;,
        },
        &quot;materials&quot;: [ # The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on. This is considered to be incomplete unless metadata.completeness.materials is true. Unset or null is equivalent to empty.
          &quot;A String&quot;,
        ],
        &quot;metadata&quot;: { # Other properties of the build.
          &quot;buildFinishedOn&quot;: &quot;A String&quot;, # The timestamp of when the build completed.
          &quot;buildInvocationId&quot;: &quot;A String&quot;, # Identifies the particular build invocation, which can be useful for finding associated logs or other ad-hoc analysis. The value SHOULD be globally unique, per in-toto Provenance spec.
          &quot;buildStartedOn&quot;: &quot;A String&quot;, # The timestamp of when the build started.
          &quot;completeness&quot;: { # Indicates that the builder claims certain fields in this message to be complete. # Indicates that the builder claims certain fields in this message to be complete.
            &quot;arguments&quot;: True or False, # If true, the builder claims that recipe.arguments is complete, meaning that all external inputs are properly captured in the recipe.
            &quot;environment&quot;: True or False, # If true, the builder claims that recipe.environment is claimed to be complete.
            &quot;materials&quot;: True or False, # If true, the builder claims that materials are complete, usually through some controls to prevent network access. Sometimes called &quot;hermetic&quot;.
          },
          &quot;reproducible&quot;: True or False, # If true, the builder claims that running the recipe on materials will produce bit-for-bit identical output.
        },
        &quot;recipe&quot;: { # Steps taken to build the artifact. For a TaskRun, typically each container corresponds to one step in the recipe. # Identifies the configuration used for the build. When combined with materials, this SHOULD fully describe the build, such that re-running this recipe results in bit-for-bit identical output (if the build is reproducible). required
          &quot;arguments&quot;: [ # Collection of all external inputs that influenced the build on top of recipe.definedInMaterial and recipe.entryPoint. For example, if the recipe type were &quot;make&quot;, then this might be the flags passed to make aside from the target, which is captured in recipe.entryPoint.
            {
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
            },
          ],
          &quot;definedInMaterial&quot;: &quot;A String&quot;, # Index in materials containing the recipe steps that are not implied by recipe.type. For example, if the recipe type were &quot;make&quot;, then this would point to the source containing the Makefile, not the make program itself. Set to -1 if the recipe doesn&#x27;t come from a material, as zero is default unset value for int64.
          &quot;entryPoint&quot;: &quot;A String&quot;, # String identifying the entry point into the build. This is often a path to a configuration file and/or a target label within that file. The syntax and meaning are defined by recipe.type. For example, if the recipe type were &quot;make&quot;, then this would reference the directory in which to run make as well as which target to use.
          &quot;environment&quot;: [ # Any other builder-controlled inputs necessary for correctly evaluating the recipe. Usually only needed for reproducing the build but not evaluated as part of policy.
            {
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
            },
          ],
          &quot;type&quot;: &quot;A String&quot;, # URI indicating what type of recipe was performed. It determines the meaning of recipe.entryPoint, recipe.arguments, recipe.environment, and materials.
        },
      },
      &quot;slsaProvenance&quot;: { # SlsaProvenance is the slsa provenance as defined by the slsa spec. # SLSA 0.1 provenance.
        &quot;builder&quot;: { # SlsaBuilder encapsulates the identity of the builder of this provenance. # builder is the builder of this provenance
          &quot;id&quot;: &quot;A String&quot;, # id is the id of the slsa provenance builder
        },
        &quot;materials&quot;: [ # The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on. This is considered to be incomplete unless metadata.completeness.materials is true. Unset or null is equivalent to empty.
          { # Material is a material used in the generation of the provenance
            &quot;digest&quot;: { # digest is a map from a hash algorithm (e.g. sha256) to the value in the material
              &quot;a_key&quot;: &quot;A String&quot;,
            },
            &quot;uri&quot;: &quot;A String&quot;, # uri is the uri of the material
          },
        ],
        &quot;metadata&quot;: { # Other properties of the build. # metadata is the metadata of the provenance
          &quot;buildFinishedOn&quot;: &quot;A String&quot;, # The timestamp of when the build completed.
          &quot;buildInvocationId&quot;: &quot;A String&quot;, # Identifies the particular build invocation, which can be useful for finding associated logs or other ad-hoc analysis. The value SHOULD be globally unique, per in-toto Provenance spec.
          &quot;buildStartedOn&quot;: &quot;A String&quot;, # The timestamp of when the build started.
          &quot;completeness&quot;: { # Indicates that the builder claims certain fields in this message to be complete. # Indicates that the builder claims certain fields in this message to be complete.
            &quot;arguments&quot;: True or False, # If true, the builder claims that recipe.arguments is complete, meaning that all external inputs are properly captured in the recipe.
            &quot;environment&quot;: True or False, # If true, the builder claims that recipe.environment is claimed to be complete.
            &quot;materials&quot;: True or False, # If true, the builder claims that materials are complete, usually through some controls to prevent network access. Sometimes called &quot;hermetic&quot;.
          },
          &quot;reproducible&quot;: True or False, # If true, the builder claims that running the recipe on materials will produce bit-for-bit identical output.
        },
        &quot;recipe&quot;: { # Steps taken to build the artifact. For a TaskRun, typically each container corresponds to one step in the recipe. # Identifies the configuration used for the build. When combined with materials, this SHOULD fully describe the build, such that re-running this recipe results in bit-for-bit identical output (if the build is reproducible).
          &quot;arguments&quot;: { # Collection of all external inputs that influenced the build on top of recipe.definedInMaterial and recipe.entryPoint. For example, if the recipe type were &quot;make&quot;, then this might be the flags passed to make aside from the target, which is captured in recipe.entryPoint. Depending on the recipe Type, the structure may be different.
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
          },
          &quot;definedInMaterial&quot;: &quot;A String&quot;, # Index in materials containing the recipe steps that are not implied by recipe.type. For example, if the recipe type were &quot;make&quot;, then this would point to the source containing the Makefile, not the make program itself. Set to -1 if the recipe doesn&#x27;t come from a material, as zero is default unset value for int64.
          &quot;entryPoint&quot;: &quot;A String&quot;, # String identifying the entry point into the build. This is often a path to a configuration file and/or a target label within that file. The syntax and meaning are defined by recipe.type. For example, if the recipe type were &quot;make&quot;, then this would reference the directory in which to run make as well as which target to use.
          &quot;environment&quot;: { # Any other builder-controlled inputs necessary for correctly evaluating the recipe. Usually only needed for reproducing the build but not evaluated as part of policy. Depending on the recipe Type, the structure may be different.
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
          },
          &quot;type&quot;: &quot;A String&quot;, # URI indicating what type of recipe was performed. It determines the meaning of recipe.entryPoint, recipe.arguments, recipe.environment, and materials.
        },
      },
      &quot;slsaProvenanceZeroTwo&quot;: { # SlsaProvenanceZeroTwo is the slsa provenance as defined by the slsa spec. See full explanation of fields at slsa.dev/provenance/v0.2. # SLSA 0.2 provenance.
        &quot;buildConfig&quot;: { # Lists the steps in the build.
          &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
        },
        &quot;buildType&quot;: &quot;A String&quot;, # URI indicating what type of build was performed.
        &quot;builder&quot;: { # Identifies the entity that executed the recipe, which is trusted to have correctly performed the operation and populated this provenance. # Identifies the entity that executed the recipe, which is trusted to have correctly performed the operation and populated this provenance.
          &quot;id&quot;: &quot;A String&quot;, # URI indicating the builder’s identity.
        },
        &quot;invocation&quot;: { # Identifies the event that kicked off the build. # Identifies the event that kicked off the build.
          &quot;configSource&quot;: { # Describes where the config file that kicked off the build came from. This is effectively a pointer to the source where buildConfig came from. # Describes where the config file that kicked off the build came from.
            &quot;digest&quot;: { # Collection of cryptographic digests for the contents of the artifact specified by invocation.configSource.uri.
              &quot;a_key&quot;: &quot;A String&quot;,
            },
            &quot;entryPoint&quot;: &quot;A String&quot;, # String identifying the entry point into the build.
            &quot;uri&quot;: &quot;A String&quot;, # URI indicating the identity of the source of the config.
          },
          &quot;environment&quot;: { # Any other builder-controlled inputs necessary for correctly evaluating the build.
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
          },
          &quot;parameters&quot;: { # Collection of all external inputs that influenced the build on top of invocation.configSource.
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
          },
        },
        &quot;materials&quot;: [ # The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on.
          { # The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on.
            &quot;digest&quot;: { # Collection of cryptographic digests for the contents of this artifact.
              &quot;a_key&quot;: &quot;A String&quot;,
            },
            &quot;uri&quot;: &quot;A String&quot;, # The method by which this artifact was referenced during the build.
          },
        ],
        &quot;metadata&quot;: { # Other properties of the build. # Other properties of the build.
          &quot;buildFinishedOn&quot;: &quot;A String&quot;, # The timestamp of when the build completed.
          &quot;buildInvocationId&quot;: &quot;A String&quot;, # Identifies this particular build invocation, which can be useful for finding associated logs or other ad-hoc analysis.
          &quot;buildStartedOn&quot;: &quot;A String&quot;, # The timestamp of when the build started.
          &quot;completeness&quot;: { # Indicates that the builder claims certain fields in this message to be complete. # Indicates that the builder claims certain fields in this message to be complete.
            &quot;environment&quot;: True or False, # If true, the builder claims that invocation.environment is complete.
            &quot;materials&quot;: True or False, # If true, the builder claims that materials is complete.
            &quot;parameters&quot;: True or False, # If true, the builder claims that invocation.parameters is complete.
          },
          &quot;reproducible&quot;: True or False, # If true, the builder claims that running invocation on materials will produce bit-for-bit identical output.
        },
      },
      &quot;subject&quot;: [ # subject is the subjects of the intoto statement
        { # Subject refers to the subject of the intoto statement
          &quot;digest&quot;: { # &quot;&quot;: &quot;&quot; Algorithms can be e.g. sha256, sha512 See https://github.com/in-toto/attestation/blob/main/spec/field_types.md#DigestSet
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;name&quot;: &quot;A String&quot;, # name is the name of the Subject used here
        },
      ],
    },
    &quot;provenance&quot;: { # Provenance of a build. Contains all information needed to verify the full details about the build from source to completion. # The actual provenance
      &quot;buildOptions&quot;: { # Special options applied to this build. This is a catch-all field where build providers can enter any desired additional details.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;builderVersion&quot;: &quot;A String&quot;, # Version string of the builder at the time this build was executed.
      &quot;builtArtifacts&quot;: [ # Output of the build.
        { # Artifact describes a build product.
          &quot;checksum&quot;: &quot;A String&quot;, # Hash or checksum value of a binary, or Docker Registry 2.0 digest of a container.
          &quot;id&quot;: &quot;A String&quot;, # Artifact ID, if any; for container images, this will be a URL by digest like gcr.io/projectID/imagename@sha256:123456
          &quot;name&quot;: &quot;A String&quot;, # Name of the artifact. This may be the path to a binary or jar file, or in the case of a container build, the name used to push the container image to Google Container Registry, as presented to `docker push`. This field is deprecated in favor of the plural `names` field; it continues to exist here to allow existing BuildProvenance serialized to json in google.devtools.containeranalysis.v1alpha1.BuildDetails.provenance_bytes to deserialize back into proto.
          &quot;names&quot;: [ # Related artifact names. This may be the path to a binary or jar file, or in the case of a container build, the name used to push the container image to Google Container Registry, as presented to `docker push`. Note that a single Artifact ID can have multiple names, for example if two tags are applied to one image.
            &quot;A String&quot;,
          ],
        },
      ],
      &quot;commands&quot;: [ # Commands requested by the build.
        { # Command describes a step performed as part of the build pipeline.
          &quot;args&quot;: [ # Command-line arguments used when executing this Command.
            &quot;A String&quot;,
          ],
          &quot;dir&quot;: &quot;A String&quot;, # Working directory (relative to project source root) used when running this Command.
          &quot;env&quot;: [ # Environment variables set before running this Command.
            &quot;A String&quot;,
          ],
          &quot;id&quot;: &quot;A String&quot;, # Optional unique identifier for this Command, used in wait_for to reference this Command as a dependency.
          &quot;name&quot;: &quot;A String&quot;, # Name of the command, as presented on the command line, or if the command is packaged as a Docker container, as presented to `docker pull`.
          &quot;waitFor&quot;: [ # The ID(s) of the Command(s) that this Command depends on.
            &quot;A String&quot;,
          ],
        },
      ],
      &quot;createTime&quot;: &quot;A String&quot;, # Time at which the build was created.
      &quot;creator&quot;: &quot;A String&quot;, # E-mail address of the user who initiated this build. Note that this was the user&#x27;s e-mail address at the time the build was initiated; this address may not represent the same end-user for all time.
      &quot;finishTime&quot;: &quot;A String&quot;, # Time at which execution of the build was finished.
      &quot;id&quot;: &quot;A String&quot;, # Unique identifier of the build.
      &quot;logsBucket&quot;: &quot;A String&quot;, # Google Cloud Storage bucket where logs were written.
      &quot;projectId&quot;: &quot;A String&quot;, # ID of the project.
      &quot;sourceProvenance&quot;: { # Source describes the location of the source used for the build. # Details of the Source input to the build.
        &quot;additionalContexts&quot;: [ # If provided, some of the source code used for the build may be found in these locations, in the case where the source repository had multiple remotes or submodules. This list will not include the context specified in the context field.
          { # A SourceContext is a reference to a tree of files. A SourceContext together with a path point to a unique revision of a single file or directory.
            &quot;cloudRepo&quot;: { # A CloudRepoSourceContext denotes a particular revision in a Google Cloud Source Repo. # A SourceContext referring to a revision in a Google Cloud Source Repo.
              &quot;aliasContext&quot;: { # An alias to a repo revision. # An alias, which may be a branch or tag.
                &quot;kind&quot;: &quot;A String&quot;, # The alias kind.
                &quot;name&quot;: &quot;A String&quot;, # The alias name.
              },
              &quot;repoId&quot;: { # A unique identifier for a Cloud Repo. # The ID of the repo.
                &quot;projectRepoId&quot;: { # Selects a repo using a Google Cloud Platform project ID (e.g., winged-cargo-31) and a repo name within that project. # A combination of a project ID and a repo name.
                  &quot;projectId&quot;: &quot;A String&quot;, # The ID of the project.
                  &quot;repoName&quot;: &quot;A String&quot;, # The name of the repo. Leave empty for the default repo.
                },
                &quot;uid&quot;: &quot;A String&quot;, # A server-assigned, globally unique identifier.
              },
              &quot;revisionId&quot;: &quot;A String&quot;, # A revision ID.
            },
            &quot;gerrit&quot;: { # A SourceContext referring to a Gerrit project. # A SourceContext referring to a Gerrit project.
              &quot;aliasContext&quot;: { # An alias to a repo revision. # An alias, which may be a branch or tag.
                &quot;kind&quot;: &quot;A String&quot;, # The alias kind.
                &quot;name&quot;: &quot;A String&quot;, # The alias name.
              },
              &quot;gerritProject&quot;: &quot;A String&quot;, # The full project name within the host. Projects may be nested, so &quot;project/subproject&quot; is a valid project name. The &quot;repo name&quot; is the hostURI/project.
              &quot;hostUri&quot;: &quot;A String&quot;, # The URI of a running Gerrit instance.
              &quot;revisionId&quot;: &quot;A String&quot;, # A revision (commit) ID.
            },
            &quot;git&quot;: { # A GitSourceContext denotes a particular revision in a third party Git repository (e.g., GitHub). # A SourceContext referring to any third party Git repo (e.g., GitHub).
              &quot;revisionId&quot;: &quot;A String&quot;, # Required. Git commit hash.
              &quot;url&quot;: &quot;A String&quot;, # Git repository URL.
            },
            &quot;labels&quot;: { # Labels with user defined metadata.
              &quot;a_key&quot;: &quot;A String&quot;,
            },
          },
        ],
        &quot;artifactStorageSource&quot;: { # StorageSource describes the location of the source in an archive file in Google Cloud Storage. # If provided, the input binary artifacts for the build came from this location.
          &quot;bucket&quot;: &quot;A String&quot;, # Google Cloud Storage bucket containing source (see [Bucket Name Requirements] (https://cloud.google.com/storage/docs/bucket-naming#requirements)).
          &quot;generation&quot;: &quot;A String&quot;, # Google Cloud Storage generation for the object.
          &quot;object&quot;: &quot;A String&quot;, # Google Cloud Storage object containing source.
        },
        &quot;context&quot;: { # A SourceContext is a reference to a tree of files. A SourceContext together with a path point to a unique revision of a single file or directory. # If provided, the source code used for the build came from this location.
          &quot;cloudRepo&quot;: { # A CloudRepoSourceContext denotes a particular revision in a Google Cloud Source Repo. # A SourceContext referring to a revision in a Google Cloud Source Repo.
            &quot;aliasContext&quot;: { # An alias to a repo revision. # An alias, which may be a branch or tag.
              &quot;kind&quot;: &quot;A String&quot;, # The alias kind.
              &quot;name&quot;: &quot;A String&quot;, # The alias name.
            },
            &quot;repoId&quot;: { # A unique identifier for a Cloud Repo. # The ID of the repo.
              &quot;projectRepoId&quot;: { # Selects a repo using a Google Cloud Platform project ID (e.g., winged-cargo-31) and a repo name within that project. # A combination of a project ID and a repo name.
                &quot;projectId&quot;: &quot;A String&quot;, # The ID of the project.
                &quot;repoName&quot;: &quot;A String&quot;, # The name of the repo. Leave empty for the default repo.
              },
              &quot;uid&quot;: &quot;A String&quot;, # A server-assigned, globally unique identifier.
            },
            &quot;revisionId&quot;: &quot;A String&quot;, # A revision ID.
          },
          &quot;gerrit&quot;: { # A SourceContext referring to a Gerrit project. # A SourceContext referring to a Gerrit project.
            &quot;aliasContext&quot;: { # An alias to a repo revision. # An alias, which may be a branch or tag.
              &quot;kind&quot;: &quot;A String&quot;, # The alias kind.
              &quot;name&quot;: &quot;A String&quot;, # The alias name.
            },
            &quot;gerritProject&quot;: &quot;A String&quot;, # The full project name within the host. Projects may be nested, so &quot;project/subproject&quot; is a valid project name. The &quot;repo name&quot; is the hostURI/project.
            &quot;hostUri&quot;: &quot;A String&quot;, # The URI of a running Gerrit instance.
            &quot;revisionId&quot;: &quot;A String&quot;, # A revision (commit) ID.
          },
          &quot;git&quot;: { # A GitSourceContext denotes a particular revision in a third party Git repository (e.g., GitHub). # A SourceContext referring to any third party Git repo (e.g., GitHub).
            &quot;revisionId&quot;: &quot;A String&quot;, # Required. Git commit hash.
            &quot;url&quot;: &quot;A String&quot;, # Git repository URL.
          },
          &quot;labels&quot;: { # Labels with user defined metadata.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
        },
        &quot;fileHashes&quot;: { # Hash(es) of the build source, which can be used to verify that the original source integrity was maintained in the build. The keys to this map are file paths used as build source and the values contain the hash values for those files. If the build source came in a single package such as a gzipped tarfile (.tar.gz), the FileHash will be for the single path to that file.
          &quot;a_key&quot;: { # Container message for hashes of byte content of files, used in Source messages to verify integrity of source input to the build.
            &quot;fileHash&quot;: [ # Collection of file hashes.
              { # Container message for hash values.
                &quot;type&quot;: &quot;A String&quot;, # The type of hash that was performed.
                &quot;value&quot;: &quot;A String&quot;, # The hash value.
              },
            ],
          },
        },
        &quot;repoSource&quot;: { # RepoSource describes the location of the source in a Google Cloud Source Repository. # If provided, get source from this location in a Cloud Repo.
          &quot;branchName&quot;: &quot;A String&quot;, # Name of the branch to build.
          &quot;commitSha&quot;: &quot;A String&quot;, # Explicit commit SHA to build.
          &quot;projectId&quot;: &quot;A String&quot;, # ID of the project that owns the repo.
          &quot;repoName&quot;: &quot;A String&quot;, # Name of the repo.
          &quot;tagName&quot;: &quot;A String&quot;, # Name of the tag to build.
        },
        &quot;storageSource&quot;: { # StorageSource describes the location of the source in an archive file in Google Cloud Storage. # If provided, get the source from this location in Google Cloud Storage.
          &quot;bucket&quot;: &quot;A String&quot;, # Google Cloud Storage bucket containing source (see [Bucket Name Requirements] (https://cloud.google.com/storage/docs/bucket-naming#requirements)).
          &quot;generation&quot;: &quot;A String&quot;, # Google Cloud Storage generation for the object.
          &quot;object&quot;: &quot;A String&quot;, # Google Cloud Storage object containing source.
        },
      },
      &quot;startTime&quot;: &quot;A String&quot;, # Time at which execution of the build was started.
      &quot;triggerId&quot;: &quot;A String&quot;, # Trigger identifier if the build was triggered automatically; empty if not.
    },
    &quot;provenanceBytes&quot;: &quot;A String&quot;, # Serialized JSON representation of the provenance, used in generating the `BuildSignature` in the corresponding Result. After verifying the signature, `provenance_bytes` can be unmarshalled and compared to the provenance to confirm that it is unchanged. A base64-encoded string representation of the provenance bytes is used for the signature in order to interoperate with openssl which expects this format for signature verification. The serialized form is captured both to avoid ambiguity in how the provenance is marshalled to json as well to prevent incompatibilities with future changes.
  },
  &quot;compliance&quot;: { # An indication that the compliance checks in the associated ComplianceNote were not satisfied for particular resources or a specified reason. # Describes whether or not a resource passes compliance checks.
    &quot;nonComplianceReason&quot;: &quot;A String&quot;, # The reason for non compliance of these files.
    &quot;nonCompliantFiles&quot;: [ # A list of files which are violating compliance checks.
      { # Details about files that caused a compliance check to fail.
        &quot;displayCommand&quot;: &quot;A String&quot;, # Command to display the non-compliant files.
        &quot;path&quot;: &quot;A String&quot;, # display_command is a single command that can be used to display a list of non compliant files. When there is no such command, we can also iterate a list of non compliant file using &#x27;path&#x27;. Empty if `display_command` is set.
        &quot;reason&quot;: &quot;A String&quot;, # Explains why a file is non compliant for a CIS check.
      },
    ],
  },
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time this `Occurrence` was created.
  &quot;deployment&quot;: { # The period during which some deployable was active in a runtime. # Describes the deployment of an artifact on a runtime.
    &quot;address&quot;: &quot;A String&quot;, # Address of the runtime element hosting this deployment.
    &quot;config&quot;: &quot;A String&quot;, # Configuration used to create this deployment.
    &quot;deployTime&quot;: &quot;A String&quot;, # Beginning of the lifetime of this deployment.
    &quot;platform&quot;: &quot;A String&quot;, # Platform hosting this deployment.
    &quot;resourceUri&quot;: [ # Resource URI for the artifact being deployed taken from the deployable field with the same name.
      &quot;A String&quot;,
    ],
    &quot;undeployTime&quot;: &quot;A String&quot;, # End of the lifetime of this deployment.
    &quot;userEmail&quot;: &quot;A String&quot;, # Identity of the user that triggered this deployment.
  },
  &quot;derivedImage&quot;: { # Derived describes the derived image portion (Occurrence) of the DockerImage relationship. This image would be produced from a Dockerfile with FROM . # Describes how this resource derives from the basis in the associated note.
    &quot;baseResourceUrl&quot;: &quot;A String&quot;, # Output only. This contains the base image URL for the derived image occurrence.
    &quot;distance&quot;: 42, # Output only. The number of layers by which this image differs from the associated image basis.
    &quot;fingerprint&quot;: { # A set of properties that uniquely identify a given Docker image. # The fingerprint of the derived image.
      &quot;v1Name&quot;: &quot;A String&quot;, # The layer-id of the final layer in the Docker image&#x27;s v1 representation. This field can be used as a filter in list requests.
      &quot;v2Blob&quot;: [ # 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. This field can be used as a filter in list requests.
    },
    &quot;layerInfo&quot;: [ # This contains layer-specific metadata, if populated it has length &quot;distance&quot; and is ordered with [distance] being the layer immediately following the base image and [1] being the final layer.
      { # Layer holds metadata specific to a layer of a Docker image.
        &quot;arguments&quot;: &quot;A String&quot;, # The recovered arguments to the Dockerfile directive.
        &quot;directive&quot;: &quot;A String&quot;, # The recovered Dockerfile directive used to construct this layer.
      },
    ],
  },
  &quot;discovered&quot;: { # Provides information about the scan status of a discovered resource. # Describes the initial scan status for this resource.
    &quot;analysisCompleted&quot;: { # Indicates which analysis completed successfully. Multiple types of analysis can be performed on a single resource. # The list of analysis that were completed for a resource.
      &quot;analysisType&quot;: [ # type of analysis that were completed on a resource.
        &quot;A String&quot;,
      ],
    },
    &quot;analysisError&quot;: [ # Indicates any errors encountered during analysis of a resource. There could be 0 or more of these errors.
      { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).
        &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
        &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
          {
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
          },
        ],
        &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
      },
    ],
    &quot;analysisStatus&quot;: &quot;A String&quot;, # The status of discovery for the resource.
    &quot;analysisStatusError&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # When an error is encountered this will contain a LocalizedMessage under details to show to the user. The LocalizedMessage output only and populated by the API.
      &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
      &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
        {
          &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
        },
      ],
      &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
    },
    &quot;archiveTime&quot;: &quot;A String&quot;, # The time occurrences related to this discovery occurrence were archived.
    &quot;continuousAnalysis&quot;: &quot;A String&quot;, # Whether the resource is continuously analyzed.
    &quot;cpe&quot;: &quot;A String&quot;, # The CPE of the resource being scanned.
    &quot;lastScanTime&quot;: &quot;A String&quot;, # The last time this resource was scanned.
    &quot;operation&quot;: { # This resource represents a long-running operation that is the result of a network API call. # Output only. An operation that indicates the status of the current scan. This field is deprecated, do not use.
      &quot;done&quot;: True or False, # If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.
      &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure or cancellation.
        &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
        &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
          {
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
          },
        ],
        &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
      },
      &quot;metadata&quot;: { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
      &quot;name&quot;: &quot;A String&quot;, # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.
      &quot;response&quot;: { # The normal, successful response of the operation. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    },
    &quot;sbomStatus&quot;: { # The status of an SBOM generation. # Output only. The status of an SBOM generation.
      &quot;error&quot;: &quot;A String&quot;, # Output only. If there was an error generating an SBOM, this will indicate what that error was.
      &quot;sbomState&quot;: &quot;A String&quot;, # Output only. The progress of the SBOM generation.
    },
  },
  &quot;dsseAttestation&quot;: { # An occurrence describing an attestation on a resource # This represents a DSSE attestation occurrence
    &quot;envelope&quot;: { # MUST match https://github.com/secure-systems-lab/dsse/blob/master/envelope.proto. An authenticated message of arbitrary type. # If doing something security critical, make sure to verify the signatures in this metadata.
      &quot;payload&quot;: &quot;A String&quot;, # The bytes being signed
      &quot;payloadType&quot;: &quot;A String&quot;, # The type of payload being signed
      &quot;signatures&quot;: [ # The signatures over the payload
        { # A DSSE signature
          &quot;keyid&quot;: &quot;A String&quot;, # A reference id to the key being used for signing
          &quot;sig&quot;: &quot;A String&quot;, # The signature itself
        },
      ],
    },
    &quot;statement&quot;: { # Spec defined at https://github.com/in-toto/attestation/tree/main/spec#statement The serialized InTotoStatement will be stored as Envelope.payload. Envelope.payloadType is always &quot;application/vnd.in-toto+json&quot;.
      &quot;_type&quot;: &quot;A String&quot;, # Always &quot;https://in-toto.io/Statement/v0.1&quot;.
      &quot;predicateType&quot;: &quot;A String&quot;, # &quot;https://slsa.dev/provenance/v0.1&quot; for SlsaProvenance.
      &quot;provenance&quot;: { # Generic Grafeas provenance.
        &quot;builderConfig&quot;: { # required
          &quot;id&quot;: &quot;A String&quot;,
        },
        &quot;materials&quot;: [ # The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on. This is considered to be incomplete unless metadata.completeness.materials is true. Unset or null is equivalent to empty.
          &quot;A String&quot;,
        ],
        &quot;metadata&quot;: { # Other properties of the build.
          &quot;buildFinishedOn&quot;: &quot;A String&quot;, # The timestamp of when the build completed.
          &quot;buildInvocationId&quot;: &quot;A String&quot;, # Identifies the particular build invocation, which can be useful for finding associated logs or other ad-hoc analysis. The value SHOULD be globally unique, per in-toto Provenance spec.
          &quot;buildStartedOn&quot;: &quot;A String&quot;, # The timestamp of when the build started.
          &quot;completeness&quot;: { # Indicates that the builder claims certain fields in this message to be complete. # Indicates that the builder claims certain fields in this message to be complete.
            &quot;arguments&quot;: True or False, # If true, the builder claims that recipe.arguments is complete, meaning that all external inputs are properly captured in the recipe.
            &quot;environment&quot;: True or False, # If true, the builder claims that recipe.environment is claimed to be complete.
            &quot;materials&quot;: True or False, # If true, the builder claims that materials are complete, usually through some controls to prevent network access. Sometimes called &quot;hermetic&quot;.
          },
          &quot;reproducible&quot;: True or False, # If true, the builder claims that running the recipe on materials will produce bit-for-bit identical output.
        },
        &quot;recipe&quot;: { # Steps taken to build the artifact. For a TaskRun, typically each container corresponds to one step in the recipe. # Identifies the configuration used for the build. When combined with materials, this SHOULD fully describe the build, such that re-running this recipe results in bit-for-bit identical output (if the build is reproducible). required
          &quot;arguments&quot;: [ # Collection of all external inputs that influenced the build on top of recipe.definedInMaterial and recipe.entryPoint. For example, if the recipe type were &quot;make&quot;, then this might be the flags passed to make aside from the target, which is captured in recipe.entryPoint.
            {
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
            },
          ],
          &quot;definedInMaterial&quot;: &quot;A String&quot;, # Index in materials containing the recipe steps that are not implied by recipe.type. For example, if the recipe type were &quot;make&quot;, then this would point to the source containing the Makefile, not the make program itself. Set to -1 if the recipe doesn&#x27;t come from a material, as zero is default unset value for int64.
          &quot;entryPoint&quot;: &quot;A String&quot;, # String identifying the entry point into the build. This is often a path to a configuration file and/or a target label within that file. The syntax and meaning are defined by recipe.type. For example, if the recipe type were &quot;make&quot;, then this would reference the directory in which to run make as well as which target to use.
          &quot;environment&quot;: [ # Any other builder-controlled inputs necessary for correctly evaluating the recipe. Usually only needed for reproducing the build but not evaluated as part of policy.
            {
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
            },
          ],
          &quot;type&quot;: &quot;A String&quot;, # URI indicating what type of recipe was performed. It determines the meaning of recipe.entryPoint, recipe.arguments, recipe.environment, and materials.
        },
      },
      &quot;slsaProvenance&quot;: { # SlsaProvenance is the slsa provenance as defined by the slsa spec. # SLSA 0.1 provenance.
        &quot;builder&quot;: { # SlsaBuilder encapsulates the identity of the builder of this provenance. # builder is the builder of this provenance
          &quot;id&quot;: &quot;A String&quot;, # id is the id of the slsa provenance builder
        },
        &quot;materials&quot;: [ # The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on. This is considered to be incomplete unless metadata.completeness.materials is true. Unset or null is equivalent to empty.
          { # Material is a material used in the generation of the provenance
            &quot;digest&quot;: { # digest is a map from a hash algorithm (e.g. sha256) to the value in the material
              &quot;a_key&quot;: &quot;A String&quot;,
            },
            &quot;uri&quot;: &quot;A String&quot;, # uri is the uri of the material
          },
        ],
        &quot;metadata&quot;: { # Other properties of the build. # metadata is the metadata of the provenance
          &quot;buildFinishedOn&quot;: &quot;A String&quot;, # The timestamp of when the build completed.
          &quot;buildInvocationId&quot;: &quot;A String&quot;, # Identifies the particular build invocation, which can be useful for finding associated logs or other ad-hoc analysis. The value SHOULD be globally unique, per in-toto Provenance spec.
          &quot;buildStartedOn&quot;: &quot;A String&quot;, # The timestamp of when the build started.
          &quot;completeness&quot;: { # Indicates that the builder claims certain fields in this message to be complete. # Indicates that the builder claims certain fields in this message to be complete.
            &quot;arguments&quot;: True or False, # If true, the builder claims that recipe.arguments is complete, meaning that all external inputs are properly captured in the recipe.
            &quot;environment&quot;: True or False, # If true, the builder claims that recipe.environment is claimed to be complete.
            &quot;materials&quot;: True or False, # If true, the builder claims that materials are complete, usually through some controls to prevent network access. Sometimes called &quot;hermetic&quot;.
          },
          &quot;reproducible&quot;: True or False, # If true, the builder claims that running the recipe on materials will produce bit-for-bit identical output.
        },
        &quot;recipe&quot;: { # Steps taken to build the artifact. For a TaskRun, typically each container corresponds to one step in the recipe. # Identifies the configuration used for the build. When combined with materials, this SHOULD fully describe the build, such that re-running this recipe results in bit-for-bit identical output (if the build is reproducible).
          &quot;arguments&quot;: { # Collection of all external inputs that influenced the build on top of recipe.definedInMaterial and recipe.entryPoint. For example, if the recipe type were &quot;make&quot;, then this might be the flags passed to make aside from the target, which is captured in recipe.entryPoint. Depending on the recipe Type, the structure may be different.
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
          },
          &quot;definedInMaterial&quot;: &quot;A String&quot;, # Index in materials containing the recipe steps that are not implied by recipe.type. For example, if the recipe type were &quot;make&quot;, then this would point to the source containing the Makefile, not the make program itself. Set to -1 if the recipe doesn&#x27;t come from a material, as zero is default unset value for int64.
          &quot;entryPoint&quot;: &quot;A String&quot;, # String identifying the entry point into the build. This is often a path to a configuration file and/or a target label within that file. The syntax and meaning are defined by recipe.type. For example, if the recipe type were &quot;make&quot;, then this would reference the directory in which to run make as well as which target to use.
          &quot;environment&quot;: { # Any other builder-controlled inputs necessary for correctly evaluating the recipe. Usually only needed for reproducing the build but not evaluated as part of policy. Depending on the recipe Type, the structure may be different.
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
          },
          &quot;type&quot;: &quot;A String&quot;, # URI indicating what type of recipe was performed. It determines the meaning of recipe.entryPoint, recipe.arguments, recipe.environment, and materials.
        },
      },
      &quot;slsaProvenanceZeroTwo&quot;: { # SlsaProvenanceZeroTwo is the slsa provenance as defined by the slsa spec. See full explanation of fields at slsa.dev/provenance/v0.2. # SLSA 0.2 provenance.
        &quot;buildConfig&quot;: { # Lists the steps in the build.
          &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
        },
        &quot;buildType&quot;: &quot;A String&quot;, # URI indicating what type of build was performed.
        &quot;builder&quot;: { # Identifies the entity that executed the recipe, which is trusted to have correctly performed the operation and populated this provenance. # Identifies the entity that executed the recipe, which is trusted to have correctly performed the operation and populated this provenance.
          &quot;id&quot;: &quot;A String&quot;, # URI indicating the builder’s identity.
        },
        &quot;invocation&quot;: { # Identifies the event that kicked off the build. # Identifies the event that kicked off the build.
          &quot;configSource&quot;: { # Describes where the config file that kicked off the build came from. This is effectively a pointer to the source where buildConfig came from. # Describes where the config file that kicked off the build came from.
            &quot;digest&quot;: { # Collection of cryptographic digests for the contents of the artifact specified by invocation.configSource.uri.
              &quot;a_key&quot;: &quot;A String&quot;,
            },
            &quot;entryPoint&quot;: &quot;A String&quot;, # String identifying the entry point into the build.
            &quot;uri&quot;: &quot;A String&quot;, # URI indicating the identity of the source of the config.
          },
          &quot;environment&quot;: { # Any other builder-controlled inputs necessary for correctly evaluating the build.
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
          },
          &quot;parameters&quot;: { # Collection of all external inputs that influenced the build on top of invocation.configSource.
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
          },
        },
        &quot;materials&quot;: [ # The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on.
          { # The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on.
            &quot;digest&quot;: { # Collection of cryptographic digests for the contents of this artifact.
              &quot;a_key&quot;: &quot;A String&quot;,
            },
            &quot;uri&quot;: &quot;A String&quot;, # The method by which this artifact was referenced during the build.
          },
        ],
        &quot;metadata&quot;: { # Other properties of the build. # Other properties of the build.
          &quot;buildFinishedOn&quot;: &quot;A String&quot;, # The timestamp of when the build completed.
          &quot;buildInvocationId&quot;: &quot;A String&quot;, # Identifies this particular build invocation, which can be useful for finding associated logs or other ad-hoc analysis.
          &quot;buildStartedOn&quot;: &quot;A String&quot;, # The timestamp of when the build started.
          &quot;completeness&quot;: { # Indicates that the builder claims certain fields in this message to be complete. # Indicates that the builder claims certain fields in this message to be complete.
            &quot;environment&quot;: True or False, # If true, the builder claims that invocation.environment is complete.
            &quot;materials&quot;: True or False, # If true, the builder claims that materials is complete.
            &quot;parameters&quot;: True or False, # If true, the builder claims that invocation.parameters is complete.
          },
          &quot;reproducible&quot;: True or False, # If true, the builder claims that running invocation on materials will produce bit-for-bit identical output.
        },
      },
      &quot;subject&quot;: [ # subject is the subjects of the intoto statement
        { # Subject refers to the subject of the intoto statement
          &quot;digest&quot;: { # &quot;&quot;: &quot;&quot; Algorithms can be e.g. sha256, sha512 See https://github.com/in-toto/attestation/blob/main/spec/field_types.md#DigestSet
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;name&quot;: &quot;A String&quot;, # name is the name of the Subject used here
        },
      ],
    },
  },
  &quot;envelope&quot;: { # MUST match https://github.com/secure-systems-lab/dsse/blob/master/envelope.proto. An authenticated message of arbitrary type. # https://github.com/secure-systems-lab/dsse
    &quot;payload&quot;: &quot;A String&quot;, # The bytes being signed
    &quot;payloadType&quot;: &quot;A String&quot;, # The type of payload being signed
    &quot;signatures&quot;: [ # The signatures over the payload
      { # A DSSE signature
        &quot;keyid&quot;: &quot;A String&quot;, # A reference id to the key being used for signing
        &quot;sig&quot;: &quot;A String&quot;, # The signature itself
      },
    ],
  },
  &quot;installation&quot;: { # This represents how a particular software package may be installed on a system. # Describes the installation of a package on the linked resource.
    &quot;architecture&quot;: &quot;A String&quot;, # Output only. The CPU architecture for which packages in this distribution channel were built. Architecture will be blank for language packages.
    &quot;cpeUri&quot;: &quot;A String&quot;, # Output only. The cpe_uri in [CPE format](https://cpe.mitre.org/specification/) denoting the package manager version distributing a package. The cpe_uri will be blank for language packages.
    &quot;license&quot;: { # License information. # Licenses that have been declared by the authors of the package.
      &quot;comments&quot;: &quot;A String&quot;, # Comments
      &quot;expression&quot;: &quot;A String&quot;, # Often a single license can be used to represent the licensing terms. Sometimes it is necessary to include a choice of one or more licenses or some combination of license identifiers. Examples: &quot;LGPL-2.1-only OR MIT&quot;, &quot;LGPL-2.1-only AND MIT&quot;, &quot;GPL-2.0-or-later WITH Bison-exception-2.2&quot;.
    },
    &quot;location&quot;: [ # All of the places within the filesystem versions of this package have been found.
      { # An occurrence of a particular package installation found within a system&#x27;s filesystem. e.g. glibc was found in /var/lib/dpkg/status
        &quot;cpeUri&quot;: &quot;A String&quot;, # Deprecated. The cpe_uri in [cpe format](https://cpe.mitre.org/specification/) denoting the package manager version distributing a package.
        &quot;path&quot;: &quot;A String&quot;, # The path from which we gathered that this package/version is installed.
        &quot;version&quot;: { # Version contains structured information about the version of the package. For a discussion of this in Debian/Ubuntu: http://serverfault.com/questions/604541/debian-packages-version-convention For a discussion of this in Redhat/Fedora/Centos: http://blog.jasonantman.com/2014/07/how-yum-and-rpm-compare-versions/ # Deprecated. The version installed at this location.
          &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
          &quot;inclusive&quot;: True or False, # Whether this version is vulnerable, when defining the version bounds. For example, if the minimum version is 2.0, inclusive=true would say 2.0 is vulnerable, while inclusive=false would say it&#x27;s not
          &quot;kind&quot;: &quot;A String&quot;, # Distinguish between sentinel MIN/MAX versions and normal versions. If kind is not NORMAL, then the other fields are ignored.
          &quot;name&quot;: &quot;A String&quot;, # 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;name&quot;: &quot;A String&quot;, # Output only. The name of the installed package.
    &quot;packageType&quot;: &quot;A String&quot;, # Output only. The type of package; whether native or non native (e.g., ruby gems, node.js packages, etc.).
    &quot;version&quot;: { # Version contains structured information about the version of the package. For a discussion of this in Debian/Ubuntu: http://serverfault.com/questions/604541/debian-packages-version-convention For a discussion of this in Redhat/Fedora/Centos: http://blog.jasonantman.com/2014/07/how-yum-and-rpm-compare-versions/ # Output only. The version of the package.
      &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
      &quot;inclusive&quot;: True or False, # Whether this version is vulnerable, when defining the version bounds. For example, if the minimum version is 2.0, inclusive=true would say 2.0 is vulnerable, while inclusive=false would say it&#x27;s not
      &quot;kind&quot;: &quot;A String&quot;, # Distinguish between sentinel MIN/MAX versions and normal versions. If kind is not NORMAL, then the other fields are ignored.
      &quot;name&quot;: &quot;A String&quot;, # 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;kind&quot;: &quot;A String&quot;, # Output only. This explicitly denotes which of the `Occurrence` details are specified. This field can be used as a filter in list requests.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The name of the `Occurrence` in the form &quot;projects/{project_id}/occurrences/{OCCURRENCE_ID}&quot;
  &quot;noteName&quot;: &quot;A String&quot;, # An analysis note associated with this image, in the form &quot;providers/{provider_id}/notes/{NOTE_ID}&quot; This field can be used as a filter in list requests.
  &quot;remediation&quot;: &quot;A String&quot;, # A description of actions that can be taken to remedy the `Note`
  &quot;resource&quot;: { #  Resource is an entity that can have metadata. E.g., a Docker image. #  The resource for which the `Occurrence` applies.
    &quot;contentHash&quot;: { # Container message for hash values. # The hash of the resource content. E.g., the Docker digest.
      &quot;type&quot;: &quot;A String&quot;, # The type of hash that was performed.
      &quot;value&quot;: &quot;A String&quot;, # The hash value.
    },
    &quot;name&quot;: &quot;A String&quot;, # The name of the resource. E.g., the name of a Docker image - &quot;Debian&quot;.
    &quot;uri&quot;: &quot;A String&quot;, # The unique URI of the resource. E.g., &quot;https://gcr.io/project/image@sha256:foo&quot; for a Docker image.
  },
  &quot;resourceUrl&quot;: &quot;A String&quot;, # The unique URL of the image or the container for which the `Occurrence` applies. For example, https://gcr.io/project/image@sha256:foo This field can be used as a filter in list requests.
  &quot;sbom&quot;: { # DocumentOccurrence represents an SPDX Document Creation Information section: https://spdx.github.io/spdx-spec/2-document-creation-information/ # Describes a specific software bill of materials document.
    &quot;createTime&quot;: &quot;A String&quot;, # Identify when the SPDX file was originally created. The date is to be specified according to combined date and time in UTC format as specified in ISO 8601 standard
    &quot;creatorComment&quot;: &quot;A String&quot;, # A field for creators of the SPDX file to provide general comments about the creation of the SPDX file or any other relevant comment not included in the other fields
    &quot;creators&quot;: [ # Identify who (or what, in the case of a tool) created the SPDX file. If the SPDX file was created by an individual, indicate the person&#x27;s name
      &quot;A String&quot;,
    ],
    &quot;documentComment&quot;: &quot;A String&quot;, # A field for creators of the SPDX file content to provide comments to the consumers of the SPDX document
    &quot;externalDocumentRefs&quot;: [ # Identify any external SPDX documents referenced within this SPDX document
      &quot;A String&quot;,
    ],
    &quot;id&quot;: &quot;A String&quot;, # Identify the current SPDX document which may be referenced in relationships by other files, packages internally and documents externally
    &quot;licenseListVersion&quot;: &quot;A String&quot;, # A field for creators of the SPDX file to provide the version of the SPDX License List used when the SPDX file was created
    &quot;namespace&quot;: &quot;A String&quot;, # Provide an SPDX document specific namespace as a unique absolute Uniform Resource Identifier (URI) as specified in RFC-3986, with the exception of the ‘#’ delimiter
    &quot;title&quot;: &quot;A String&quot;, # Identify name of this document as designated by creator
  },
  &quot;sbomReference&quot;: { # The occurrence representing an SBOM reference as applied to a specific resource. The occurrence follows the DSSE specification. See https://github.com/secure-systems-lab/dsse/blob/master/envelope.md for more details. # This represents an SBOM reference occurrence
    &quot;payload&quot;: { # The actual payload that contains the SBOM Reference data. The payload follows the intoto statement specification. See https://github.com/in-toto/attestation/blob/main/spec/v1.0/statement.md for more details. # The actual payload that contains the SBOM reference data.
      &quot;_type&quot;: &quot;A String&quot;, # Identifier for the schema of the Statement.
      &quot;predicate&quot;: { # A predicate which describes the SBOM being referenced. # Additional parameters of the Predicate. Includes the actual data about the SBOM.
        &quot;digest&quot;: { # A map of algorithm to digest of the contents of the SBOM.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;location&quot;: &quot;A String&quot;, # The location of the SBOM.
        &quot;mimeType&quot;: &quot;A String&quot;, # The mime type of the SBOM.
        &quot;referrerId&quot;: &quot;A String&quot;, # The person or system referring this predicate to the consumer.
      },
      &quot;predicateType&quot;: &quot;A String&quot;, # URI identifying the type of the Predicate.
      &quot;subject&quot;: [ # Set of software artifacts that the attestation applies to. Each element represents a single software artifact.
        { # Subject refers to the subject of the intoto statement
          &quot;digest&quot;: { # &quot;&quot;: &quot;&quot; Algorithms can be e.g. sha256, sha512 See https://github.com/in-toto/attestation/blob/main/spec/field_types.md#DigestSet
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;name&quot;: &quot;A String&quot;, # name is the name of the Subject used here
        },
      ],
    },
    &quot;payloadType&quot;: &quot;A String&quot;, # The kind of payload that SbomReferenceIntotoPayload takes. Since it&#x27;s in the intoto format, this value is expected to be &#x27;application/vnd.in-toto+json&#x27;.
    &quot;signatures&quot;: [ # The signatures over the payload.
      { # A DSSE signature
        &quot;keyid&quot;: &quot;A String&quot;, # A reference id to the key being used for signing
        &quot;sig&quot;: &quot;A String&quot;, # The signature itself
      },
    ],
  },
  &quot;spdxFile&quot;: { # FileOccurrence represents an SPDX File Information section: https://spdx.github.io/spdx-spec/4-file-information/ # Describes a specific SPDX File.
    &quot;attributions&quot;: [ # This field provides a place for the SPDX data creator to record, at the file level, acknowledgements that may be needed to be communicated in some contexts
      &quot;A String&quot;,
    ],
    &quot;comment&quot;: &quot;A String&quot;, # This field provides a place for the SPDX file creator to record any general comments about the file
    &quot;contributors&quot;: [ # This field provides a place for the SPDX file creator to record file contributors
      &quot;A String&quot;,
    ],
    &quot;copyright&quot;: &quot;A String&quot;, # Identify the copyright holder of the file, as well as any dates present
    &quot;filesLicenseInfo&quot;: [ # This field contains the license information actually found in the file, if any
      &quot;A String&quot;,
    ],
    &quot;id&quot;: &quot;A String&quot;, # Uniquely identify any element in an SPDX document which may be referenced by other elements
    &quot;licenseConcluded&quot;: { # License information. # This field contains the license the SPDX file creator has concluded as governing the file or alternative values if the governing license cannot be determined
      &quot;comments&quot;: &quot;A String&quot;, # Comments
      &quot;expression&quot;: &quot;A String&quot;, # Often a single license can be used to represent the licensing terms. Sometimes it is necessary to include a choice of one or more licenses or some combination of license identifiers. Examples: &quot;LGPL-2.1-only OR MIT&quot;, &quot;LGPL-2.1-only AND MIT&quot;, &quot;GPL-2.0-or-later WITH Bison-exception-2.2&quot;.
    },
    &quot;notice&quot;: &quot;A String&quot;, # This field provides a place for the SPDX file creator to record license notices or other such related notices found in the file
  },
  &quot;spdxPackage&quot;: { # PackageInfoOccurrence represents an SPDX Package Information section: https://spdx.github.io/spdx-spec/3-package-information/ # Describes a specific SPDX Package.
    &quot;comment&quot;: &quot;A String&quot;, # A place for the SPDX file creator to record any general comments about the package being described
    &quot;filename&quot;: &quot;A String&quot;, # Provide the actual file name of the package, or path of the directory being treated as a package
    &quot;homePage&quot;: &quot;A String&quot;, # Output only. Provide a place for the SPDX file creator to record a web site that serves as the package&#x27;s home page
    &quot;id&quot;: &quot;A String&quot;, # Uniquely identify any element in an SPDX document which may be referenced by other elements
    &quot;licenseConcluded&quot;: { # License information. # package or alternative values, if the governing license cannot be determined
      &quot;comments&quot;: &quot;A String&quot;, # Comments
      &quot;expression&quot;: &quot;A String&quot;, # Often a single license can be used to represent the licensing terms. Sometimes it is necessary to include a choice of one or more licenses or some combination of license identifiers. Examples: &quot;LGPL-2.1-only OR MIT&quot;, &quot;LGPL-2.1-only AND MIT&quot;, &quot;GPL-2.0-or-later WITH Bison-exception-2.2&quot;.
    },
    &quot;packageType&quot;: &quot;A String&quot;, # Output only. The type of package: OS, MAVEN, GO, GO_STDLIB, etc.
    &quot;sourceInfo&quot;: &quot;A String&quot;, # Provide a place for the SPDX file creator to record any relevant background information or additional comments about the origin of the package
    &quot;summaryDescription&quot;: &quot;A String&quot;, # Output only. A short description of the package
    &quot;title&quot;: &quot;A String&quot;, # Output only. Identify the full name of the package as given by the Package Originator
    &quot;version&quot;: &quot;A String&quot;, # Output only. Identify the version of the package
  },
  &quot;spdxRelationship&quot;: { # RelationshipOccurrence represents an SPDX Relationship section: https://spdx.github.io/spdx-spec/7-relationships-between-SPDX-elements/ # Describes a specific relationship between SPDX elements.
    &quot;comment&quot;: &quot;A String&quot;, # A place for the SPDX file creator to record any general comments about the relationship
    &quot;source&quot;: &quot;A String&quot;, # Also referred to as SPDXRef-A The source SPDX element (file, package, etc)
    &quot;target&quot;: &quot;A String&quot;, # Also referred to as SPDXRef-B The target SPDC element (file, package, etc) In cases where there are &quot;known unknowns&quot;, the use of the keyword NOASSERTION can be used The keywords NONE can be used to indicate that an SPDX element (package/file/snippet) has no other elements connected by some relationship to it
    &quot;type&quot;: &quot;A String&quot;, # Output only. The type of relationship between the source and target SPDX elements
  },
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time this `Occurrence` was last updated.
  &quot;upgrade&quot;: { # An Upgrade Occurrence represents that a specific resource_url could install a specific upgrade. This presence is supplied via local sources (i.e. it is present in the mirror and the running system has noticed its availability). # Describes an upgrade.
    &quot;distribution&quot;: { # The Upgrade Distribution represents metadata about the Upgrade for each operating system (CPE). Some distributions have additional metadata around updates, classifying them into various categories and severities. # Metadata about the upgrade for available for the specific operating system for the resource_url. This allows efficient filtering, as well as making it easier to use the occurrence.
      &quot;classification&quot;: &quot;A String&quot;, # The operating system classification of this Upgrade, as specified by the upstream operating system upgrade feed.
      &quot;cpeUri&quot;: &quot;A String&quot;, # Required - The specific operating system this metadata applies to. See https://cpe.mitre.org/specification/.
      &quot;cve&quot;: [ # The cve that would be resolved by this upgrade.
        &quot;A String&quot;,
      ],
      &quot;severity&quot;: &quot;A String&quot;, # The severity as specified by the upstream operating system.
    },
    &quot;package&quot;: &quot;A String&quot;, # Required - The package this Upgrade is for.
    &quot;parsedVersion&quot;: { # Version contains structured information about the version of the package. For a discussion of this in Debian/Ubuntu: http://serverfault.com/questions/604541/debian-packages-version-convention For a discussion of this in Redhat/Fedora/Centos: http://blog.jasonantman.com/2014/07/how-yum-and-rpm-compare-versions/ # Required - The version of the package in a machine + human readable form.
      &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
      &quot;inclusive&quot;: True or False, # Whether this version is vulnerable, when defining the version bounds. For example, if the minimum version is 2.0, inclusive=true would say 2.0 is vulnerable, while inclusive=false would say it&#x27;s not
      &quot;kind&quot;: &quot;A String&quot;, # Distinguish between sentinel MIN/MAX versions and normal versions. If kind is not NORMAL, then the other fields are ignored.
      &quot;name&quot;: &quot;A String&quot;, # 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;vulnerabilityDetails&quot;: { # Used by Occurrence to point to where the vulnerability exists and how to fix it. # Details of a security vulnerability note.
    &quot;cvssScore&quot;: 3.14, # Output only. The CVSS score of this vulnerability. CVSS score is on a scale of 0-10 where 0 indicates low severity and 10 indicates high severity.
    &quot;cvssV2&quot;: { # Common Vulnerability Scoring System. This message is compatible with CVSS v2 and v3. For CVSS v2 details, see https://www.first.org/cvss/v2/guide CVSS v2 calculator: https://nvd.nist.gov/vuln-metrics/cvss/v2-calculator For CVSS v3 details, see https://www.first.org/cvss/specification-document CVSS v3 calculator: https://nvd.nist.gov/vuln-metrics/cvss/v3-calculator # The CVSS v2 score of this vulnerability.
      &quot;attackComplexity&quot;: &quot;A String&quot;, # Defined in CVSS v3, CVSS v2
      &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. Defined in CVSS v3, CVSS v2
      &quot;authentication&quot;: &quot;A String&quot;, # Defined in CVSS v2
      &quot;availabilityImpact&quot;: &quot;A String&quot;, # Defined in CVSS v3, CVSS v2
      &quot;baseScore&quot;: 3.14, # The base score is a function of the base metric scores.
      &quot;confidentialityImpact&quot;: &quot;A String&quot;, # Defined in CVSS v3, CVSS v2
      &quot;exploitabilityScore&quot;: 3.14,
      &quot;impactScore&quot;: 3.14,
      &quot;integrityImpact&quot;: &quot;A String&quot;, # Defined in CVSS v3, CVSS v2
      &quot;privilegesRequired&quot;: &quot;A String&quot;, # Defined in CVSS v3
      &quot;scope&quot;: &quot;A String&quot;, # Defined in CVSS v3
      &quot;userInteraction&quot;: &quot;A String&quot;, # Defined in CVSS v3
    },
    &quot;cvssV3&quot;: { # Common Vulnerability Scoring System. This message is compatible with CVSS v2 and v3. For CVSS v2 details, see https://www.first.org/cvss/v2/guide CVSS v2 calculator: https://nvd.nist.gov/vuln-metrics/cvss/v2-calculator For CVSS v3 details, see https://www.first.org/cvss/specification-document CVSS v3 calculator: https://nvd.nist.gov/vuln-metrics/cvss/v3-calculator # The CVSS v3 score of this vulnerability.
      &quot;attackComplexity&quot;: &quot;A String&quot;, # Defined in CVSS v3, CVSS v2
      &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. Defined in CVSS v3, CVSS v2
      &quot;authentication&quot;: &quot;A String&quot;, # Defined in CVSS v2
      &quot;availabilityImpact&quot;: &quot;A String&quot;, # Defined in CVSS v3, CVSS v2
      &quot;baseScore&quot;: 3.14, # The base score is a function of the base metric scores.
      &quot;confidentialityImpact&quot;: &quot;A String&quot;, # Defined in CVSS v3, CVSS v2
      &quot;exploitabilityScore&quot;: 3.14,
      &quot;impactScore&quot;: 3.14,
      &quot;integrityImpact&quot;: &quot;A String&quot;, # Defined in CVSS v3, CVSS v2
      &quot;privilegesRequired&quot;: &quot;A String&quot;, # Defined in CVSS v3
      &quot;scope&quot;: &quot;A String&quot;, # Defined in CVSS v3
      &quot;userInteraction&quot;: &quot;A String&quot;, # Defined in CVSS v3
    },
    &quot;cvssVersion&quot;: &quot;A String&quot;, # Output only. CVSS version used to populate cvss_score and severity.
    &quot;effectiveSeverity&quot;: &quot;A String&quot;, # The distro assigned severity for this vulnerability when that is available and note provider assigned severity when distro has not yet assigned a severity for this vulnerability. When there are multiple package issues for this vulnerability, they can have different effective severities because some might come from the distro and some might come from installed language packs (e.g. Maven JARs or Go binaries). For this reason, it is advised to use the effective severity on the PackageIssue level, as this field may eventually be deprecated. In the case where multiple PackageIssues have different effective severities, the one set here will be the highest severity of any of the PackageIssues.
    &quot;extraDetails&quot;: &quot;A String&quot;, # Occurrence-specific extra details about the vulnerability.
    &quot;packageIssue&quot;: [ # The set of affected locations and their fixes (if available) within the associated resource.
      { # This message wraps a location affected by a vulnerability and its associated fix (if one is available).
        &quot;affectedLocation&quot;: { # The location of the vulnerability # The location of the vulnerability.
          &quot;cpeUri&quot;: &quot;A String&quot;, # The cpe_uri in [cpe format] (https://cpe.mitre.org/specification/) format. Examples include distro or storage location for vulnerable jar. This field can be used as a filter in list requests.
          &quot;fileLocation&quot;: [ # The file location at which this package was found.
            { # Indicates the location at which a package was found.
              &quot;filePath&quot;: &quot;A String&quot;, # For jars that are contained inside .war files, this filepath can indicate the path to war file combined with the path to jar file.
            },
          ],
          &quot;package&quot;: &quot;A String&quot;, # The package being described.
          &quot;version&quot;: { # Version contains structured information about the version of the package. For a discussion of this in Debian/Ubuntu: http://serverfault.com/questions/604541/debian-packages-version-convention For a discussion of this in Redhat/Fedora/Centos: http://blog.jasonantman.com/2014/07/how-yum-and-rpm-compare-versions/ # The version of the package being described. This field can be used as a filter in list requests.
            &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
            &quot;inclusive&quot;: True or False, # Whether this version is vulnerable, when defining the version bounds. For example, if the minimum version is 2.0, inclusive=true would say 2.0 is vulnerable, while inclusive=false would say it&#x27;s not
            &quot;kind&quot;: &quot;A String&quot;, # Distinguish between sentinel MIN/MAX versions and normal versions. If kind is not NORMAL, then the other fields are ignored.
            &quot;name&quot;: &quot;A String&quot;, # 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;effectiveSeverity&quot;: &quot;A String&quot;, # Output only. The distro or language system assigned severity for this vulnerability when that is available and note provider assigned severity when distro or language system has not yet assigned a severity for this vulnerability.
        &quot;fixedLocation&quot;: { # The location of the vulnerability # The location of the available fix for vulnerability.
          &quot;cpeUri&quot;: &quot;A String&quot;, # The cpe_uri in [cpe format] (https://cpe.mitre.org/specification/) format. Examples include distro or storage location for vulnerable jar. This field can be used as a filter in list requests.
          &quot;fileLocation&quot;: [ # The file location at which this package was found.
            { # Indicates the location at which a package was found.
              &quot;filePath&quot;: &quot;A String&quot;, # For jars that are contained inside .war files, this filepath can indicate the path to war file combined with the path to jar file.
            },
          ],
          &quot;package&quot;: &quot;A String&quot;, # The package being described.
          &quot;version&quot;: { # Version contains structured information about the version of the package. For a discussion of this in Debian/Ubuntu: http://serverfault.com/questions/604541/debian-packages-version-convention For a discussion of this in Redhat/Fedora/Centos: http://blog.jasonantman.com/2014/07/how-yum-and-rpm-compare-versions/ # The version of the package being described. This field can be used as a filter in list requests.
            &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
            &quot;inclusive&quot;: True or False, # Whether this version is vulnerable, when defining the version bounds. For example, if the minimum version is 2.0, inclusive=true would say 2.0 is vulnerable, while inclusive=false would say it&#x27;s not
            &quot;kind&quot;: &quot;A String&quot;, # Distinguish between sentinel MIN/MAX versions and normal versions. If kind is not NORMAL, then the other fields are ignored.
            &quot;name&quot;: &quot;A String&quot;, # 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;packageType&quot;: &quot;A String&quot;, # The type of package (e.g. OS, MAVEN, GO).
        &quot;severityName&quot;: &quot;A String&quot;,
      },
    ],
    &quot;severity&quot;: &quot;A String&quot;, # Output only. The note provider assigned Severity of the vulnerability.
    &quot;type&quot;: &quot;A String&quot;, # The type of package; whether native or non native(ruby gems, node.js packages etc). This may be deprecated in the future because we can have multiple PackageIssues with different package types.
    &quot;vexAssessment&quot;: { # VexAssessment provides all publisher provided Vex information that is related to this vulnerability. # VexAssessment provides all publisher provided Vex information that is related to this vulnerability for this resource.
      &quot;cve&quot;: &quot;A String&quot;, # Holds the MITRE standard Common Vulnerabilities and Exposures (CVE) tracking number for the vulnerability.
      &quot;impacts&quot;: [ # Contains information about the impact of this vulnerability, this will change with time.
        &quot;A String&quot;,
      ],
      &quot;justification&quot;: { # Justification provides the justification when the state of the assessment if NOT_AFFECTED. # Justification provides the justification when the state of the assessment if NOT_AFFECTED.
        &quot;details&quot;: &quot;A String&quot;, # Additional details on why this justification was chosen.
        &quot;justificationType&quot;: &quot;A String&quot;, # The justification type for this vulnerability.
      },
      &quot;noteName&quot;: &quot;A String&quot;, # The VulnerabilityAssessment note from which this VexAssessment was generated. This will be of the form: `projects/[PROJECT_ID]/notes/[NOTE_ID]`.
      &quot;relatedUris&quot;: [ # Holds a list of references associated with this vulnerability item and assessment. These uris have additional information about the vulnerability and the assessment itself. E.g. Link to a document which details how this assessment concluded the state of this vulnerability.
        { # An URI message.
          &quot;label&quot;: &quot;A String&quot;, # A label for the URI.
          &quot;uri&quot;: &quot;A String&quot;, # The unique resource identifier.
        },
      ],
      &quot;remediations&quot;: [ # Specifies details on how to handle (and presumably, fix) a vulnerability.
        { # Specifies details on how to handle (and presumably, fix) a vulnerability.
          &quot;details&quot;: &quot;A String&quot;, # Contains a comprehensive human-readable discussion of the remediation.
          &quot;remediationType&quot;: &quot;A String&quot;, # The type of remediation that can be applied.
          &quot;remediationUri&quot;: { # An URI message. # Contains the URL where to obtain the remediation.
            &quot;label&quot;: &quot;A String&quot;, # A label for the URI.
            &quot;uri&quot;: &quot;A String&quot;, # The unique resource identifier.
          },
        },
      ],
      &quot;state&quot;: &quot;A String&quot;, # Provides the state of this Vulnerability assessment.
      &quot;vulnerabilityId&quot;: &quot;A String&quot;, # The vulnerability identifier for this Assessment. Will hold one of common identifiers e.g. CVE, GHSA etc.
    },
  },
}

  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:

    { # `Occurrence` includes information about analysis occurrences for an image.
  &quot;attestation&quot;: { # Occurrence that represents a single &quot;attestation&quot;. The authenticity of an Attestation can be verified using the attached signature. If the verifier trusts the public key of the signer, then verifying the signature is sufficient to establish trust. In this circumstance, the AttestationAuthority to which this Attestation is attached is primarily useful for look-up (how to find this Attestation if you already know the Authority and artifact to be verified) and intent (which authority was this attestation intended to sign for). # Describes an attestation of an artifact.
    &quot;pgpSignedAttestation&quot;: { # An attestation wrapper with a PGP-compatible signature. This message only supports `ATTACHED` signatures, where the payload that is signed is included alongside the signature itself in the same file.
      &quot;contentType&quot;: &quot;A String&quot;, # Type (for example schema) of the attestation payload that was signed. The verifier must ensure that the provided type is one that the verifier supports, and that the attestation payload is a valid instantiation of that type (for example by validating a JSON schema).
      &quot;pgpKeyId&quot;: &quot;A String&quot;, # The cryptographic fingerprint of the key used to generate the signature, as output by, e.g. `gpg --list-keys`. This should be the version 4, full 160-bit fingerprint, expressed as a 40 character hexadecimal string. See https://tools.ietf.org/html/rfc4880#section-12.2 for details. Implementations may choose to acknowledge &quot;LONG&quot;, &quot;SHORT&quot;, or other abbreviated key IDs, but only the full fingerprint is guaranteed to work. In gpg, the full fingerprint can be retrieved from the `fpr` field returned when calling --list-keys with --with-colons. For example: ``` gpg --with-colons --with-fingerprint --force-v4-certs \ --list-keys attester@example.com tru::1:1513631572:0:3:1:5 pub:...... fpr:::::::::24FF6481B76AC91E66A00AC657A93A81EF3AE6FB: ``` Above, the fingerprint is `24FF6481B76AC91E66A00AC657A93A81EF3AE6FB`.
      &quot;signature&quot;: &quot;A String&quot;, # The raw content of the signature, as output by GNU Privacy Guard (GPG) or equivalent. Since this message only supports attached signatures, the payload that was signed must be attached. While the signature format supported is dependent on the verification implementation, currently only ASCII-armored (`--armor` to gpg), non-clearsigned (`--sign` rather than `--clearsign` to gpg) are supported. Concretely, `gpg --sign --armor --output=signature.gpg payload.json` will create the signature content expected in this field in `signature.gpg` for the `payload.json` attestation payload.
    },
  },
  &quot;buildDetails&quot;: { # Message encapsulating build provenance details. # Build details for a verifiable build.
    &quot;inTotoSlsaProvenanceV1&quot;: { # In-Toto Slsa Provenance V1 represents a slsa provenance meeting the slsa spec, wrapped in an in-toto statement. This allows for direct jsonification of a to-spec in-toto slsa statement with a to-spec slsa provenance.
      &quot;_type&quot;: &quot;A String&quot;, # InToto spec defined at https://github.com/in-toto/attestation/tree/main/spec#statement
      &quot;predicate&quot;: { # Keep in sync with schema at https://github.com/slsa-framework/slsa/blob/main/docs/provenance/schema/v1/provenance.proto Builder renamed to ProvenanceBuilder because of Java conflicts.
        &quot;buildDefinition&quot;: {
          &quot;buildType&quot;: &quot;A String&quot;,
          &quot;externalParameters&quot;: {
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
          },
          &quot;internalParameters&quot;: {
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
          },
          &quot;resolvedDependencies&quot;: [
            {
              &quot;annotations&quot;: {
                &quot;a_key&quot;: &quot;&quot;,
              },
              &quot;content&quot;: &quot;A String&quot;,
              &quot;digest&quot;: {
                &quot;a_key&quot;: &quot;A String&quot;,
              },
              &quot;downloadLocation&quot;: &quot;A String&quot;,
              &quot;mediaType&quot;: &quot;A String&quot;,
              &quot;name&quot;: &quot;A String&quot;,
              &quot;uri&quot;: &quot;A String&quot;,
            },
          ],
        },
        &quot;runDetails&quot;: {
          &quot;builder&quot;: {
            &quot;builderDependencies&quot;: [
              {
                &quot;annotations&quot;: {
                  &quot;a_key&quot;: &quot;&quot;,
                },
                &quot;content&quot;: &quot;A String&quot;,
                &quot;digest&quot;: {
                  &quot;a_key&quot;: &quot;A String&quot;,
                },
                &quot;downloadLocation&quot;: &quot;A String&quot;,
                &quot;mediaType&quot;: &quot;A String&quot;,
                &quot;name&quot;: &quot;A String&quot;,
                &quot;uri&quot;: &quot;A String&quot;,
              },
            ],
            &quot;id&quot;: &quot;A String&quot;,
            &quot;version&quot;: {
              &quot;a_key&quot;: &quot;A String&quot;,
            },
          },
          &quot;byproducts&quot;: [
            {
              &quot;annotations&quot;: {
                &quot;a_key&quot;: &quot;&quot;,
              },
              &quot;content&quot;: &quot;A String&quot;,
              &quot;digest&quot;: {
                &quot;a_key&quot;: &quot;A String&quot;,
              },
              &quot;downloadLocation&quot;: &quot;A String&quot;,
              &quot;mediaType&quot;: &quot;A String&quot;,
              &quot;name&quot;: &quot;A String&quot;,
              &quot;uri&quot;: &quot;A String&quot;,
            },
          ],
          &quot;metadata&quot;: {
            &quot;finishedOn&quot;: &quot;A String&quot;,
            &quot;invocationId&quot;: &quot;A String&quot;,
            &quot;startedOn&quot;: &quot;A String&quot;,
          },
        },
      },
      &quot;predicateType&quot;: &quot;A String&quot;,
      &quot;subject&quot;: [
        { # Subject refers to the subject of the intoto statement
          &quot;digest&quot;: { # &quot;&quot;: &quot;&quot; Algorithms can be e.g. sha256, sha512 See https://github.com/in-toto/attestation/blob/main/spec/field_types.md#DigestSet
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;name&quot;: &quot;A String&quot;, # name is the name of the Subject used here
        },
      ],
    },
    &quot;intotoProvenance&quot;: { # Deprecated. See InTotoStatement for the replacement. In-toto Provenance representation as defined in spec.
      &quot;builderConfig&quot;: { # required
        &quot;id&quot;: &quot;A String&quot;,
      },
      &quot;materials&quot;: [ # The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on. This is considered to be incomplete unless metadata.completeness.materials is true. Unset or null is equivalent to empty.
        &quot;A String&quot;,
      ],
      &quot;metadata&quot;: { # Other properties of the build.
        &quot;buildFinishedOn&quot;: &quot;A String&quot;, # The timestamp of when the build completed.
        &quot;buildInvocationId&quot;: &quot;A String&quot;, # Identifies the particular build invocation, which can be useful for finding associated logs or other ad-hoc analysis. The value SHOULD be globally unique, per in-toto Provenance spec.
        &quot;buildStartedOn&quot;: &quot;A String&quot;, # The timestamp of when the build started.
        &quot;completeness&quot;: { # Indicates that the builder claims certain fields in this message to be complete. # Indicates that the builder claims certain fields in this message to be complete.
          &quot;arguments&quot;: True or False, # If true, the builder claims that recipe.arguments is complete, meaning that all external inputs are properly captured in the recipe.
          &quot;environment&quot;: True or False, # If true, the builder claims that recipe.environment is claimed to be complete.
          &quot;materials&quot;: True or False, # If true, the builder claims that materials are complete, usually through some controls to prevent network access. Sometimes called &quot;hermetic&quot;.
        },
        &quot;reproducible&quot;: True or False, # If true, the builder claims that running the recipe on materials will produce bit-for-bit identical output.
      },
      &quot;recipe&quot;: { # Steps taken to build the artifact. For a TaskRun, typically each container corresponds to one step in the recipe. # Identifies the configuration used for the build. When combined with materials, this SHOULD fully describe the build, such that re-running this recipe results in bit-for-bit identical output (if the build is reproducible). required
        &quot;arguments&quot;: [ # Collection of all external inputs that influenced the build on top of recipe.definedInMaterial and recipe.entryPoint. For example, if the recipe type were &quot;make&quot;, then this might be the flags passed to make aside from the target, which is captured in recipe.entryPoint.
          {
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
          },
        ],
        &quot;definedInMaterial&quot;: &quot;A String&quot;, # Index in materials containing the recipe steps that are not implied by recipe.type. For example, if the recipe type were &quot;make&quot;, then this would point to the source containing the Makefile, not the make program itself. Set to -1 if the recipe doesn&#x27;t come from a material, as zero is default unset value for int64.
        &quot;entryPoint&quot;: &quot;A String&quot;, # String identifying the entry point into the build. This is often a path to a configuration file and/or a target label within that file. The syntax and meaning are defined by recipe.type. For example, if the recipe type were &quot;make&quot;, then this would reference the directory in which to run make as well as which target to use.
        &quot;environment&quot;: [ # Any other builder-controlled inputs necessary for correctly evaluating the recipe. Usually only needed for reproducing the build but not evaluated as part of policy.
          {
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
          },
        ],
        &quot;type&quot;: &quot;A String&quot;, # URI indicating what type of recipe was performed. It determines the meaning of recipe.entryPoint, recipe.arguments, recipe.environment, and materials.
      },
    },
    &quot;intotoStatement&quot;: { # Spec defined at https://github.com/in-toto/attestation/tree/main/spec#statement The serialized InTotoStatement will be stored as Envelope.payload. Envelope.payloadType is always &quot;application/vnd.in-toto+json&quot;. # In-toto Statement representation as defined in spec. The intoto_statement can contain any type of provenance. The serialized payload of the statement can be stored and signed in the Occurrence&#x27;s envelope.
      &quot;_type&quot;: &quot;A String&quot;, # Always &quot;https://in-toto.io/Statement/v0.1&quot;.
      &quot;predicateType&quot;: &quot;A String&quot;, # &quot;https://slsa.dev/provenance/v0.1&quot; for SlsaProvenance.
      &quot;provenance&quot;: { # Generic Grafeas provenance.
        &quot;builderConfig&quot;: { # required
          &quot;id&quot;: &quot;A String&quot;,
        },
        &quot;materials&quot;: [ # The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on. This is considered to be incomplete unless metadata.completeness.materials is true. Unset or null is equivalent to empty.
          &quot;A String&quot;,
        ],
        &quot;metadata&quot;: { # Other properties of the build.
          &quot;buildFinishedOn&quot;: &quot;A String&quot;, # The timestamp of when the build completed.
          &quot;buildInvocationId&quot;: &quot;A String&quot;, # Identifies the particular build invocation, which can be useful for finding associated logs or other ad-hoc analysis. The value SHOULD be globally unique, per in-toto Provenance spec.
          &quot;buildStartedOn&quot;: &quot;A String&quot;, # The timestamp of when the build started.
          &quot;completeness&quot;: { # Indicates that the builder claims certain fields in this message to be complete. # Indicates that the builder claims certain fields in this message to be complete.
            &quot;arguments&quot;: True or False, # If true, the builder claims that recipe.arguments is complete, meaning that all external inputs are properly captured in the recipe.
            &quot;environment&quot;: True or False, # If true, the builder claims that recipe.environment is claimed to be complete.
            &quot;materials&quot;: True or False, # If true, the builder claims that materials are complete, usually through some controls to prevent network access. Sometimes called &quot;hermetic&quot;.
          },
          &quot;reproducible&quot;: True or False, # If true, the builder claims that running the recipe on materials will produce bit-for-bit identical output.
        },
        &quot;recipe&quot;: { # Steps taken to build the artifact. For a TaskRun, typically each container corresponds to one step in the recipe. # Identifies the configuration used for the build. When combined with materials, this SHOULD fully describe the build, such that re-running this recipe results in bit-for-bit identical output (if the build is reproducible). required
          &quot;arguments&quot;: [ # Collection of all external inputs that influenced the build on top of recipe.definedInMaterial and recipe.entryPoint. For example, if the recipe type were &quot;make&quot;, then this might be the flags passed to make aside from the target, which is captured in recipe.entryPoint.
            {
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
            },
          ],
          &quot;definedInMaterial&quot;: &quot;A String&quot;, # Index in materials containing the recipe steps that are not implied by recipe.type. For example, if the recipe type were &quot;make&quot;, then this would point to the source containing the Makefile, not the make program itself. Set to -1 if the recipe doesn&#x27;t come from a material, as zero is default unset value for int64.
          &quot;entryPoint&quot;: &quot;A String&quot;, # String identifying the entry point into the build. This is often a path to a configuration file and/or a target label within that file. The syntax and meaning are defined by recipe.type. For example, if the recipe type were &quot;make&quot;, then this would reference the directory in which to run make as well as which target to use.
          &quot;environment&quot;: [ # Any other builder-controlled inputs necessary for correctly evaluating the recipe. Usually only needed for reproducing the build but not evaluated as part of policy.
            {
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
            },
          ],
          &quot;type&quot;: &quot;A String&quot;, # URI indicating what type of recipe was performed. It determines the meaning of recipe.entryPoint, recipe.arguments, recipe.environment, and materials.
        },
      },
      &quot;slsaProvenance&quot;: { # SlsaProvenance is the slsa provenance as defined by the slsa spec. # SLSA 0.1 provenance.
        &quot;builder&quot;: { # SlsaBuilder encapsulates the identity of the builder of this provenance. # builder is the builder of this provenance
          &quot;id&quot;: &quot;A String&quot;, # id is the id of the slsa provenance builder
        },
        &quot;materials&quot;: [ # The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on. This is considered to be incomplete unless metadata.completeness.materials is true. Unset or null is equivalent to empty.
          { # Material is a material used in the generation of the provenance
            &quot;digest&quot;: { # digest is a map from a hash algorithm (e.g. sha256) to the value in the material
              &quot;a_key&quot;: &quot;A String&quot;,
            },
            &quot;uri&quot;: &quot;A String&quot;, # uri is the uri of the material
          },
        ],
        &quot;metadata&quot;: { # Other properties of the build. # metadata is the metadata of the provenance
          &quot;buildFinishedOn&quot;: &quot;A String&quot;, # The timestamp of when the build completed.
          &quot;buildInvocationId&quot;: &quot;A String&quot;, # Identifies the particular build invocation, which can be useful for finding associated logs or other ad-hoc analysis. The value SHOULD be globally unique, per in-toto Provenance spec.
          &quot;buildStartedOn&quot;: &quot;A String&quot;, # The timestamp of when the build started.
          &quot;completeness&quot;: { # Indicates that the builder claims certain fields in this message to be complete. # Indicates that the builder claims certain fields in this message to be complete.
            &quot;arguments&quot;: True or False, # If true, the builder claims that recipe.arguments is complete, meaning that all external inputs are properly captured in the recipe.
            &quot;environment&quot;: True or False, # If true, the builder claims that recipe.environment is claimed to be complete.
            &quot;materials&quot;: True or False, # If true, the builder claims that materials are complete, usually through some controls to prevent network access. Sometimes called &quot;hermetic&quot;.
          },
          &quot;reproducible&quot;: True or False, # If true, the builder claims that running the recipe on materials will produce bit-for-bit identical output.
        },
        &quot;recipe&quot;: { # Steps taken to build the artifact. For a TaskRun, typically each container corresponds to one step in the recipe. # Identifies the configuration used for the build. When combined with materials, this SHOULD fully describe the build, such that re-running this recipe results in bit-for-bit identical output (if the build is reproducible).
          &quot;arguments&quot;: { # Collection of all external inputs that influenced the build on top of recipe.definedInMaterial and recipe.entryPoint. For example, if the recipe type were &quot;make&quot;, then this might be the flags passed to make aside from the target, which is captured in recipe.entryPoint. Depending on the recipe Type, the structure may be different.
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
          },
          &quot;definedInMaterial&quot;: &quot;A String&quot;, # Index in materials containing the recipe steps that are not implied by recipe.type. For example, if the recipe type were &quot;make&quot;, then this would point to the source containing the Makefile, not the make program itself. Set to -1 if the recipe doesn&#x27;t come from a material, as zero is default unset value for int64.
          &quot;entryPoint&quot;: &quot;A String&quot;, # String identifying the entry point into the build. This is often a path to a configuration file and/or a target label within that file. The syntax and meaning are defined by recipe.type. For example, if the recipe type were &quot;make&quot;, then this would reference the directory in which to run make as well as which target to use.
          &quot;environment&quot;: { # Any other builder-controlled inputs necessary for correctly evaluating the recipe. Usually only needed for reproducing the build but not evaluated as part of policy. Depending on the recipe Type, the structure may be different.
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
          },
          &quot;type&quot;: &quot;A String&quot;, # URI indicating what type of recipe was performed. It determines the meaning of recipe.entryPoint, recipe.arguments, recipe.environment, and materials.
        },
      },
      &quot;slsaProvenanceZeroTwo&quot;: { # SlsaProvenanceZeroTwo is the slsa provenance as defined by the slsa spec. See full explanation of fields at slsa.dev/provenance/v0.2. # SLSA 0.2 provenance.
        &quot;buildConfig&quot;: { # Lists the steps in the build.
          &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
        },
        &quot;buildType&quot;: &quot;A String&quot;, # URI indicating what type of build was performed.
        &quot;builder&quot;: { # Identifies the entity that executed the recipe, which is trusted to have correctly performed the operation and populated this provenance. # Identifies the entity that executed the recipe, which is trusted to have correctly performed the operation and populated this provenance.
          &quot;id&quot;: &quot;A String&quot;, # URI indicating the builder’s identity.
        },
        &quot;invocation&quot;: { # Identifies the event that kicked off the build. # Identifies the event that kicked off the build.
          &quot;configSource&quot;: { # Describes where the config file that kicked off the build came from. This is effectively a pointer to the source where buildConfig came from. # Describes where the config file that kicked off the build came from.
            &quot;digest&quot;: { # Collection of cryptographic digests for the contents of the artifact specified by invocation.configSource.uri.
              &quot;a_key&quot;: &quot;A String&quot;,
            },
            &quot;entryPoint&quot;: &quot;A String&quot;, # String identifying the entry point into the build.
            &quot;uri&quot;: &quot;A String&quot;, # URI indicating the identity of the source of the config.
          },
          &quot;environment&quot;: { # Any other builder-controlled inputs necessary for correctly evaluating the build.
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
          },
          &quot;parameters&quot;: { # Collection of all external inputs that influenced the build on top of invocation.configSource.
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
          },
        },
        &quot;materials&quot;: [ # The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on.
          { # The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on.
            &quot;digest&quot;: { # Collection of cryptographic digests for the contents of this artifact.
              &quot;a_key&quot;: &quot;A String&quot;,
            },
            &quot;uri&quot;: &quot;A String&quot;, # The method by which this artifact was referenced during the build.
          },
        ],
        &quot;metadata&quot;: { # Other properties of the build. # Other properties of the build.
          &quot;buildFinishedOn&quot;: &quot;A String&quot;, # The timestamp of when the build completed.
          &quot;buildInvocationId&quot;: &quot;A String&quot;, # Identifies this particular build invocation, which can be useful for finding associated logs or other ad-hoc analysis.
          &quot;buildStartedOn&quot;: &quot;A String&quot;, # The timestamp of when the build started.
          &quot;completeness&quot;: { # Indicates that the builder claims certain fields in this message to be complete. # Indicates that the builder claims certain fields in this message to be complete.
            &quot;environment&quot;: True or False, # If true, the builder claims that invocation.environment is complete.
            &quot;materials&quot;: True or False, # If true, the builder claims that materials is complete.
            &quot;parameters&quot;: True or False, # If true, the builder claims that invocation.parameters is complete.
          },
          &quot;reproducible&quot;: True or False, # If true, the builder claims that running invocation on materials will produce bit-for-bit identical output.
        },
      },
      &quot;subject&quot;: [ # subject is the subjects of the intoto statement
        { # Subject refers to the subject of the intoto statement
          &quot;digest&quot;: { # &quot;&quot;: &quot;&quot; Algorithms can be e.g. sha256, sha512 See https://github.com/in-toto/attestation/blob/main/spec/field_types.md#DigestSet
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;name&quot;: &quot;A String&quot;, # name is the name of the Subject used here
        },
      ],
    },
    &quot;provenance&quot;: { # Provenance of a build. Contains all information needed to verify the full details about the build from source to completion. # The actual provenance
      &quot;buildOptions&quot;: { # Special options applied to this build. This is a catch-all field where build providers can enter any desired additional details.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;builderVersion&quot;: &quot;A String&quot;, # Version string of the builder at the time this build was executed.
      &quot;builtArtifacts&quot;: [ # Output of the build.
        { # Artifact describes a build product.
          &quot;checksum&quot;: &quot;A String&quot;, # Hash or checksum value of a binary, or Docker Registry 2.0 digest of a container.
          &quot;id&quot;: &quot;A String&quot;, # Artifact ID, if any; for container images, this will be a URL by digest like gcr.io/projectID/imagename@sha256:123456
          &quot;name&quot;: &quot;A String&quot;, # Name of the artifact. This may be the path to a binary or jar file, or in the case of a container build, the name used to push the container image to Google Container Registry, as presented to `docker push`. This field is deprecated in favor of the plural `names` field; it continues to exist here to allow existing BuildProvenance serialized to json in google.devtools.containeranalysis.v1alpha1.BuildDetails.provenance_bytes to deserialize back into proto.
          &quot;names&quot;: [ # Related artifact names. This may be the path to a binary or jar file, or in the case of a container build, the name used to push the container image to Google Container Registry, as presented to `docker push`. Note that a single Artifact ID can have multiple names, for example if two tags are applied to one image.
            &quot;A String&quot;,
          ],
        },
      ],
      &quot;commands&quot;: [ # Commands requested by the build.
        { # Command describes a step performed as part of the build pipeline.
          &quot;args&quot;: [ # Command-line arguments used when executing this Command.
            &quot;A String&quot;,
          ],
          &quot;dir&quot;: &quot;A String&quot;, # Working directory (relative to project source root) used when running this Command.
          &quot;env&quot;: [ # Environment variables set before running this Command.
            &quot;A String&quot;,
          ],
          &quot;id&quot;: &quot;A String&quot;, # Optional unique identifier for this Command, used in wait_for to reference this Command as a dependency.
          &quot;name&quot;: &quot;A String&quot;, # Name of the command, as presented on the command line, or if the command is packaged as a Docker container, as presented to `docker pull`.
          &quot;waitFor&quot;: [ # The ID(s) of the Command(s) that this Command depends on.
            &quot;A String&quot;,
          ],
        },
      ],
      &quot;createTime&quot;: &quot;A String&quot;, # Time at which the build was created.
      &quot;creator&quot;: &quot;A String&quot;, # E-mail address of the user who initiated this build. Note that this was the user&#x27;s e-mail address at the time the build was initiated; this address may not represent the same end-user for all time.
      &quot;finishTime&quot;: &quot;A String&quot;, # Time at which execution of the build was finished.
      &quot;id&quot;: &quot;A String&quot;, # Unique identifier of the build.
      &quot;logsBucket&quot;: &quot;A String&quot;, # Google Cloud Storage bucket where logs were written.
      &quot;projectId&quot;: &quot;A String&quot;, # ID of the project.
      &quot;sourceProvenance&quot;: { # Source describes the location of the source used for the build. # Details of the Source input to the build.
        &quot;additionalContexts&quot;: [ # If provided, some of the source code used for the build may be found in these locations, in the case where the source repository had multiple remotes or submodules. This list will not include the context specified in the context field.
          { # A SourceContext is a reference to a tree of files. A SourceContext together with a path point to a unique revision of a single file or directory.
            &quot;cloudRepo&quot;: { # A CloudRepoSourceContext denotes a particular revision in a Google Cloud Source Repo. # A SourceContext referring to a revision in a Google Cloud Source Repo.
              &quot;aliasContext&quot;: { # An alias to a repo revision. # An alias, which may be a branch or tag.
                &quot;kind&quot;: &quot;A String&quot;, # The alias kind.
                &quot;name&quot;: &quot;A String&quot;, # The alias name.
              },
              &quot;repoId&quot;: { # A unique identifier for a Cloud Repo. # The ID of the repo.
                &quot;projectRepoId&quot;: { # Selects a repo using a Google Cloud Platform project ID (e.g., winged-cargo-31) and a repo name within that project. # A combination of a project ID and a repo name.
                  &quot;projectId&quot;: &quot;A String&quot;, # The ID of the project.
                  &quot;repoName&quot;: &quot;A String&quot;, # The name of the repo. Leave empty for the default repo.
                },
                &quot;uid&quot;: &quot;A String&quot;, # A server-assigned, globally unique identifier.
              },
              &quot;revisionId&quot;: &quot;A String&quot;, # A revision ID.
            },
            &quot;gerrit&quot;: { # A SourceContext referring to a Gerrit project. # A SourceContext referring to a Gerrit project.
              &quot;aliasContext&quot;: { # An alias to a repo revision. # An alias, which may be a branch or tag.
                &quot;kind&quot;: &quot;A String&quot;, # The alias kind.
                &quot;name&quot;: &quot;A String&quot;, # The alias name.
              },
              &quot;gerritProject&quot;: &quot;A String&quot;, # The full project name within the host. Projects may be nested, so &quot;project/subproject&quot; is a valid project name. The &quot;repo name&quot; is the hostURI/project.
              &quot;hostUri&quot;: &quot;A String&quot;, # The URI of a running Gerrit instance.
              &quot;revisionId&quot;: &quot;A String&quot;, # A revision (commit) ID.
            },
            &quot;git&quot;: { # A GitSourceContext denotes a particular revision in a third party Git repository (e.g., GitHub). # A SourceContext referring to any third party Git repo (e.g., GitHub).
              &quot;revisionId&quot;: &quot;A String&quot;, # Required. Git commit hash.
              &quot;url&quot;: &quot;A String&quot;, # Git repository URL.
            },
            &quot;labels&quot;: { # Labels with user defined metadata.
              &quot;a_key&quot;: &quot;A String&quot;,
            },
          },
        ],
        &quot;artifactStorageSource&quot;: { # StorageSource describes the location of the source in an archive file in Google Cloud Storage. # If provided, the input binary artifacts for the build came from this location.
          &quot;bucket&quot;: &quot;A String&quot;, # Google Cloud Storage bucket containing source (see [Bucket Name Requirements] (https://cloud.google.com/storage/docs/bucket-naming#requirements)).
          &quot;generation&quot;: &quot;A String&quot;, # Google Cloud Storage generation for the object.
          &quot;object&quot;: &quot;A String&quot;, # Google Cloud Storage object containing source.
        },
        &quot;context&quot;: { # A SourceContext is a reference to a tree of files. A SourceContext together with a path point to a unique revision of a single file or directory. # If provided, the source code used for the build came from this location.
          &quot;cloudRepo&quot;: { # A CloudRepoSourceContext denotes a particular revision in a Google Cloud Source Repo. # A SourceContext referring to a revision in a Google Cloud Source Repo.
            &quot;aliasContext&quot;: { # An alias to a repo revision. # An alias, which may be a branch or tag.
              &quot;kind&quot;: &quot;A String&quot;, # The alias kind.
              &quot;name&quot;: &quot;A String&quot;, # The alias name.
            },
            &quot;repoId&quot;: { # A unique identifier for a Cloud Repo. # The ID of the repo.
              &quot;projectRepoId&quot;: { # Selects a repo using a Google Cloud Platform project ID (e.g., winged-cargo-31) and a repo name within that project. # A combination of a project ID and a repo name.
                &quot;projectId&quot;: &quot;A String&quot;, # The ID of the project.
                &quot;repoName&quot;: &quot;A String&quot;, # The name of the repo. Leave empty for the default repo.
              },
              &quot;uid&quot;: &quot;A String&quot;, # A server-assigned, globally unique identifier.
            },
            &quot;revisionId&quot;: &quot;A String&quot;, # A revision ID.
          },
          &quot;gerrit&quot;: { # A SourceContext referring to a Gerrit project. # A SourceContext referring to a Gerrit project.
            &quot;aliasContext&quot;: { # An alias to a repo revision. # An alias, which may be a branch or tag.
              &quot;kind&quot;: &quot;A String&quot;, # The alias kind.
              &quot;name&quot;: &quot;A String&quot;, # The alias name.
            },
            &quot;gerritProject&quot;: &quot;A String&quot;, # The full project name within the host. Projects may be nested, so &quot;project/subproject&quot; is a valid project name. The &quot;repo name&quot; is the hostURI/project.
            &quot;hostUri&quot;: &quot;A String&quot;, # The URI of a running Gerrit instance.
            &quot;revisionId&quot;: &quot;A String&quot;, # A revision (commit) ID.
          },
          &quot;git&quot;: { # A GitSourceContext denotes a particular revision in a third party Git repository (e.g., GitHub). # A SourceContext referring to any third party Git repo (e.g., GitHub).
            &quot;revisionId&quot;: &quot;A String&quot;, # Required. Git commit hash.
            &quot;url&quot;: &quot;A String&quot;, # Git repository URL.
          },
          &quot;labels&quot;: { # Labels with user defined metadata.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
        },
        &quot;fileHashes&quot;: { # Hash(es) of the build source, which can be used to verify that the original source integrity was maintained in the build. The keys to this map are file paths used as build source and the values contain the hash values for those files. If the build source came in a single package such as a gzipped tarfile (.tar.gz), the FileHash will be for the single path to that file.
          &quot;a_key&quot;: { # Container message for hashes of byte content of files, used in Source messages to verify integrity of source input to the build.
            &quot;fileHash&quot;: [ # Collection of file hashes.
              { # Container message for hash values.
                &quot;type&quot;: &quot;A String&quot;, # The type of hash that was performed.
                &quot;value&quot;: &quot;A String&quot;, # The hash value.
              },
            ],
          },
        },
        &quot;repoSource&quot;: { # RepoSource describes the location of the source in a Google Cloud Source Repository. # If provided, get source from this location in a Cloud Repo.
          &quot;branchName&quot;: &quot;A String&quot;, # Name of the branch to build.
          &quot;commitSha&quot;: &quot;A String&quot;, # Explicit commit SHA to build.
          &quot;projectId&quot;: &quot;A String&quot;, # ID of the project that owns the repo.
          &quot;repoName&quot;: &quot;A String&quot;, # Name of the repo.
          &quot;tagName&quot;: &quot;A String&quot;, # Name of the tag to build.
        },
        &quot;storageSource&quot;: { # StorageSource describes the location of the source in an archive file in Google Cloud Storage. # If provided, get the source from this location in Google Cloud Storage.
          &quot;bucket&quot;: &quot;A String&quot;, # Google Cloud Storage bucket containing source (see [Bucket Name Requirements] (https://cloud.google.com/storage/docs/bucket-naming#requirements)).
          &quot;generation&quot;: &quot;A String&quot;, # Google Cloud Storage generation for the object.
          &quot;object&quot;: &quot;A String&quot;, # Google Cloud Storage object containing source.
        },
      },
      &quot;startTime&quot;: &quot;A String&quot;, # Time at which execution of the build was started.
      &quot;triggerId&quot;: &quot;A String&quot;, # Trigger identifier if the build was triggered automatically; empty if not.
    },
    &quot;provenanceBytes&quot;: &quot;A String&quot;, # Serialized JSON representation of the provenance, used in generating the `BuildSignature` in the corresponding Result. After verifying the signature, `provenance_bytes` can be unmarshalled and compared to the provenance to confirm that it is unchanged. A base64-encoded string representation of the provenance bytes is used for the signature in order to interoperate with openssl which expects this format for signature verification. The serialized form is captured both to avoid ambiguity in how the provenance is marshalled to json as well to prevent incompatibilities with future changes.
  },
  &quot;compliance&quot;: { # An indication that the compliance checks in the associated ComplianceNote were not satisfied for particular resources or a specified reason. # Describes whether or not a resource passes compliance checks.
    &quot;nonComplianceReason&quot;: &quot;A String&quot;, # The reason for non compliance of these files.
    &quot;nonCompliantFiles&quot;: [ # A list of files which are violating compliance checks.
      { # Details about files that caused a compliance check to fail.
        &quot;displayCommand&quot;: &quot;A String&quot;, # Command to display the non-compliant files.
        &quot;path&quot;: &quot;A String&quot;, # display_command is a single command that can be used to display a list of non compliant files. When there is no such command, we can also iterate a list of non compliant file using &#x27;path&#x27;. Empty if `display_command` is set.
        &quot;reason&quot;: &quot;A String&quot;, # Explains why a file is non compliant for a CIS check.
      },
    ],
  },
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time this `Occurrence` was created.
  &quot;deployment&quot;: { # The period during which some deployable was active in a runtime. # Describes the deployment of an artifact on a runtime.
    &quot;address&quot;: &quot;A String&quot;, # Address of the runtime element hosting this deployment.
    &quot;config&quot;: &quot;A String&quot;, # Configuration used to create this deployment.
    &quot;deployTime&quot;: &quot;A String&quot;, # Beginning of the lifetime of this deployment.
    &quot;platform&quot;: &quot;A String&quot;, # Platform hosting this deployment.
    &quot;resourceUri&quot;: [ # Resource URI for the artifact being deployed taken from the deployable field with the same name.
      &quot;A String&quot;,
    ],
    &quot;undeployTime&quot;: &quot;A String&quot;, # End of the lifetime of this deployment.
    &quot;userEmail&quot;: &quot;A String&quot;, # Identity of the user that triggered this deployment.
  },
  &quot;derivedImage&quot;: { # Derived describes the derived image portion (Occurrence) of the DockerImage relationship. This image would be produced from a Dockerfile with FROM . # Describes how this resource derives from the basis in the associated note.
    &quot;baseResourceUrl&quot;: &quot;A String&quot;, # Output only. This contains the base image URL for the derived image occurrence.
    &quot;distance&quot;: 42, # Output only. The number of layers by which this image differs from the associated image basis.
    &quot;fingerprint&quot;: { # A set of properties that uniquely identify a given Docker image. # The fingerprint of the derived image.
      &quot;v1Name&quot;: &quot;A String&quot;, # The layer-id of the final layer in the Docker image&#x27;s v1 representation. This field can be used as a filter in list requests.
      &quot;v2Blob&quot;: [ # 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. This field can be used as a filter in list requests.
    },
    &quot;layerInfo&quot;: [ # This contains layer-specific metadata, if populated it has length &quot;distance&quot; and is ordered with [distance] being the layer immediately following the base image and [1] being the final layer.
      { # Layer holds metadata specific to a layer of a Docker image.
        &quot;arguments&quot;: &quot;A String&quot;, # The recovered arguments to the Dockerfile directive.
        &quot;directive&quot;: &quot;A String&quot;, # The recovered Dockerfile directive used to construct this layer.
      },
    ],
  },
  &quot;discovered&quot;: { # Provides information about the scan status of a discovered resource. # Describes the initial scan status for this resource.
    &quot;analysisCompleted&quot;: { # Indicates which analysis completed successfully. Multiple types of analysis can be performed on a single resource. # The list of analysis that were completed for a resource.
      &quot;analysisType&quot;: [ # type of analysis that were completed on a resource.
        &quot;A String&quot;,
      ],
    },
    &quot;analysisError&quot;: [ # Indicates any errors encountered during analysis of a resource. There could be 0 or more of these errors.
      { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).
        &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
        &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
          {
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
          },
        ],
        &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
      },
    ],
    &quot;analysisStatus&quot;: &quot;A String&quot;, # The status of discovery for the resource.
    &quot;analysisStatusError&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # When an error is encountered this will contain a LocalizedMessage under details to show to the user. The LocalizedMessage output only and populated by the API.
      &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
      &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
        {
          &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
        },
      ],
      &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
    },
    &quot;archiveTime&quot;: &quot;A String&quot;, # The time occurrences related to this discovery occurrence were archived.
    &quot;continuousAnalysis&quot;: &quot;A String&quot;, # Whether the resource is continuously analyzed.
    &quot;cpe&quot;: &quot;A String&quot;, # The CPE of the resource being scanned.
    &quot;lastScanTime&quot;: &quot;A String&quot;, # The last time this resource was scanned.
    &quot;operation&quot;: { # This resource represents a long-running operation that is the result of a network API call. # Output only. An operation that indicates the status of the current scan. This field is deprecated, do not use.
      &quot;done&quot;: True or False, # If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.
      &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure or cancellation.
        &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
        &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
          {
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
          },
        ],
        &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
      },
      &quot;metadata&quot;: { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
      &quot;name&quot;: &quot;A String&quot;, # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.
      &quot;response&quot;: { # The normal, successful response of the operation. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    },
    &quot;sbomStatus&quot;: { # The status of an SBOM generation. # Output only. The status of an SBOM generation.
      &quot;error&quot;: &quot;A String&quot;, # Output only. If there was an error generating an SBOM, this will indicate what that error was.
      &quot;sbomState&quot;: &quot;A String&quot;, # Output only. The progress of the SBOM generation.
    },
  },
  &quot;dsseAttestation&quot;: { # An occurrence describing an attestation on a resource # This represents a DSSE attestation occurrence
    &quot;envelope&quot;: { # MUST match https://github.com/secure-systems-lab/dsse/blob/master/envelope.proto. An authenticated message of arbitrary type. # If doing something security critical, make sure to verify the signatures in this metadata.
      &quot;payload&quot;: &quot;A String&quot;, # The bytes being signed
      &quot;payloadType&quot;: &quot;A String&quot;, # The type of payload being signed
      &quot;signatures&quot;: [ # The signatures over the payload
        { # A DSSE signature
          &quot;keyid&quot;: &quot;A String&quot;, # A reference id to the key being used for signing
          &quot;sig&quot;: &quot;A String&quot;, # The signature itself
        },
      ],
    },
    &quot;statement&quot;: { # Spec defined at https://github.com/in-toto/attestation/tree/main/spec#statement The serialized InTotoStatement will be stored as Envelope.payload. Envelope.payloadType is always &quot;application/vnd.in-toto+json&quot;.
      &quot;_type&quot;: &quot;A String&quot;, # Always &quot;https://in-toto.io/Statement/v0.1&quot;.
      &quot;predicateType&quot;: &quot;A String&quot;, # &quot;https://slsa.dev/provenance/v0.1&quot; for SlsaProvenance.
      &quot;provenance&quot;: { # Generic Grafeas provenance.
        &quot;builderConfig&quot;: { # required
          &quot;id&quot;: &quot;A String&quot;,
        },
        &quot;materials&quot;: [ # The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on. This is considered to be incomplete unless metadata.completeness.materials is true. Unset or null is equivalent to empty.
          &quot;A String&quot;,
        ],
        &quot;metadata&quot;: { # Other properties of the build.
          &quot;buildFinishedOn&quot;: &quot;A String&quot;, # The timestamp of when the build completed.
          &quot;buildInvocationId&quot;: &quot;A String&quot;, # Identifies the particular build invocation, which can be useful for finding associated logs or other ad-hoc analysis. The value SHOULD be globally unique, per in-toto Provenance spec.
          &quot;buildStartedOn&quot;: &quot;A String&quot;, # The timestamp of when the build started.
          &quot;completeness&quot;: { # Indicates that the builder claims certain fields in this message to be complete. # Indicates that the builder claims certain fields in this message to be complete.
            &quot;arguments&quot;: True or False, # If true, the builder claims that recipe.arguments is complete, meaning that all external inputs are properly captured in the recipe.
            &quot;environment&quot;: True or False, # If true, the builder claims that recipe.environment is claimed to be complete.
            &quot;materials&quot;: True or False, # If true, the builder claims that materials are complete, usually through some controls to prevent network access. Sometimes called &quot;hermetic&quot;.
          },
          &quot;reproducible&quot;: True or False, # If true, the builder claims that running the recipe on materials will produce bit-for-bit identical output.
        },
        &quot;recipe&quot;: { # Steps taken to build the artifact. For a TaskRun, typically each container corresponds to one step in the recipe. # Identifies the configuration used for the build. When combined with materials, this SHOULD fully describe the build, such that re-running this recipe results in bit-for-bit identical output (if the build is reproducible). required
          &quot;arguments&quot;: [ # Collection of all external inputs that influenced the build on top of recipe.definedInMaterial and recipe.entryPoint. For example, if the recipe type were &quot;make&quot;, then this might be the flags passed to make aside from the target, which is captured in recipe.entryPoint.
            {
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
            },
          ],
          &quot;definedInMaterial&quot;: &quot;A String&quot;, # Index in materials containing the recipe steps that are not implied by recipe.type. For example, if the recipe type were &quot;make&quot;, then this would point to the source containing the Makefile, not the make program itself. Set to -1 if the recipe doesn&#x27;t come from a material, as zero is default unset value for int64.
          &quot;entryPoint&quot;: &quot;A String&quot;, # String identifying the entry point into the build. This is often a path to a configuration file and/or a target label within that file. The syntax and meaning are defined by recipe.type. For example, if the recipe type were &quot;make&quot;, then this would reference the directory in which to run make as well as which target to use.
          &quot;environment&quot;: [ # Any other builder-controlled inputs necessary for correctly evaluating the recipe. Usually only needed for reproducing the build but not evaluated as part of policy.
            {
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
            },
          ],
          &quot;type&quot;: &quot;A String&quot;, # URI indicating what type of recipe was performed. It determines the meaning of recipe.entryPoint, recipe.arguments, recipe.environment, and materials.
        },
      },
      &quot;slsaProvenance&quot;: { # SlsaProvenance is the slsa provenance as defined by the slsa spec. # SLSA 0.1 provenance.
        &quot;builder&quot;: { # SlsaBuilder encapsulates the identity of the builder of this provenance. # builder is the builder of this provenance
          &quot;id&quot;: &quot;A String&quot;, # id is the id of the slsa provenance builder
        },
        &quot;materials&quot;: [ # The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on. This is considered to be incomplete unless metadata.completeness.materials is true. Unset or null is equivalent to empty.
          { # Material is a material used in the generation of the provenance
            &quot;digest&quot;: { # digest is a map from a hash algorithm (e.g. sha256) to the value in the material
              &quot;a_key&quot;: &quot;A String&quot;,
            },
            &quot;uri&quot;: &quot;A String&quot;, # uri is the uri of the material
          },
        ],
        &quot;metadata&quot;: { # Other properties of the build. # metadata is the metadata of the provenance
          &quot;buildFinishedOn&quot;: &quot;A String&quot;, # The timestamp of when the build completed.
          &quot;buildInvocationId&quot;: &quot;A String&quot;, # Identifies the particular build invocation, which can be useful for finding associated logs or other ad-hoc analysis. The value SHOULD be globally unique, per in-toto Provenance spec.
          &quot;buildStartedOn&quot;: &quot;A String&quot;, # The timestamp of when the build started.
          &quot;completeness&quot;: { # Indicates that the builder claims certain fields in this message to be complete. # Indicates that the builder claims certain fields in this message to be complete.
            &quot;arguments&quot;: True or False, # If true, the builder claims that recipe.arguments is complete, meaning that all external inputs are properly captured in the recipe.
            &quot;environment&quot;: True or False, # If true, the builder claims that recipe.environment is claimed to be complete.
            &quot;materials&quot;: True or False, # If true, the builder claims that materials are complete, usually through some controls to prevent network access. Sometimes called &quot;hermetic&quot;.
          },
          &quot;reproducible&quot;: True or False, # If true, the builder claims that running the recipe on materials will produce bit-for-bit identical output.
        },
        &quot;recipe&quot;: { # Steps taken to build the artifact. For a TaskRun, typically each container corresponds to one step in the recipe. # Identifies the configuration used for the build. When combined with materials, this SHOULD fully describe the build, such that re-running this recipe results in bit-for-bit identical output (if the build is reproducible).
          &quot;arguments&quot;: { # Collection of all external inputs that influenced the build on top of recipe.definedInMaterial and recipe.entryPoint. For example, if the recipe type were &quot;make&quot;, then this might be the flags passed to make aside from the target, which is captured in recipe.entryPoint. Depending on the recipe Type, the structure may be different.
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
          },
          &quot;definedInMaterial&quot;: &quot;A String&quot;, # Index in materials containing the recipe steps that are not implied by recipe.type. For example, if the recipe type were &quot;make&quot;, then this would point to the source containing the Makefile, not the make program itself. Set to -1 if the recipe doesn&#x27;t come from a material, as zero is default unset value for int64.
          &quot;entryPoint&quot;: &quot;A String&quot;, # String identifying the entry point into the build. This is often a path to a configuration file and/or a target label within that file. The syntax and meaning are defined by recipe.type. For example, if the recipe type were &quot;make&quot;, then this would reference the directory in which to run make as well as which target to use.
          &quot;environment&quot;: { # Any other builder-controlled inputs necessary for correctly evaluating the recipe. Usually only needed for reproducing the build but not evaluated as part of policy. Depending on the recipe Type, the structure may be different.
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
          },
          &quot;type&quot;: &quot;A String&quot;, # URI indicating what type of recipe was performed. It determines the meaning of recipe.entryPoint, recipe.arguments, recipe.environment, and materials.
        },
      },
      &quot;slsaProvenanceZeroTwo&quot;: { # SlsaProvenanceZeroTwo is the slsa provenance as defined by the slsa spec. See full explanation of fields at slsa.dev/provenance/v0.2. # SLSA 0.2 provenance.
        &quot;buildConfig&quot;: { # Lists the steps in the build.
          &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
        },
        &quot;buildType&quot;: &quot;A String&quot;, # URI indicating what type of build was performed.
        &quot;builder&quot;: { # Identifies the entity that executed the recipe, which is trusted to have correctly performed the operation and populated this provenance. # Identifies the entity that executed the recipe, which is trusted to have correctly performed the operation and populated this provenance.
          &quot;id&quot;: &quot;A String&quot;, # URI indicating the builder’s identity.
        },
        &quot;invocation&quot;: { # Identifies the event that kicked off the build. # Identifies the event that kicked off the build.
          &quot;configSource&quot;: { # Describes where the config file that kicked off the build came from. This is effectively a pointer to the source where buildConfig came from. # Describes where the config file that kicked off the build came from.
            &quot;digest&quot;: { # Collection of cryptographic digests for the contents of the artifact specified by invocation.configSource.uri.
              &quot;a_key&quot;: &quot;A String&quot;,
            },
            &quot;entryPoint&quot;: &quot;A String&quot;, # String identifying the entry point into the build.
            &quot;uri&quot;: &quot;A String&quot;, # URI indicating the identity of the source of the config.
          },
          &quot;environment&quot;: { # Any other builder-controlled inputs necessary for correctly evaluating the build.
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
          },
          &quot;parameters&quot;: { # Collection of all external inputs that influenced the build on top of invocation.configSource.
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
          },
        },
        &quot;materials&quot;: [ # The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on.
          { # The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on.
            &quot;digest&quot;: { # Collection of cryptographic digests for the contents of this artifact.
              &quot;a_key&quot;: &quot;A String&quot;,
            },
            &quot;uri&quot;: &quot;A String&quot;, # The method by which this artifact was referenced during the build.
          },
        ],
        &quot;metadata&quot;: { # Other properties of the build. # Other properties of the build.
          &quot;buildFinishedOn&quot;: &quot;A String&quot;, # The timestamp of when the build completed.
          &quot;buildInvocationId&quot;: &quot;A String&quot;, # Identifies this particular build invocation, which can be useful for finding associated logs or other ad-hoc analysis.
          &quot;buildStartedOn&quot;: &quot;A String&quot;, # The timestamp of when the build started.
          &quot;completeness&quot;: { # Indicates that the builder claims certain fields in this message to be complete. # Indicates that the builder claims certain fields in this message to be complete.
            &quot;environment&quot;: True or False, # If true, the builder claims that invocation.environment is complete.
            &quot;materials&quot;: True or False, # If true, the builder claims that materials is complete.
            &quot;parameters&quot;: True or False, # If true, the builder claims that invocation.parameters is complete.
          },
          &quot;reproducible&quot;: True or False, # If true, the builder claims that running invocation on materials will produce bit-for-bit identical output.
        },
      },
      &quot;subject&quot;: [ # subject is the subjects of the intoto statement
        { # Subject refers to the subject of the intoto statement
          &quot;digest&quot;: { # &quot;&quot;: &quot;&quot; Algorithms can be e.g. sha256, sha512 See https://github.com/in-toto/attestation/blob/main/spec/field_types.md#DigestSet
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;name&quot;: &quot;A String&quot;, # name is the name of the Subject used here
        },
      ],
    },
  },
  &quot;envelope&quot;: { # MUST match https://github.com/secure-systems-lab/dsse/blob/master/envelope.proto. An authenticated message of arbitrary type. # https://github.com/secure-systems-lab/dsse
    &quot;payload&quot;: &quot;A String&quot;, # The bytes being signed
    &quot;payloadType&quot;: &quot;A String&quot;, # The type of payload being signed
    &quot;signatures&quot;: [ # The signatures over the payload
      { # A DSSE signature
        &quot;keyid&quot;: &quot;A String&quot;, # A reference id to the key being used for signing
        &quot;sig&quot;: &quot;A String&quot;, # The signature itself
      },
    ],
  },
  &quot;installation&quot;: { # This represents how a particular software package may be installed on a system. # Describes the installation of a package on the linked resource.
    &quot;architecture&quot;: &quot;A String&quot;, # Output only. The CPU architecture for which packages in this distribution channel were built. Architecture will be blank for language packages.
    &quot;cpeUri&quot;: &quot;A String&quot;, # Output only. The cpe_uri in [CPE format](https://cpe.mitre.org/specification/) denoting the package manager version distributing a package. The cpe_uri will be blank for language packages.
    &quot;license&quot;: { # License information. # Licenses that have been declared by the authors of the package.
      &quot;comments&quot;: &quot;A String&quot;, # Comments
      &quot;expression&quot;: &quot;A String&quot;, # Often a single license can be used to represent the licensing terms. Sometimes it is necessary to include a choice of one or more licenses or some combination of license identifiers. Examples: &quot;LGPL-2.1-only OR MIT&quot;, &quot;LGPL-2.1-only AND MIT&quot;, &quot;GPL-2.0-or-later WITH Bison-exception-2.2&quot;.
    },
    &quot;location&quot;: [ # All of the places within the filesystem versions of this package have been found.
      { # An occurrence of a particular package installation found within a system&#x27;s filesystem. e.g. glibc was found in /var/lib/dpkg/status
        &quot;cpeUri&quot;: &quot;A String&quot;, # Deprecated. The cpe_uri in [cpe format](https://cpe.mitre.org/specification/) denoting the package manager version distributing a package.
        &quot;path&quot;: &quot;A String&quot;, # The path from which we gathered that this package/version is installed.
        &quot;version&quot;: { # Version contains structured information about the version of the package. For a discussion of this in Debian/Ubuntu: http://serverfault.com/questions/604541/debian-packages-version-convention For a discussion of this in Redhat/Fedora/Centos: http://blog.jasonantman.com/2014/07/how-yum-and-rpm-compare-versions/ # Deprecated. The version installed at this location.
          &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
          &quot;inclusive&quot;: True or False, # Whether this version is vulnerable, when defining the version bounds. For example, if the minimum version is 2.0, inclusive=true would say 2.0 is vulnerable, while inclusive=false would say it&#x27;s not
          &quot;kind&quot;: &quot;A String&quot;, # Distinguish between sentinel MIN/MAX versions and normal versions. If kind is not NORMAL, then the other fields are ignored.
          &quot;name&quot;: &quot;A String&quot;, # 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;name&quot;: &quot;A String&quot;, # Output only. The name of the installed package.
    &quot;packageType&quot;: &quot;A String&quot;, # Output only. The type of package; whether native or non native (e.g., ruby gems, node.js packages, etc.).
    &quot;version&quot;: { # Version contains structured information about the version of the package. For a discussion of this in Debian/Ubuntu: http://serverfault.com/questions/604541/debian-packages-version-convention For a discussion of this in Redhat/Fedora/Centos: http://blog.jasonantman.com/2014/07/how-yum-and-rpm-compare-versions/ # Output only. The version of the package.
      &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
      &quot;inclusive&quot;: True or False, # Whether this version is vulnerable, when defining the version bounds. For example, if the minimum version is 2.0, inclusive=true would say 2.0 is vulnerable, while inclusive=false would say it&#x27;s not
      &quot;kind&quot;: &quot;A String&quot;, # Distinguish between sentinel MIN/MAX versions and normal versions. If kind is not NORMAL, then the other fields are ignored.
      &quot;name&quot;: &quot;A String&quot;, # 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;kind&quot;: &quot;A String&quot;, # Output only. This explicitly denotes which of the `Occurrence` details are specified. This field can be used as a filter in list requests.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The name of the `Occurrence` in the form &quot;projects/{project_id}/occurrences/{OCCURRENCE_ID}&quot;
  &quot;noteName&quot;: &quot;A String&quot;, # An analysis note associated with this image, in the form &quot;providers/{provider_id}/notes/{NOTE_ID}&quot; This field can be used as a filter in list requests.
  &quot;remediation&quot;: &quot;A String&quot;, # A description of actions that can be taken to remedy the `Note`
  &quot;resource&quot;: { #  Resource is an entity that can have metadata. E.g., a Docker image. #  The resource for which the `Occurrence` applies.
    &quot;contentHash&quot;: { # Container message for hash values. # The hash of the resource content. E.g., the Docker digest.
      &quot;type&quot;: &quot;A String&quot;, # The type of hash that was performed.
      &quot;value&quot;: &quot;A String&quot;, # The hash value.
    },
    &quot;name&quot;: &quot;A String&quot;, # The name of the resource. E.g., the name of a Docker image - &quot;Debian&quot;.
    &quot;uri&quot;: &quot;A String&quot;, # The unique URI of the resource. E.g., &quot;https://gcr.io/project/image@sha256:foo&quot; for a Docker image.
  },
  &quot;resourceUrl&quot;: &quot;A String&quot;, # The unique URL of the image or the container for which the `Occurrence` applies. For example, https://gcr.io/project/image@sha256:foo This field can be used as a filter in list requests.
  &quot;sbom&quot;: { # DocumentOccurrence represents an SPDX Document Creation Information section: https://spdx.github.io/spdx-spec/2-document-creation-information/ # Describes a specific software bill of materials document.
    &quot;createTime&quot;: &quot;A String&quot;, # Identify when the SPDX file was originally created. The date is to be specified according to combined date and time in UTC format as specified in ISO 8601 standard
    &quot;creatorComment&quot;: &quot;A String&quot;, # A field for creators of the SPDX file to provide general comments about the creation of the SPDX file or any other relevant comment not included in the other fields
    &quot;creators&quot;: [ # Identify who (or what, in the case of a tool) created the SPDX file. If the SPDX file was created by an individual, indicate the person&#x27;s name
      &quot;A String&quot;,
    ],
    &quot;documentComment&quot;: &quot;A String&quot;, # A field for creators of the SPDX file content to provide comments to the consumers of the SPDX document
    &quot;externalDocumentRefs&quot;: [ # Identify any external SPDX documents referenced within this SPDX document
      &quot;A String&quot;,
    ],
    &quot;id&quot;: &quot;A String&quot;, # Identify the current SPDX document which may be referenced in relationships by other files, packages internally and documents externally
    &quot;licenseListVersion&quot;: &quot;A String&quot;, # A field for creators of the SPDX file to provide the version of the SPDX License List used when the SPDX file was created
    &quot;namespace&quot;: &quot;A String&quot;, # Provide an SPDX document specific namespace as a unique absolute Uniform Resource Identifier (URI) as specified in RFC-3986, with the exception of the ‘#’ delimiter
    &quot;title&quot;: &quot;A String&quot;, # Identify name of this document as designated by creator
  },
  &quot;sbomReference&quot;: { # The occurrence representing an SBOM reference as applied to a specific resource. The occurrence follows the DSSE specification. See https://github.com/secure-systems-lab/dsse/blob/master/envelope.md for more details. # This represents an SBOM reference occurrence
    &quot;payload&quot;: { # The actual payload that contains the SBOM Reference data. The payload follows the intoto statement specification. See https://github.com/in-toto/attestation/blob/main/spec/v1.0/statement.md for more details. # The actual payload that contains the SBOM reference data.
      &quot;_type&quot;: &quot;A String&quot;, # Identifier for the schema of the Statement.
      &quot;predicate&quot;: { # A predicate which describes the SBOM being referenced. # Additional parameters of the Predicate. Includes the actual data about the SBOM.
        &quot;digest&quot;: { # A map of algorithm to digest of the contents of the SBOM.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;location&quot;: &quot;A String&quot;, # The location of the SBOM.
        &quot;mimeType&quot;: &quot;A String&quot;, # The mime type of the SBOM.
        &quot;referrerId&quot;: &quot;A String&quot;, # The person or system referring this predicate to the consumer.
      },
      &quot;predicateType&quot;: &quot;A String&quot;, # URI identifying the type of the Predicate.
      &quot;subject&quot;: [ # Set of software artifacts that the attestation applies to. Each element represents a single software artifact.
        { # Subject refers to the subject of the intoto statement
          &quot;digest&quot;: { # &quot;&quot;: &quot;&quot; Algorithms can be e.g. sha256, sha512 See https://github.com/in-toto/attestation/blob/main/spec/field_types.md#DigestSet
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;name&quot;: &quot;A String&quot;, # name is the name of the Subject used here
        },
      ],
    },
    &quot;payloadType&quot;: &quot;A String&quot;, # The kind of payload that SbomReferenceIntotoPayload takes. Since it&#x27;s in the intoto format, this value is expected to be &#x27;application/vnd.in-toto+json&#x27;.
    &quot;signatures&quot;: [ # The signatures over the payload.
      { # A DSSE signature
        &quot;keyid&quot;: &quot;A String&quot;, # A reference id to the key being used for signing
        &quot;sig&quot;: &quot;A String&quot;, # The signature itself
      },
    ],
  },
  &quot;spdxFile&quot;: { # FileOccurrence represents an SPDX File Information section: https://spdx.github.io/spdx-spec/4-file-information/ # Describes a specific SPDX File.
    &quot;attributions&quot;: [ # This field provides a place for the SPDX data creator to record, at the file level, acknowledgements that may be needed to be communicated in some contexts
      &quot;A String&quot;,
    ],
    &quot;comment&quot;: &quot;A String&quot;, # This field provides a place for the SPDX file creator to record any general comments about the file
    &quot;contributors&quot;: [ # This field provides a place for the SPDX file creator to record file contributors
      &quot;A String&quot;,
    ],
    &quot;copyright&quot;: &quot;A String&quot;, # Identify the copyright holder of the file, as well as any dates present
    &quot;filesLicenseInfo&quot;: [ # This field contains the license information actually found in the file, if any
      &quot;A String&quot;,
    ],
    &quot;id&quot;: &quot;A String&quot;, # Uniquely identify any element in an SPDX document which may be referenced by other elements
    &quot;licenseConcluded&quot;: { # License information. # This field contains the license the SPDX file creator has concluded as governing the file or alternative values if the governing license cannot be determined
      &quot;comments&quot;: &quot;A String&quot;, # Comments
      &quot;expression&quot;: &quot;A String&quot;, # Often a single license can be used to represent the licensing terms. Sometimes it is necessary to include a choice of one or more licenses or some combination of license identifiers. Examples: &quot;LGPL-2.1-only OR MIT&quot;, &quot;LGPL-2.1-only AND MIT&quot;, &quot;GPL-2.0-or-later WITH Bison-exception-2.2&quot;.
    },
    &quot;notice&quot;: &quot;A String&quot;, # This field provides a place for the SPDX file creator to record license notices or other such related notices found in the file
  },
  &quot;spdxPackage&quot;: { # PackageInfoOccurrence represents an SPDX Package Information section: https://spdx.github.io/spdx-spec/3-package-information/ # Describes a specific SPDX Package.
    &quot;comment&quot;: &quot;A String&quot;, # A place for the SPDX file creator to record any general comments about the package being described
    &quot;filename&quot;: &quot;A String&quot;, # Provide the actual file name of the package, or path of the directory being treated as a package
    &quot;homePage&quot;: &quot;A String&quot;, # Output only. Provide a place for the SPDX file creator to record a web site that serves as the package&#x27;s home page
    &quot;id&quot;: &quot;A String&quot;, # Uniquely identify any element in an SPDX document which may be referenced by other elements
    &quot;licenseConcluded&quot;: { # License information. # package or alternative values, if the governing license cannot be determined
      &quot;comments&quot;: &quot;A String&quot;, # Comments
      &quot;expression&quot;: &quot;A String&quot;, # Often a single license can be used to represent the licensing terms. Sometimes it is necessary to include a choice of one or more licenses or some combination of license identifiers. Examples: &quot;LGPL-2.1-only OR MIT&quot;, &quot;LGPL-2.1-only AND MIT&quot;, &quot;GPL-2.0-or-later WITH Bison-exception-2.2&quot;.
    },
    &quot;packageType&quot;: &quot;A String&quot;, # Output only. The type of package: OS, MAVEN, GO, GO_STDLIB, etc.
    &quot;sourceInfo&quot;: &quot;A String&quot;, # Provide a place for the SPDX file creator to record any relevant background information or additional comments about the origin of the package
    &quot;summaryDescription&quot;: &quot;A String&quot;, # Output only. A short description of the package
    &quot;title&quot;: &quot;A String&quot;, # Output only. Identify the full name of the package as given by the Package Originator
    &quot;version&quot;: &quot;A String&quot;, # Output only. Identify the version of the package
  },
  &quot;spdxRelationship&quot;: { # RelationshipOccurrence represents an SPDX Relationship section: https://spdx.github.io/spdx-spec/7-relationships-between-SPDX-elements/ # Describes a specific relationship between SPDX elements.
    &quot;comment&quot;: &quot;A String&quot;, # A place for the SPDX file creator to record any general comments about the relationship
    &quot;source&quot;: &quot;A String&quot;, # Also referred to as SPDXRef-A The source SPDX element (file, package, etc)
    &quot;target&quot;: &quot;A String&quot;, # Also referred to as SPDXRef-B The target SPDC element (file, package, etc) In cases where there are &quot;known unknowns&quot;, the use of the keyword NOASSERTION can be used The keywords NONE can be used to indicate that an SPDX element (package/file/snippet) has no other elements connected by some relationship to it
    &quot;type&quot;: &quot;A String&quot;, # Output only. The type of relationship between the source and target SPDX elements
  },
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time this `Occurrence` was last updated.
  &quot;upgrade&quot;: { # An Upgrade Occurrence represents that a specific resource_url could install a specific upgrade. This presence is supplied via local sources (i.e. it is present in the mirror and the running system has noticed its availability). # Describes an upgrade.
    &quot;distribution&quot;: { # The Upgrade Distribution represents metadata about the Upgrade for each operating system (CPE). Some distributions have additional metadata around updates, classifying them into various categories and severities. # Metadata about the upgrade for available for the specific operating system for the resource_url. This allows efficient filtering, as well as making it easier to use the occurrence.
      &quot;classification&quot;: &quot;A String&quot;, # The operating system classification of this Upgrade, as specified by the upstream operating system upgrade feed.
      &quot;cpeUri&quot;: &quot;A String&quot;, # Required - The specific operating system this metadata applies to. See https://cpe.mitre.org/specification/.
      &quot;cve&quot;: [ # The cve that would be resolved by this upgrade.
        &quot;A String&quot;,
      ],
      &quot;severity&quot;: &quot;A String&quot;, # The severity as specified by the upstream operating system.
    },
    &quot;package&quot;: &quot;A String&quot;, # Required - The package this Upgrade is for.
    &quot;parsedVersion&quot;: { # Version contains structured information about the version of the package. For a discussion of this in Debian/Ubuntu: http://serverfault.com/questions/604541/debian-packages-version-convention For a discussion of this in Redhat/Fedora/Centos: http://blog.jasonantman.com/2014/07/how-yum-and-rpm-compare-versions/ # Required - The version of the package in a machine + human readable form.
      &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
      &quot;inclusive&quot;: True or False, # Whether this version is vulnerable, when defining the version bounds. For example, if the minimum version is 2.0, inclusive=true would say 2.0 is vulnerable, while inclusive=false would say it&#x27;s not
      &quot;kind&quot;: &quot;A String&quot;, # Distinguish between sentinel MIN/MAX versions and normal versions. If kind is not NORMAL, then the other fields are ignored.
      &quot;name&quot;: &quot;A String&quot;, # 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;vulnerabilityDetails&quot;: { # Used by Occurrence to point to where the vulnerability exists and how to fix it. # Details of a security vulnerability note.
    &quot;cvssScore&quot;: 3.14, # Output only. The CVSS score of this vulnerability. CVSS score is on a scale of 0-10 where 0 indicates low severity and 10 indicates high severity.
    &quot;cvssV2&quot;: { # Common Vulnerability Scoring System. This message is compatible with CVSS v2 and v3. For CVSS v2 details, see https://www.first.org/cvss/v2/guide CVSS v2 calculator: https://nvd.nist.gov/vuln-metrics/cvss/v2-calculator For CVSS v3 details, see https://www.first.org/cvss/specification-document CVSS v3 calculator: https://nvd.nist.gov/vuln-metrics/cvss/v3-calculator # The CVSS v2 score of this vulnerability.
      &quot;attackComplexity&quot;: &quot;A String&quot;, # Defined in CVSS v3, CVSS v2
      &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. Defined in CVSS v3, CVSS v2
      &quot;authentication&quot;: &quot;A String&quot;, # Defined in CVSS v2
      &quot;availabilityImpact&quot;: &quot;A String&quot;, # Defined in CVSS v3, CVSS v2
      &quot;baseScore&quot;: 3.14, # The base score is a function of the base metric scores.
      &quot;confidentialityImpact&quot;: &quot;A String&quot;, # Defined in CVSS v3, CVSS v2
      &quot;exploitabilityScore&quot;: 3.14,
      &quot;impactScore&quot;: 3.14,
      &quot;integrityImpact&quot;: &quot;A String&quot;, # Defined in CVSS v3, CVSS v2
      &quot;privilegesRequired&quot;: &quot;A String&quot;, # Defined in CVSS v3
      &quot;scope&quot;: &quot;A String&quot;, # Defined in CVSS v3
      &quot;userInteraction&quot;: &quot;A String&quot;, # Defined in CVSS v3
    },
    &quot;cvssV3&quot;: { # Common Vulnerability Scoring System. This message is compatible with CVSS v2 and v3. For CVSS v2 details, see https://www.first.org/cvss/v2/guide CVSS v2 calculator: https://nvd.nist.gov/vuln-metrics/cvss/v2-calculator For CVSS v3 details, see https://www.first.org/cvss/specification-document CVSS v3 calculator: https://nvd.nist.gov/vuln-metrics/cvss/v3-calculator # The CVSS v3 score of this vulnerability.
      &quot;attackComplexity&quot;: &quot;A String&quot;, # Defined in CVSS v3, CVSS v2
      &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. Defined in CVSS v3, CVSS v2
      &quot;authentication&quot;: &quot;A String&quot;, # Defined in CVSS v2
      &quot;availabilityImpact&quot;: &quot;A String&quot;, # Defined in CVSS v3, CVSS v2
      &quot;baseScore&quot;: 3.14, # The base score is a function of the base metric scores.
      &quot;confidentialityImpact&quot;: &quot;A String&quot;, # Defined in CVSS v3, CVSS v2
      &quot;exploitabilityScore&quot;: 3.14,
      &quot;impactScore&quot;: 3.14,
      &quot;integrityImpact&quot;: &quot;A String&quot;, # Defined in CVSS v3, CVSS v2
      &quot;privilegesRequired&quot;: &quot;A String&quot;, # Defined in CVSS v3
      &quot;scope&quot;: &quot;A String&quot;, # Defined in CVSS v3
      &quot;userInteraction&quot;: &quot;A String&quot;, # Defined in CVSS v3
    },
    &quot;cvssVersion&quot;: &quot;A String&quot;, # Output only. CVSS version used to populate cvss_score and severity.
    &quot;effectiveSeverity&quot;: &quot;A String&quot;, # The distro assigned severity for this vulnerability when that is available and note provider assigned severity when distro has not yet assigned a severity for this vulnerability. When there are multiple package issues for this vulnerability, they can have different effective severities because some might come from the distro and some might come from installed language packs (e.g. Maven JARs or Go binaries). For this reason, it is advised to use the effective severity on the PackageIssue level, as this field may eventually be deprecated. In the case where multiple PackageIssues have different effective severities, the one set here will be the highest severity of any of the PackageIssues.
    &quot;extraDetails&quot;: &quot;A String&quot;, # Occurrence-specific extra details about the vulnerability.
    &quot;packageIssue&quot;: [ # The set of affected locations and their fixes (if available) within the associated resource.
      { # This message wraps a location affected by a vulnerability and its associated fix (if one is available).
        &quot;affectedLocation&quot;: { # The location of the vulnerability # The location of the vulnerability.
          &quot;cpeUri&quot;: &quot;A String&quot;, # The cpe_uri in [cpe format] (https://cpe.mitre.org/specification/) format. Examples include distro or storage location for vulnerable jar. This field can be used as a filter in list requests.
          &quot;fileLocation&quot;: [ # The file location at which this package was found.
            { # Indicates the location at which a package was found.
              &quot;filePath&quot;: &quot;A String&quot;, # For jars that are contained inside .war files, this filepath can indicate the path to war file combined with the path to jar file.
            },
          ],
          &quot;package&quot;: &quot;A String&quot;, # The package being described.
          &quot;version&quot;: { # Version contains structured information about the version of the package. For a discussion of this in Debian/Ubuntu: http://serverfault.com/questions/604541/debian-packages-version-convention For a discussion of this in Redhat/Fedora/Centos: http://blog.jasonantman.com/2014/07/how-yum-and-rpm-compare-versions/ # The version of the package being described. This field can be used as a filter in list requests.
            &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
            &quot;inclusive&quot;: True or False, # Whether this version is vulnerable, when defining the version bounds. For example, if the minimum version is 2.0, inclusive=true would say 2.0 is vulnerable, while inclusive=false would say it&#x27;s not
            &quot;kind&quot;: &quot;A String&quot;, # Distinguish between sentinel MIN/MAX versions and normal versions. If kind is not NORMAL, then the other fields are ignored.
            &quot;name&quot;: &quot;A String&quot;, # 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;effectiveSeverity&quot;: &quot;A String&quot;, # Output only. The distro or language system assigned severity for this vulnerability when that is available and note provider assigned severity when distro or language system has not yet assigned a severity for this vulnerability.
        &quot;fixedLocation&quot;: { # The location of the vulnerability # The location of the available fix for vulnerability.
          &quot;cpeUri&quot;: &quot;A String&quot;, # The cpe_uri in [cpe format] (https://cpe.mitre.org/specification/) format. Examples include distro or storage location for vulnerable jar. This field can be used as a filter in list requests.
          &quot;fileLocation&quot;: [ # The file location at which this package was found.
            { # Indicates the location at which a package was found.
              &quot;filePath&quot;: &quot;A String&quot;, # For jars that are contained inside .war files, this filepath can indicate the path to war file combined with the path to jar file.
            },
          ],
          &quot;package&quot;: &quot;A String&quot;, # The package being described.
          &quot;version&quot;: { # Version contains structured information about the version of the package. For a discussion of this in Debian/Ubuntu: http://serverfault.com/questions/604541/debian-packages-version-convention For a discussion of this in Redhat/Fedora/Centos: http://blog.jasonantman.com/2014/07/how-yum-and-rpm-compare-versions/ # The version of the package being described. This field can be used as a filter in list requests.
            &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
            &quot;inclusive&quot;: True or False, # Whether this version is vulnerable, when defining the version bounds. For example, if the minimum version is 2.0, inclusive=true would say 2.0 is vulnerable, while inclusive=false would say it&#x27;s not
            &quot;kind&quot;: &quot;A String&quot;, # Distinguish between sentinel MIN/MAX versions and normal versions. If kind is not NORMAL, then the other fields are ignored.
            &quot;name&quot;: &quot;A String&quot;, # 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;packageType&quot;: &quot;A String&quot;, # The type of package (e.g. OS, MAVEN, GO).
        &quot;severityName&quot;: &quot;A String&quot;,
      },
    ],
    &quot;severity&quot;: &quot;A String&quot;, # Output only. The note provider assigned Severity of the vulnerability.
    &quot;type&quot;: &quot;A String&quot;, # The type of package; whether native or non native(ruby gems, node.js packages etc). This may be deprecated in the future because we can have multiple PackageIssues with different package types.
    &quot;vexAssessment&quot;: { # VexAssessment provides all publisher provided Vex information that is related to this vulnerability. # VexAssessment provides all publisher provided Vex information that is related to this vulnerability for this resource.
      &quot;cve&quot;: &quot;A String&quot;, # Holds the MITRE standard Common Vulnerabilities and Exposures (CVE) tracking number for the vulnerability.
      &quot;impacts&quot;: [ # Contains information about the impact of this vulnerability, this will change with time.
        &quot;A String&quot;,
      ],
      &quot;justification&quot;: { # Justification provides the justification when the state of the assessment if NOT_AFFECTED. # Justification provides the justification when the state of the assessment if NOT_AFFECTED.
        &quot;details&quot;: &quot;A String&quot;, # Additional details on why this justification was chosen.
        &quot;justificationType&quot;: &quot;A String&quot;, # The justification type for this vulnerability.
      },
      &quot;noteName&quot;: &quot;A String&quot;, # The VulnerabilityAssessment note from which this VexAssessment was generated. This will be of the form: `projects/[PROJECT_ID]/notes/[NOTE_ID]`.
      &quot;relatedUris&quot;: [ # Holds a list of references associated with this vulnerability item and assessment. These uris have additional information about the vulnerability and the assessment itself. E.g. Link to a document which details how this assessment concluded the state of this vulnerability.
        { # An URI message.
          &quot;label&quot;: &quot;A String&quot;, # A label for the URI.
          &quot;uri&quot;: &quot;A String&quot;, # The unique resource identifier.
        },
      ],
      &quot;remediations&quot;: [ # Specifies details on how to handle (and presumably, fix) a vulnerability.
        { # Specifies details on how to handle (and presumably, fix) a vulnerability.
          &quot;details&quot;: &quot;A String&quot;, # Contains a comprehensive human-readable discussion of the remediation.
          &quot;remediationType&quot;: &quot;A String&quot;, # The type of remediation that can be applied.
          &quot;remediationUri&quot;: { # An URI message. # Contains the URL where to obtain the remediation.
            &quot;label&quot;: &quot;A String&quot;, # A label for the URI.
            &quot;uri&quot;: &quot;A String&quot;, # The unique resource identifier.
          },
        },
      ],
      &quot;state&quot;: &quot;A String&quot;, # Provides the state of this Vulnerability assessment.
      &quot;vulnerabilityId&quot;: &quot;A String&quot;, # The vulnerability identifier for this Assessment. Will hold one of common identifiers e.g. CVE, GHSA etc.
    },
  },
}</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. Attempting to call this method without these permissions will result in a ` `PERMISSION_DENIED` error. Attempting to call this method on a non-existent resource will result in a `NOT_FOUND` error if the user has `containeranalysis.notes.list` permission on a `Note` or `containeranalysis.occurrences.list` on an `Occurrence`, or a `PERMISSION_DENIED` error otherwise. The resource takes the following formats: `projects/{projectid}/occurrences/{occurrenceid}` for occurrences and projects/{projectid}/notes/{noteid} for notes

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

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

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

Returns:
  An object of the form:

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

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

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

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

Returns:
  An object of the form:

    { # Response message for `TestIamPermissions` method.
  &quot;permissions&quot;: [ # A subset of `TestPermissionsRequest.permissions` that the caller is allowed.
    &quot;A String&quot;,
  ],
}</pre>
</div>

</body></html>