1*d5c09012SAndroid Build Coastguard Worker// Copyright 2023 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 Workersyntax = "proto3"; 16*d5c09012SAndroid Build Coastguard Worker 17*d5c09012SAndroid Build Coastguard Workerpackage google.api.expr.v1alpha1; 18*d5c09012SAndroid Build Coastguard Worker 19*d5c09012SAndroid Build Coastguard Workerimport "google/protobuf/any.proto"; 20*d5c09012SAndroid Build Coastguard Workerimport "google/protobuf/struct.proto"; 21*d5c09012SAndroid Build Coastguard Worker 22*d5c09012SAndroid Build Coastguard Workeroption cc_enable_arenas = true; 23*d5c09012SAndroid Build Coastguard Workeroption go_package = "google.golang.org/genproto/googleapis/api/expr/v1alpha1;expr"; 24*d5c09012SAndroid Build Coastguard Workeroption java_multiple_files = true; 25*d5c09012SAndroid Build Coastguard Workeroption java_outer_classname = "ValueProto"; 26*d5c09012SAndroid Build Coastguard Workeroption java_package = "com.google.api.expr.v1alpha1"; 27*d5c09012SAndroid Build Coastguard Worker 28*d5c09012SAndroid Build Coastguard Worker// Contains representations for CEL runtime values. 29*d5c09012SAndroid Build Coastguard Worker 30*d5c09012SAndroid Build Coastguard Worker// Represents a CEL value. 31*d5c09012SAndroid Build Coastguard Worker// 32*d5c09012SAndroid Build Coastguard Worker// This is similar to `google.protobuf.Value`, but can represent CEL's full 33*d5c09012SAndroid Build Coastguard Worker// range of values. 34*d5c09012SAndroid Build Coastguard Workermessage Value { 35*d5c09012SAndroid Build Coastguard Worker // Required. The valid kinds of values. 36*d5c09012SAndroid Build Coastguard Worker oneof kind { 37*d5c09012SAndroid Build Coastguard Worker // Null value. 38*d5c09012SAndroid Build Coastguard Worker google.protobuf.NullValue null_value = 1; 39*d5c09012SAndroid Build Coastguard Worker 40*d5c09012SAndroid Build Coastguard Worker // Boolean value. 41*d5c09012SAndroid Build Coastguard Worker bool bool_value = 2; 42*d5c09012SAndroid Build Coastguard Worker 43*d5c09012SAndroid Build Coastguard Worker // Signed integer value. 44*d5c09012SAndroid Build Coastguard Worker int64 int64_value = 3; 45*d5c09012SAndroid Build Coastguard Worker 46*d5c09012SAndroid Build Coastguard Worker // Unsigned integer value. 47*d5c09012SAndroid Build Coastguard Worker uint64 uint64_value = 4; 48*d5c09012SAndroid Build Coastguard Worker 49*d5c09012SAndroid Build Coastguard Worker // Floating point value. 50*d5c09012SAndroid Build Coastguard Worker double double_value = 5; 51*d5c09012SAndroid Build Coastguard Worker 52*d5c09012SAndroid Build Coastguard Worker // UTF-8 string value. 53*d5c09012SAndroid Build Coastguard Worker string string_value = 6; 54*d5c09012SAndroid Build Coastguard Worker 55*d5c09012SAndroid Build Coastguard Worker // Byte string value. 56*d5c09012SAndroid Build Coastguard Worker bytes bytes_value = 7; 57*d5c09012SAndroid Build Coastguard Worker 58*d5c09012SAndroid Build Coastguard Worker // An enum value. 59*d5c09012SAndroid Build Coastguard Worker EnumValue enum_value = 9; 60*d5c09012SAndroid Build Coastguard Worker 61*d5c09012SAndroid Build Coastguard Worker // The proto message backing an object value. 62*d5c09012SAndroid Build Coastguard Worker google.protobuf.Any object_value = 10; 63*d5c09012SAndroid Build Coastguard Worker 64*d5c09012SAndroid Build Coastguard Worker // Map value. 65*d5c09012SAndroid Build Coastguard Worker MapValue map_value = 11; 66*d5c09012SAndroid Build Coastguard Worker 67*d5c09012SAndroid Build Coastguard Worker // List value. 68*d5c09012SAndroid Build Coastguard Worker ListValue list_value = 12; 69*d5c09012SAndroid Build Coastguard Worker 70*d5c09012SAndroid Build Coastguard Worker // Type value. 71*d5c09012SAndroid Build Coastguard Worker string type_value = 15; 72*d5c09012SAndroid Build Coastguard Worker } 73*d5c09012SAndroid Build Coastguard Worker} 74*d5c09012SAndroid Build Coastguard Worker 75*d5c09012SAndroid Build Coastguard Worker// An enum value. 76*d5c09012SAndroid Build Coastguard Workermessage EnumValue { 77*d5c09012SAndroid Build Coastguard Worker // The fully qualified name of the enum type. 78*d5c09012SAndroid Build Coastguard Worker string type = 1; 79*d5c09012SAndroid Build Coastguard Worker 80*d5c09012SAndroid Build Coastguard Worker // The value of the enum. 81*d5c09012SAndroid Build Coastguard Worker int32 value = 2; 82*d5c09012SAndroid Build Coastguard Worker} 83*d5c09012SAndroid Build Coastguard Worker 84*d5c09012SAndroid Build Coastguard Worker// A list. 85*d5c09012SAndroid Build Coastguard Worker// 86*d5c09012SAndroid Build Coastguard Worker// Wrapped in a message so 'not set' and empty can be differentiated, which is 87*d5c09012SAndroid Build Coastguard Worker// required for use in a 'oneof'. 88*d5c09012SAndroid Build Coastguard Workermessage ListValue { 89*d5c09012SAndroid Build Coastguard Worker // The ordered values in the list. 90*d5c09012SAndroid Build Coastguard Worker repeated Value values = 1; 91*d5c09012SAndroid Build Coastguard Worker} 92*d5c09012SAndroid Build Coastguard Worker 93*d5c09012SAndroid Build Coastguard Worker// A map. 94*d5c09012SAndroid Build Coastguard Worker// 95*d5c09012SAndroid Build Coastguard Worker// Wrapped in a message so 'not set' and empty can be differentiated, which is 96*d5c09012SAndroid Build Coastguard Worker// required for use in a 'oneof'. 97*d5c09012SAndroid Build Coastguard Workermessage MapValue { 98*d5c09012SAndroid Build Coastguard Worker // An entry in the map. 99*d5c09012SAndroid Build Coastguard Worker message Entry { 100*d5c09012SAndroid Build Coastguard Worker // The key. 101*d5c09012SAndroid Build Coastguard Worker // 102*d5c09012SAndroid Build Coastguard Worker // Must be unique with in the map. 103*d5c09012SAndroid Build Coastguard Worker // Currently only boolean, int, uint, and string values can be keys. 104*d5c09012SAndroid Build Coastguard Worker Value key = 1; 105*d5c09012SAndroid Build Coastguard Worker 106*d5c09012SAndroid Build Coastguard Worker // The value. 107*d5c09012SAndroid Build Coastguard Worker Value value = 2; 108*d5c09012SAndroid Build Coastguard Worker } 109*d5c09012SAndroid Build Coastguard Worker 110*d5c09012SAndroid Build Coastguard Worker // The set of map entries. 111*d5c09012SAndroid Build Coastguard Worker // 112*d5c09012SAndroid Build Coastguard Worker // CEL has fewer restrictions on keys, so a protobuf map represenation 113*d5c09012SAndroid Build Coastguard Worker // cannot be used. 114*d5c09012SAndroid Build Coastguard Worker repeated Entry entries = 1; 115*d5c09012SAndroid Build Coastguard Worker} 116