// Copyright 2021-2025 Zenauth Ltd.
// SPDX-License-Identifier: Apache-2.0

// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.36.10
// 	protoc        (unknown)
// source: cerbos/engine/v1/engine.proto

package enginev1

import (
	_ "buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go/buf/validate"
	v11 "github.com/cerbos/cerbos/api/genpb/cerbos/effect/v1"
	v1 "github.com/cerbos/cerbos/api/genpb/cerbos/schema/v1"
	_ "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2/options"
	_ "google.golang.org/genproto/googleapis/api/annotations"
	v1alpha1 "google.golang.org/genproto/googleapis/api/expr/v1alpha1"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	structpb "google.golang.org/protobuf/types/known/structpb"
	reflect "reflect"
	sync "sync"
	unsafe "unsafe"
)

const (
	// Verify that this generated code is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
	// Verify that runtime/protoimpl is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)

type PlanResourcesAst_LogicalOperation_Operator int32

const (
	PlanResourcesAst_LogicalOperation_OPERATOR_UNSPECIFIED PlanResourcesAst_LogicalOperation_Operator = 0
	PlanResourcesAst_LogicalOperation_OPERATOR_AND         PlanResourcesAst_LogicalOperation_Operator = 1
	PlanResourcesAst_LogicalOperation_OPERATOR_OR          PlanResourcesAst_LogicalOperation_Operator = 2
	PlanResourcesAst_LogicalOperation_OPERATOR_NOT         PlanResourcesAst_LogicalOperation_Operator = 3
)

// Enum value maps for PlanResourcesAst_LogicalOperation_Operator.
var (
	PlanResourcesAst_LogicalOperation_Operator_name = map[int32]string{
		0: "OPERATOR_UNSPECIFIED",
		1: "OPERATOR_AND",
		2: "OPERATOR_OR",
		3: "OPERATOR_NOT",
	}
	PlanResourcesAst_LogicalOperation_Operator_value = map[string]int32{
		"OPERATOR_UNSPECIFIED": 0,
		"OPERATOR_AND":         1,
		"OPERATOR_OR":          2,
		"OPERATOR_NOT":         3,
	}
)

func (x PlanResourcesAst_LogicalOperation_Operator) Enum() *PlanResourcesAst_LogicalOperation_Operator {
	p := new(PlanResourcesAst_LogicalOperation_Operator)
	*p = x
	return p
}

func (x PlanResourcesAst_LogicalOperation_Operator) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (PlanResourcesAst_LogicalOperation_Operator) Descriptor() protoreflect.EnumDescriptor {
	return file_cerbos_engine_v1_engine_proto_enumTypes[0].Descriptor()
}

func (PlanResourcesAst_LogicalOperation_Operator) Type() protoreflect.EnumType {
	return &file_cerbos_engine_v1_engine_proto_enumTypes[0]
}

func (x PlanResourcesAst_LogicalOperation_Operator) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use PlanResourcesAst_LogicalOperation_Operator.Descriptor instead.
func (PlanResourcesAst_LogicalOperation_Operator) EnumDescriptor() ([]byte, []int) {
	return file_cerbos_engine_v1_engine_proto_rawDescGZIP(), []int{1, 1, 0}
}

type PlanResourcesFilter_Kind int32

const (
	PlanResourcesFilter_KIND_UNSPECIFIED    PlanResourcesFilter_Kind = 0
	PlanResourcesFilter_KIND_ALWAYS_ALLOWED PlanResourcesFilter_Kind = 1
	PlanResourcesFilter_KIND_ALWAYS_DENIED  PlanResourcesFilter_Kind = 2
	PlanResourcesFilter_KIND_CONDITIONAL    PlanResourcesFilter_Kind = 3
)

// Enum value maps for PlanResourcesFilter_Kind.
var (
	PlanResourcesFilter_Kind_name = map[int32]string{
		0: "KIND_UNSPECIFIED",
		1: "KIND_ALWAYS_ALLOWED",
		2: "KIND_ALWAYS_DENIED",
		3: "KIND_CONDITIONAL",
	}
	PlanResourcesFilter_Kind_value = map[string]int32{
		"KIND_UNSPECIFIED":    0,
		"KIND_ALWAYS_ALLOWED": 1,
		"KIND_ALWAYS_DENIED":  2,
		"KIND_CONDITIONAL":    3,
	}
)

func (x PlanResourcesFilter_Kind) Enum() *PlanResourcesFilter_Kind {
	p := new(PlanResourcesFilter_Kind)
	*p = x
	return p
}

func (x PlanResourcesFilter_Kind) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (PlanResourcesFilter_Kind) Descriptor() protoreflect.EnumDescriptor {
	return file_cerbos_engine_v1_engine_proto_enumTypes[1].Descriptor()
}

func (PlanResourcesFilter_Kind) Type() protoreflect.EnumType {
	return &file_cerbos_engine_v1_engine_proto_enumTypes[1]
}

func (x PlanResourcesFilter_Kind) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use PlanResourcesFilter_Kind.Descriptor instead.
func (PlanResourcesFilter_Kind) EnumDescriptor() ([]byte, []int) {
	return file_cerbos_engine_v1_engine_proto_rawDescGZIP(), []int{2, 0}
}

type Trace_Component_Kind int32

const (
	Trace_Component_KIND_UNSPECIFIED       Trace_Component_Kind = 0
	Trace_Component_KIND_ACTION            Trace_Component_Kind = 1
	Trace_Component_KIND_CONDITION_ALL     Trace_Component_Kind = 2
	Trace_Component_KIND_CONDITION_ANY     Trace_Component_Kind = 3
	Trace_Component_KIND_CONDITION_NONE    Trace_Component_Kind = 4
	Trace_Component_KIND_CONDITION         Trace_Component_Kind = 5
	Trace_Component_KIND_DERIVED_ROLE      Trace_Component_Kind = 6
	Trace_Component_KIND_EXPR              Trace_Component_Kind = 7
	Trace_Component_KIND_POLICY            Trace_Component_Kind = 8
	Trace_Component_KIND_RESOURCE          Trace_Component_Kind = 9
	Trace_Component_KIND_RULE              Trace_Component_Kind = 10
	Trace_Component_KIND_SCOPE             Trace_Component_Kind = 11
	Trace_Component_KIND_VARIABLE          Trace_Component_Kind = 12
	Trace_Component_KIND_VARIABLES         Trace_Component_Kind = 13
	Trace_Component_KIND_OUTPUT            Trace_Component_Kind = 14
	Trace_Component_KIND_ROLE_POLICY_SCOPE Trace_Component_Kind = 15
	Trace_Component_KIND_ROLE              Trace_Component_Kind = 16
)

// Enum value maps for Trace_Component_Kind.
var (
	Trace_Component_Kind_name = map[int32]string{
		0:  "KIND_UNSPECIFIED",
		1:  "KIND_ACTION",
		2:  "KIND_CONDITION_ALL",
		3:  "KIND_CONDITION_ANY",
		4:  "KIND_CONDITION_NONE",
		5:  "KIND_CONDITION",
		6:  "KIND_DERIVED_ROLE",
		7:  "KIND_EXPR",
		8:  "KIND_POLICY",
		9:  "KIND_RESOURCE",
		10: "KIND_RULE",
		11: "KIND_SCOPE",
		12: "KIND_VARIABLE",
		13: "KIND_VARIABLES",
		14: "KIND_OUTPUT",
		15: "KIND_ROLE_POLICY_SCOPE",
		16: "KIND_ROLE",
	}
	Trace_Component_Kind_value = map[string]int32{
		"KIND_UNSPECIFIED":       0,
		"KIND_ACTION":            1,
		"KIND_CONDITION_ALL":     2,
		"KIND_CONDITION_ANY":     3,
		"KIND_CONDITION_NONE":    4,
		"KIND_CONDITION":         5,
		"KIND_DERIVED_ROLE":      6,
		"KIND_EXPR":              7,
		"KIND_POLICY":            8,
		"KIND_RESOURCE":          9,
		"KIND_RULE":              10,
		"KIND_SCOPE":             11,
		"KIND_VARIABLE":          12,
		"KIND_VARIABLES":         13,
		"KIND_OUTPUT":            14,
		"KIND_ROLE_POLICY_SCOPE": 15,
		"KIND_ROLE":              16,
	}
)

func (x Trace_Component_Kind) Enum() *Trace_Component_Kind {
	p := new(Trace_Component_Kind)
	*p = x
	return p
}

func (x Trace_Component_Kind) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (Trace_Component_Kind) Descriptor() protoreflect.EnumDescriptor {
	return file_cerbos_engine_v1_engine_proto_enumTypes[2].Descriptor()
}

func (Trace_Component_Kind) Type() protoreflect.EnumType {
	return &file_cerbos_engine_v1_engine_proto_enumTypes[2]
}

func (x Trace_Component_Kind) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use Trace_Component_Kind.Descriptor instead.
func (Trace_Component_Kind) EnumDescriptor() ([]byte, []int) {
	return file_cerbos_engine_v1_engine_proto_rawDescGZIP(), []int{10, 0, 0}
}

type Trace_Event_Status int32

const (
	Trace_Event_STATUS_UNSPECIFIED Trace_Event_Status = 0
	Trace_Event_STATUS_ACTIVATED   Trace_Event_Status = 1
	Trace_Event_STATUS_SKIPPED     Trace_Event_Status = 2
)

// Enum value maps for Trace_Event_Status.
var (
	Trace_Event_Status_name = map[int32]string{
		0: "STATUS_UNSPECIFIED",
		1: "STATUS_ACTIVATED",
		2: "STATUS_SKIPPED",
	}
	Trace_Event_Status_value = map[string]int32{
		"STATUS_UNSPECIFIED": 0,
		"STATUS_ACTIVATED":   1,
		"STATUS_SKIPPED":     2,
	}
)

func (x Trace_Event_Status) Enum() *Trace_Event_Status {
	p := new(Trace_Event_Status)
	*p = x
	return p
}

func (x Trace_Event_Status) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (Trace_Event_Status) Descriptor() protoreflect.EnumDescriptor {
	return file_cerbos_engine_v1_engine_proto_enumTypes[3].Descriptor()
}

func (Trace_Event_Status) Type() protoreflect.EnumType {
	return &file_cerbos_engine_v1_engine_proto_enumTypes[3]
}

func (x Trace_Event_Status) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use Trace_Event_Status.Descriptor instead.
func (Trace_Event_Status) EnumDescriptor() ([]byte, []int) {
	return file_cerbos_engine_v1_engine_proto_rawDescGZIP(), []int{10, 1, 0}
}

type PlanResourcesInput struct {
	state     protoimpl.MessageState `protogen:"open.v1"`
	RequestId string                 `protobuf:"bytes,1,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
	// Deprecated: Marked as deprecated in cerbos/engine/v1/engine.proto.
	Action        string                       `protobuf:"bytes,2,opt,name=action,proto3" json:"action,omitempty"`
	Actions       []string                     `protobuf:"bytes,7,rep,name=actions,proto3" json:"actions,omitempty"`
	Principal     *Principal                   `protobuf:"bytes,3,opt,name=principal,proto3" json:"principal,omitempty"`
	Resource      *PlanResourcesInput_Resource `protobuf:"bytes,4,opt,name=resource,proto3" json:"resource,omitempty"`
	AuxData       *AuxData                     `protobuf:"bytes,5,opt,name=aux_data,json=auxData,proto3" json:"aux_data,omitempty"`
	IncludeMeta   bool                         `protobuf:"varint,6,opt,name=include_meta,json=includeMeta,proto3" json:"include_meta,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *PlanResourcesInput) Reset() {
	*x = PlanResourcesInput{}
	mi := &file_cerbos_engine_v1_engine_proto_msgTypes[0]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *PlanResourcesInput) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PlanResourcesInput) ProtoMessage() {}

func (x *PlanResourcesInput) ProtoReflect() protoreflect.Message {
	mi := &file_cerbos_engine_v1_engine_proto_msgTypes[0]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use PlanResourcesInput.ProtoReflect.Descriptor instead.
func (*PlanResourcesInput) Descriptor() ([]byte, []int) {
	return file_cerbos_engine_v1_engine_proto_rawDescGZIP(), []int{0}
}

func (x *PlanResourcesInput) GetRequestId() string {
	if x != nil {
		return x.RequestId
	}
	return ""
}

// Deprecated: Marked as deprecated in cerbos/engine/v1/engine.proto.
func (x *PlanResourcesInput) GetAction() string {
	if x != nil {
		return x.Action
	}
	return ""
}

func (x *PlanResourcesInput) GetActions() []string {
	if x != nil {
		return x.Actions
	}
	return nil
}

func (x *PlanResourcesInput) GetPrincipal() *Principal {
	if x != nil {
		return x.Principal
	}
	return nil
}

func (x *PlanResourcesInput) GetResource() *PlanResourcesInput_Resource {
	if x != nil {
		return x.Resource
	}
	return nil
}

func (x *PlanResourcesInput) GetAuxData() *AuxData {
	if x != nil {
		return x.AuxData
	}
	return nil
}

func (x *PlanResourcesInput) GetIncludeMeta() bool {
	if x != nil {
		return x.IncludeMeta
	}
	return false
}

type PlanResourcesAst struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	FilterAst     *PlanResourcesAst_Node `protobuf:"bytes,1,opt,name=filter_ast,json=filterAst,proto3" json:"filter_ast,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *PlanResourcesAst) Reset() {
	*x = PlanResourcesAst{}
	mi := &file_cerbos_engine_v1_engine_proto_msgTypes[1]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *PlanResourcesAst) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PlanResourcesAst) ProtoMessage() {}

func (x *PlanResourcesAst) ProtoReflect() protoreflect.Message {
	mi := &file_cerbos_engine_v1_engine_proto_msgTypes[1]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use PlanResourcesAst.ProtoReflect.Descriptor instead.
func (*PlanResourcesAst) Descriptor() ([]byte, []int) {
	return file_cerbos_engine_v1_engine_proto_rawDescGZIP(), []int{1}
}

func (x *PlanResourcesAst) GetFilterAst() *PlanResourcesAst_Node {
	if x != nil {
		return x.FilterAst
	}
	return nil
}

type PlanResourcesFilter struct {
	state         protoimpl.MessageState                  `protogen:"open.v1"`
	Kind          PlanResourcesFilter_Kind                `protobuf:"varint,1,opt,name=kind,proto3,enum=cerbos.engine.v1.PlanResourcesFilter_Kind" json:"kind,omitempty"`
	Condition     *PlanResourcesFilter_Expression_Operand `protobuf:"bytes,2,opt,name=condition,proto3" json:"condition,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *PlanResourcesFilter) Reset() {
	*x = PlanResourcesFilter{}
	mi := &file_cerbos_engine_v1_engine_proto_msgTypes[2]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *PlanResourcesFilter) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PlanResourcesFilter) ProtoMessage() {}

func (x *PlanResourcesFilter) ProtoReflect() protoreflect.Message {
	mi := &file_cerbos_engine_v1_engine_proto_msgTypes[2]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use PlanResourcesFilter.ProtoReflect.Descriptor instead.
func (*PlanResourcesFilter) Descriptor() ([]byte, []int) {
	return file_cerbos_engine_v1_engine_proto_rawDescGZIP(), []int{2}
}

func (x *PlanResourcesFilter) GetKind() PlanResourcesFilter_Kind {
	if x != nil {
		return x.Kind
	}
	return PlanResourcesFilter_KIND_UNSPECIFIED
}

func (x *PlanResourcesFilter) GetCondition() *PlanResourcesFilter_Expression_Operand {
	if x != nil {
		return x.Condition
	}
	return nil
}

type PlanResourcesOutput struct {
	state     protoimpl.MessageState `protogen:"open.v1"`
	RequestId string                 `protobuf:"bytes,1,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
	// Deprecated: Marked as deprecated in cerbos/engine/v1/engine.proto.
	Action           string                `protobuf:"bytes,2,opt,name=action,proto3" json:"action,omitempty"`
	Kind             string                `protobuf:"bytes,3,opt,name=kind,proto3" json:"kind,omitempty"`
	PolicyVersion    string                `protobuf:"bytes,4,opt,name=policy_version,json=policyVersion,proto3" json:"policy_version,omitempty"`
	Scope            string                `protobuf:"bytes,5,opt,name=scope,proto3" json:"scope,omitempty"`
	Filter           *PlanResourcesFilter  `protobuf:"bytes,6,opt,name=filter,proto3" json:"filter,omitempty"`
	FilterDebug      string                `protobuf:"bytes,7,opt,name=filter_debug,json=filterDebug,proto3" json:"filter_debug,omitempty"`
	ValidationErrors []*v1.ValidationError `protobuf:"bytes,8,rep,name=validation_errors,json=validationErrors,proto3" json:"validation_errors,omitempty"`
	Actions          []string              `protobuf:"bytes,9,rep,name=actions,proto3" json:"actions,omitempty"`
	MatchedScopes    map[string]string     `protobuf:"bytes,10,rep,name=matched_scopes,json=matchedScopes,proto3" json:"matched_scopes,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	unknownFields    protoimpl.UnknownFields
	sizeCache        protoimpl.SizeCache
}

func (x *PlanResourcesOutput) Reset() {
	*x = PlanResourcesOutput{}
	mi := &file_cerbos_engine_v1_engine_proto_msgTypes[3]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *PlanResourcesOutput) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PlanResourcesOutput) ProtoMessage() {}

func (x *PlanResourcesOutput) ProtoReflect() protoreflect.Message {
	mi := &file_cerbos_engine_v1_engine_proto_msgTypes[3]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use PlanResourcesOutput.ProtoReflect.Descriptor instead.
func (*PlanResourcesOutput) Descriptor() ([]byte, []int) {
	return file_cerbos_engine_v1_engine_proto_rawDescGZIP(), []int{3}
}

func (x *PlanResourcesOutput) GetRequestId() string {
	if x != nil {
		return x.RequestId
	}
	return ""
}

// Deprecated: Marked as deprecated in cerbos/engine/v1/engine.proto.
func (x *PlanResourcesOutput) GetAction() string {
	if x != nil {
		return x.Action
	}
	return ""
}

func (x *PlanResourcesOutput) GetKind() string {
	if x != nil {
		return x.Kind
	}
	return ""
}

func (x *PlanResourcesOutput) GetPolicyVersion() string {
	if x != nil {
		return x.PolicyVersion
	}
	return ""
}

func (x *PlanResourcesOutput) GetScope() string {
	if x != nil {
		return x.Scope
	}
	return ""
}

func (x *PlanResourcesOutput) GetFilter() *PlanResourcesFilter {
	if x != nil {
		return x.Filter
	}
	return nil
}

func (x *PlanResourcesOutput) GetFilterDebug() string {
	if x != nil {
		return x.FilterDebug
	}
	return ""
}

func (x *PlanResourcesOutput) GetValidationErrors() []*v1.ValidationError {
	if x != nil {
		return x.ValidationErrors
	}
	return nil
}

func (x *PlanResourcesOutput) GetActions() []string {
	if x != nil {
		return x.Actions
	}
	return nil
}

func (x *PlanResourcesOutput) GetMatchedScopes() map[string]string {
	if x != nil {
		return x.MatchedScopes
	}
	return nil
}

type CheckInput struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	RequestId     string                 `protobuf:"bytes,1,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
	Resource      *Resource              `protobuf:"bytes,2,opt,name=resource,proto3" json:"resource,omitempty"`
	Principal     *Principal             `protobuf:"bytes,3,opt,name=principal,proto3" json:"principal,omitempty"`
	Actions       []string               `protobuf:"bytes,4,rep,name=actions,proto3" json:"actions,omitempty"`
	AuxData       *AuxData               `protobuf:"bytes,5,opt,name=aux_data,json=auxData,proto3" json:"aux_data,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CheckInput) Reset() {
	*x = CheckInput{}
	mi := &file_cerbos_engine_v1_engine_proto_msgTypes[4]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *CheckInput) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CheckInput) ProtoMessage() {}

func (x *CheckInput) ProtoReflect() protoreflect.Message {
	mi := &file_cerbos_engine_v1_engine_proto_msgTypes[4]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CheckInput.ProtoReflect.Descriptor instead.
func (*CheckInput) Descriptor() ([]byte, []int) {
	return file_cerbos_engine_v1_engine_proto_rawDescGZIP(), []int{4}
}

func (x *CheckInput) GetRequestId() string {
	if x != nil {
		return x.RequestId
	}
	return ""
}

func (x *CheckInput) GetResource() *Resource {
	if x != nil {
		return x.Resource
	}
	return nil
}

func (x *CheckInput) GetPrincipal() *Principal {
	if x != nil {
		return x.Principal
	}
	return nil
}

func (x *CheckInput) GetActions() []string {
	if x != nil {
		return x.Actions
	}
	return nil
}

func (x *CheckInput) GetAuxData() *AuxData {
	if x != nil {
		return x.AuxData
	}
	return nil
}

type CheckOutput struct {
	state                 protoimpl.MessageState               `protogen:"open.v1"`
	RequestId             string                               `protobuf:"bytes,1,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
	ResourceId            string                               `protobuf:"bytes,2,opt,name=resource_id,json=resourceId,proto3" json:"resource_id,omitempty"`
	Actions               map[string]*CheckOutput_ActionEffect `protobuf:"bytes,3,rep,name=actions,proto3" json:"actions,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	EffectiveDerivedRoles []string                             `protobuf:"bytes,4,rep,name=effective_derived_roles,json=effectiveDerivedRoles,proto3" json:"effective_derived_roles,omitempty"`
	ValidationErrors      []*v1.ValidationError                `protobuf:"bytes,5,rep,name=validation_errors,json=validationErrors,proto3" json:"validation_errors,omitempty"`
	Outputs               []*OutputEntry                       `protobuf:"bytes,6,rep,name=outputs,proto3" json:"outputs,omitempty"`
	unknownFields         protoimpl.UnknownFields
	sizeCache             protoimpl.SizeCache
}

func (x *CheckOutput) Reset() {
	*x = CheckOutput{}
	mi := &file_cerbos_engine_v1_engine_proto_msgTypes[5]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *CheckOutput) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CheckOutput) ProtoMessage() {}

func (x *CheckOutput) ProtoReflect() protoreflect.Message {
	mi := &file_cerbos_engine_v1_engine_proto_msgTypes[5]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CheckOutput.ProtoReflect.Descriptor instead.
func (*CheckOutput) Descriptor() ([]byte, []int) {
	return file_cerbos_engine_v1_engine_proto_rawDescGZIP(), []int{5}
}

func (x *CheckOutput) GetRequestId() string {
	if x != nil {
		return x.RequestId
	}
	return ""
}

func (x *CheckOutput) GetResourceId() string {
	if x != nil {
		return x.ResourceId
	}
	return ""
}

func (x *CheckOutput) GetActions() map[string]*CheckOutput_ActionEffect {
	if x != nil {
		return x.Actions
	}
	return nil
}

func (x *CheckOutput) GetEffectiveDerivedRoles() []string {
	if x != nil {
		return x.EffectiveDerivedRoles
	}
	return nil
}

func (x *CheckOutput) GetValidationErrors() []*v1.ValidationError {
	if x != nil {
		return x.ValidationErrors
	}
	return nil
}

func (x *CheckOutput) GetOutputs() []*OutputEntry {
	if x != nil {
		return x.Outputs
	}
	return nil
}

type OutputEntry struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Src           string                 `protobuf:"bytes,1,opt,name=src,proto3" json:"src,omitempty"`
	Val           *structpb.Value        `protobuf:"bytes,2,opt,name=val,proto3" json:"val,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *OutputEntry) Reset() {
	*x = OutputEntry{}
	mi := &file_cerbos_engine_v1_engine_proto_msgTypes[6]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *OutputEntry) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*OutputEntry) ProtoMessage() {}

func (x *OutputEntry) ProtoReflect() protoreflect.Message {
	mi := &file_cerbos_engine_v1_engine_proto_msgTypes[6]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use OutputEntry.ProtoReflect.Descriptor instead.
func (*OutputEntry) Descriptor() ([]byte, []int) {
	return file_cerbos_engine_v1_engine_proto_rawDescGZIP(), []int{6}
}

func (x *OutputEntry) GetSrc() string {
	if x != nil {
		return x.Src
	}
	return ""
}

func (x *OutputEntry) GetVal() *structpb.Value {
	if x != nil {
		return x.Val
	}
	return nil
}

type Resource struct {
	state         protoimpl.MessageState     `protogen:"open.v1"`
	Kind          string                     `protobuf:"bytes,1,opt,name=kind,proto3" json:"kind,omitempty"`
	PolicyVersion string                     `protobuf:"bytes,2,opt,name=policy_version,json=policyVersion,proto3" json:"policy_version,omitempty"`
	Id            string                     `protobuf:"bytes,3,opt,name=id,proto3" json:"id,omitempty"`
	Attr          map[string]*structpb.Value `protobuf:"bytes,4,rep,name=attr,proto3" json:"attr,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	Scope         string                     `protobuf:"bytes,5,opt,name=scope,proto3" json:"scope,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Resource) Reset() {
	*x = Resource{}
	mi := &file_cerbos_engine_v1_engine_proto_msgTypes[7]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Resource) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Resource) ProtoMessage() {}

func (x *Resource) ProtoReflect() protoreflect.Message {
	mi := &file_cerbos_engine_v1_engine_proto_msgTypes[7]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Resource.ProtoReflect.Descriptor instead.
func (*Resource) Descriptor() ([]byte, []int) {
	return file_cerbos_engine_v1_engine_proto_rawDescGZIP(), []int{7}
}

func (x *Resource) GetKind() string {
	if x != nil {
		return x.Kind
	}
	return ""
}

func (x *Resource) GetPolicyVersion() string {
	if x != nil {
		return x.PolicyVersion
	}
	return ""
}

func (x *Resource) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *Resource) GetAttr() map[string]*structpb.Value {
	if x != nil {
		return x.Attr
	}
	return nil
}

func (x *Resource) GetScope() string {
	if x != nil {
		return x.Scope
	}
	return ""
}

type Principal struct {
	state         protoimpl.MessageState     `protogen:"open.v1"`
	Id            string                     `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	PolicyVersion string                     `protobuf:"bytes,2,opt,name=policy_version,json=policyVersion,proto3" json:"policy_version,omitempty"`
	Roles         []string                   `protobuf:"bytes,3,rep,name=roles,proto3" json:"roles,omitempty"`
	Attr          map[string]*structpb.Value `protobuf:"bytes,4,rep,name=attr,proto3" json:"attr,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	Scope         string                     `protobuf:"bytes,5,opt,name=scope,proto3" json:"scope,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Principal) Reset() {
	*x = Principal{}
	mi := &file_cerbos_engine_v1_engine_proto_msgTypes[8]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Principal) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Principal) ProtoMessage() {}

func (x *Principal) ProtoReflect() protoreflect.Message {
	mi := &file_cerbos_engine_v1_engine_proto_msgTypes[8]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Principal.ProtoReflect.Descriptor instead.
func (*Principal) Descriptor() ([]byte, []int) {
	return file_cerbos_engine_v1_engine_proto_rawDescGZIP(), []int{8}
}

func (x *Principal) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *Principal) GetPolicyVersion() string {
	if x != nil {
		return x.PolicyVersion
	}
	return ""
}

func (x *Principal) GetRoles() []string {
	if x != nil {
		return x.Roles
	}
	return nil
}

func (x *Principal) GetAttr() map[string]*structpb.Value {
	if x != nil {
		return x.Attr
	}
	return nil
}

func (x *Principal) GetScope() string {
	if x != nil {
		return x.Scope
	}
	return ""
}

type AuxData struct {
	state         protoimpl.MessageState     `protogen:"open.v1"`
	Jwt           map[string]*structpb.Value `protobuf:"bytes,1,rep,name=jwt,proto3" json:"jwt,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AuxData) Reset() {
	*x = AuxData{}
	mi := &file_cerbos_engine_v1_engine_proto_msgTypes[9]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *AuxData) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AuxData) ProtoMessage() {}

func (x *AuxData) ProtoReflect() protoreflect.Message {
	mi := &file_cerbos_engine_v1_engine_proto_msgTypes[9]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use AuxData.ProtoReflect.Descriptor instead.
func (*AuxData) Descriptor() ([]byte, []int) {
	return file_cerbos_engine_v1_engine_proto_rawDescGZIP(), []int{9}
}

func (x *AuxData) GetJwt() map[string]*structpb.Value {
	if x != nil {
		return x.Jwt
	}
	return nil
}

type Trace struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Components    []*Trace_Component     `protobuf:"bytes,1,rep,name=components,proto3" json:"components,omitempty"`
	Event         *Trace_Event           `protobuf:"bytes,2,opt,name=event,proto3" json:"event,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Trace) Reset() {
	*x = Trace{}
	mi := &file_cerbos_engine_v1_engine_proto_msgTypes[10]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Trace) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Trace) ProtoMessage() {}

func (x *Trace) ProtoReflect() protoreflect.Message {
	mi := &file_cerbos_engine_v1_engine_proto_msgTypes[10]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Trace.ProtoReflect.Descriptor instead.
func (*Trace) Descriptor() ([]byte, []int) {
	return file_cerbos_engine_v1_engine_proto_rawDescGZIP(), []int{10}
}

func (x *Trace) GetComponents() []*Trace_Component {
	if x != nil {
		return x.Components
	}
	return nil
}

func (x *Trace) GetEvent() *Trace_Event {
	if x != nil {
		return x.Event
	}
	return nil
}

// Data from the request, provided to expressions as the top-level `request` variable.
type Request struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Principal     *Request_Principal     `protobuf:"bytes,1,opt,name=principal,proto3" json:"principal,omitempty"`
	Resource      *Request_Resource      `protobuf:"bytes,2,opt,name=resource,proto3" json:"resource,omitempty"`
	AuxData       *AuxData               `protobuf:"bytes,3,opt,name=aux_data,json=auxData,proto3" json:"aux_data,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Request) Reset() {
	*x = Request{}
	mi := &file_cerbos_engine_v1_engine_proto_msgTypes[11]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Request) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Request) ProtoMessage() {}

func (x *Request) ProtoReflect() protoreflect.Message {
	mi := &file_cerbos_engine_v1_engine_proto_msgTypes[11]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Request.ProtoReflect.Descriptor instead.
func (*Request) Descriptor() ([]byte, []int) {
	return file_cerbos_engine_v1_engine_proto_rawDescGZIP(), []int{11}
}

func (x *Request) GetPrincipal() *Request_Principal {
	if x != nil {
		return x.Principal
	}
	return nil
}

func (x *Request) GetResource() *Request_Resource {
	if x != nil {
		return x.Resource
	}
	return nil
}

func (x *Request) GetAuxData() *AuxData {
	if x != nil {
		return x.AuxData
	}
	return nil
}

// Data from the runtime, provided to expressions as the top-level `runtime` variable.
type Runtime struct {
	state                 protoimpl.MessageState `protogen:"open.v1"`
	EffectiveDerivedRoles []string               `protobuf:"bytes,1,rep,name=effective_derived_roles,json=effectiveDerivedRoles,proto3" json:"effective_derived_roles,omitempty"`
	unknownFields         protoimpl.UnknownFields
	sizeCache             protoimpl.SizeCache
}

func (x *Runtime) Reset() {
	*x = Runtime{}
	mi := &file_cerbos_engine_v1_engine_proto_msgTypes[12]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Runtime) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Runtime) ProtoMessage() {}

func (x *Runtime) ProtoReflect() protoreflect.Message {
	mi := &file_cerbos_engine_v1_engine_proto_msgTypes[12]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Runtime.ProtoReflect.Descriptor instead.
func (*Runtime) Descriptor() ([]byte, []int) {
	return file_cerbos_engine_v1_engine_proto_rawDescGZIP(), []int{12}
}

func (x *Runtime) GetEffectiveDerivedRoles() []string {
	if x != nil {
		return x.EffectiveDerivedRoles
	}
	return nil
}

type PlanResourcesInput_Resource struct {
	state         protoimpl.MessageState     `protogen:"open.v1"`
	Kind          string                     `protobuf:"bytes,1,opt,name=kind,proto3" json:"kind,omitempty"`
	Attr          map[string]*structpb.Value `protobuf:"bytes,2,rep,name=attr,proto3" json:"attr,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	PolicyVersion string                     `protobuf:"bytes,3,opt,name=policy_version,json=policyVersion,proto3" json:"policy_version,omitempty"`
	Scope         string                     `protobuf:"bytes,4,opt,name=scope,proto3" json:"scope,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *PlanResourcesInput_Resource) Reset() {
	*x = PlanResourcesInput_Resource{}
	mi := &file_cerbos_engine_v1_engine_proto_msgTypes[13]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *PlanResourcesInput_Resource) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PlanResourcesInput_Resource) ProtoMessage() {}

func (x *PlanResourcesInput_Resource) ProtoReflect() protoreflect.Message {
	mi := &file_cerbos_engine_v1_engine_proto_msgTypes[13]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use PlanResourcesInput_Resource.ProtoReflect.Descriptor instead.
func (*PlanResourcesInput_Resource) Descriptor() ([]byte, []int) {
	return file_cerbos_engine_v1_engine_proto_rawDescGZIP(), []int{0, 0}
}

func (x *PlanResourcesInput_Resource) GetKind() string {
	if x != nil {
		return x.Kind
	}
	return ""
}

func (x *PlanResourcesInput_Resource) GetAttr() map[string]*structpb.Value {
	if x != nil {
		return x.Attr
	}
	return nil
}

func (x *PlanResourcesInput_Resource) GetPolicyVersion() string {
	if x != nil {
		return x.PolicyVersion
	}
	return ""
}

func (x *PlanResourcesInput_Resource) GetScope() string {
	if x != nil {
		return x.Scope
	}
	return ""
}

type PlanResourcesAst_Node struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Types that are valid to be assigned to Node:
	//
	//	*PlanResourcesAst_Node_LogicalOperation
	//	*PlanResourcesAst_Node_Expression
	Node          isPlanResourcesAst_Node_Node `protobuf_oneof:"node"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *PlanResourcesAst_Node) Reset() {
	*x = PlanResourcesAst_Node{}
	mi := &file_cerbos_engine_v1_engine_proto_msgTypes[15]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *PlanResourcesAst_Node) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PlanResourcesAst_Node) ProtoMessage() {}

func (x *PlanResourcesAst_Node) ProtoReflect() protoreflect.Message {
	mi := &file_cerbos_engine_v1_engine_proto_msgTypes[15]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use PlanResourcesAst_Node.ProtoReflect.Descriptor instead.
func (*PlanResourcesAst_Node) Descriptor() ([]byte, []int) {
	return file_cerbos_engine_v1_engine_proto_rawDescGZIP(), []int{1, 0}
}

func (x *PlanResourcesAst_Node) GetNode() isPlanResourcesAst_Node_Node {
	if x != nil {
		return x.Node
	}
	return nil
}

func (x *PlanResourcesAst_Node) GetLogicalOperation() *PlanResourcesAst_LogicalOperation {
	if x != nil {
		if x, ok := x.Node.(*PlanResourcesAst_Node_LogicalOperation); ok {
			return x.LogicalOperation
		}
	}
	return nil
}

func (x *PlanResourcesAst_Node) GetExpression() *v1alpha1.CheckedExpr {
	if x != nil {
		if x, ok := x.Node.(*PlanResourcesAst_Node_Expression); ok {
			return x.Expression
		}
	}
	return nil
}

type isPlanResourcesAst_Node_Node interface {
	isPlanResourcesAst_Node_Node()
}

type PlanResourcesAst_Node_LogicalOperation struct {
	LogicalOperation *PlanResourcesAst_LogicalOperation `protobuf:"bytes,1,opt,name=logical_operation,json=logicalOperation,proto3,oneof"`
}

type PlanResourcesAst_Node_Expression struct {
	Expression *v1alpha1.CheckedExpr `protobuf:"bytes,2,opt,name=expression,proto3,oneof"`
}

func (*PlanResourcesAst_Node_LogicalOperation) isPlanResourcesAst_Node_Node() {}

func (*PlanResourcesAst_Node_Expression) isPlanResourcesAst_Node_Node() {}

type PlanResourcesAst_LogicalOperation struct {
	state         protoimpl.MessageState                     `protogen:"open.v1"`
	Operator      PlanResourcesAst_LogicalOperation_Operator `protobuf:"varint,1,opt,name=operator,proto3,enum=cerbos.engine.v1.PlanResourcesAst_LogicalOperation_Operator" json:"operator,omitempty"`
	Nodes         []*PlanResourcesAst_Node                   `protobuf:"bytes,2,rep,name=nodes,proto3" json:"nodes,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *PlanResourcesAst_LogicalOperation) Reset() {
	*x = PlanResourcesAst_LogicalOperation{}
	mi := &file_cerbos_engine_v1_engine_proto_msgTypes[16]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *PlanResourcesAst_LogicalOperation) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PlanResourcesAst_LogicalOperation) ProtoMessage() {}

func (x *PlanResourcesAst_LogicalOperation) ProtoReflect() protoreflect.Message {
	mi := &file_cerbos_engine_v1_engine_proto_msgTypes[16]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use PlanResourcesAst_LogicalOperation.ProtoReflect.Descriptor instead.
func (*PlanResourcesAst_LogicalOperation) Descriptor() ([]byte, []int) {
	return file_cerbos_engine_v1_engine_proto_rawDescGZIP(), []int{1, 1}
}

func (x *PlanResourcesAst_LogicalOperation) GetOperator() PlanResourcesAst_LogicalOperation_Operator {
	if x != nil {
		return x.Operator
	}
	return PlanResourcesAst_LogicalOperation_OPERATOR_UNSPECIFIED
}

func (x *PlanResourcesAst_LogicalOperation) GetNodes() []*PlanResourcesAst_Node {
	if x != nil {
		return x.Nodes
	}
	return nil
}

type PlanResourcesFilter_Expression struct {
	state         protoimpl.MessageState                    `protogen:"open.v1"`
	Operator      string                                    `protobuf:"bytes,1,opt,name=operator,proto3" json:"operator,omitempty"`
	Operands      []*PlanResourcesFilter_Expression_Operand `protobuf:"bytes,2,rep,name=operands,proto3" json:"operands,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *PlanResourcesFilter_Expression) Reset() {
	*x = PlanResourcesFilter_Expression{}
	mi := &file_cerbos_engine_v1_engine_proto_msgTypes[17]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *PlanResourcesFilter_Expression) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PlanResourcesFilter_Expression) ProtoMessage() {}

func (x *PlanResourcesFilter_Expression) ProtoReflect() protoreflect.Message {
	mi := &file_cerbos_engine_v1_engine_proto_msgTypes[17]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use PlanResourcesFilter_Expression.ProtoReflect.Descriptor instead.
func (*PlanResourcesFilter_Expression) Descriptor() ([]byte, []int) {
	return file_cerbos_engine_v1_engine_proto_rawDescGZIP(), []int{2, 0}
}

func (x *PlanResourcesFilter_Expression) GetOperator() string {
	if x != nil {
		return x.Operator
	}
	return ""
}

func (x *PlanResourcesFilter_Expression) GetOperands() []*PlanResourcesFilter_Expression_Operand {
	if x != nil {
		return x.Operands
	}
	return nil
}

type PlanResourcesFilter_Expression_Operand struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Types that are valid to be assigned to Node:
	//
	//	*PlanResourcesFilter_Expression_Operand_Value
	//	*PlanResourcesFilter_Expression_Operand_Expression
	//	*PlanResourcesFilter_Expression_Operand_Variable
	Node          isPlanResourcesFilter_Expression_Operand_Node `protobuf_oneof:"node"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *PlanResourcesFilter_Expression_Operand) Reset() {
	*x = PlanResourcesFilter_Expression_Operand{}
	mi := &file_cerbos_engine_v1_engine_proto_msgTypes[18]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *PlanResourcesFilter_Expression_Operand) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PlanResourcesFilter_Expression_Operand) ProtoMessage() {}

func (x *PlanResourcesFilter_Expression_Operand) ProtoReflect() protoreflect.Message {
	mi := &file_cerbos_engine_v1_engine_proto_msgTypes[18]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use PlanResourcesFilter_Expression_Operand.ProtoReflect.Descriptor instead.
func (*PlanResourcesFilter_Expression_Operand) Descriptor() ([]byte, []int) {
	return file_cerbos_engine_v1_engine_proto_rawDescGZIP(), []int{2, 0, 0}
}

func (x *PlanResourcesFilter_Expression_Operand) GetNode() isPlanResourcesFilter_Expression_Operand_Node {
	if x != nil {
		return x.Node
	}
	return nil
}

func (x *PlanResourcesFilter_Expression_Operand) GetValue() *structpb.Value {
	if x != nil {
		if x, ok := x.Node.(*PlanResourcesFilter_Expression_Operand_Value); ok {
			return x.Value
		}
	}
	return nil
}

func (x *PlanResourcesFilter_Expression_Operand) GetExpression() *PlanResourcesFilter_Expression {
	if x != nil {
		if x, ok := x.Node.(*PlanResourcesFilter_Expression_Operand_Expression); ok {
			return x.Expression
		}
	}
	return nil
}

func (x *PlanResourcesFilter_Expression_Operand) GetVariable() string {
	if x != nil {
		if x, ok := x.Node.(*PlanResourcesFilter_Expression_Operand_Variable); ok {
			return x.Variable
		}
	}
	return ""
}

type isPlanResourcesFilter_Expression_Operand_Node interface {
	isPlanResourcesFilter_Expression_Operand_Node()
}

type PlanResourcesFilter_Expression_Operand_Value struct {
	Value *structpb.Value `protobuf:"bytes,1,opt,name=value,proto3,oneof"`
}

type PlanResourcesFilter_Expression_Operand_Expression struct {
	Expression *PlanResourcesFilter_Expression `protobuf:"bytes,2,opt,name=expression,proto3,oneof"`
}

type PlanResourcesFilter_Expression_Operand_Variable struct {
	Variable string `protobuf:"bytes,3,opt,name=variable,proto3,oneof"`
}

func (*PlanResourcesFilter_Expression_Operand_Value) isPlanResourcesFilter_Expression_Operand_Node() {
}

func (*PlanResourcesFilter_Expression_Operand_Expression) isPlanResourcesFilter_Expression_Operand_Node() {
}

func (*PlanResourcesFilter_Expression_Operand_Variable) isPlanResourcesFilter_Expression_Operand_Node() {
}

type CheckOutput_ActionEffect struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Effect        v11.Effect             `protobuf:"varint,1,opt,name=effect,proto3,enum=cerbos.effect.v1.Effect" json:"effect,omitempty"`
	Policy        string                 `protobuf:"bytes,2,opt,name=policy,proto3" json:"policy,omitempty"`
	Scope         string                 `protobuf:"bytes,3,opt,name=scope,proto3" json:"scope,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CheckOutput_ActionEffect) Reset() {
	*x = CheckOutput_ActionEffect{}
	mi := &file_cerbos_engine_v1_engine_proto_msgTypes[20]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *CheckOutput_ActionEffect) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CheckOutput_ActionEffect) ProtoMessage() {}

func (x *CheckOutput_ActionEffect) ProtoReflect() protoreflect.Message {
	mi := &file_cerbos_engine_v1_engine_proto_msgTypes[20]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CheckOutput_ActionEffect.ProtoReflect.Descriptor instead.
func (*CheckOutput_ActionEffect) Descriptor() ([]byte, []int) {
	return file_cerbos_engine_v1_engine_proto_rawDescGZIP(), []int{5, 0}
}

func (x *CheckOutput_ActionEffect) GetEffect() v11.Effect {
	if x != nil {
		return x.Effect
	}
	return v11.Effect(0)
}

func (x *CheckOutput_ActionEffect) GetPolicy() string {
	if x != nil {
		return x.Policy
	}
	return ""
}

func (x *CheckOutput_ActionEffect) GetScope() string {
	if x != nil {
		return x.Scope
	}
	return ""
}

type Trace_Component struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	Kind  Trace_Component_Kind   `protobuf:"varint,1,opt,name=kind,proto3,enum=cerbos.engine.v1.Trace_Component_Kind" json:"kind,omitempty"`
	// Types that are valid to be assigned to Details:
	//
	//	*Trace_Component_Action
	//	*Trace_Component_DerivedRole
	//	*Trace_Component_Expr
	//	*Trace_Component_Index
	//	*Trace_Component_Policy
	//	*Trace_Component_Resource
	//	*Trace_Component_Rule
	//	*Trace_Component_Scope
	//	*Trace_Component_Variable_
	//	*Trace_Component_Output
	//	*Trace_Component_RolePolicyScope
	//	*Trace_Component_Role
	Details       isTrace_Component_Details `protobuf_oneof:"details"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Trace_Component) Reset() {
	*x = Trace_Component{}
	mi := &file_cerbos_engine_v1_engine_proto_msgTypes[25]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Trace_Component) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Trace_Component) ProtoMessage() {}

func (x *Trace_Component) ProtoReflect() protoreflect.Message {
	mi := &file_cerbos_engine_v1_engine_proto_msgTypes[25]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Trace_Component.ProtoReflect.Descriptor instead.
func (*Trace_Component) Descriptor() ([]byte, []int) {
	return file_cerbos_engine_v1_engine_proto_rawDescGZIP(), []int{10, 0}
}

func (x *Trace_Component) GetKind() Trace_Component_Kind {
	if x != nil {
		return x.Kind
	}
	return Trace_Component_KIND_UNSPECIFIED
}

func (x *Trace_Component) GetDetails() isTrace_Component_Details {
	if x != nil {
		return x.Details
	}
	return nil
}

func (x *Trace_Component) GetAction() string {
	if x != nil {
		if x, ok := x.Details.(*Trace_Component_Action); ok {
			return x.Action
		}
	}
	return ""
}

func (x *Trace_Component) GetDerivedRole() string {
	if x != nil {
		if x, ok := x.Details.(*Trace_Component_DerivedRole); ok {
			return x.DerivedRole
		}
	}
	return ""
}

func (x *Trace_Component) GetExpr() string {
	if x != nil {
		if x, ok := x.Details.(*Trace_Component_Expr); ok {
			return x.Expr
		}
	}
	return ""
}

func (x *Trace_Component) GetIndex() uint32 {
	if x != nil {
		if x, ok := x.Details.(*Trace_Component_Index); ok {
			return x.Index
		}
	}
	return 0
}

func (x *Trace_Component) GetPolicy() string {
	if x != nil {
		if x, ok := x.Details.(*Trace_Component_Policy); ok {
			return x.Policy
		}
	}
	return ""
}

func (x *Trace_Component) GetResource() string {
	if x != nil {
		if x, ok := x.Details.(*Trace_Component_Resource); ok {
			return x.Resource
		}
	}
	return ""
}

func (x *Trace_Component) GetRule() string {
	if x != nil {
		if x, ok := x.Details.(*Trace_Component_Rule); ok {
			return x.Rule
		}
	}
	return ""
}

func (x *Trace_Component) GetScope() string {
	if x != nil {
		if x, ok := x.Details.(*Trace_Component_Scope); ok {
			return x.Scope
		}
	}
	return ""
}

func (x *Trace_Component) GetVariable() *Trace_Component_Variable {
	if x != nil {
		if x, ok := x.Details.(*Trace_Component_Variable_); ok {
			return x.Variable
		}
	}
	return nil
}

func (x *Trace_Component) GetOutput() string {
	if x != nil {
		if x, ok := x.Details.(*Trace_Component_Output); ok {
			return x.Output
		}
	}
	return ""
}

func (x *Trace_Component) GetRolePolicyScope() string {
	if x != nil {
		if x, ok := x.Details.(*Trace_Component_RolePolicyScope); ok {
			return x.RolePolicyScope
		}
	}
	return ""
}

func (x *Trace_Component) GetRole() string {
	if x != nil {
		if x, ok := x.Details.(*Trace_Component_Role); ok {
			return x.Role
		}
	}
	return ""
}

type isTrace_Component_Details interface {
	isTrace_Component_Details()
}

type Trace_Component_Action struct {
	Action string `protobuf:"bytes,2,opt,name=action,proto3,oneof"`
}

type Trace_Component_DerivedRole struct {
	DerivedRole string `protobuf:"bytes,3,opt,name=derived_role,json=derivedRole,proto3,oneof"`
}

type Trace_Component_Expr struct {
	Expr string `protobuf:"bytes,4,opt,name=expr,proto3,oneof"`
}

type Trace_Component_Index struct {
	Index uint32 `protobuf:"varint,5,opt,name=index,proto3,oneof"`
}

type Trace_Component_Policy struct {
	Policy string `protobuf:"bytes,6,opt,name=policy,proto3,oneof"`
}

type Trace_Component_Resource struct {
	Resource string `protobuf:"bytes,7,opt,name=resource,proto3,oneof"`
}

type Trace_Component_Rule struct {
	Rule string `protobuf:"bytes,8,opt,name=rule,proto3,oneof"`
}

type Trace_Component_Scope struct {
	Scope string `protobuf:"bytes,9,opt,name=scope,proto3,oneof"`
}

type Trace_Component_Variable_ struct {
	Variable *Trace_Component_Variable `protobuf:"bytes,10,opt,name=variable,proto3,oneof"`
}

type Trace_Component_Output struct {
	Output string `protobuf:"bytes,11,opt,name=output,proto3,oneof"`
}

type Trace_Component_RolePolicyScope struct {
	RolePolicyScope string `protobuf:"bytes,12,opt,name=role_policy_scope,json=rolePolicyScope,proto3,oneof"`
}

type Trace_Component_Role struct {
	Role string `protobuf:"bytes,13,opt,name=role,proto3,oneof"`
}

func (*Trace_Component_Action) isTrace_Component_Details() {}

func (*Trace_Component_DerivedRole) isTrace_Component_Details() {}

func (*Trace_Component_Expr) isTrace_Component_Details() {}

func (*Trace_Component_Index) isTrace_Component_Details() {}

func (*Trace_Component_Policy) isTrace_Component_Details() {}

func (*Trace_Component_Resource) isTrace_Component_Details() {}

func (*Trace_Component_Rule) isTrace_Component_Details() {}

func (*Trace_Component_Scope) isTrace_Component_Details() {}

func (*Trace_Component_Variable_) isTrace_Component_Details() {}

func (*Trace_Component_Output) isTrace_Component_Details() {}

func (*Trace_Component_RolePolicyScope) isTrace_Component_Details() {}

func (*Trace_Component_Role) isTrace_Component_Details() {}

type Trace_Event struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Status        Trace_Event_Status     `protobuf:"varint,1,opt,name=status,proto3,enum=cerbos.engine.v1.Trace_Event_Status" json:"status,omitempty"`
	Effect        v11.Effect             `protobuf:"varint,2,opt,name=effect,proto3,enum=cerbos.effect.v1.Effect" json:"effect,omitempty"`
	Error         string                 `protobuf:"bytes,3,opt,name=error,proto3" json:"error,omitempty"`
	Message       string                 `protobuf:"bytes,4,opt,name=message,proto3" json:"message,omitempty"`
	Result        *structpb.Value        `protobuf:"bytes,5,opt,name=result,proto3" json:"result,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Trace_Event) Reset() {
	*x = Trace_Event{}
	mi := &file_cerbos_engine_v1_engine_proto_msgTypes[26]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Trace_Event) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Trace_Event) ProtoMessage() {}

func (x *Trace_Event) ProtoReflect() protoreflect.Message {
	mi := &file_cerbos_engine_v1_engine_proto_msgTypes[26]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Trace_Event.ProtoReflect.Descriptor instead.
func (*Trace_Event) Descriptor() ([]byte, []int) {
	return file_cerbos_engine_v1_engine_proto_rawDescGZIP(), []int{10, 1}
}

func (x *Trace_Event) GetStatus() Trace_Event_Status {
	if x != nil {
		return x.Status
	}
	return Trace_Event_STATUS_UNSPECIFIED
}

func (x *Trace_Event) GetEffect() v11.Effect {
	if x != nil {
		return x.Effect
	}
	return v11.Effect(0)
}

func (x *Trace_Event) GetError() string {
	if x != nil {
		return x.Error
	}
	return ""
}

func (x *Trace_Event) GetMessage() string {
	if x != nil {
		return x.Message
	}
	return ""
}

func (x *Trace_Event) GetResult() *structpb.Value {
	if x != nil {
		return x.Result
	}
	return nil
}

type Trace_Component_Variable struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Name          string                 `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	Expr          string                 `protobuf:"bytes,2,opt,name=expr,proto3" json:"expr,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Trace_Component_Variable) Reset() {
	*x = Trace_Component_Variable{}
	mi := &file_cerbos_engine_v1_engine_proto_msgTypes[27]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Trace_Component_Variable) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Trace_Component_Variable) ProtoMessage() {}

func (x *Trace_Component_Variable) ProtoReflect() protoreflect.Message {
	mi := &file_cerbos_engine_v1_engine_proto_msgTypes[27]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Trace_Component_Variable.ProtoReflect.Descriptor instead.
func (*Trace_Component_Variable) Descriptor() ([]byte, []int) {
	return file_cerbos_engine_v1_engine_proto_rawDescGZIP(), []int{10, 0, 0}
}

func (x *Trace_Component_Variable) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *Trace_Component_Variable) GetExpr() string {
	if x != nil {
		return x.Expr
	}
	return ""
}

type Request_Principal struct {
	state         protoimpl.MessageState     `protogen:"open.v1"`
	Id            string                     `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Roles         []string                   `protobuf:"bytes,2,rep,name=roles,proto3" json:"roles,omitempty"`
	Attr          map[string]*structpb.Value `protobuf:"bytes,3,rep,name=attr,proto3" json:"attr,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	PolicyVersion string                     `protobuf:"bytes,4,opt,name=policy_version,json=policyVersion,proto3" json:"policy_version,omitempty"`
	Scope         string                     `protobuf:"bytes,5,opt,name=scope,proto3" json:"scope,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Request_Principal) Reset() {
	*x = Request_Principal{}
	mi := &file_cerbos_engine_v1_engine_proto_msgTypes[28]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Request_Principal) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Request_Principal) ProtoMessage() {}

func (x *Request_Principal) ProtoReflect() protoreflect.Message {
	mi := &file_cerbos_engine_v1_engine_proto_msgTypes[28]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Request_Principal.ProtoReflect.Descriptor instead.
func (*Request_Principal) Descriptor() ([]byte, []int) {
	return file_cerbos_engine_v1_engine_proto_rawDescGZIP(), []int{11, 0}
}

func (x *Request_Principal) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *Request_Principal) GetRoles() []string {
	if x != nil {
		return x.Roles
	}
	return nil
}

func (x *Request_Principal) GetAttr() map[string]*structpb.Value {
	if x != nil {
		return x.Attr
	}
	return nil
}

func (x *Request_Principal) GetPolicyVersion() string {
	if x != nil {
		return x.PolicyVersion
	}
	return ""
}

func (x *Request_Principal) GetScope() string {
	if x != nil {
		return x.Scope
	}
	return ""
}

type Request_Resource struct {
	state         protoimpl.MessageState     `protogen:"open.v1"`
	Kind          string                     `protobuf:"bytes,1,opt,name=kind,proto3" json:"kind,omitempty"`
	Id            string                     `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"`
	Attr          map[string]*structpb.Value `protobuf:"bytes,3,rep,name=attr,proto3" json:"attr,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	PolicyVersion string                     `protobuf:"bytes,4,opt,name=policy_version,json=policyVersion,proto3" json:"policy_version,omitempty"`
	Scope         string                     `protobuf:"bytes,5,opt,name=scope,proto3" json:"scope,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Request_Resource) Reset() {
	*x = Request_Resource{}
	mi := &file_cerbos_engine_v1_engine_proto_msgTypes[29]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Request_Resource) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Request_Resource) ProtoMessage() {}

func (x *Request_Resource) ProtoReflect() protoreflect.Message {
	mi := &file_cerbos_engine_v1_engine_proto_msgTypes[29]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Request_Resource.ProtoReflect.Descriptor instead.
func (*Request_Resource) Descriptor() ([]byte, []int) {
	return file_cerbos_engine_v1_engine_proto_rawDescGZIP(), []int{11, 1}
}

func (x *Request_Resource) GetKind() string {
	if x != nil {
		return x.Kind
	}
	return ""
}

func (x *Request_Resource) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *Request_Resource) GetAttr() map[string]*structpb.Value {
	if x != nil {
		return x.Attr
	}
	return nil
}

func (x *Request_Resource) GetPolicyVersion() string {
	if x != nil {
		return x.PolicyVersion
	}
	return ""
}

func (x *Request_Resource) GetScope() string {
	if x != nil {
		return x.Scope
	}
	return ""
}

var File_cerbos_engine_v1_engine_proto protoreflect.FileDescriptor

const file_cerbos_engine_v1_engine_proto_rawDesc = "" +
	"\n" +
	"\x1dcerbos/engine/v1/engine.proto\x12\x10cerbos.engine.v1\x1a\x1bbuf/validate/validate.proto\x1a\x1dcerbos/effect/v1/effect.proto\x1a\x1dcerbos/schema/v1/schema.proto\x1a&google/api/expr/v1alpha1/checked.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a.protoc-gen-openapiv2/options/annotations.proto\"\xe2\b\n" +
	"\x12PlanResourcesInput\x12\x1d\n" +
	"\n" +
	"request_id\x18\x01 \x01(\tR\trequestId\x12\x1a\n" +
	"\x06action\x18\x02 \x01(\tB\x02\x18\x01R\x06action\x12\x18\n" +
	"\aactions\x18\a \x03(\tR\aactions\x129\n" +
	"\tprincipal\x18\x03 \x01(\v2\x1b.cerbos.engine.v1.PrincipalR\tprincipal\x12I\n" +
	"\bresource\x18\x04 \x01(\v2-.cerbos.engine.v1.PlanResourcesInput.ResourceR\bresource\x124\n" +
	"\baux_data\x18\x05 \x01(\v2\x19.cerbos.engine.v1.AuxDataR\aauxData\x12!\n" +
	"\finclude_meta\x18\x06 \x01(\bR\vincludeMeta\x1a\x97\x06\n" +
	"\bResource\x12D\n" +
	"\x04kind\x18\x01 \x01(\tB0\x92A 2\x0eResource kind.J\x0e\"album:object\"\xe0A\x02\xbaH\a\xc8\x01\x01r\x02\x10\x01R\x04kind\x12\xb0\x01\n" +
	"\x04attr\x18\x02 \x03(\v27.cerbos.engine.v1.PlanResourcesInput.Resource.AttrEntryBc\x92A`2^Key-value pairs of contextual data about the resource that are known at a time of the request.R\x04attr\x12\xd0\x01\n" +
	"\x0epolicy_version\x18\x03 \x01(\tB\xa8\x01\x92A\x93\x012|The policy version to use to evaluate this request. If not specified, will default to the server-configured default version.J\t\"default\"\x8a\x01\a^[\\w]*$\xe0A\x01\xbaH\vr\t2\a^[\\w]*$R\rpolicyVersion\x12\xed\x01\n" +
	"\x05scope\x18\x04 \x01(\tB\xd6\x01\x92A\xa5\x012}A dot-separated scope that describes the hierarchy this resource belongs to. This is used for determining policy inheritance.\x8a\x01#^([0-9a-zA-Z][\\w\\-]*(\\.[\\w\\-]*)*)*$\xe0A\x01\xbaH'r%2#^([0-9a-zA-Z][\\w\\-]*(\\.[\\w\\-]*)*)*$R\x05scope\x1aO\n" +
	"\tAttrEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12,\n" +
	"\x05value\x18\x02 \x01(\v2\x16.google.protobuf.ValueR\x05value:\x028\x01\"\xa1\x04\n" +
	"\x10PlanResourcesAst\x12F\n" +
	"\n" +
	"filter_ast\x18\x01 \x01(\v2'.cerbos.engine.v1.PlanResourcesAst.NodeR\tfilterAst\x1a\xbb\x01\n" +
	"\x04Node\x12b\n" +
	"\x11logical_operation\x18\x01 \x01(\v23.cerbos.engine.v1.PlanResourcesAst.LogicalOperationH\x00R\x10logicalOperation\x12G\n" +
	"\n" +
	"expression\x18\x02 \x01(\v2%.google.api.expr.v1alpha1.CheckedExprH\x00R\n" +
	"expressionB\x06\n" +
	"\x04node\x1a\x86\x02\n" +
	"\x10LogicalOperation\x12X\n" +
	"\boperator\x18\x01 \x01(\x0e2<.cerbos.engine.v1.PlanResourcesAst.LogicalOperation.OperatorR\boperator\x12=\n" +
	"\x05nodes\x18\x02 \x03(\v2'.cerbos.engine.v1.PlanResourcesAst.NodeR\x05nodes\"Y\n" +
	"\bOperator\x12\x18\n" +
	"\x14OPERATOR_UNSPECIFIED\x10\x00\x12\x10\n" +
	"\fOPERATOR_AND\x10\x01\x12\x0f\n" +
	"\vOPERATOR_OR\x10\x02\x12\x10\n" +
	"\fOPERATOR_NOT\x10\x03\"\xa4\x06\n" +
	"\x13PlanResourcesFilter\x12\xad\x01\n" +
	"\x04kind\x18\x01 \x01(\x0e2*.cerbos.engine.v1.PlanResourcesFilter.KindBm\x92Aj2hFilter kind. Defines whether the given action is always allowed, always denied or allowed conditionally.R\x04kind\x12\x9a\x01\n" +
	"\tcondition\x18\x02 \x01(\v28.cerbos.engine.v1.PlanResourcesFilter.Expression.OperandBB\x92A?2=Filter condition. Only populated if kind is KIND_CONDITIONAL.R\tcondition\x1a\xda\x02\n" +
	"\n" +
	"Expression\x12)\n" +
	"\boperator\x18\x01 \x01(\tB\r\x92A\n" +
	"2\bOperatorR\boperator\x12T\n" +
	"\boperands\x18\x02 \x03(\v28.cerbos.engine.v1.PlanResourcesFilter.Expression.OperandR\boperands\x1a\xb3\x01\n" +
	"\aOperand\x12.\n" +
	"\x05value\x18\x01 \x01(\v2\x16.google.protobuf.ValueH\x00R\x05value\x12R\n" +
	"\n" +
	"expression\x18\x02 \x01(\v20.cerbos.engine.v1.PlanResourcesFilter.ExpressionH\x00R\n" +
	"expression\x12\x1c\n" +
	"\bvariable\x18\x03 \x01(\tH\x00R\bvariableB\x06\n" +
	"\x04node:\x15\x92A\x12\n" +
	"\x102\x0eCEL expression\"c\n" +
	"\x04Kind\x12\x14\n" +
	"\x10KIND_UNSPECIFIED\x10\x00\x12\x17\n" +
	"\x13KIND_ALWAYS_ALLOWED\x10\x01\x12\x16\n" +
	"\x12KIND_ALWAYS_DENIED\x10\x02\x12\x14\n" +
	"\x10KIND_CONDITIONAL\x10\x03\"\x90\x04\n" +
	"\x13PlanResourcesOutput\x12\x1d\n" +
	"\n" +
	"request_id\x18\x01 \x01(\tR\trequestId\x12\x1a\n" +
	"\x06action\x18\x02 \x01(\tB\x02\x18\x01R\x06action\x12\x12\n" +
	"\x04kind\x18\x03 \x01(\tR\x04kind\x12%\n" +
	"\x0epolicy_version\x18\x04 \x01(\tR\rpolicyVersion\x12\x14\n" +
	"\x05scope\x18\x05 \x01(\tR\x05scope\x12=\n" +
	"\x06filter\x18\x06 \x01(\v2%.cerbos.engine.v1.PlanResourcesFilterR\x06filter\x12!\n" +
	"\ffilter_debug\x18\a \x01(\tR\vfilterDebug\x12N\n" +
	"\x11validation_errors\x18\b \x03(\v2!.cerbos.schema.v1.ValidationErrorR\x10validationErrors\x12\x18\n" +
	"\aactions\x18\t \x03(\tR\aactions\x12_\n" +
	"\x0ematched_scopes\x18\n" +
	" \x03(\v28.cerbos.engine.v1.PlanResourcesOutput.MatchedScopesEntryR\rmatchedScopes\x1a@\n" +
	"\x12MatchedScopesEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\x97\x02\n" +
	"\n" +
	"CheckInput\x12\x1d\n" +
	"\n" +
	"request_id\x18\x01 \x01(\tR\trequestId\x12A\n" +
	"\bresource\x18\x02 \x01(\v2\x1a.cerbos.engine.v1.ResourceB\t\xe0A\x02\xbaH\x03\xc8\x01\x01R\bresource\x12D\n" +
	"\tprincipal\x18\x03 \x01(\v2\x1b.cerbos.engine.v1.PrincipalB\t\xe0A\x02\xbaH\x03\xc8\x01\x01R\tprincipal\x12+\n" +
	"\aactions\x18\x04 \x03(\tB\x11\xe0A\x02\xbaH\v\x92\x01\b\x18\x01\"\x04r\x02\x10\x01R\aactions\x124\n" +
	"\baux_data\x18\x05 \x01(\v2\x19.cerbos.engine.v1.AuxDataR\aauxData\"\xac\x04\n" +
	"\vCheckOutput\x12\x1d\n" +
	"\n" +
	"request_id\x18\x01 \x01(\tR\trequestId\x12\x1f\n" +
	"\vresource_id\x18\x02 \x01(\tR\n" +
	"resourceId\x12D\n" +
	"\aactions\x18\x03 \x03(\v2*.cerbos.engine.v1.CheckOutput.ActionsEntryR\aactions\x126\n" +
	"\x17effective_derived_roles\x18\x04 \x03(\tR\x15effectiveDerivedRoles\x12N\n" +
	"\x11validation_errors\x18\x05 \x03(\v2!.cerbos.schema.v1.ValidationErrorR\x10validationErrors\x127\n" +
	"\aoutputs\x18\x06 \x03(\v2\x1d.cerbos.engine.v1.OutputEntryR\aoutputs\x1an\n" +
	"\fActionEffect\x120\n" +
	"\x06effect\x18\x01 \x01(\x0e2\x18.cerbos.effect.v1.EffectR\x06effect\x12\x16\n" +
	"\x06policy\x18\x02 \x01(\tR\x06policy\x12\x14\n" +
	"\x05scope\x18\x03 \x01(\tR\x05scope\x1af\n" +
	"\fActionsEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12@\n" +
	"\x05value\x18\x02 \x01(\v2*.cerbos.engine.v1.CheckOutput.ActionEffectR\x05value:\x028\x01\"\xeb\x01\n" +
	"\vOutputEntry\x12e\n" +
	"\x03src\x18\x01 \x01(\tBS\x92AP2)Rule that matched to produce this output.J#\"resource.expense.v1/acme#rule-001\"R\x03src\x12u\n" +
	"\x03val\x18\x02 \x01(\v2\x16.google.protobuf.ValueBK\x92AH27Dynamic output, determined by user defined rule output.J\r\"some_string\"R\x03val\"\xa4\a\n" +
	"\bResource\x12^\n" +
	"\x04kind\x18\x01 \x01(\tBJ\x92A:2)Name of the resource kind being accessed.J\r\"album:photo\"\xe0A\x02\xbaH\a\xc8\x01\x01r\x02\x10\x01R\x04kind\x12\xd0\x01\n" +
	"\x0epolicy_version\x18\x02 \x01(\tB\xa8\x01\x92A\x93\x012|The policy version to use to evaluate this request. If not specified, will default to the server-configured default version.J\t\"default\"\x8a\x01\a^[\\w]*$\xe0A\x01\xbaH\vr\t2\a^[\\w]*$R\rpolicyVersion\x12F\n" +
	"\x02id\x18\x03 \x01(\tB6\x92A&2\x1bID of the resource instanceJ\a\"XX125\"\xe0A\x02\xbaH\a\xc8\x01\x01r\x02\x10\x01R\x02id\x12\xce\x01\n" +
	"\x04attr\x18\x04 \x03(\v2$.cerbos.engine.v1.Resource.AttrEntryB\x93\x01\x92A\x7f2dKay-value pairs of contextual data about this resource that should be used during policy evaluation.J\x17{\"owner\": \"bugs_bunny\"}\xbaH\x0e\x9a\x01\v\"\x04r\x02\x10\x01*\x03\xc8\x01\x01R\x04attr\x12\xfa\x01\n" +
	"\x05scope\x18\x05 \x01(\tB\xe3\x01\x92A\xb2\x012}A dot-separated scope that describes the hierarchy this resource belongs to. This is used for determining policy inheritance.J\v\"acme.corp\"\x8a\x01#^([0-9a-zA-Z][\\w\\-]*(\\.[\\w\\-]*)*)*$\xe0A\x01\xbaH'r%2#^([0-9a-zA-Z][\\w\\-]*(\\.[\\w\\-]*)*)*$R\x05scope\x1aO\n" +
	"\tAttrEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12,\n" +
	"\x05value\x18\x02 \x01(\v2\x16.google.protobuf.ValueR\x05value:\x028\x01\"\xa8\b\n" +
	"\tPrincipal\x12C\n" +
	"\x02id\x18\x01 \x01(\tB3\x92A#2\x13ID of the principalJ\f\"bugs_bunny\"\xe0A\x02\xbaH\a\xc8\x01\x01r\x02\x10\x01R\x02id\x12\xd0\x01\n" +
	"\x0epolicy_version\x18\x02 \x01(\tB\xa8\x01\x92A\x93\x012|The policy version to use to evaluate this request. If not specified, will default to the server-configured default version.J\t\"default\"\x8a\x01\a^[\\w]*$\xe0A\x01\xbaH\vr\t2\a^[\\w]*$R\rpolicyVersion\x12\x87\x01\n" +
	"\x05roles\x18\x03 \x03(\tBq\x92AX2FRoles assigned to this principal from your identity management system.J\b[\"user\"]\xa8\x01\x01\xb0\x01\x01\xe0A\x02\xbaH\x10\xc8\x01\x01\x92\x01\n" +
	"\b\x01\x18\x01\"\x04r\x02\x10\x01R\x05roles\x12\xce\x01\n" +
	"\x04attr\x18\x04 \x03(\v2%.cerbos.engine.v1.Principal.AttrEntryB\x92\x01\x92A~2eKey-value pairs of contextual data about this principal that should be used during policy evaluation.J\x15{\"beta_tester\": true}\xbaH\x0e\x9a\x01\v\"\x04r\x02\x10\x01*\x03\xc8\x01\x01R\x04attr\x12\xfb\x01\n" +
	"\x05scope\x18\x05 \x01(\tB\xe4\x01\x92A\xb3\x012~A dot-separated scope that describes the hierarchy this principal belongs to. This is used for determining policy inheritance.J\v\"acme.corp\"\x8a\x01#^([0-9a-zA-Z][\\w\\-]*(\\.[\\w\\-]*)*)*$\xe0A\x01\xbaH'r%2#^([0-9a-zA-Z][\\w\\-]*(\\.[\\w\\-]*)*)*$R\x05scope\x1aO\n" +
	"\tAttrEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12,\n" +
	"\x05value\x18\x02 \x01(\v2\x16.google.protobuf.ValueR\x05value:\x028\x01:Y\x92AV\n" +
	"T2RA person or application attempting to perform the actions on the set of resources.\"\xb1\x01\n" +
	"\aAuxData\x124\n" +
	"\x03jwt\x18\x01 \x03(\v2\".cerbos.engine.v1.AuxData.JwtEntryR\x03jwt\x1aN\n" +
	"\bJwtEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12,\n" +
	"\x05value\x18\x02 \x01(\v2\x16.google.protobuf.ValueR\x05value:\x028\x01: \x92A\x1d\n" +
	"\x1b2\x19Structured auxiliary data\"\x82\n" +
	"\n" +
	"\x05Trace\x12A\n" +
	"\n" +
	"components\x18\x01 \x03(\v2!.cerbos.engine.v1.Trace.ComponentR\n" +
	"components\x123\n" +
	"\x05event\x18\x02 \x01(\v2\x1d.cerbos.engine.v1.Trace.EventR\x05event\x1a\xda\x06\n" +
	"\tComponent\x12:\n" +
	"\x04kind\x18\x01 \x01(\x0e2&.cerbos.engine.v1.Trace.Component.KindR\x04kind\x12\x18\n" +
	"\x06action\x18\x02 \x01(\tH\x00R\x06action\x12#\n" +
	"\fderived_role\x18\x03 \x01(\tH\x00R\vderivedRole\x12\x14\n" +
	"\x04expr\x18\x04 \x01(\tH\x00R\x04expr\x12\x16\n" +
	"\x05index\x18\x05 \x01(\rH\x00R\x05index\x12\x18\n" +
	"\x06policy\x18\x06 \x01(\tH\x00R\x06policy\x12\x1c\n" +
	"\bresource\x18\a \x01(\tH\x00R\bresource\x12\x14\n" +
	"\x04rule\x18\b \x01(\tH\x00R\x04rule\x12\x16\n" +
	"\x05scope\x18\t \x01(\tH\x00R\x05scope\x12H\n" +
	"\bvariable\x18\n" +
	" \x01(\v2*.cerbos.engine.v1.Trace.Component.VariableH\x00R\bvariable\x12\x18\n" +
	"\x06output\x18\v \x01(\tH\x00R\x06output\x12,\n" +
	"\x11role_policy_scope\x18\f \x01(\tH\x00R\x0frolePolicyScope\x12\x14\n" +
	"\x04role\x18\r \x01(\tH\x00R\x04role\x1a2\n" +
	"\bVariable\x12\x12\n" +
	"\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n" +
	"\x04expr\x18\x02 \x01(\tR\x04expr\"\xd6\x02\n" +
	"\x04Kind\x12\x14\n" +
	"\x10KIND_UNSPECIFIED\x10\x00\x12\x0f\n" +
	"\vKIND_ACTION\x10\x01\x12\x16\n" +
	"\x12KIND_CONDITION_ALL\x10\x02\x12\x16\n" +
	"\x12KIND_CONDITION_ANY\x10\x03\x12\x17\n" +
	"\x13KIND_CONDITION_NONE\x10\x04\x12\x12\n" +
	"\x0eKIND_CONDITION\x10\x05\x12\x15\n" +
	"\x11KIND_DERIVED_ROLE\x10\x06\x12\r\n" +
	"\tKIND_EXPR\x10\a\x12\x0f\n" +
	"\vKIND_POLICY\x10\b\x12\x11\n" +
	"\rKIND_RESOURCE\x10\t\x12\r\n" +
	"\tKIND_RULE\x10\n" +
	"\x12\x0e\n" +
	"\n" +
	"KIND_SCOPE\x10\v\x12\x11\n" +
	"\rKIND_VARIABLE\x10\f\x12\x12\n" +
	"\x0eKIND_VARIABLES\x10\r\x12\x0f\n" +
	"\vKIND_OUTPUT\x10\x0e\x12\x1a\n" +
	"\x16KIND_ROLE_POLICY_SCOPE\x10\x0f\x12\r\n" +
	"\tKIND_ROLE\x10\x10B\t\n" +
	"\adetails\x1a\xa3\x02\n" +
	"\x05Event\x12<\n" +
	"\x06status\x18\x01 \x01(\x0e2$.cerbos.engine.v1.Trace.Event.StatusR\x06status\x120\n" +
	"\x06effect\x18\x02 \x01(\x0e2\x18.cerbos.effect.v1.EffectR\x06effect\x12\x14\n" +
	"\x05error\x18\x03 \x01(\tR\x05error\x12\x18\n" +
	"\amessage\x18\x04 \x01(\tR\amessage\x12.\n" +
	"\x06result\x18\x05 \x01(\v2\x16.google.protobuf.ValueR\x06result\"J\n" +
	"\x06Status\x12\x16\n" +
	"\x12STATUS_UNSPECIFIED\x10\x00\x12\x14\n" +
	"\x10STATUS_ACTIVATED\x10\x01\x12\x12\n" +
	"\x0eSTATUS_SKIPPED\x10\x02\"\xc8\x05\n" +
	"\aRequest\x12A\n" +
	"\tprincipal\x18\x01 \x01(\v2#.cerbos.engine.v1.Request.PrincipalR\tprincipal\x12>\n" +
	"\bresource\x18\x02 \x01(\v2\".cerbos.engine.v1.Request.ResourceR\bresource\x124\n" +
	"\baux_data\x18\x03 \x01(\v2\x19.cerbos.engine.v1.AuxDataR\aauxData\x1a\x82\x02\n" +
	"\tPrincipal\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\x12\x14\n" +
	"\x05roles\x18\x02 \x03(\tR\x05roles\x12A\n" +
	"\x04attr\x18\x03 \x03(\v2-.cerbos.engine.v1.Request.Principal.AttrEntryR\x04attr\x12%\n" +
	"\x0epolicy_version\x18\x04 \x01(\tR\rpolicyVersion\x12\x14\n" +
	"\x05scope\x18\x05 \x01(\tR\x05scope\x1aO\n" +
	"\tAttrEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12,\n" +
	"\x05value\x18\x02 \x01(\v2\x16.google.protobuf.ValueR\x05value:\x028\x01\x1a\xfe\x01\n" +
	"\bResource\x12\x12\n" +
	"\x04kind\x18\x01 \x01(\tR\x04kind\x12\x0e\n" +
	"\x02id\x18\x02 \x01(\tR\x02id\x12@\n" +
	"\x04attr\x18\x03 \x03(\v2,.cerbos.engine.v1.Request.Resource.AttrEntryR\x04attr\x12%\n" +
	"\x0epolicy_version\x18\x04 \x01(\tR\rpolicyVersion\x12\x14\n" +
	"\x05scope\x18\x05 \x01(\tR\x05scope\x1aO\n" +
	"\tAttrEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12,\n" +
	"\x05value\x18\x02 \x01(\v2\x16.google.protobuf.ValueR\x05value:\x028\x01\"A\n" +
	"\aRuntime\x126\n" +
	"\x17effective_derived_roles\x18\x01 \x03(\tR\x15effectiveDerivedRolesBo\n" +
	"\x18dev.cerbos.api.v1.engineZ<github.com/cerbos/cerbos/api/genpb/cerbos/engine/v1;enginev1\xaa\x02\x14Cerbos.Api.V1.Engineb\x06proto3"

var (
	file_cerbos_engine_v1_engine_proto_rawDescOnce sync.Once
	file_cerbos_engine_v1_engine_proto_rawDescData []byte
)

func file_cerbos_engine_v1_engine_proto_rawDescGZIP() []byte {
	file_cerbos_engine_v1_engine_proto_rawDescOnce.Do(func() {
		file_cerbos_engine_v1_engine_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_cerbos_engine_v1_engine_proto_rawDesc), len(file_cerbos_engine_v1_engine_proto_rawDesc)))
	})
	return file_cerbos_engine_v1_engine_proto_rawDescData
}

var file_cerbos_engine_v1_engine_proto_enumTypes = make([]protoimpl.EnumInfo, 4)
var file_cerbos_engine_v1_engine_proto_msgTypes = make([]protoimpl.MessageInfo, 32)
var file_cerbos_engine_v1_engine_proto_goTypes = []any{
	(PlanResourcesAst_LogicalOperation_Operator)(0), // 0: cerbos.engine.v1.PlanResourcesAst.LogicalOperation.Operator
	(PlanResourcesFilter_Kind)(0),                   // 1: cerbos.engine.v1.PlanResourcesFilter.Kind
	(Trace_Component_Kind)(0),                       // 2: cerbos.engine.v1.Trace.Component.Kind
	(Trace_Event_Status)(0),                         // 3: cerbos.engine.v1.Trace.Event.Status
	(*PlanResourcesInput)(nil),                      // 4: cerbos.engine.v1.PlanResourcesInput
	(*PlanResourcesAst)(nil),                        // 5: cerbos.engine.v1.PlanResourcesAst
	(*PlanResourcesFilter)(nil),                     // 6: cerbos.engine.v1.PlanResourcesFilter
	(*PlanResourcesOutput)(nil),                     // 7: cerbos.engine.v1.PlanResourcesOutput
	(*CheckInput)(nil),                              // 8: cerbos.engine.v1.CheckInput
	(*CheckOutput)(nil),                             // 9: cerbos.engine.v1.CheckOutput
	(*OutputEntry)(nil),                             // 10: cerbos.engine.v1.OutputEntry
	(*Resource)(nil),                                // 11: cerbos.engine.v1.Resource
	(*Principal)(nil),                               // 12: cerbos.engine.v1.Principal
	(*AuxData)(nil),                                 // 13: cerbos.engine.v1.AuxData
	(*Trace)(nil),                                   // 14: cerbos.engine.v1.Trace
	(*Request)(nil),                                 // 15: cerbos.engine.v1.Request
	(*Runtime)(nil),                                 // 16: cerbos.engine.v1.Runtime
	(*PlanResourcesInput_Resource)(nil),             // 17: cerbos.engine.v1.PlanResourcesInput.Resource
	nil,                                             // 18: cerbos.engine.v1.PlanResourcesInput.Resource.AttrEntry
	(*PlanResourcesAst_Node)(nil),                   // 19: cerbos.engine.v1.PlanResourcesAst.Node
	(*PlanResourcesAst_LogicalOperation)(nil),       // 20: cerbos.engine.v1.PlanResourcesAst.LogicalOperation
	(*PlanResourcesFilter_Expression)(nil),          // 21: cerbos.engine.v1.PlanResourcesFilter.Expression
	(*PlanResourcesFilter_Expression_Operand)(nil),  // 22: cerbos.engine.v1.PlanResourcesFilter.Expression.Operand
	nil,                              // 23: cerbos.engine.v1.PlanResourcesOutput.MatchedScopesEntry
	(*CheckOutput_ActionEffect)(nil), // 24: cerbos.engine.v1.CheckOutput.ActionEffect
	nil,                              // 25: cerbos.engine.v1.CheckOutput.ActionsEntry
	nil,                              // 26: cerbos.engine.v1.Resource.AttrEntry
	nil,                              // 27: cerbos.engine.v1.Principal.AttrEntry
	nil,                              // 28: cerbos.engine.v1.AuxData.JwtEntry
	(*Trace_Component)(nil),          // 29: cerbos.engine.v1.Trace.Component
	(*Trace_Event)(nil),              // 30: cerbos.engine.v1.Trace.Event
	(*Trace_Component_Variable)(nil), // 31: cerbos.engine.v1.Trace.Component.Variable
	(*Request_Principal)(nil),        // 32: cerbos.engine.v1.Request.Principal
	(*Request_Resource)(nil),         // 33: cerbos.engine.v1.Request.Resource
	nil,                              // 34: cerbos.engine.v1.Request.Principal.AttrEntry
	nil,                              // 35: cerbos.engine.v1.Request.Resource.AttrEntry
	(*v1.ValidationError)(nil),       // 36: cerbos.schema.v1.ValidationError
	(*structpb.Value)(nil),           // 37: google.protobuf.Value
	(*v1alpha1.CheckedExpr)(nil),     // 38: google.api.expr.v1alpha1.CheckedExpr
	(v11.Effect)(0),                  // 39: cerbos.effect.v1.Effect
}
var file_cerbos_engine_v1_engine_proto_depIdxs = []int32{
	12, // 0: cerbos.engine.v1.PlanResourcesInput.principal:type_name -> cerbos.engine.v1.Principal
	17, // 1: cerbos.engine.v1.PlanResourcesInput.resource:type_name -> cerbos.engine.v1.PlanResourcesInput.Resource
	13, // 2: cerbos.engine.v1.PlanResourcesInput.aux_data:type_name -> cerbos.engine.v1.AuxData
	19, // 3: cerbos.engine.v1.PlanResourcesAst.filter_ast:type_name -> cerbos.engine.v1.PlanResourcesAst.Node
	1,  // 4: cerbos.engine.v1.PlanResourcesFilter.kind:type_name -> cerbos.engine.v1.PlanResourcesFilter.Kind
	22, // 5: cerbos.engine.v1.PlanResourcesFilter.condition:type_name -> cerbos.engine.v1.PlanResourcesFilter.Expression.Operand
	6,  // 6: cerbos.engine.v1.PlanResourcesOutput.filter:type_name -> cerbos.engine.v1.PlanResourcesFilter
	36, // 7: cerbos.engine.v1.PlanResourcesOutput.validation_errors:type_name -> cerbos.schema.v1.ValidationError
	23, // 8: cerbos.engine.v1.PlanResourcesOutput.matched_scopes:type_name -> cerbos.engine.v1.PlanResourcesOutput.MatchedScopesEntry
	11, // 9: cerbos.engine.v1.CheckInput.resource:type_name -> cerbos.engine.v1.Resource
	12, // 10: cerbos.engine.v1.CheckInput.principal:type_name -> cerbos.engine.v1.Principal
	13, // 11: cerbos.engine.v1.CheckInput.aux_data:type_name -> cerbos.engine.v1.AuxData
	25, // 12: cerbos.engine.v1.CheckOutput.actions:type_name -> cerbos.engine.v1.CheckOutput.ActionsEntry
	36, // 13: cerbos.engine.v1.CheckOutput.validation_errors:type_name -> cerbos.schema.v1.ValidationError
	10, // 14: cerbos.engine.v1.CheckOutput.outputs:type_name -> cerbos.engine.v1.OutputEntry
	37, // 15: cerbos.engine.v1.OutputEntry.val:type_name -> google.protobuf.Value
	26, // 16: cerbos.engine.v1.Resource.attr:type_name -> cerbos.engine.v1.Resource.AttrEntry
	27, // 17: cerbos.engine.v1.Principal.attr:type_name -> cerbos.engine.v1.Principal.AttrEntry
	28, // 18: cerbos.engine.v1.AuxData.jwt:type_name -> cerbos.engine.v1.AuxData.JwtEntry
	29, // 19: cerbos.engine.v1.Trace.components:type_name -> cerbos.engine.v1.Trace.Component
	30, // 20: cerbos.engine.v1.Trace.event:type_name -> cerbos.engine.v1.Trace.Event
	32, // 21: cerbos.engine.v1.Request.principal:type_name -> cerbos.engine.v1.Request.Principal
	33, // 22: cerbos.engine.v1.Request.resource:type_name -> cerbos.engine.v1.Request.Resource
	13, // 23: cerbos.engine.v1.Request.aux_data:type_name -> cerbos.engine.v1.AuxData
	18, // 24: cerbos.engine.v1.PlanResourcesInput.Resource.attr:type_name -> cerbos.engine.v1.PlanResourcesInput.Resource.AttrEntry
	37, // 25: cerbos.engine.v1.PlanResourcesInput.Resource.AttrEntry.value:type_name -> google.protobuf.Value
	20, // 26: cerbos.engine.v1.PlanResourcesAst.Node.logical_operation:type_name -> cerbos.engine.v1.PlanResourcesAst.LogicalOperation
	38, // 27: cerbos.engine.v1.PlanResourcesAst.Node.expression:type_name -> google.api.expr.v1alpha1.CheckedExpr
	0,  // 28: cerbos.engine.v1.PlanResourcesAst.LogicalOperation.operator:type_name -> cerbos.engine.v1.PlanResourcesAst.LogicalOperation.Operator
	19, // 29: cerbos.engine.v1.PlanResourcesAst.LogicalOperation.nodes:type_name -> cerbos.engine.v1.PlanResourcesAst.Node
	22, // 30: cerbos.engine.v1.PlanResourcesFilter.Expression.operands:type_name -> cerbos.engine.v1.PlanResourcesFilter.Expression.Operand
	37, // 31: cerbos.engine.v1.PlanResourcesFilter.Expression.Operand.value:type_name -> google.protobuf.Value
	21, // 32: cerbos.engine.v1.PlanResourcesFilter.Expression.Operand.expression:type_name -> cerbos.engine.v1.PlanResourcesFilter.Expression
	39, // 33: cerbos.engine.v1.CheckOutput.ActionEffect.effect:type_name -> cerbos.effect.v1.Effect
	24, // 34: cerbos.engine.v1.CheckOutput.ActionsEntry.value:type_name -> cerbos.engine.v1.CheckOutput.ActionEffect
	37, // 35: cerbos.engine.v1.Resource.AttrEntry.value:type_name -> google.protobuf.Value
	37, // 36: cerbos.engine.v1.Principal.AttrEntry.value:type_name -> google.protobuf.Value
	37, // 37: cerbos.engine.v1.AuxData.JwtEntry.value:type_name -> google.protobuf.Value
	2,  // 38: cerbos.engine.v1.Trace.Component.kind:type_name -> cerbos.engine.v1.Trace.Component.Kind
	31, // 39: cerbos.engine.v1.Trace.Component.variable:type_name -> cerbos.engine.v1.Trace.Component.Variable
	3,  // 40: cerbos.engine.v1.Trace.Event.status:type_name -> cerbos.engine.v1.Trace.Event.Status
	39, // 41: cerbos.engine.v1.Trace.Event.effect:type_name -> cerbos.effect.v1.Effect
	37, // 42: cerbos.engine.v1.Trace.Event.result:type_name -> google.protobuf.Value
	34, // 43: cerbos.engine.v1.Request.Principal.attr:type_name -> cerbos.engine.v1.Request.Principal.AttrEntry
	35, // 44: cerbos.engine.v1.Request.Resource.attr:type_name -> cerbos.engine.v1.Request.Resource.AttrEntry
	37, // 45: cerbos.engine.v1.Request.Principal.AttrEntry.value:type_name -> google.protobuf.Value
	37, // 46: cerbos.engine.v1.Request.Resource.AttrEntry.value:type_name -> google.protobuf.Value
	47, // [47:47] is the sub-list for method output_type
	47, // [47:47] is the sub-list for method input_type
	47, // [47:47] is the sub-list for extension type_name
	47, // [47:47] is the sub-list for extension extendee
	0,  // [0:47] is the sub-list for field type_name
}

func init() { file_cerbos_engine_v1_engine_proto_init() }
func file_cerbos_engine_v1_engine_proto_init() {
	if File_cerbos_engine_v1_engine_proto != nil {
		return
	}
	file_cerbos_engine_v1_engine_proto_msgTypes[15].OneofWrappers = []any{
		(*PlanResourcesAst_Node_LogicalOperation)(nil),
		(*PlanResourcesAst_Node_Expression)(nil),
	}
	file_cerbos_engine_v1_engine_proto_msgTypes[18].OneofWrappers = []any{
		(*PlanResourcesFilter_Expression_Operand_Value)(nil),
		(*PlanResourcesFilter_Expression_Operand_Expression)(nil),
		(*PlanResourcesFilter_Expression_Operand_Variable)(nil),
	}
	file_cerbos_engine_v1_engine_proto_msgTypes[25].OneofWrappers = []any{
		(*Trace_Component_Action)(nil),
		(*Trace_Component_DerivedRole)(nil),
		(*Trace_Component_Expr)(nil),
		(*Trace_Component_Index)(nil),
		(*Trace_Component_Policy)(nil),
		(*Trace_Component_Resource)(nil),
		(*Trace_Component_Rule)(nil),
		(*Trace_Component_Scope)(nil),
		(*Trace_Component_Variable_)(nil),
		(*Trace_Component_Output)(nil),
		(*Trace_Component_RolePolicyScope)(nil),
		(*Trace_Component_Role)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: unsafe.Slice(unsafe.StringData(file_cerbos_engine_v1_engine_proto_rawDesc), len(file_cerbos_engine_v1_engine_proto_rawDesc)),
			NumEnums:      4,
			NumMessages:   32,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_cerbos_engine_v1_engine_proto_goTypes,
		DependencyIndexes: file_cerbos_engine_v1_engine_proto_depIdxs,
		EnumInfos:         file_cerbos_engine_v1_engine_proto_enumTypes,
		MessageInfos:      file_cerbos_engine_v1_engine_proto_msgTypes,
	}.Build()
	File_cerbos_engine_v1_engine_proto = out.File
	file_cerbos_engine_v1_engine_proto_goTypes = nil
	file_cerbos_engine_v1_engine_proto_depIdxs = nil
}
