| syntax = "proto3"; |
| |
| package xds.type.v3; |
| |
| import "google/api/expr/v1alpha1/checked.proto"; |
| import "google/api/expr/v1alpha1/syntax.proto"; |
| import "google/protobuf/wrappers.proto"; |
| |
| import "xds/annotations/v3/status.proto"; |
| |
| import "validate/validate.proto"; |
| |
| option java_package = "com.github.xds.type.v3"; |
| option java_outer_classname = "CelProto"; |
| option java_multiple_files = true; |
| option go_package = "github.com/cncf/xds/go/xds/type/v3"; |
| |
| option (xds.annotations.v3.file_status).work_in_progress = true; |
| |
| // [#protodoc-title: Common Expression Language (CEL)] |
| |
| // Either parsed or checked representation of the `Common Expression Language |
| // <https://github.com/google/cel-spec>`_ (CEL) program. |
| message CelExpression { |
| oneof expr_specifier { |
| option (validate.required) = true; |
| |
| // Parsed expression in abstract syntax tree (AST) form. |
| google.api.expr.v1alpha1.ParsedExpr parsed_expr = 1; |
| |
| // Parsed expression in abstract syntax tree (AST) form that has been successfully type checked. |
| google.api.expr.v1alpha1.CheckedExpr checked_expr = 2; |
| } |
| } |
| |
| // Extracts a string by evaluating a `Common Expression Language |
| // <https://github.com/google/cel-spec>`_ (CEL) expression against the standardized set of |
| // :ref:`HTTP attributes <arch_overview_attributes>`. |
| // |
| // .. attention:: |
| // |
| // Besides CEL evaluation raising an error explicitly, CEL program returning a type other than |
| // the ``string``, or not returning anything, are considered an error as well. |
| // |
| // [#comment:TODO(sergiitk): When implemented, add the extension tag.] |
| message CelExtractString { |
| // The CEL expression used to extract a string from the CEL environment. |
| // the "subject string") that should be replaced. |
| CelExpression expr_extract = 1 [(validate.rules).message = {required: true}]; |
| |
| // If CEL expression evaluates to an error, this value is be returned to the caller. |
| // If not set, the error is propagated to the caller. |
| google.protobuf.StringValue default_value = 2; |
| } |