<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.providers.html">providers</a> . <a href="containeranalysis_v1alpha1.providers.notes.html">notes</a> . <a href="containeranalysis_v1alpha1.providers.notes.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="#list">list(name, filter=None, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists `Occurrences` referencing the specified `Note`. Use this method to get all occurrences referencing your `Note` across all your customer projects.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<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="list">list(name, filter=None, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists `Occurrences` referencing the specified `Note`. Use this method to get all occurrences referencing your `Note` across all your customer projects.

Args:
  name: string, The name field will contain the note name for example: &quot;provider/{provider_id}/notes/{note_id}&quot; (required)
  filter: string, The filter expression.
  pageSize: integer, Number of notes 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 occurrences for a note.
  &quot;nextPageToken&quot;: &quot;A String&quot;, # Token to receive the next page of notes.
  &quot;occurrences&quot;: [ # The occurrences attached to the specified note.
    { # `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;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;: { # provenance is a predicate of type intotoprovenance
            &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_provenance is a predicate of type slsaProvenance
            &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;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 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;: [ # Output only. 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;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;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;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 response of the operation in case of success. 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;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;: { # provenance is a predicate of type intotoprovenance
            &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_provenance is a predicate of type slsaProvenance
            &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;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;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;, # 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/ # 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;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;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: https://spdx.github.io/spdx-spec/3-package-information/#315-declared-license # 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;, # Expression: https://spdx.github.io/spdx-spec/appendix-IV-SPDX-license-expressions/
        },
        &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: https://spdx.github.io/spdx-spec/3-package-information/#315-declared-license # 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;, # Expression: https://spdx.github.io/spdx-spec/appendix-IV-SPDX-license-expressions/
        },
        &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;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;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;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;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.
      },
    },
  ],
}</pre>
</div>

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

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

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

</body></html>