<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.notes.html">notes</a> . <a href="containeranalysis_v1alpha1.projects.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, pageSize=None, filter=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, pageSize=None, filter=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)
  pageSize: integer, Number of notes to return in the list.
  filter: string, The filter expression.
  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;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;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;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;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;userEmail&quot;: &quot;A String&quot;, # Identity of the user that triggered this deployment.
          &quot;config&quot;: &quot;A String&quot;, # Configuration used to create this deployment.
          &quot;undeployTime&quot;: &quot;A String&quot;, # End of the lifetime of 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;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;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;directive&quot;: &quot;A String&quot;, # The recovered Dockerfile directive used to construct this layer.
              &quot;arguments&quot;: &quot;A String&quot;, # The recovered arguments to the Dockerfile directive.
            },
          ],
          &quot;baseResourceUrl&quot;: &quot;A String&quot;, # Output only. This contains the base image URL for the derived image occurrence.
          &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;distance&quot;: 42, # Output only. The number of layers by which this image differs from the associated image basis.
        },
        &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;severity&quot;: &quot;A String&quot;, # Output only. The note provider assigned Severity of 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;fixedLocation&quot;: { # The location of the vulnerability # The location of the available fix for vulnerability.
                &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;revision&quot;: &quot;A String&quot;, # The iteration of the package build from the above version.
                  &quot;name&quot;: &quot;A String&quot;, # The main part of the version name.
                  &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;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;severityName&quot;: &quot;A String&quot;,
              &quot;affectedLocation&quot;: { # The location of the vulnerability # The location of the vulnerability.
                &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;revision&quot;: &quot;A String&quot;, # The iteration of the package build from the above version.
                  &quot;name&quot;: &quot;A String&quot;, # The main part of the version name.
                  &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;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;type&quot;: &quot;A String&quot;, # The type of package; whether native or non native(ruby gems, node.js packages etc)
          &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.
        },
        &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;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;name&quot;: &quot;A String&quot;, # The name of the resource. E.g., the name of a Docker image - &quot;Debian&quot;.
        },
        &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;createTime&quot;: &quot;A String&quot;, # Output only. The time this `Occurrence` was created.
        &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time this `Occurrence` was last updated.
        &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;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;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;revision&quot;: &quot;A String&quot;, # The iteration of the package build from the above version.
                &quot;name&quot;: &quot;A String&quot;, # The main part of the version name.
                &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;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;name&quot;: &quot;A String&quot;, # Output only. The name of the installed package.
        },
        &quot;buildDetails&quot;: { # Message encapsulating build provenance details. # Build details for a verifiable build.
          &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;projectId&quot;: &quot;A String&quot;, # ID of the project.
            &quot;builderVersion&quot;: &quot;A String&quot;, # Version string of the builder at the time this build was executed.
            &quot;commands&quot;: [ # Commands requested by the build.
              { # Command describes a step performed as part of the build pipeline.
                &quot;dir&quot;: &quot;A String&quot;, # Working directory (relative to project source root) used when running this Command.
                &quot;waitFor&quot;: [ # The ID(s) of the Command(s) that this Command depends on.
                  &quot;A String&quot;,
                ],
                &quot;args&quot;: [ # Command-line arguments used when executing this Command.
                  &quot;A String&quot;,
                ],
                &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;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;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;finishTime&quot;: &quot;A String&quot;, # Time at which execution of the build was finished.
            &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;logsBucket&quot;: &quot;A String&quot;, # Google Cloud Storage bucket where logs were written.
            &quot;sourceProvenance&quot;: { # Source describes the location of the source used for the build. # Details of the Source input to the 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;generation&quot;: &quot;A String&quot;, # Google Cloud Storage generation for the object.
                &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;object&quot;: &quot;A String&quot;, # Google Cloud Storage object containing source.
              },
              &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;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;url&quot;: &quot;A String&quot;, # Git repository URL.
                    &quot;revisionId&quot;: &quot;A String&quot;, # Required. Git commit hash.
                  },
                  &quot;gerrit&quot;: { # A SourceContext referring to a Gerrit project. # A SourceContext referring to a Gerrit project.
                    &quot;revisionId&quot;: &quot;A String&quot;, # A revision (commit) ID.
                    &quot;aliasContext&quot;: { # An alias to a repo revision. # An alias, which may be a branch or tag.
                      &quot;name&quot;: &quot;A String&quot;, # The alias name.
                      &quot;kind&quot;: &quot;A String&quot;, # The alias kind.
                    },
                    &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;labels&quot;: { # Labels with user defined metadata.
                    &quot;a_key&quot;: &quot;A String&quot;,
                  },
                  &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;repoId&quot;: { # A unique identifier for a Cloud Repo. # The ID of the repo.
                      &quot;uid&quot;: &quot;A String&quot;, # A server-assigned, globally unique identifier.
                      &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;repoName&quot;: &quot;A String&quot;, # The name of the repo. Leave empty for the default repo.
                        &quot;projectId&quot;: &quot;A String&quot;, # The ID of the project.
                      },
                    },
                    &quot;revisionId&quot;: &quot;A String&quot;, # A revision ID.
                    &quot;aliasContext&quot;: { # An alias to a repo revision. # An alias, which may be a branch or tag.
                      &quot;name&quot;: &quot;A String&quot;, # The alias name.
                      &quot;kind&quot;: &quot;A String&quot;, # The alias kind.
                    },
                  },
                },
              ],
              &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;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;url&quot;: &quot;A String&quot;, # Git repository URL.
                  &quot;revisionId&quot;: &quot;A String&quot;, # Required. Git commit hash.
                },
                &quot;gerrit&quot;: { # A SourceContext referring to a Gerrit project. # A SourceContext referring to a Gerrit project.
                  &quot;revisionId&quot;: &quot;A String&quot;, # A revision (commit) ID.
                  &quot;aliasContext&quot;: { # An alias to a repo revision. # An alias, which may be a branch or tag.
                    &quot;name&quot;: &quot;A String&quot;, # The alias name.
                    &quot;kind&quot;: &quot;A String&quot;, # The alias kind.
                  },
                  &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;labels&quot;: { # Labels with user defined metadata.
                  &quot;a_key&quot;: &quot;A String&quot;,
                },
                &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;repoId&quot;: { # A unique identifier for a Cloud Repo. # The ID of the repo.
                    &quot;uid&quot;: &quot;A String&quot;, # A server-assigned, globally unique identifier.
                    &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;repoName&quot;: &quot;A String&quot;, # The name of the repo. Leave empty for the default repo.
                      &quot;projectId&quot;: &quot;A String&quot;, # The ID of the project.
                    },
                  },
                  &quot;revisionId&quot;: &quot;A String&quot;, # A revision ID.
                  &quot;aliasContext&quot;: { # An alias to a repo revision. # An alias, which may be a branch or tag.
                    &quot;name&quot;: &quot;A String&quot;, # The alias name.
                    &quot;kind&quot;: &quot;A String&quot;, # The alias kind.
                  },
                },
              },
              &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;repoName&quot;: &quot;A String&quot;, # Name of the repo.
                &quot;tagName&quot;: &quot;A String&quot;, # Name of the tag to build.
                &quot;branchName&quot;: &quot;A String&quot;, # Name of the branch to build.
                &quot;projectId&quot;: &quot;A String&quot;, # ID of the project that owns the repo.
                &quot;commitSha&quot;: &quot;A String&quot;, # Explicit commit SHA to build.
              },
              &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;generation&quot;: &quot;A String&quot;, # Google Cloud Storage generation for the object.
                &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;object&quot;: &quot;A String&quot;, # Google Cloud Storage object containing source.
              },
              &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;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;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;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;id&quot;: &quot;A String&quot;, # Unique identifier of the build.
            &quot;createTime&quot;: &quot;A String&quot;, # Time at which the build was created.
          },
          &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;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;cve&quot;: [ # The cve that would be resolved by this upgrade.
              &quot;A String&quot;,
            ],
            &quot;cpeUri&quot;: &quot;A String&quot;, # Required - The specific operating system this metadata applies to. See https://cpe.mitre.org/specification/.
            &quot;classification&quot;: &quot;A String&quot;, # The operating system classification of this Upgrade, as specified by the upstream operating system upgrade feed.
            &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;revision&quot;: &quot;A String&quot;, # The iteration of the package build from the above version.
            &quot;name&quot;: &quot;A String&quot;, # The main part of the version name.
            &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;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;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;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;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;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;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;cpe&quot;: &quot;A String&quot;, # The CPE of the resource being scanned.
          &quot;continuousAnalysis&quot;: &quot;A String&quot;, # Whether the resource is continuously analyzed.
          &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;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;remediation&quot;: &quot;A String&quot;, # A description of actions that can be taken to remedy the `Note`
      },
    ],
  }</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>