/*
 * Copyright 2020 Google LLC
 *
 * 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: google/identity/accesscontextmanager/v1/service_perimeter.proto

package com.google.identity.accesscontextmanager.v1;

public interface ServicePerimeterOrBuilder
    extends
    // @@protoc_insertion_point(interface_extends:google.identity.accesscontextmanager.v1.ServicePerimeter)
    com.google.protobuf.MessageOrBuilder {

  /**
   *
   *
   * <pre>
   * Required. Resource name for the ServicePerimeter.  The `short_name`
   * component must begin with a letter and only include alphanumeric and '_'.
   * Format:
   * `accessPolicies/{access_policy}/servicePerimeters/{service_perimeter}`
   * </pre>
   *
   * <code>string name = 1;</code>
   *
   * @return The name.
   */
  java.lang.String getName();
  /**
   *
   *
   * <pre>
   * Required. Resource name for the ServicePerimeter.  The `short_name`
   * component must begin with a letter and only include alphanumeric and '_'.
   * Format:
   * `accessPolicies/{access_policy}/servicePerimeters/{service_perimeter}`
   * </pre>
   *
   * <code>string name = 1;</code>
   *
   * @return The bytes for name.
   */
  com.google.protobuf.ByteString getNameBytes();

  /**
   *
   *
   * <pre>
   * Human readable title. Must be unique within the Policy.
   * </pre>
   *
   * <code>string title = 2;</code>
   *
   * @return The title.
   */
  java.lang.String getTitle();
  /**
   *
   *
   * <pre>
   * Human readable title. Must be unique within the Policy.
   * </pre>
   *
   * <code>string title = 2;</code>
   *
   * @return The bytes for title.
   */
  com.google.protobuf.ByteString getTitleBytes();

  /**
   *
   *
   * <pre>
   * Description of the `ServicePerimeter` and its use. Does not affect
   * behavior.
   * </pre>
   *
   * <code>string description = 3;</code>
   *
   * @return The description.
   */
  java.lang.String getDescription();
  /**
   *
   *
   * <pre>
   * Description of the `ServicePerimeter` and its use. Does not affect
   * behavior.
   * </pre>
   *
   * <code>string description = 3;</code>
   *
   * @return The bytes for description.
   */
  com.google.protobuf.ByteString getDescriptionBytes();

  /**
   *
   *
   * <pre>
   * Output only. Time the `ServicePerimeter` was created in UTC.
   * </pre>
   *
   * <code>.google.protobuf.Timestamp create_time = 4;</code>
   *
   * @return Whether the createTime field is set.
   */
  boolean hasCreateTime();
  /**
   *
   *
   * <pre>
   * Output only. Time the `ServicePerimeter` was created in UTC.
   * </pre>
   *
   * <code>.google.protobuf.Timestamp create_time = 4;</code>
   *
   * @return The createTime.
   */
  com.google.protobuf.Timestamp getCreateTime();
  /**
   *
   *
   * <pre>
   * Output only. Time the `ServicePerimeter` was created in UTC.
   * </pre>
   *
   * <code>.google.protobuf.Timestamp create_time = 4;</code>
   */
  com.google.protobuf.TimestampOrBuilder getCreateTimeOrBuilder();

  /**
   *
   *
   * <pre>
   * Output only. Time the `ServicePerimeter` was updated in UTC.
   * </pre>
   *
   * <code>.google.protobuf.Timestamp update_time = 5;</code>
   *
   * @return Whether the updateTime field is set.
   */
  boolean hasUpdateTime();
  /**
   *
   *
   * <pre>
   * Output only. Time the `ServicePerimeter` was updated in UTC.
   * </pre>
   *
   * <code>.google.protobuf.Timestamp update_time = 5;</code>
   *
   * @return The updateTime.
   */
  com.google.protobuf.Timestamp getUpdateTime();
  /**
   *
   *
   * <pre>
   * Output only. Time the `ServicePerimeter` was updated in UTC.
   * </pre>
   *
   * <code>.google.protobuf.Timestamp update_time = 5;</code>
   */
  com.google.protobuf.TimestampOrBuilder getUpdateTimeOrBuilder();

  /**
   *
   *
   * <pre>
   * Perimeter type indicator. A single project is
   * allowed to be a member of single regular perimeter, but multiple service
   * perimeter bridges. A project cannot be a included in a perimeter bridge
   * without being included in regular perimeter. For perimeter bridges,
   * the restricted service list as well as access level lists must be
   * empty.
   * </pre>
   *
   * <code>
   * .google.identity.accesscontextmanager.v1.ServicePerimeter.PerimeterType perimeter_type = 6;
   * </code>
   *
   * @return The enum numeric value on the wire for perimeterType.
   */
  int getPerimeterTypeValue();
  /**
   *
   *
   * <pre>
   * Perimeter type indicator. A single project is
   * allowed to be a member of single regular perimeter, but multiple service
   * perimeter bridges. A project cannot be a included in a perimeter bridge
   * without being included in regular perimeter. For perimeter bridges,
   * the restricted service list as well as access level lists must be
   * empty.
   * </pre>
   *
   * <code>
   * .google.identity.accesscontextmanager.v1.ServicePerimeter.PerimeterType perimeter_type = 6;
   * </code>
   *
   * @return The perimeterType.
   */
  com.google.identity.accesscontextmanager.v1.ServicePerimeter.PerimeterType getPerimeterType();

  /**
   *
   *
   * <pre>
   * Current ServicePerimeter configuration. Specifies sets of resources,
   * restricted services and access levels that determine perimeter
   * content and boundaries.
   * </pre>
   *
   * <code>.google.identity.accesscontextmanager.v1.ServicePerimeterConfig status = 7;</code>
   *
   * @return Whether the status field is set.
   */
  boolean hasStatus();
  /**
   *
   *
   * <pre>
   * Current ServicePerimeter configuration. Specifies sets of resources,
   * restricted services and access levels that determine perimeter
   * content and boundaries.
   * </pre>
   *
   * <code>.google.identity.accesscontextmanager.v1.ServicePerimeterConfig status = 7;</code>
   *
   * @return The status.
   */
  com.google.identity.accesscontextmanager.v1.ServicePerimeterConfig getStatus();
  /**
   *
   *
   * <pre>
   * Current ServicePerimeter configuration. Specifies sets of resources,
   * restricted services and access levels that determine perimeter
   * content and boundaries.
   * </pre>
   *
   * <code>.google.identity.accesscontextmanager.v1.ServicePerimeterConfig status = 7;</code>
   */
  com.google.identity.accesscontextmanager.v1.ServicePerimeterConfigOrBuilder getStatusOrBuilder();

  /**
   *
   *
   * <pre>
   * Proposed (or dry run) ServicePerimeter configuration. This configuration
   * allows to specify and test ServicePerimeter configuration without enforcing
   * actual access restrictions. Only allowed to be set when the
   * "use_explicit_dry_run_spec" flag is set.
   * </pre>
   *
   * <code>.google.identity.accesscontextmanager.v1.ServicePerimeterConfig spec = 8;</code>
   *
   * @return Whether the spec field is set.
   */
  boolean hasSpec();
  /**
   *
   *
   * <pre>
   * Proposed (or dry run) ServicePerimeter configuration. This configuration
   * allows to specify and test ServicePerimeter configuration without enforcing
   * actual access restrictions. Only allowed to be set when the
   * "use_explicit_dry_run_spec" flag is set.
   * </pre>
   *
   * <code>.google.identity.accesscontextmanager.v1.ServicePerimeterConfig spec = 8;</code>
   *
   * @return The spec.
   */
  com.google.identity.accesscontextmanager.v1.ServicePerimeterConfig getSpec();
  /**
   *
   *
   * <pre>
   * Proposed (or dry run) ServicePerimeter configuration. This configuration
   * allows to specify and test ServicePerimeter configuration without enforcing
   * actual access restrictions. Only allowed to be set when the
   * "use_explicit_dry_run_spec" flag is set.
   * </pre>
   *
   * <code>.google.identity.accesscontextmanager.v1.ServicePerimeterConfig spec = 8;</code>
   */
  com.google.identity.accesscontextmanager.v1.ServicePerimeterConfigOrBuilder getSpecOrBuilder();

  /**
   *
   *
   * <pre>
   * Use explicit dry run spec flag. Ordinarily, a dry-run spec implicitly
   * exists  for all Service Perimeters, and that spec is identical to the
   * status for those Service Perimeters. When this flag is set, it inhibits the
   * generation of the implicit spec, thereby allowing the user to explicitly
   * provide a configuration ("spec") to use in a dry-run version of the Service
   * Perimeter. This allows the user to test changes to the enforced config
   * ("status") without actually enforcing them. This testing is done through
   * analyzing the differences between currently enforced and suggested
   * restrictions. use_explicit_dry_run_spec must bet set to True if any of the
   * fields in the spec are set to non-default values.
   * </pre>
   *
   * <code>bool use_explicit_dry_run_spec = 9;</code>
   *
   * @return The useExplicitDryRunSpec.
   */
  boolean getUseExplicitDryRunSpec();
}
