1*d5c09012SAndroid Build Coastguard Worker// Copyright 2019 Google LLC. 2*d5c09012SAndroid Build Coastguard Worker// 3*d5c09012SAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License"); 4*d5c09012SAndroid Build Coastguard Worker// you may not use this file except in compliance with the License. 5*d5c09012SAndroid Build Coastguard Worker// You may obtain a copy of the License at 6*d5c09012SAndroid Build Coastguard Worker// 7*d5c09012SAndroid Build Coastguard Worker// http://www.apache.org/licenses/LICENSE-2.0 8*d5c09012SAndroid Build Coastguard Worker// 9*d5c09012SAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software 10*d5c09012SAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS, 11*d5c09012SAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*d5c09012SAndroid Build Coastguard Worker// See the License for the specific language governing permissions and 13*d5c09012SAndroid Build Coastguard Worker// limitations under the License. 14*d5c09012SAndroid Build Coastguard Worker// 15*d5c09012SAndroid Build Coastguard Worker 16*d5c09012SAndroid Build Coastguard Workersyntax = "proto3"; 17*d5c09012SAndroid Build Coastguard Worker 18*d5c09012SAndroid Build Coastguard Workerpackage google.api.expr.v1beta1; 19*d5c09012SAndroid Build Coastguard Worker 20*d5c09012SAndroid Build Coastguard Workerimport "google/protobuf/any.proto"; 21*d5c09012SAndroid Build Coastguard Workerimport "google/protobuf/struct.proto"; 22*d5c09012SAndroid Build Coastguard Worker 23*d5c09012SAndroid Build Coastguard Workeroption cc_enable_arenas = true; 24*d5c09012SAndroid Build Coastguard Workeroption go_package = "google.golang.org/genproto/googleapis/api/expr/v1beta1;expr"; 25*d5c09012SAndroid Build Coastguard Workeroption java_multiple_files = true; 26*d5c09012SAndroid Build Coastguard Workeroption java_outer_classname = "ValueProto"; 27*d5c09012SAndroid Build Coastguard Workeroption java_package = "com.google.api.expr.v1beta1"; 28*d5c09012SAndroid Build Coastguard Worker 29*d5c09012SAndroid Build Coastguard Worker// Represents a CEL value. 30*d5c09012SAndroid Build Coastguard Worker// 31*d5c09012SAndroid Build Coastguard Worker// This is similar to `google.protobuf.Value`, but can represent CEL's full 32*d5c09012SAndroid Build Coastguard Worker// range of values. 33*d5c09012SAndroid Build Coastguard Workermessage Value { 34*d5c09012SAndroid Build Coastguard Worker // Required. The valid kinds of values. 35*d5c09012SAndroid Build Coastguard Worker oneof kind { 36*d5c09012SAndroid Build Coastguard Worker // Null value. 37*d5c09012SAndroid Build Coastguard Worker google.protobuf.NullValue null_value = 1; 38*d5c09012SAndroid Build Coastguard Worker 39*d5c09012SAndroid Build Coastguard Worker // Boolean value. 40*d5c09012SAndroid Build Coastguard Worker bool bool_value = 2; 41*d5c09012SAndroid Build Coastguard Worker 42*d5c09012SAndroid Build Coastguard Worker // Signed integer value. 43*d5c09012SAndroid Build Coastguard Worker int64 int64_value = 3; 44*d5c09012SAndroid Build Coastguard Worker 45*d5c09012SAndroid Build Coastguard Worker // Unsigned integer value. 46*d5c09012SAndroid Build Coastguard Worker uint64 uint64_value = 4; 47*d5c09012SAndroid Build Coastguard Worker 48*d5c09012SAndroid Build Coastguard Worker // Floating point value. 49*d5c09012SAndroid Build Coastguard Worker double double_value = 5; 50*d5c09012SAndroid Build Coastguard Worker 51*d5c09012SAndroid Build Coastguard Worker // UTF-8 string value. 52*d5c09012SAndroid Build Coastguard Worker string string_value = 6; 53*d5c09012SAndroid Build Coastguard Worker 54*d5c09012SAndroid Build Coastguard Worker // Byte string value. 55*d5c09012SAndroid Build Coastguard Worker bytes bytes_value = 7; 56*d5c09012SAndroid Build Coastguard Worker 57*d5c09012SAndroid Build Coastguard Worker // An enum value. 58*d5c09012SAndroid Build Coastguard Worker EnumValue enum_value = 9; 59*d5c09012SAndroid Build Coastguard Worker 60*d5c09012SAndroid Build Coastguard Worker // The proto message backing an object value. 61*d5c09012SAndroid Build Coastguard Worker google.protobuf.Any object_value = 10; 62*d5c09012SAndroid Build Coastguard Worker 63*d5c09012SAndroid Build Coastguard Worker // Map value. 64*d5c09012SAndroid Build Coastguard Worker MapValue map_value = 11; 65*d5c09012SAndroid Build Coastguard Worker 66*d5c09012SAndroid Build Coastguard Worker // List value. 67*d5c09012SAndroid Build Coastguard Worker ListValue list_value = 12; 68*d5c09012SAndroid Build Coastguard Worker 69*d5c09012SAndroid Build Coastguard Worker // A Type value represented by the fully qualified name of the type. 70*d5c09012SAndroid Build Coastguard Worker string type_value = 15; 71*d5c09012SAndroid Build Coastguard Worker } 72*d5c09012SAndroid Build Coastguard Worker} 73*d5c09012SAndroid Build Coastguard Worker 74*d5c09012SAndroid Build Coastguard Worker// An enum value. 75*d5c09012SAndroid Build Coastguard Workermessage EnumValue { 76*d5c09012SAndroid Build Coastguard Worker // The fully qualified name of the enum type. 77*d5c09012SAndroid Build Coastguard Worker string type = 1; 78*d5c09012SAndroid Build Coastguard Worker 79*d5c09012SAndroid Build Coastguard Worker // The value of the enum. 80*d5c09012SAndroid Build Coastguard Worker int32 value = 2; 81*d5c09012SAndroid Build Coastguard Worker} 82*d5c09012SAndroid Build Coastguard Worker 83*d5c09012SAndroid Build Coastguard Worker// A list. 84*d5c09012SAndroid Build Coastguard Worker// 85*d5c09012SAndroid Build Coastguard Worker// Wrapped in a message so 'not set' and empty can be differentiated, which is 86*d5c09012SAndroid Build Coastguard Worker// required for use in a 'oneof'. 87*d5c09012SAndroid Build Coastguard Workermessage ListValue { 88*d5c09012SAndroid Build Coastguard Worker // The ordered values in the list. 89*d5c09012SAndroid Build Coastguard Worker repeated Value values = 1; 90*d5c09012SAndroid Build Coastguard Worker} 91*d5c09012SAndroid Build Coastguard Worker 92*d5c09012SAndroid Build Coastguard Worker// A map. 93*d5c09012SAndroid Build Coastguard Worker// 94*d5c09012SAndroid Build Coastguard Worker// Wrapped in a message so 'not set' and empty can be differentiated, which is 95*d5c09012SAndroid Build Coastguard Worker// required for use in a 'oneof'. 96*d5c09012SAndroid Build Coastguard Workermessage MapValue { 97*d5c09012SAndroid Build Coastguard Worker // An entry in the map. 98*d5c09012SAndroid Build Coastguard Worker message Entry { 99*d5c09012SAndroid Build Coastguard Worker // The key. 100*d5c09012SAndroid Build Coastguard Worker // 101*d5c09012SAndroid Build Coastguard Worker // Must be unique with in the map. 102*d5c09012SAndroid Build Coastguard Worker // Currently only boolean, int, uint, and string values can be keys. 103*d5c09012SAndroid Build Coastguard Worker Value key = 1; 104*d5c09012SAndroid Build Coastguard Worker 105*d5c09012SAndroid Build Coastguard Worker // The value. 106*d5c09012SAndroid Build Coastguard Worker Value value = 2; 107*d5c09012SAndroid Build Coastguard Worker } 108*d5c09012SAndroid Build Coastguard Worker 109*d5c09012SAndroid Build Coastguard Worker // The set of map entries. 110*d5c09012SAndroid Build Coastguard Worker // 111*d5c09012SAndroid Build Coastguard Worker // CEL has fewer restrictions on keys, so a protobuf map represenation 112*d5c09012SAndroid Build Coastguard Worker // cannot be used. 113*d5c09012SAndroid Build Coastguard Worker repeated Entry entries = 1; 114*d5c09012SAndroid Build Coastguard Worker} 115