<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, 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;: { # 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 String&quot;,
            ],
            &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;A String&quot;,
            },
            &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;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;predicateType&quot;: &quot;A String&quot;, # &quot;https://in-toto.io/Provenance/v0.1&quot; for InTotoProvenance.
          &quot;provenance&quot;: {
            &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 String&quot;,
              ],
              &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;A String&quot;,
              },
              &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;: [
            {
              &quot;digest&quot;: { # &quot;&quot;: &quot;&quot;
                &quot;a_key&quot;: &quot;A String&quot;,
              },
              &quot;name&quot;: &quot;A String&quot;,
            },
          ],
          &quot;type&quot;: &quot;A String&quot;, # Always &quot;https://in-toto.io/Statement/v0.1&quot;.
        },
      },
      &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;licenseComments&quot;: &quot;A String&quot;, # This field provides a place for the SPDX file creator to record any relevant background references or analysis that went in to arriving at the Concluded License for a file
        &quot;licenseConcluded&quot;: &quot;A String&quot;, # 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;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;: { # PackageOccurrence 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;id&quot;: &quot;A String&quot;, # Uniquely identify any element in an SPDX document which may be referenced by other elements
        &quot;licenseComments&quot;: &quot;A String&quot;, # This field provides a place for the SPDX file creator to record any relevant background information or analysis that went in to arriving at the Concluded License for a package
        &quot;licenseConcluded&quot;: &quot;A String&quot;, # package or alternative values, if the governing license cannot be determined
        &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;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;, # 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>