/*
 * 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/vulnerability.proto

package io.grafeas.v1;

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

  /**
   *
   *
   * <pre>
   * The type of package; whether native or non native (e.g., ruby gems, node.js
   * packages, etc.).
   * </pre>
   *
   * <code>string type = 1;</code>
   *
   * @return The type.
   */
  java.lang.String getType();
  /**
   *
   *
   * <pre>
   * The type of package; whether native or non native (e.g., ruby gems, node.js
   * packages, etc.).
   * </pre>
   *
   * <code>string type = 1;</code>
   *
   * @return The bytes for type.
   */
  com.google.protobuf.ByteString getTypeBytes();

  /**
   *
   *
   * <pre>
   * Output only. The note provider assigned severity of this vulnerability.
   * </pre>
   *
   * <code>.grafeas.v1.Severity severity = 2;</code>
   *
   * @return The enum numeric value on the wire for severity.
   */
  int getSeverityValue();
  /**
   *
   *
   * <pre>
   * Output only. The note provider assigned severity of this vulnerability.
   * </pre>
   *
   * <code>.grafeas.v1.Severity severity = 2;</code>
   *
   * @return The severity.
   */
  io.grafeas.v1.Severity getSeverity();

  /**
   *
   *
   * <pre>
   * 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.
   * </pre>
   *
   * <code>float cvss_score = 3;</code>
   *
   * @return The cvssScore.
   */
  float getCvssScore();

  /**
   *
   *
   * <pre>
   * The cvss v3 score for the vulnerability.
   * </pre>
   *
   * <code>.grafeas.v1.CVSS cvssv3 = 10;</code>
   *
   * @return Whether the cvssv3 field is set.
   */
  boolean hasCvssv3();
  /**
   *
   *
   * <pre>
   * The cvss v3 score for the vulnerability.
   * </pre>
   *
   * <code>.grafeas.v1.CVSS cvssv3 = 10;</code>
   *
   * @return The cvssv3.
   */
  io.grafeas.v1.CVSS getCvssv3();
  /**
   *
   *
   * <pre>
   * The cvss v3 score for the vulnerability.
   * </pre>
   *
   * <code>.grafeas.v1.CVSS cvssv3 = 10;</code>
   */
  io.grafeas.v1.CVSSOrBuilder getCvssv3OrBuilder();

  /**
   *
   *
   * <pre>
   * Required. The set of affected locations and their fixes (if available)
   * within the associated resource.
   * </pre>
   *
   * <code>repeated .grafeas.v1.VulnerabilityOccurrence.PackageIssue package_issue = 4;</code>
   */
  java.util.List<io.grafeas.v1.VulnerabilityOccurrence.PackageIssue> getPackageIssueList();
  /**
   *
   *
   * <pre>
   * Required. The set of affected locations and their fixes (if available)
   * within the associated resource.
   * </pre>
   *
   * <code>repeated .grafeas.v1.VulnerabilityOccurrence.PackageIssue package_issue = 4;</code>
   */
  io.grafeas.v1.VulnerabilityOccurrence.PackageIssue getPackageIssue(int index);
  /**
   *
   *
   * <pre>
   * Required. The set of affected locations and their fixes (if available)
   * within the associated resource.
   * </pre>
   *
   * <code>repeated .grafeas.v1.VulnerabilityOccurrence.PackageIssue package_issue = 4;</code>
   */
  int getPackageIssueCount();
  /**
   *
   *
   * <pre>
   * Required. The set of affected locations and their fixes (if available)
   * within the associated resource.
   * </pre>
   *
   * <code>repeated .grafeas.v1.VulnerabilityOccurrence.PackageIssue package_issue = 4;</code>
   */
  java.util.List<? extends io.grafeas.v1.VulnerabilityOccurrence.PackageIssueOrBuilder>
      getPackageIssueOrBuilderList();
  /**
   *
   *
   * <pre>
   * Required. The set of affected locations and their fixes (if available)
   * within the associated resource.
   * </pre>
   *
   * <code>repeated .grafeas.v1.VulnerabilityOccurrence.PackageIssue package_issue = 4;</code>
   */
  io.grafeas.v1.VulnerabilityOccurrence.PackageIssueOrBuilder getPackageIssueOrBuilder(int index);

  /**
   *
   *
   * <pre>
   * Output only. A one sentence description of this vulnerability.
   * </pre>
   *
   * <code>string short_description = 5;</code>
   *
   * @return The shortDescription.
   */
  java.lang.String getShortDescription();
  /**
   *
   *
   * <pre>
   * Output only. A one sentence description of this vulnerability.
   * </pre>
   *
   * <code>string short_description = 5;</code>
   *
   * @return The bytes for shortDescription.
   */
  com.google.protobuf.ByteString getShortDescriptionBytes();

  /**
   *
   *
   * <pre>
   * Output only. A detailed description of this vulnerability.
   * </pre>
   *
   * <code>string long_description = 6;</code>
   *
   * @return The longDescription.
   */
  java.lang.String getLongDescription();
  /**
   *
   *
   * <pre>
   * Output only. A detailed description of this vulnerability.
   * </pre>
   *
   * <code>string long_description = 6;</code>
   *
   * @return The bytes for longDescription.
   */
  com.google.protobuf.ByteString getLongDescriptionBytes();

  /**
   *
   *
   * <pre>
   * Output only. URLs related to this vulnerability.
   * </pre>
   *
   * <code>repeated .grafeas.v1.RelatedUrl related_urls = 7;</code>
   */
  java.util.List<io.grafeas.v1.RelatedUrl> getRelatedUrlsList();
  /**
   *
   *
   * <pre>
   * Output only. URLs related to this vulnerability.
   * </pre>
   *
   * <code>repeated .grafeas.v1.RelatedUrl related_urls = 7;</code>
   */
  io.grafeas.v1.RelatedUrl getRelatedUrls(int index);
  /**
   *
   *
   * <pre>
   * Output only. URLs related to this vulnerability.
   * </pre>
   *
   * <code>repeated .grafeas.v1.RelatedUrl related_urls = 7;</code>
   */
  int getRelatedUrlsCount();
  /**
   *
   *
   * <pre>
   * Output only. URLs related to this vulnerability.
   * </pre>
   *
   * <code>repeated .grafeas.v1.RelatedUrl related_urls = 7;</code>
   */
  java.util.List<? extends io.grafeas.v1.RelatedUrlOrBuilder> getRelatedUrlsOrBuilderList();
  /**
   *
   *
   * <pre>
   * Output only. URLs related to this vulnerability.
   * </pre>
   *
   * <code>repeated .grafeas.v1.RelatedUrl related_urls = 7;</code>
   */
  io.grafeas.v1.RelatedUrlOrBuilder getRelatedUrlsOrBuilder(int index);

  /**
   *
   *
   * <pre>
   * The distro assigned severity for this vulnerability when it is available,
   * otherwise this is the note provider assigned severity.
   * When there are multiple PackageIssues for this vulnerability, they can have
   * different effective severities because some might be provided by the distro
   * while others are provided by the language ecosystem for a language pack.
   * For this reason, it is advised to use the effective severity on the
   * PackageIssue level. In the case where multiple PackageIssues have differing
   * effective severities, this field should be the highest severity for any of
   * the PackageIssues.
   * </pre>
   *
   * <code>.grafeas.v1.Severity effective_severity = 8;</code>
   *
   * @return The enum numeric value on the wire for effectiveSeverity.
   */
  int getEffectiveSeverityValue();
  /**
   *
   *
   * <pre>
   * The distro assigned severity for this vulnerability when it is available,
   * otherwise this is the note provider assigned severity.
   * When there are multiple PackageIssues for this vulnerability, they can have
   * different effective severities because some might be provided by the distro
   * while others are provided by the language ecosystem for a language pack.
   * For this reason, it is advised to use the effective severity on the
   * PackageIssue level. In the case where multiple PackageIssues have differing
   * effective severities, this field should be the highest severity for any of
   * the PackageIssues.
   * </pre>
   *
   * <code>.grafeas.v1.Severity effective_severity = 8;</code>
   *
   * @return The effectiveSeverity.
   */
  io.grafeas.v1.Severity getEffectiveSeverity();

  /**
   *
   *
   * <pre>
   * Output only. Whether at least one of the affected packages has a fix
   * available.
   * </pre>
   *
   * <code>bool fix_available = 9;</code>
   *
   * @return The fixAvailable.
   */
  boolean getFixAvailable();

  /**
   *
   *
   * <pre>
   * Output only. CVSS version used to populate cvss_score and severity.
   * </pre>
   *
   * <code>.grafeas.v1.CVSSVersion cvss_version = 11;</code>
   *
   * @return The enum numeric value on the wire for cvssVersion.
   */
  int getCvssVersionValue();
  /**
   *
   *
   * <pre>
   * Output only. CVSS version used to populate cvss_score and severity.
   * </pre>
   *
   * <code>.grafeas.v1.CVSSVersion cvss_version = 11;</code>
   *
   * @return The cvssVersion.
   */
  io.grafeas.v1.CVSSVersion getCvssVersion();

  /**
   *
   *
   * <pre>
   * The cvss v2 score for the vulnerability.
   * </pre>
   *
   * <code>.grafeas.v1.CVSS cvss_v2 = 12;</code>
   *
   * @return Whether the cvssV2 field is set.
   */
  boolean hasCvssV2();
  /**
   *
   *
   * <pre>
   * The cvss v2 score for the vulnerability.
   * </pre>
   *
   * <code>.grafeas.v1.CVSS cvss_v2 = 12;</code>
   *
   * @return The cvssV2.
   */
  io.grafeas.v1.CVSS getCvssV2();
  /**
   *
   *
   * <pre>
   * The cvss v2 score for the vulnerability.
   * </pre>
   *
   * <code>.grafeas.v1.CVSS cvss_v2 = 12;</code>
   */
  io.grafeas.v1.CVSSOrBuilder getCvssV2OrBuilder();

  /**
   * <code>.grafeas.v1.VulnerabilityOccurrence.VexAssessment vex_assessment = 13;</code>
   *
   * @return Whether the vexAssessment field is set.
   */
  boolean hasVexAssessment();
  /**
   * <code>.grafeas.v1.VulnerabilityOccurrence.VexAssessment vex_assessment = 13;</code>
   *
   * @return The vexAssessment.
   */
  io.grafeas.v1.VulnerabilityOccurrence.VexAssessment getVexAssessment();
  /** <code>.grafeas.v1.VulnerabilityOccurrence.VexAssessment vex_assessment = 13;</code> */
  io.grafeas.v1.VulnerabilityOccurrence.VexAssessmentOrBuilder getVexAssessmentOrBuilder();
}
