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

package com.google.identity.accesscontextmanager.v1;

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

  /**
   *
   *
   * <pre>
   * CIDR block IP subnetwork specification. May be IPv4 or IPv6. Note that for
   * a CIDR IP address block, the specified IP address portion must be properly
   * truncated (i.e. all the host bits must be zero) or the input is considered
   * malformed. For example, "192.0.2.0/24" is accepted but "192.0.2.1/24" is
   * not. Similarly, for IPv6, "2001:db8::/32" is accepted whereas
   * "2001:db8::1/32" is not. The originating IP of a request must be in one of
   * the listed subnets in order for this Condition to be true. If empty, all IP
   * addresses are allowed.
   * </pre>
   *
   * <code>repeated string ip_subnetworks = 1;</code>
   *
   * @return A list containing the ipSubnetworks.
   */
  java.util.List<java.lang.String> getIpSubnetworksList();
  /**
   *
   *
   * <pre>
   * CIDR block IP subnetwork specification. May be IPv4 or IPv6. Note that for
   * a CIDR IP address block, the specified IP address portion must be properly
   * truncated (i.e. all the host bits must be zero) or the input is considered
   * malformed. For example, "192.0.2.0/24" is accepted but "192.0.2.1/24" is
   * not. Similarly, for IPv6, "2001:db8::/32" is accepted whereas
   * "2001:db8::1/32" is not. The originating IP of a request must be in one of
   * the listed subnets in order for this Condition to be true. If empty, all IP
   * addresses are allowed.
   * </pre>
   *
   * <code>repeated string ip_subnetworks = 1;</code>
   *
   * @return The count of ipSubnetworks.
   */
  int getIpSubnetworksCount();
  /**
   *
   *
   * <pre>
   * CIDR block IP subnetwork specification. May be IPv4 or IPv6. Note that for
   * a CIDR IP address block, the specified IP address portion must be properly
   * truncated (i.e. all the host bits must be zero) or the input is considered
   * malformed. For example, "192.0.2.0/24" is accepted but "192.0.2.1/24" is
   * not. Similarly, for IPv6, "2001:db8::/32" is accepted whereas
   * "2001:db8::1/32" is not. The originating IP of a request must be in one of
   * the listed subnets in order for this Condition to be true. If empty, all IP
   * addresses are allowed.
   * </pre>
   *
   * <code>repeated string ip_subnetworks = 1;</code>
   *
   * @param index The index of the element to return.
   * @return The ipSubnetworks at the given index.
   */
  java.lang.String getIpSubnetworks(int index);
  /**
   *
   *
   * <pre>
   * CIDR block IP subnetwork specification. May be IPv4 or IPv6. Note that for
   * a CIDR IP address block, the specified IP address portion must be properly
   * truncated (i.e. all the host bits must be zero) or the input is considered
   * malformed. For example, "192.0.2.0/24" is accepted but "192.0.2.1/24" is
   * not. Similarly, for IPv6, "2001:db8::/32" is accepted whereas
   * "2001:db8::1/32" is not. The originating IP of a request must be in one of
   * the listed subnets in order for this Condition to be true. If empty, all IP
   * addresses are allowed.
   * </pre>
   *
   * <code>repeated string ip_subnetworks = 1;</code>
   *
   * @param index The index of the value to return.
   * @return The bytes of the ipSubnetworks at the given index.
   */
  com.google.protobuf.ByteString getIpSubnetworksBytes(int index);

  /**
   *
   *
   * <pre>
   * Device specific restrictions, all restrictions must hold for the
   * Condition to be true. If not specified, all devices are allowed.
   * </pre>
   *
   * <code>.google.identity.accesscontextmanager.v1.DevicePolicy device_policy = 2;</code>
   *
   * @return Whether the devicePolicy field is set.
   */
  boolean hasDevicePolicy();
  /**
   *
   *
   * <pre>
   * Device specific restrictions, all restrictions must hold for the
   * Condition to be true. If not specified, all devices are allowed.
   * </pre>
   *
   * <code>.google.identity.accesscontextmanager.v1.DevicePolicy device_policy = 2;</code>
   *
   * @return The devicePolicy.
   */
  com.google.identity.accesscontextmanager.v1.DevicePolicy getDevicePolicy();
  /**
   *
   *
   * <pre>
   * Device specific restrictions, all restrictions must hold for the
   * Condition to be true. If not specified, all devices are allowed.
   * </pre>
   *
   * <code>.google.identity.accesscontextmanager.v1.DevicePolicy device_policy = 2;</code>
   */
  com.google.identity.accesscontextmanager.v1.DevicePolicyOrBuilder getDevicePolicyOrBuilder();

  /**
   *
   *
   * <pre>
   * A list of other access levels defined in the same `Policy`, referenced by
   * resource name. Referencing an `AccessLevel` which does not exist is an
   * error. All access levels listed must be granted for the Condition
   * to be true. Example:
   * "`accessPolicies/MY_POLICY/accessLevels/LEVEL_NAME"`
   * </pre>
   *
   * <code>repeated string required_access_levels = 3;</code>
   *
   * @return A list containing the requiredAccessLevels.
   */
  java.util.List<java.lang.String> getRequiredAccessLevelsList();
  /**
   *
   *
   * <pre>
   * A list of other access levels defined in the same `Policy`, referenced by
   * resource name. Referencing an `AccessLevel` which does not exist is an
   * error. All access levels listed must be granted for the Condition
   * to be true. Example:
   * "`accessPolicies/MY_POLICY/accessLevels/LEVEL_NAME"`
   * </pre>
   *
   * <code>repeated string required_access_levels = 3;</code>
   *
   * @return The count of requiredAccessLevels.
   */
  int getRequiredAccessLevelsCount();
  /**
   *
   *
   * <pre>
   * A list of other access levels defined in the same `Policy`, referenced by
   * resource name. Referencing an `AccessLevel` which does not exist is an
   * error. All access levels listed must be granted for the Condition
   * to be true. Example:
   * "`accessPolicies/MY_POLICY/accessLevels/LEVEL_NAME"`
   * </pre>
   *
   * <code>repeated string required_access_levels = 3;</code>
   *
   * @param index The index of the element to return.
   * @return The requiredAccessLevels at the given index.
   */
  java.lang.String getRequiredAccessLevels(int index);
  /**
   *
   *
   * <pre>
   * A list of other access levels defined in the same `Policy`, referenced by
   * resource name. Referencing an `AccessLevel` which does not exist is an
   * error. All access levels listed must be granted for the Condition
   * to be true. Example:
   * "`accessPolicies/MY_POLICY/accessLevels/LEVEL_NAME"`
   * </pre>
   *
   * <code>repeated string required_access_levels = 3;</code>
   *
   * @param index The index of the value to return.
   * @return The bytes of the requiredAccessLevels at the given index.
   */
  com.google.protobuf.ByteString getRequiredAccessLevelsBytes(int index);

  /**
   *
   *
   * <pre>
   * Whether to negate the Condition. If true, the Condition becomes a NAND over
   * its non-empty fields, each field must be false for the Condition overall to
   * be satisfied. Defaults to false.
   * </pre>
   *
   * <code>bool negate = 5;</code>
   *
   * @return The negate.
   */
  boolean getNegate();

  /**
   *
   *
   * <pre>
   * The request must be made by one of the provided user or service
   * accounts. Groups are not supported.
   * Syntax:
   * `user:{emailid}`
   * `serviceAccount:{emailid}`
   * If not specified, a request may come from any user.
   * </pre>
   *
   * <code>repeated string members = 6;</code>
   *
   * @return A list containing the members.
   */
  java.util.List<java.lang.String> getMembersList();
  /**
   *
   *
   * <pre>
   * The request must be made by one of the provided user or service
   * accounts. Groups are not supported.
   * Syntax:
   * `user:{emailid}`
   * `serviceAccount:{emailid}`
   * If not specified, a request may come from any user.
   * </pre>
   *
   * <code>repeated string members = 6;</code>
   *
   * @return The count of members.
   */
  int getMembersCount();
  /**
   *
   *
   * <pre>
   * The request must be made by one of the provided user or service
   * accounts. Groups are not supported.
   * Syntax:
   * `user:{emailid}`
   * `serviceAccount:{emailid}`
   * If not specified, a request may come from any user.
   * </pre>
   *
   * <code>repeated string members = 6;</code>
   *
   * @param index The index of the element to return.
   * @return The members at the given index.
   */
  java.lang.String getMembers(int index);
  /**
   *
   *
   * <pre>
   * The request must be made by one of the provided user or service
   * accounts. Groups are not supported.
   * Syntax:
   * `user:{emailid}`
   * `serviceAccount:{emailid}`
   * If not specified, a request may come from any user.
   * </pre>
   *
   * <code>repeated string members = 6;</code>
   *
   * @param index The index of the value to return.
   * @return The bytes of the members at the given index.
   */
  com.google.protobuf.ByteString getMembersBytes(int index);

  /**
   *
   *
   * <pre>
   * The request must originate from one of the provided countries/regions.
   * Must be valid ISO 3166-1 alpha-2 codes.
   * </pre>
   *
   * <code>repeated string regions = 7;</code>
   *
   * @return A list containing the regions.
   */
  java.util.List<java.lang.String> getRegionsList();
  /**
   *
   *
   * <pre>
   * The request must originate from one of the provided countries/regions.
   * Must be valid ISO 3166-1 alpha-2 codes.
   * </pre>
   *
   * <code>repeated string regions = 7;</code>
   *
   * @return The count of regions.
   */
  int getRegionsCount();
  /**
   *
   *
   * <pre>
   * The request must originate from one of the provided countries/regions.
   * Must be valid ISO 3166-1 alpha-2 codes.
   * </pre>
   *
   * <code>repeated string regions = 7;</code>
   *
   * @param index The index of the element to return.
   * @return The regions at the given index.
   */
  java.lang.String getRegions(int index);
  /**
   *
   *
   * <pre>
   * The request must originate from one of the provided countries/regions.
   * Must be valid ISO 3166-1 alpha-2 codes.
   * </pre>
   *
   * <code>repeated string regions = 7;</code>
   *
   * @param index The index of the value to return.
   * @return The bytes of the regions at the given index.
   */
  com.google.protobuf.ByteString getRegionsBytes(int index);
}
