<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="containeranalysis_v1beta1.html">Container Analysis API</a> . <a href="containeranalysis_v1beta1.projects.html">projects</a> . <a href="containeranalysis_v1beta1.projects.notes.html">notes</a> . <a href="containeranalysis_v1beta1.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, pageToken=None, pageSize=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists occurrences referencing the specified note. Provider projects can use this method to get all occurrences across consumer projects referencing the specified note.</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, pageToken=None, pageSize=None, x__xgafv=None)</code>
  <pre>Lists occurrences referencing the specified note. Provider projects can use this method to get all occurrences across consumer projects referencing the specified note.

Args:
  name: string, Required. The name of the note to list occurrences for in the form of `projects/[PROVIDER_ID]/notes/[NOTE_ID]`. (required)
  filter: string, The filter expression.
  pageToken: string, Token to provide to skip to a particular spot in the list.
  pageSize: integer, Number of occurrences to return in the list.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response for listing occurrences for a note.
    &quot;nextPageToken&quot;: &quot;A String&quot;, # Token to provide to skip to a particular spot in the list.
    &quot;occurrences&quot;: [ # The occurrences attached to the specified note.
      { # An instance of an analysis type that has been found on a resource.
        &quot;derivedImage&quot;: { # Details of an image occurrence. # Describes how this resource derives from the basis in the associated note.
          &quot;derivedImage&quot;: { # Derived describes the derived image portion (Occurrence) of the DockerImage relationship. This image would be produced from a Dockerfile with FROM . # Required. Immutable. The child image derived from the base image.
            &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. # Required. The fingerprint of the derived image.
              &quot;v2Name&quot;: &quot;A String&quot;, # Output only. The name of the image&#x27;s v2 blobs computed via: [bottom] := v2_blobbottom := sha256(v2_blob[N] + &quot; &quot; + v2_name[N+1]) Only the name of the final blob is kept.
              &quot;v1Name&quot;: &quot;A String&quot;, # Required. The layer ID of the final layer in the Docker image&#x27;s v1 representation.
              &quot;v2Blob&quot;: [ # Required. The ordered list of v2 blobs that represent a given image.
                &quot;A String&quot;,
              ],
            },
            &quot;distance&quot;: 42, # Output only. The number of layers by which this image differs from the associated image basis.
            &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;, # Required. The recovered Dockerfile directive used to construct this layer.
              },
            ],
          },
        },
        &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;noteName&quot;: &quot;A String&quot;, # Required. Immutable. The analysis note associated with this occurrence, in the form of `projects/[PROVIDER_ID]/notes/[NOTE_ID]`. This field can be used as a filter in list requests.
        &quot;discovered&quot;: { # Details of a discovery occurrence. # Describes when a resource was discovered.
          &quot;discovered&quot;: { # Provides information about the analysis status of a discovered resource. # Required. Analysis status for the discovered resource.
            &quot;lastAnalysisTime&quot;: &quot;A String&quot;, # The last time continuous analysis was done for this resource. Deprecated, do not use.
            &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 is output only and populated by the API.
              &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;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;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
            },
            &quot;analysisStatus&quot;: &quot;A String&quot;, # The status of discovery for the resource.
          },
        },
        &quot;resource&quot;: { # An entity that can have metadata. For example, a Docker image. # Required. Immutable. The resource for which the occurrence applies.
          &quot;uri&quot;: &quot;A String&quot;, # Required. The unique URI of the resource. For example, `https://gcr.io/project/image@sha256:foo` for a Docker image.
          &quot;name&quot;: &quot;A String&quot;, # Deprecated, do not use. Use uri instead. The name of the resource. For example, the name of a Docker image - &quot;Debian&quot;.
          &quot;contentHash&quot;: { # Container message for hash values. # Deprecated, do not use. Use uri instead. The hash of the resource content. For example, the Docker digest.
            &quot;type&quot;: &quot;A String&quot;, # Required. The type of hash that was performed.
            &quot;value&quot;: &quot;A String&quot;, # Required. The hash value.
          },
        },
        &quot;deployment&quot;: { # Details of a deployment occurrence. # Describes the deployment of an artifact on a runtime.
          &quot;deployment&quot;: { # The period during which some deployable was active in a runtime. # Required. Deployment history for the resource.
            &quot;address&quot;: &quot;A String&quot;, # Address of the runtime element hosting this deployment.
            &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;deployTime&quot;: &quot;A String&quot;, # Required. 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;config&quot;: &quot;A String&quot;, # Configuration used to create this deployment.
          },
        },
        &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time this occurrence was last updated.
        &quot;intoto&quot;: { # This corresponds to a signed in-toto link - it is made up of one or more signatures and the in-toto link itself. This is used for occurrences of a Grafeas in-toto note. # Describes a specific in-toto link.
          &quot;signed&quot;: { # This corresponds to an in-toto link.
            &quot;command&quot;: [ # This field contains the full command executed for the step. This can also be empty if links are generated for operations that aren&#x27;t directly mapped to a specific command. Each term in the command is an independent string in the list. An example of a command in the in-toto metadata field is: &quot;command&quot;: [&quot;git&quot;, &quot;clone&quot;, &quot;https://github.com/in-toto/demo-project.git&quot;]
              &quot;A String&quot;,
            ],
            &quot;byproducts&quot;: { # Defines an object for the byproducts field in in-toto links. The suggested fields are &quot;stderr&quot;, &quot;stdout&quot;, and &quot;return-value&quot;. # ByProducts are data generated as part of a software supply chain step, but are not the actual result of the step.
              &quot;customValues&quot;: {
                &quot;a_key&quot;: &quot;A String&quot;,
              },
            },
            &quot;environment&quot;: { # Defines an object for the environment field in in-toto links. The suggested fields are &quot;variables&quot;, &quot;filesystem&quot;, and &quot;workdir&quot;. # This is a field that can be used to capture information about the environment. It is suggested for this field to contain information that details environment variables, filesystem information, and the present working directory. The recommended structure of this field is: &quot;environment&quot;: { &quot;custom_values&quot;: { &quot;variables&quot;: &quot;&quot;, &quot;filesystem&quot;: &quot;&quot;, &quot;workdir&quot;: &quot;&quot;, &quot;&quot;: &quot;...&quot; } }
              &quot;customValues&quot;: {
                &quot;a_key&quot;: &quot;A String&quot;,
              },
            },
            &quot;materials&quot;: [ # Materials are the supply chain artifacts that go into the step and are used for the operation performed. The key of the map is the path of the artifact and the structure contains the recorded hash information. An example is: &quot;materials&quot;: [ { &quot;resource_uri&quot;: &quot;foo/bar&quot;, &quot;hashes&quot;: { &quot;sha256&quot;: &quot;ebebf...&quot;, : } } ]
              {
                &quot;resourceUri&quot;: &quot;A String&quot;,
                &quot;hashes&quot;: { # Defines a hash object for use in Materials and Products.
                  &quot;sha256&quot;: &quot;A String&quot;,
                },
              },
            ],
            &quot;products&quot;: [ # Products are the supply chain artifacts generated as a result of the step. The structure is identical to that of materials.
              {
                &quot;resourceUri&quot;: &quot;A String&quot;,
                &quot;hashes&quot;: { # Defines a hash object for use in Materials and Products.
                  &quot;sha256&quot;: &quot;A String&quot;,
                },
              },
            ],
          },
          &quot;signatures&quot;: [
            { # A signature object consists of the KeyID used and the signature itself.
              &quot;keyid&quot;: &quot;A String&quot;,
              &quot;sig&quot;: &quot;A String&quot;,
            },
          ],
        },
        &quot;vulnerability&quot;: { # Details of a vulnerability Occurrence. # Describes a security vulnerability.
          &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;longDescription&quot;: &quot;A String&quot;, # Output only. A detailed description of this vulnerability.
          &quot;severity&quot;: &quot;A String&quot;, # Output only. The note provider assigned Severity of the vulnerability.
          &quot;shortDescription&quot;: &quot;A String&quot;, # Output only. A one sentence description of this vulnerability.
          &quot;packageIssue&quot;: [ # Required. 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;severityName&quot;: &quot;A String&quot;, # Deprecated, use Details.effective_severity instead The severity (e.g., distro assigned severity) for this vulnerability.
              &quot;affectedLocation&quot;: { # The location of the vulnerability. # Required. The location of the vulnerability.
                &quot;cpeUri&quot;: &quot;A String&quot;, # Required. The CPE URI in [cpe format](https://cpe.mitre.org/specification/) format. Examples include distro or storage location for vulnerable jar.
                &quot;version&quot;: { # Version contains structured information about the version of a package. # Required. The version of the package being described.
                  &quot;name&quot;: &quot;A String&quot;, # Required only when version kind is NORMAL. The main part of the version name.
                  &quot;kind&quot;: &quot;A String&quot;, # Required. Distinguishes between sentinel MIN/MAX versions and normal versions.
                  &quot;revision&quot;: &quot;A String&quot;, # The iteration of the package build from the above version.
                  &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
                },
                &quot;package&quot;: &quot;A String&quot;, # Required. The package being described.
              },
              &quot;fixedLocation&quot;: { # The location of the vulnerability. # The location of the available fix for vulnerability.
                &quot;cpeUri&quot;: &quot;A String&quot;, # Required. The CPE URI in [cpe format](https://cpe.mitre.org/specification/) format. Examples include distro or storage location for vulnerable jar.
                &quot;version&quot;: { # Version contains structured information about the version of a package. # Required. The version of the package being described.
                  &quot;name&quot;: &quot;A String&quot;, # Required only when version kind is NORMAL. The main part of the version name.
                  &quot;kind&quot;: &quot;A String&quot;, # Required. Distinguishes between sentinel MIN/MAX versions and normal versions.
                  &quot;revision&quot;: &quot;A String&quot;, # The iteration of the package build from the above version.
                  &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
                },
                &quot;package&quot;: &quot;A String&quot;, # Required. The package being described.
              },
            },
          ],
          &quot;effectiveSeverity&quot;: &quot;A String&quot;, # The distro assigned severity for this vulnerability when it is available, and note provider assigned severity when distro has not yet assigned a severity for this vulnerability.
          &quot;type&quot;: &quot;A String&quot;, # The type of package; whether native or non native(ruby gems, node.js packages etc)
          &quot;relatedUrls&quot;: [ # Output only. URLs related to this vulnerability.
            { # Metadata for any related URL information.
              &quot;url&quot;: &quot;A String&quot;, # Specific URL associated with the resource.
              &quot;label&quot;: &quot;A String&quot;, # Label to describe usage of the URL.
            },
          ],
        },
        &quot;remediation&quot;: &quot;A String&quot;, # A description of actions that can be taken to remedy the note.
        &quot;build&quot;: { # Details of a build occurrence. # Describes 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. # Required. The actual provenance for the build.
            &quot;builderVersion&quot;: &quot;A String&quot;, # Version string of the builder at the time this build was executed.
            &quot;createTime&quot;: &quot;A String&quot;, # Time at which the build was created.
            &quot;logsUri&quot;: &quot;A String&quot;, # URI where any logs for this provenance were written.
            &quot;triggerId&quot;: &quot;A String&quot;, # Trigger identifier if the build was triggered automatically; empty if not.
            &quot;id&quot;: &quot;A String&quot;, # Required. Unique identifier of the build.
            &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;projectId&quot;: &quot;A String&quot;, # ID of the project.
            &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;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;id&quot;: &quot;A String&quot;, # Optional unique identifier for this command, used in wait_for to reference this command as a dependency.
                &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;name&quot;: &quot;A String&quot;, # Required. 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;endTime&quot;: &quot;A String&quot;, # Time at which execution of the build was finished.
            &quot;builtArtifacts&quot;: [ # Output of the build.
              { # Artifact describes a build product.
                &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;checksum&quot;: &quot;A String&quot;, # Hash or checksum value of a binary, or Docker Registry 2.0 digest of a container.
                &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;sourceProvenance&quot;: { # Source describes the location of the source used for the build. # Details of the Source input to the build.
              &quot;artifactStorageSourceUri&quot;: &quot;A String&quot;, # If provided, the input binary artifacts for the build came from this location.
              &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;gerrit&quot;: { # A SourceContext referring to a Gerrit project. # A SourceContext referring to a Gerrit project.
                  &quot;hostUri&quot;: &quot;A String&quot;, # The URI of a running Gerrit instance.
                  &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;revisionId&quot;: &quot;A String&quot;, # A revision (commit) ID.
                },
                &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;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;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;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;, # Git commit hash.
                },
              },
              &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;gerrit&quot;: { # A SourceContext referring to a Gerrit project. # A SourceContext referring to a Gerrit project.
                    &quot;hostUri&quot;: &quot;A String&quot;, # The URI of a running Gerrit instance.
                    &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;revisionId&quot;: &quot;A String&quot;, # A revision (commit) ID.
                  },
                  &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;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;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;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;, # Git commit hash.
                  },
                },
              ],
              &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;: [ # Required. Collection of file hashes.
                    { # Container message for hash values.
                      &quot;type&quot;: &quot;A String&quot;, # Required. The type of hash that was performed.
                      &quot;value&quot;: &quot;A String&quot;, # Required. The hash value.
                    },
                  ],
                },
              },
            },
            &quot;startTime&quot;: &quot;A String&quot;, # Time at which execution of the build was started.
          },
          &quot;provenanceBytes&quot;: &quot;A String&quot;, # Serialized JSON representation of the provenance, used in generating the build signature in the corresponding build note. 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;installation&quot;: { # Details of a package occurrence. # Describes the installation of a package on the linked resource.
          &quot;installation&quot;: { # This represents how a particular software package may be installed on a system. # Required. Where the package was installed.
            &quot;name&quot;: &quot;A String&quot;, # Output only. The name of the installed package.
            &quot;location&quot;: [ # Required. 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 a package. # The version installed at this location.
                  &quot;name&quot;: &quot;A String&quot;, # Required only when version kind is NORMAL. The main part of the version name.
                  &quot;kind&quot;: &quot;A String&quot;, # Required. Distinguishes between sentinel MIN/MAX versions and normal versions.
                  &quot;revision&quot;: &quot;A String&quot;, # The iteration of the package build from the above version.
                  &quot;epoch&quot;: 42, # Used to correct mistakes in the version numbering scheme.
                },
                &quot;cpeUri&quot;: &quot;A String&quot;, # Required. The CPE URI in [CPE format](https://cpe.mitre.org/specification/) denoting the package manager version distributing a package.
              },
            ],
          },
        },
        &quot;attestation&quot;: { # Details of an attestation occurrence. # Describes an attestation of an artifact.
          &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 authority 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). # Required. Attestation for the resource.
            &quot;genericSignedAttestation&quot;: { # An attestation wrapper that uses the Grafeas `Signature` message. This attestation must define the `serialized_payload` that the `signatures` verify and any metadata necessary to interpret that plaintext. The signatures should always be over the `serialized_payload` bytestring.
              &quot;signatures&quot;: [ # One or more signatures over `serialized_payload`. Verifier implementations should consider this attestation message verified if at least one `signature` verifies `serialized_payload`. See `Signature` in common.proto for more details on signature structure and verification.
                { # Verifiers (e.g. Kritis implementations) MUST verify signatures with respect to the trust anchors defined in policy (e.g. a Kritis policy). Typically this means that the verifier has been configured with a map from `public_key_id` to public key material (and any required parameters, e.g. signing algorithm). In particular, verification implementations MUST NOT treat the signature `public_key_id` as anything more than a key lookup hint. The `public_key_id` DOES NOT validate or authenticate a public key; it only provides a mechanism for quickly selecting a public key ALREADY CONFIGURED on the verifier through a trusted channel. Verification implementations MUST reject signatures in any of the following circumstances: * The `public_key_id` is not recognized by the verifier. * The public key that `public_key_id` refers to does not verify the signature with respect to the payload. The `signature` contents SHOULD NOT be &quot;attached&quot; (where the payload is included with the serialized `signature` bytes). Verifiers MUST ignore any &quot;attached&quot; payload and only verify signatures with respect to explicitly provided payload (e.g. a `payload` field on the proto message that holds this Signature, or the canonical serialization of the proto message that holds this signature).
                  &quot;publicKeyId&quot;: &quot;A String&quot;, # The identifier for the public key that verifies this signature. * The `public_key_id` is required. * The `public_key_id` SHOULD be an RFC3986 conformant URI. * When possible, the `public_key_id` SHOULD be an immutable reference, such as a cryptographic digest. Examples of valid `public_key_id`s: OpenPGP V4 public key fingerprint: * &quot;openpgp4fpr:74FAF3B861BDA0870C7B6DEF607E48D2A663AEEA&quot; See https://www.iana.org/assignments/uri-schemes/prov/openpgp4fpr for more details on this scheme. RFC6920 digest-named SubjectPublicKeyInfo (digest of the DER serialization): * &quot;ni:///sha-256;cD9o9Cq6LG3jD0iKXqEi_vdjJGecm_iXkbqVoScViaU&quot; * &quot;nih:///sha-256;703f68f42aba2c6de30f488a5ea122fef76324679c9bf89791ba95a1271589a5&quot;
                  &quot;signature&quot;: &quot;A String&quot;, # The content of the signature, an opaque bytestring. The payload that this signature verifies MUST be unambiguously provided with the Signature during verification. A wrapper message might provide the payload explicitly. Alternatively, a message might have a canonical serialization that can always be unambiguously computed to derive the payload.
                },
              ],
              &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;serializedPayload&quot;: &quot;A String&quot;, # The serialized payload that is verified by one or more `signatures`. The encoding and semantic meaning of this payload must match what is set in `content_type`.
            },
            &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. # A PGP signed attestation.
              &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;signature&quot;: &quot;A String&quot;, # Required. 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;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 hexidecimal 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;name&quot;: &quot;A String&quot;, # Output only. The name of the occurrence in the form of `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]`.
        &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time this occurrence was created.
      },
    ],
  }</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>