/*
 * Copyright 2019 The Grafeas Authors. All rights reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: grafeas/v1/grafeas.proto

package io.grafeas.v1;

public interface OccurrenceOrBuilder
    extends
    // @@protoc_insertion_point(interface_extends:grafeas.v1.Occurrence)
    com.google.protobuf.MessageOrBuilder {

  /**
   *
   *
   * <pre>
   * Output only. The name of the occurrence in the form of
   * `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]`.
   * </pre>
   *
   * <code>string name = 1;</code>
   *
   * @return The name.
   */
  java.lang.String getName();
  /**
   *
   *
   * <pre>
   * Output only. The name of the occurrence in the form of
   * `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]`.
   * </pre>
   *
   * <code>string name = 1;</code>
   *
   * @return The bytes for name.
   */
  com.google.protobuf.ByteString getNameBytes();

  /**
   *
   *
   * <pre>
   * Required. Immutable. A URI that represents the resource for which the
   * occurrence applies. For example,
   * `https://gcr.io/project/image&#64;sha256:123abc` for a Docker image.
   * </pre>
   *
   * <code>string resource_uri = 2;</code>
   *
   * @return The resourceUri.
   */
  java.lang.String getResourceUri();
  /**
   *
   *
   * <pre>
   * Required. Immutable. A URI that represents the resource for which the
   * occurrence applies. For example,
   * `https://gcr.io/project/image&#64;sha256:123abc` for a Docker image.
   * </pre>
   *
   * <code>string resource_uri = 2;</code>
   *
   * @return The bytes for resourceUri.
   */
  com.google.protobuf.ByteString getResourceUriBytes();

  /**
   *
   *
   * <pre>
   * 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.
   * </pre>
   *
   * <code>string note_name = 3;</code>
   *
   * @return The noteName.
   */
  java.lang.String getNoteName();
  /**
   *
   *
   * <pre>
   * 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.
   * </pre>
   *
   * <code>string note_name = 3;</code>
   *
   * @return The bytes for noteName.
   */
  com.google.protobuf.ByteString getNoteNameBytes();

  /**
   *
   *
   * <pre>
   * Output only. This explicitly denotes which of the occurrence details are
   * specified. This field can be used as a filter in list requests.
   * </pre>
   *
   * <code>.grafeas.v1.NoteKind kind = 4;</code>
   *
   * @return The enum numeric value on the wire for kind.
   */
  int getKindValue();
  /**
   *
   *
   * <pre>
   * Output only. This explicitly denotes which of the occurrence details are
   * specified. This field can be used as a filter in list requests.
   * </pre>
   *
   * <code>.grafeas.v1.NoteKind kind = 4;</code>
   *
   * @return The kind.
   */
  io.grafeas.v1.NoteKind getKind();

  /**
   *
   *
   * <pre>
   * A description of actions that can be taken to remedy the note.
   * </pre>
   *
   * <code>string remediation = 5;</code>
   *
   * @return The remediation.
   */
  java.lang.String getRemediation();
  /**
   *
   *
   * <pre>
   * A description of actions that can be taken to remedy the note.
   * </pre>
   *
   * <code>string remediation = 5;</code>
   *
   * @return The bytes for remediation.
   */
  com.google.protobuf.ByteString getRemediationBytes();

  /**
   *
   *
   * <pre>
   * Output only. The time this occurrence was created.
   * </pre>
   *
   * <code>.google.protobuf.Timestamp create_time = 6;</code>
   *
   * @return Whether the createTime field is set.
   */
  boolean hasCreateTime();
  /**
   *
   *
   * <pre>
   * Output only. The time this occurrence was created.
   * </pre>
   *
   * <code>.google.protobuf.Timestamp create_time = 6;</code>
   *
   * @return The createTime.
   */
  com.google.protobuf.Timestamp getCreateTime();
  /**
   *
   *
   * <pre>
   * Output only. The time this occurrence was created.
   * </pre>
   *
   * <code>.google.protobuf.Timestamp create_time = 6;</code>
   */
  com.google.protobuf.TimestampOrBuilder getCreateTimeOrBuilder();

  /**
   *
   *
   * <pre>
   * Output only. The time this occurrence was last updated.
   * </pre>
   *
   * <code>.google.protobuf.Timestamp update_time = 7;</code>
   *
   * @return Whether the updateTime field is set.
   */
  boolean hasUpdateTime();
  /**
   *
   *
   * <pre>
   * Output only. The time this occurrence was last updated.
   * </pre>
   *
   * <code>.google.protobuf.Timestamp update_time = 7;</code>
   *
   * @return The updateTime.
   */
  com.google.protobuf.Timestamp getUpdateTime();
  /**
   *
   *
   * <pre>
   * Output only. The time this occurrence was last updated.
   * </pre>
   *
   * <code>.google.protobuf.Timestamp update_time = 7;</code>
   */
  com.google.protobuf.TimestampOrBuilder getUpdateTimeOrBuilder();

  /**
   *
   *
   * <pre>
   * Describes a security vulnerability.
   * </pre>
   *
   * <code>.grafeas.v1.VulnerabilityOccurrence vulnerability = 8;</code>
   *
   * @return Whether the vulnerability field is set.
   */
  boolean hasVulnerability();
  /**
   *
   *
   * <pre>
   * Describes a security vulnerability.
   * </pre>
   *
   * <code>.grafeas.v1.VulnerabilityOccurrence vulnerability = 8;</code>
   *
   * @return The vulnerability.
   */
  io.grafeas.v1.VulnerabilityOccurrence getVulnerability();
  /**
   *
   *
   * <pre>
   * Describes a security vulnerability.
   * </pre>
   *
   * <code>.grafeas.v1.VulnerabilityOccurrence vulnerability = 8;</code>
   */
  io.grafeas.v1.VulnerabilityOccurrenceOrBuilder getVulnerabilityOrBuilder();

  /**
   *
   *
   * <pre>
   * Describes a verifiable build.
   * </pre>
   *
   * <code>.grafeas.v1.BuildOccurrence build = 9;</code>
   *
   * @return Whether the build field is set.
   */
  boolean hasBuild();
  /**
   *
   *
   * <pre>
   * Describes a verifiable build.
   * </pre>
   *
   * <code>.grafeas.v1.BuildOccurrence build = 9;</code>
   *
   * @return The build.
   */
  io.grafeas.v1.BuildOccurrence getBuild();
  /**
   *
   *
   * <pre>
   * Describes a verifiable build.
   * </pre>
   *
   * <code>.grafeas.v1.BuildOccurrence build = 9;</code>
   */
  io.grafeas.v1.BuildOccurrenceOrBuilder getBuildOrBuilder();

  /**
   *
   *
   * <pre>
   * Describes how this resource derives from the basis in the associated
   * note.
   * </pre>
   *
   * <code>.grafeas.v1.ImageOccurrence image = 10;</code>
   *
   * @return Whether the image field is set.
   */
  boolean hasImage();
  /**
   *
   *
   * <pre>
   * Describes how this resource derives from the basis in the associated
   * note.
   * </pre>
   *
   * <code>.grafeas.v1.ImageOccurrence image = 10;</code>
   *
   * @return The image.
   */
  io.grafeas.v1.ImageOccurrence getImage();
  /**
   *
   *
   * <pre>
   * Describes how this resource derives from the basis in the associated
   * note.
   * </pre>
   *
   * <code>.grafeas.v1.ImageOccurrence image = 10;</code>
   */
  io.grafeas.v1.ImageOccurrenceOrBuilder getImageOrBuilder();

  /**
   *
   *
   * <pre>
   * Describes the installation of a package on the linked resource.
   * </pre>
   *
   * <code>.grafeas.v1.PackageOccurrence package = 11;</code>
   *
   * @return Whether the package field is set.
   */
  boolean hasPackage();
  /**
   *
   *
   * <pre>
   * Describes the installation of a package on the linked resource.
   * </pre>
   *
   * <code>.grafeas.v1.PackageOccurrence package = 11;</code>
   *
   * @return The package.
   */
  io.grafeas.v1.PackageOccurrence getPackage();
  /**
   *
   *
   * <pre>
   * Describes the installation of a package on the linked resource.
   * </pre>
   *
   * <code>.grafeas.v1.PackageOccurrence package = 11;</code>
   */
  io.grafeas.v1.PackageOccurrenceOrBuilder getPackageOrBuilder();

  /**
   *
   *
   * <pre>
   * Describes the deployment of an artifact on a runtime.
   * </pre>
   *
   * <code>.grafeas.v1.DeploymentOccurrence deployment = 12;</code>
   *
   * @return Whether the deployment field is set.
   */
  boolean hasDeployment();
  /**
   *
   *
   * <pre>
   * Describes the deployment of an artifact on a runtime.
   * </pre>
   *
   * <code>.grafeas.v1.DeploymentOccurrence deployment = 12;</code>
   *
   * @return The deployment.
   */
  io.grafeas.v1.DeploymentOccurrence getDeployment();
  /**
   *
   *
   * <pre>
   * Describes the deployment of an artifact on a runtime.
   * </pre>
   *
   * <code>.grafeas.v1.DeploymentOccurrence deployment = 12;</code>
   */
  io.grafeas.v1.DeploymentOccurrenceOrBuilder getDeploymentOrBuilder();

  /**
   *
   *
   * <pre>
   * Describes when a resource was discovered.
   * </pre>
   *
   * <code>.grafeas.v1.DiscoveryOccurrence discovery = 13;</code>
   *
   * @return Whether the discovery field is set.
   */
  boolean hasDiscovery();
  /**
   *
   *
   * <pre>
   * Describes when a resource was discovered.
   * </pre>
   *
   * <code>.grafeas.v1.DiscoveryOccurrence discovery = 13;</code>
   *
   * @return The discovery.
   */
  io.grafeas.v1.DiscoveryOccurrence getDiscovery();
  /**
   *
   *
   * <pre>
   * Describes when a resource was discovered.
   * </pre>
   *
   * <code>.grafeas.v1.DiscoveryOccurrence discovery = 13;</code>
   */
  io.grafeas.v1.DiscoveryOccurrenceOrBuilder getDiscoveryOrBuilder();

  /**
   *
   *
   * <pre>
   * Describes an attestation of an artifact.
   * </pre>
   *
   * <code>.grafeas.v1.AttestationOccurrence attestation = 14;</code>
   *
   * @return Whether the attestation field is set.
   */
  boolean hasAttestation();
  /**
   *
   *
   * <pre>
   * Describes an attestation of an artifact.
   * </pre>
   *
   * <code>.grafeas.v1.AttestationOccurrence attestation = 14;</code>
   *
   * @return The attestation.
   */
  io.grafeas.v1.AttestationOccurrence getAttestation();
  /**
   *
   *
   * <pre>
   * Describes an attestation of an artifact.
   * </pre>
   *
   * <code>.grafeas.v1.AttestationOccurrence attestation = 14;</code>
   */
  io.grafeas.v1.AttestationOccurrenceOrBuilder getAttestationOrBuilder();

  /**
   *
   *
   * <pre>
   * Describes an available package upgrade on the linked resource.
   * </pre>
   *
   * <code>.grafeas.v1.UpgradeOccurrence upgrade = 15;</code>
   *
   * @return Whether the upgrade field is set.
   */
  boolean hasUpgrade();
  /**
   *
   *
   * <pre>
   * Describes an available package upgrade on the linked resource.
   * </pre>
   *
   * <code>.grafeas.v1.UpgradeOccurrence upgrade = 15;</code>
   *
   * @return The upgrade.
   */
  io.grafeas.v1.UpgradeOccurrence getUpgrade();
  /**
   *
   *
   * <pre>
   * Describes an available package upgrade on the linked resource.
   * </pre>
   *
   * <code>.grafeas.v1.UpgradeOccurrence upgrade = 15;</code>
   */
  io.grafeas.v1.UpgradeOccurrenceOrBuilder getUpgradeOrBuilder();

  /**
   *
   *
   * <pre>
   * Describes a compliance violation on a linked resource.
   * </pre>
   *
   * <code>.grafeas.v1.ComplianceOccurrence compliance = 16;</code>
   *
   * @return Whether the compliance field is set.
   */
  boolean hasCompliance();
  /**
   *
   *
   * <pre>
   * Describes a compliance violation on a linked resource.
   * </pre>
   *
   * <code>.grafeas.v1.ComplianceOccurrence compliance = 16;</code>
   *
   * @return The compliance.
   */
  io.grafeas.v1.ComplianceOccurrence getCompliance();
  /**
   *
   *
   * <pre>
   * Describes a compliance violation on a linked resource.
   * </pre>
   *
   * <code>.grafeas.v1.ComplianceOccurrence compliance = 16;</code>
   */
  io.grafeas.v1.ComplianceOccurrenceOrBuilder getComplianceOrBuilder();

  /**
   *
   *
   * <pre>
   * Describes an attestation of an artifact using dsse.
   * </pre>
   *
   * <code>.grafeas.v1.DSSEAttestationOccurrence dsse_attestation = 17;</code>
   *
   * @return Whether the dsseAttestation field is set.
   */
  boolean hasDsseAttestation();
  /**
   *
   *
   * <pre>
   * Describes an attestation of an artifact using dsse.
   * </pre>
   *
   * <code>.grafeas.v1.DSSEAttestationOccurrence dsse_attestation = 17;</code>
   *
   * @return The dsseAttestation.
   */
  io.grafeas.v1.DSSEAttestationOccurrence getDsseAttestation();
  /**
   *
   *
   * <pre>
   * Describes an attestation of an artifact using dsse.
   * </pre>
   *
   * <code>.grafeas.v1.DSSEAttestationOccurrence dsse_attestation = 17;</code>
   */
  io.grafeas.v1.DSSEAttestationOccurrenceOrBuilder getDsseAttestationOrBuilder();

  /**
   *
   *
   * <pre>
   * https://github.com/secure-systems-lab/dsse
   * </pre>
   *
   * <code>.grafeas.v1.Envelope envelope = 18;</code>
   *
   * @return Whether the envelope field is set.
   */
  boolean hasEnvelope();
  /**
   *
   *
   * <pre>
   * https://github.com/secure-systems-lab/dsse
   * </pre>
   *
   * <code>.grafeas.v1.Envelope envelope = 18;</code>
   *
   * @return The envelope.
   */
  io.grafeas.v1.Envelope getEnvelope();
  /**
   *
   *
   * <pre>
   * https://github.com/secure-systems-lab/dsse
   * </pre>
   *
   * <code>.grafeas.v1.Envelope envelope = 18;</code>
   */
  io.grafeas.v1.EnvelopeOrBuilder getEnvelopeOrBuilder();

  public io.grafeas.v1.Occurrence.DetailsCase getDetailsCase();
}
