// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.36.8
// 	protoc        (unknown)
// source: authzed/api/v1/experimental_service.proto

package v1

import (
	_ "buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go/buf/validate"
	_ "github.com/envoyproxy/protoc-gen-validate/validate"
	_ "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2/options"
	_ "google.golang.org/genproto/googleapis/api/annotations"
	status "google.golang.org/genproto/googleapis/rpc/status"
	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 ExperimentalRegisterRelationshipCounterRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// name is the name of the counter being registered.
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// relationship_filter defines the filter to be applied to the relationships
	// to be counted.
	RelationshipFilter *RelationshipFilter `protobuf:"bytes,2,opt,name=relationship_filter,json=relationshipFilter,proto3" json:"relationship_filter,omitempty"`
	unknownFields      protoimpl.UnknownFields
	sizeCache          protoimpl.SizeCache
}

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

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

func (*ExperimentalRegisterRelationshipCounterRequest) ProtoMessage() {}

func (x *ExperimentalRegisterRelationshipCounterRequest) ProtoReflect() protoreflect.Message {
	mi := &file_authzed_api_v1_experimental_service_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 ExperimentalRegisterRelationshipCounterRequest.ProtoReflect.Descriptor instead.
func (*ExperimentalRegisterRelationshipCounterRequest) Descriptor() ([]byte, []int) {
	return file_authzed_api_v1_experimental_service_proto_rawDescGZIP(), []int{0}
}

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

func (x *ExperimentalRegisterRelationshipCounterRequest) GetRelationshipFilter() *RelationshipFilter {
	if x != nil {
		return x.RelationshipFilter
	}
	return nil
}

type ExperimentalRegisterRelationshipCounterResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ExperimentalRegisterRelationshipCounterResponse) ProtoMessage() {}

func (x *ExperimentalRegisterRelationshipCounterResponse) ProtoReflect() protoreflect.Message {
	mi := &file_authzed_api_v1_experimental_service_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 ExperimentalRegisterRelationshipCounterResponse.ProtoReflect.Descriptor instead.
func (*ExperimentalRegisterRelationshipCounterResponse) Descriptor() ([]byte, []int) {
	return file_authzed_api_v1_experimental_service_proto_rawDescGZIP(), []int{1}
}

type ExperimentalCountRelationshipsRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// name is the name of the counter whose count is being requested.
	Name          string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ExperimentalCountRelationshipsRequest) ProtoMessage() {}

func (x *ExperimentalCountRelationshipsRequest) ProtoReflect() protoreflect.Message {
	mi := &file_authzed_api_v1_experimental_service_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 ExperimentalCountRelationshipsRequest.ProtoReflect.Descriptor instead.
func (*ExperimentalCountRelationshipsRequest) Descriptor() ([]byte, []int) {
	return file_authzed_api_v1_experimental_service_proto_rawDescGZIP(), []int{2}
}

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

type ExperimentalCountRelationshipsResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Types that are valid to be assigned to CounterResult:
	//
	//	*ExperimentalCountRelationshipsResponse_CounterStillCalculating
	//	*ExperimentalCountRelationshipsResponse_ReadCounterValue
	CounterResult isExperimentalCountRelationshipsResponse_CounterResult `protobuf_oneof:"counter_result"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ExperimentalCountRelationshipsResponse) ProtoMessage() {}

func (x *ExperimentalCountRelationshipsResponse) ProtoReflect() protoreflect.Message {
	mi := &file_authzed_api_v1_experimental_service_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 ExperimentalCountRelationshipsResponse.ProtoReflect.Descriptor instead.
func (*ExperimentalCountRelationshipsResponse) Descriptor() ([]byte, []int) {
	return file_authzed_api_v1_experimental_service_proto_rawDescGZIP(), []int{3}
}

func (x *ExperimentalCountRelationshipsResponse) GetCounterResult() isExperimentalCountRelationshipsResponse_CounterResult {
	if x != nil {
		return x.CounterResult
	}
	return nil
}

func (x *ExperimentalCountRelationshipsResponse) GetCounterStillCalculating() bool {
	if x != nil {
		if x, ok := x.CounterResult.(*ExperimentalCountRelationshipsResponse_CounterStillCalculating); ok {
			return x.CounterStillCalculating
		}
	}
	return false
}

func (x *ExperimentalCountRelationshipsResponse) GetReadCounterValue() *ReadCounterValue {
	if x != nil {
		if x, ok := x.CounterResult.(*ExperimentalCountRelationshipsResponse_ReadCounterValue); ok {
			return x.ReadCounterValue
		}
	}
	return nil
}

type isExperimentalCountRelationshipsResponse_CounterResult interface {
	isExperimentalCountRelationshipsResponse_CounterResult()
}

type ExperimentalCountRelationshipsResponse_CounterStillCalculating struct {
	// counter_still_calculating is true if the counter is still calculating the count.
	CounterStillCalculating bool `protobuf:"varint,1,opt,name=counter_still_calculating,json=counterStillCalculating,proto3,oneof"`
}

type ExperimentalCountRelationshipsResponse_ReadCounterValue struct {
	// read_counter_value is the value of the counter at the time of the read.
	ReadCounterValue *ReadCounterValue `protobuf:"bytes,2,opt,name=read_counter_value,json=readCounterValue,proto3,oneof"`
}

func (*ExperimentalCountRelationshipsResponse_CounterStillCalculating) isExperimentalCountRelationshipsResponse_CounterResult() {
}

func (*ExperimentalCountRelationshipsResponse_ReadCounterValue) isExperimentalCountRelationshipsResponse_CounterResult() {
}

type ReadCounterValue struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// relationship_count is the count of relationships that match the filter.
	RelationshipCount uint64 `protobuf:"varint,1,opt,name=relationship_count,json=relationshipCount,proto3" json:"relationship_count,omitempty"`
	// read_at is the ZedToken at which the relationship count applies.
	ReadAt        *ZedToken `protobuf:"bytes,2,opt,name=read_at,json=readAt,proto3" json:"read_at,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ReadCounterValue) ProtoMessage() {}

func (x *ReadCounterValue) ProtoReflect() protoreflect.Message {
	mi := &file_authzed_api_v1_experimental_service_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 ReadCounterValue.ProtoReflect.Descriptor instead.
func (*ReadCounterValue) Descriptor() ([]byte, []int) {
	return file_authzed_api_v1_experimental_service_proto_rawDescGZIP(), []int{4}
}

func (x *ReadCounterValue) GetRelationshipCount() uint64 {
	if x != nil {
		return x.RelationshipCount
	}
	return 0
}

func (x *ReadCounterValue) GetReadAt() *ZedToken {
	if x != nil {
		return x.ReadAt
	}
	return nil
}

type ExperimentalUnregisterRelationshipCounterRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// name is the name of the counter being unregistered.
	Name          string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ExperimentalUnregisterRelationshipCounterRequest) ProtoMessage() {}

func (x *ExperimentalUnregisterRelationshipCounterRequest) ProtoReflect() protoreflect.Message {
	mi := &file_authzed_api_v1_experimental_service_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 ExperimentalUnregisterRelationshipCounterRequest.ProtoReflect.Descriptor instead.
func (*ExperimentalUnregisterRelationshipCounterRequest) Descriptor() ([]byte, []int) {
	return file_authzed_api_v1_experimental_service_proto_rawDescGZIP(), []int{5}
}

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

type ExperimentalUnregisterRelationshipCounterResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ExperimentalUnregisterRelationshipCounterResponse) ProtoMessage() {}

func (x *ExperimentalUnregisterRelationshipCounterResponse) ProtoReflect() protoreflect.Message {
	mi := &file_authzed_api_v1_experimental_service_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 ExperimentalUnregisterRelationshipCounterResponse.ProtoReflect.Descriptor instead.
func (*ExperimentalUnregisterRelationshipCounterResponse) Descriptor() ([]byte, []int) {
	return file_authzed_api_v1_experimental_service_proto_rawDescGZIP(), []int{6}
}

// NOTE: Deprecated now that BulkCheckPermission has been promoted to the stable API as "CheckBulkPermission".
type BulkCheckPermissionRequest struct {
	state       protoimpl.MessageState `protogen:"open.v1"`
	Consistency *Consistency           `protobuf:"bytes,1,opt,name=consistency,proto3" json:"consistency,omitempty"`
	// Deprecated: Marked as deprecated in authzed/api/v1/experimental_service.proto.
	Items         []*BulkCheckPermissionRequestItem `protobuf:"bytes,2,rep,name=items,proto3" json:"items,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*BulkCheckPermissionRequest) ProtoMessage() {}

func (x *BulkCheckPermissionRequest) ProtoReflect() protoreflect.Message {
	mi := &file_authzed_api_v1_experimental_service_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 BulkCheckPermissionRequest.ProtoReflect.Descriptor instead.
func (*BulkCheckPermissionRequest) Descriptor() ([]byte, []int) {
	return file_authzed_api_v1_experimental_service_proto_rawDescGZIP(), []int{7}
}

func (x *BulkCheckPermissionRequest) GetConsistency() *Consistency {
	if x != nil {
		return x.Consistency
	}
	return nil
}

// Deprecated: Marked as deprecated in authzed/api/v1/experimental_service.proto.
func (x *BulkCheckPermissionRequest) GetItems() []*BulkCheckPermissionRequestItem {
	if x != nil {
		return x.Items
	}
	return nil
}

type BulkCheckPermissionRequestItem struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Resource      *ObjectReference       `protobuf:"bytes,1,opt,name=resource,proto3" json:"resource,omitempty"`
	Permission    string                 `protobuf:"bytes,2,opt,name=permission,proto3" json:"permission,omitempty"`
	Subject       *SubjectReference      `protobuf:"bytes,3,opt,name=subject,proto3" json:"subject,omitempty"`
	Context       *structpb.Struct       `protobuf:"bytes,4,opt,name=context,proto3" json:"context,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*BulkCheckPermissionRequestItem) ProtoMessage() {}

func (x *BulkCheckPermissionRequestItem) ProtoReflect() protoreflect.Message {
	mi := &file_authzed_api_v1_experimental_service_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 BulkCheckPermissionRequestItem.ProtoReflect.Descriptor instead.
func (*BulkCheckPermissionRequestItem) Descriptor() ([]byte, []int) {
	return file_authzed_api_v1_experimental_service_proto_rawDescGZIP(), []int{8}
}

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

func (x *BulkCheckPermissionRequestItem) GetPermission() string {
	if x != nil {
		return x.Permission
	}
	return ""
}

func (x *BulkCheckPermissionRequestItem) GetSubject() *SubjectReference {
	if x != nil {
		return x.Subject
	}
	return nil
}

func (x *BulkCheckPermissionRequestItem) GetContext() *structpb.Struct {
	if x != nil {
		return x.Context
	}
	return nil
}

type BulkCheckPermissionResponse struct {
	state         protoimpl.MessageState     `protogen:"open.v1"`
	CheckedAt     *ZedToken                  `protobuf:"bytes,1,opt,name=checked_at,json=checkedAt,proto3" json:"checked_at,omitempty"`
	Pairs         []*BulkCheckPermissionPair `protobuf:"bytes,2,rep,name=pairs,proto3" json:"pairs,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*BulkCheckPermissionResponse) ProtoMessage() {}

func (x *BulkCheckPermissionResponse) ProtoReflect() protoreflect.Message {
	mi := &file_authzed_api_v1_experimental_service_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 BulkCheckPermissionResponse.ProtoReflect.Descriptor instead.
func (*BulkCheckPermissionResponse) Descriptor() ([]byte, []int) {
	return file_authzed_api_v1_experimental_service_proto_rawDescGZIP(), []int{9}
}

func (x *BulkCheckPermissionResponse) GetCheckedAt() *ZedToken {
	if x != nil {
		return x.CheckedAt
	}
	return nil
}

func (x *BulkCheckPermissionResponse) GetPairs() []*BulkCheckPermissionPair {
	if x != nil {
		return x.Pairs
	}
	return nil
}

type BulkCheckPermissionPair struct {
	state   protoimpl.MessageState          `protogen:"open.v1"`
	Request *BulkCheckPermissionRequestItem `protobuf:"bytes,1,opt,name=request,proto3" json:"request,omitempty"`
	// Types that are valid to be assigned to Response:
	//
	//	*BulkCheckPermissionPair_Item
	//	*BulkCheckPermissionPair_Error
	Response      isBulkCheckPermissionPair_Response `protobuf_oneof:"response"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*BulkCheckPermissionPair) ProtoMessage() {}

func (x *BulkCheckPermissionPair) ProtoReflect() protoreflect.Message {
	mi := &file_authzed_api_v1_experimental_service_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 BulkCheckPermissionPair.ProtoReflect.Descriptor instead.
func (*BulkCheckPermissionPair) Descriptor() ([]byte, []int) {
	return file_authzed_api_v1_experimental_service_proto_rawDescGZIP(), []int{10}
}

func (x *BulkCheckPermissionPair) GetRequest() *BulkCheckPermissionRequestItem {
	if x != nil {
		return x.Request
	}
	return nil
}

func (x *BulkCheckPermissionPair) GetResponse() isBulkCheckPermissionPair_Response {
	if x != nil {
		return x.Response
	}
	return nil
}

func (x *BulkCheckPermissionPair) GetItem() *BulkCheckPermissionResponseItem {
	if x != nil {
		if x, ok := x.Response.(*BulkCheckPermissionPair_Item); ok {
			return x.Item
		}
	}
	return nil
}

func (x *BulkCheckPermissionPair) GetError() *status.Status {
	if x != nil {
		if x, ok := x.Response.(*BulkCheckPermissionPair_Error); ok {
			return x.Error
		}
	}
	return nil
}

type isBulkCheckPermissionPair_Response interface {
	isBulkCheckPermissionPair_Response()
}

type BulkCheckPermissionPair_Item struct {
	Item *BulkCheckPermissionResponseItem `protobuf:"bytes,2,opt,name=item,proto3,oneof"`
}

type BulkCheckPermissionPair_Error struct {
	Error *status.Status `protobuf:"bytes,3,opt,name=error,proto3,oneof"`
}

func (*BulkCheckPermissionPair_Item) isBulkCheckPermissionPair_Response() {}

func (*BulkCheckPermissionPair_Error) isBulkCheckPermissionPair_Response() {}

type BulkCheckPermissionResponseItem struct {
	state             protoimpl.MessageState                 `protogen:"open.v1"`
	Permissionship    CheckPermissionResponse_Permissionship `protobuf:"varint,1,opt,name=permissionship,proto3,enum=authzed.api.v1.CheckPermissionResponse_Permissionship" json:"permissionship,omitempty"`
	PartialCaveatInfo *PartialCaveatInfo                     `protobuf:"bytes,2,opt,name=partial_caveat_info,json=partialCaveatInfo,proto3" json:"partial_caveat_info,omitempty"`
	unknownFields     protoimpl.UnknownFields
	sizeCache         protoimpl.SizeCache
}

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

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

func (*BulkCheckPermissionResponseItem) ProtoMessage() {}

func (x *BulkCheckPermissionResponseItem) ProtoReflect() protoreflect.Message {
	mi := &file_authzed_api_v1_experimental_service_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 BulkCheckPermissionResponseItem.ProtoReflect.Descriptor instead.
func (*BulkCheckPermissionResponseItem) Descriptor() ([]byte, []int) {
	return file_authzed_api_v1_experimental_service_proto_rawDescGZIP(), []int{11}
}

func (x *BulkCheckPermissionResponseItem) GetPermissionship() CheckPermissionResponse_Permissionship {
	if x != nil {
		return x.Permissionship
	}
	return CheckPermissionResponse_PERMISSIONSHIP_UNSPECIFIED
}

func (x *BulkCheckPermissionResponseItem) GetPartialCaveatInfo() *PartialCaveatInfo {
	if x != nil {
		return x.PartialCaveatInfo
	}
	return nil
}

// BulkImportRelationshipsRequest represents one batch of the streaming
// BulkImportRelationships API. The maximum size is only limited by the backing
// datastore, and optimal size should be determined by the calling client
// experimentally. When BulkImport is invoked and receives its first request message,
// a transaction is opened to import the relationships. All requests sent to the same
// invocation are executed under this single transaction. If a relationship already
// exists within the datastore, the entire transaction will fail with an error.
type BulkImportRelationshipsRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Relationships []*Relationship        `protobuf:"bytes,1,rep,name=relationships,proto3" json:"relationships,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*BulkImportRelationshipsRequest) ProtoMessage() {}

func (x *BulkImportRelationshipsRequest) ProtoReflect() protoreflect.Message {
	mi := &file_authzed_api_v1_experimental_service_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 BulkImportRelationshipsRequest.ProtoReflect.Descriptor instead.
func (*BulkImportRelationshipsRequest) Descriptor() ([]byte, []int) {
	return file_authzed_api_v1_experimental_service_proto_rawDescGZIP(), []int{12}
}

func (x *BulkImportRelationshipsRequest) GetRelationships() []*Relationship {
	if x != nil {
		return x.Relationships
	}
	return nil
}

// BulkImportRelationshipsResponse is returned on successful completion of the
// bulk load stream, and contains the total number of relationships loaded.
type BulkImportRelationshipsResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	NumLoaded     uint64                 `protobuf:"varint,1,opt,name=num_loaded,json=numLoaded,proto3" json:"num_loaded,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*BulkImportRelationshipsResponse) ProtoMessage() {}

func (x *BulkImportRelationshipsResponse) ProtoReflect() protoreflect.Message {
	mi := &file_authzed_api_v1_experimental_service_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 BulkImportRelationshipsResponse.ProtoReflect.Descriptor instead.
func (*BulkImportRelationshipsResponse) Descriptor() ([]byte, []int) {
	return file_authzed_api_v1_experimental_service_proto_rawDescGZIP(), []int{13}
}

func (x *BulkImportRelationshipsResponse) GetNumLoaded() uint64 {
	if x != nil {
		return x.NumLoaded
	}
	return 0
}

// BulkExportRelationshipsRequest represents a resumable request for
// all relationships from the server.
type BulkExportRelationshipsRequest struct {
	state       protoimpl.MessageState `protogen:"open.v1"`
	Consistency *Consistency           `protobuf:"bytes,1,opt,name=consistency,proto3" json:"consistency,omitempty"`
	// optional_limit, if non-zero, specifies the limit on the number of
	// relationships the server can return in one page. By default, the server
	// will pick a page size, and the server is free to choose a smaller size
	// at will.
	OptionalLimit uint32 `protobuf:"varint,2,opt,name=optional_limit,json=optionalLimit,proto3" json:"optional_limit,omitempty"`
	// optional_cursor, if specified, indicates the cursor after which results
	// should resume being returned. The cursor can be found on the
	// BulkExportRelationshipsResponse object.
	OptionalCursor *Cursor `protobuf:"bytes,3,opt,name=optional_cursor,json=optionalCursor,proto3" json:"optional_cursor,omitempty"`
	// optional_relationship_filter, if specified, indicates the
	// filter to apply to each relationship to be exported.
	OptionalRelationshipFilter *RelationshipFilter `protobuf:"bytes,4,opt,name=optional_relationship_filter,json=optionalRelationshipFilter,proto3" json:"optional_relationship_filter,omitempty"`
	unknownFields              protoimpl.UnknownFields
	sizeCache                  protoimpl.SizeCache
}

func (x *BulkExportRelationshipsRequest) Reset() {
	*x = BulkExportRelationshipsRequest{}
	mi := &file_authzed_api_v1_experimental_service_proto_msgTypes[14]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*BulkExportRelationshipsRequest) ProtoMessage() {}

func (x *BulkExportRelationshipsRequest) ProtoReflect() protoreflect.Message {
	mi := &file_authzed_api_v1_experimental_service_proto_msgTypes[14]
	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 BulkExportRelationshipsRequest.ProtoReflect.Descriptor instead.
func (*BulkExportRelationshipsRequest) Descriptor() ([]byte, []int) {
	return file_authzed_api_v1_experimental_service_proto_rawDescGZIP(), []int{14}
}

func (x *BulkExportRelationshipsRequest) GetConsistency() *Consistency {
	if x != nil {
		return x.Consistency
	}
	return nil
}

func (x *BulkExportRelationshipsRequest) GetOptionalLimit() uint32 {
	if x != nil {
		return x.OptionalLimit
	}
	return 0
}

func (x *BulkExportRelationshipsRequest) GetOptionalCursor() *Cursor {
	if x != nil {
		return x.OptionalCursor
	}
	return nil
}

func (x *BulkExportRelationshipsRequest) GetOptionalRelationshipFilter() *RelationshipFilter {
	if x != nil {
		return x.OptionalRelationshipFilter
	}
	return nil
}

// BulkExportRelationshipsResponse is one page in a stream of relationship
// groups that meet the criteria specified by the originating request. The
// server will continue to stream back relationship groups as quickly as it can
// until all relationships have been transmitted back.
type BulkExportRelationshipsResponse struct {
	state             protoimpl.MessageState `protogen:"open.v1"`
	AfterResultCursor *Cursor                `protobuf:"bytes,1,opt,name=after_result_cursor,json=afterResultCursor,proto3" json:"after_result_cursor,omitempty"`
	Relationships     []*Relationship        `protobuf:"bytes,2,rep,name=relationships,proto3" json:"relationships,omitempty"`
	unknownFields     protoimpl.UnknownFields
	sizeCache         protoimpl.SizeCache
}

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

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

func (*BulkExportRelationshipsResponse) ProtoMessage() {}

func (x *BulkExportRelationshipsResponse) ProtoReflect() protoreflect.Message {
	mi := &file_authzed_api_v1_experimental_service_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 BulkExportRelationshipsResponse.ProtoReflect.Descriptor instead.
func (*BulkExportRelationshipsResponse) Descriptor() ([]byte, []int) {
	return file_authzed_api_v1_experimental_service_proto_rawDescGZIP(), []int{15}
}

func (x *BulkExportRelationshipsResponse) GetAfterResultCursor() *Cursor {
	if x != nil {
		return x.AfterResultCursor
	}
	return nil
}

func (x *BulkExportRelationshipsResponse) GetRelationships() []*Relationship {
	if x != nil {
		return x.Relationships
	}
	return nil
}

type ExperimentalReflectSchemaRequest struct {
	state       protoimpl.MessageState `protogen:"open.v1"`
	Consistency *Consistency           `protobuf:"bytes,1,opt,name=consistency,proto3" json:"consistency,omitempty"`
	// optional_filters defines optional filters that are applied in
	// an OR fashion to the schema, before being returned
	OptionalFilters []*ExpSchemaFilter `protobuf:"bytes,2,rep,name=optional_filters,json=optionalFilters,proto3" json:"optional_filters,omitempty"`
	unknownFields   protoimpl.UnknownFields
	sizeCache       protoimpl.SizeCache
}

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

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

func (*ExperimentalReflectSchemaRequest) ProtoMessage() {}

func (x *ExperimentalReflectSchemaRequest) ProtoReflect() protoreflect.Message {
	mi := &file_authzed_api_v1_experimental_service_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 ExperimentalReflectSchemaRequest.ProtoReflect.Descriptor instead.
func (*ExperimentalReflectSchemaRequest) Descriptor() ([]byte, []int) {
	return file_authzed_api_v1_experimental_service_proto_rawDescGZIP(), []int{16}
}

func (x *ExperimentalReflectSchemaRequest) GetConsistency() *Consistency {
	if x != nil {
		return x.Consistency
	}
	return nil
}

func (x *ExperimentalReflectSchemaRequest) GetOptionalFilters() []*ExpSchemaFilter {
	if x != nil {
		return x.OptionalFilters
	}
	return nil
}

type ExperimentalReflectSchemaResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// definitions are the definitions defined in the schema.
	Definitions []*ExpDefinition `protobuf:"bytes,1,rep,name=definitions,proto3" json:"definitions,omitempty"`
	// caveats are the caveats defined in the schema.
	Caveats []*ExpCaveat `protobuf:"bytes,2,rep,name=caveats,proto3" json:"caveats,omitempty"`
	// read_at is the ZedToken at which the schema was read.
	ReadAt        *ZedToken `protobuf:"bytes,3,opt,name=read_at,json=readAt,proto3" json:"read_at,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ExperimentalReflectSchemaResponse) ProtoMessage() {}

func (x *ExperimentalReflectSchemaResponse) ProtoReflect() protoreflect.Message {
	mi := &file_authzed_api_v1_experimental_service_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 ExperimentalReflectSchemaResponse.ProtoReflect.Descriptor instead.
func (*ExperimentalReflectSchemaResponse) Descriptor() ([]byte, []int) {
	return file_authzed_api_v1_experimental_service_proto_rawDescGZIP(), []int{17}
}

func (x *ExperimentalReflectSchemaResponse) GetDefinitions() []*ExpDefinition {
	if x != nil {
		return x.Definitions
	}
	return nil
}

func (x *ExperimentalReflectSchemaResponse) GetCaveats() []*ExpCaveat {
	if x != nil {
		return x.Caveats
	}
	return nil
}

func (x *ExperimentalReflectSchemaResponse) GetReadAt() *ZedToken {
	if x != nil {
		return x.ReadAt
	}
	return nil
}

// ExpSchemaFilter is a filter that can be applied to the schema on reflection.
type ExpSchemaFilter struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// optional_definition_name_filter is a prefix that is matched against the definition name.
	OptionalDefinitionNameFilter string `protobuf:"bytes,1,opt,name=optional_definition_name_filter,json=optionalDefinitionNameFilter,proto3" json:"optional_definition_name_filter,omitempty"`
	// optional_caveat_name_filter is a prefix that is matched against the caveat name.
	OptionalCaveatNameFilter string `protobuf:"bytes,2,opt,name=optional_caveat_name_filter,json=optionalCaveatNameFilter,proto3" json:"optional_caveat_name_filter,omitempty"`
	// optional_relation_name_filter is a prefix that is matched against the relation name.
	OptionalRelationNameFilter string `protobuf:"bytes,3,opt,name=optional_relation_name_filter,json=optionalRelationNameFilter,proto3" json:"optional_relation_name_filter,omitempty"`
	// optional_permission_name_filter is a prefix that is matched against the permission name.
	OptionalPermissionNameFilter string `protobuf:"bytes,4,opt,name=optional_permission_name_filter,json=optionalPermissionNameFilter,proto3" json:"optional_permission_name_filter,omitempty"`
	unknownFields                protoimpl.UnknownFields
	sizeCache                    protoimpl.SizeCache
}

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

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

func (*ExpSchemaFilter) ProtoMessage() {}

func (x *ExpSchemaFilter) ProtoReflect() protoreflect.Message {
	mi := &file_authzed_api_v1_experimental_service_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 ExpSchemaFilter.ProtoReflect.Descriptor instead.
func (*ExpSchemaFilter) Descriptor() ([]byte, []int) {
	return file_authzed_api_v1_experimental_service_proto_rawDescGZIP(), []int{18}
}

func (x *ExpSchemaFilter) GetOptionalDefinitionNameFilter() string {
	if x != nil {
		return x.OptionalDefinitionNameFilter
	}
	return ""
}

func (x *ExpSchemaFilter) GetOptionalCaveatNameFilter() string {
	if x != nil {
		return x.OptionalCaveatNameFilter
	}
	return ""
}

func (x *ExpSchemaFilter) GetOptionalRelationNameFilter() string {
	if x != nil {
		return x.OptionalRelationNameFilter
	}
	return ""
}

func (x *ExpSchemaFilter) GetOptionalPermissionNameFilter() string {
	if x != nil {
		return x.OptionalPermissionNameFilter
	}
	return ""
}

// ExpDefinition is the representation of a definition in the schema.
type ExpDefinition struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	Name  string                 `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// comment is a human-readable comments on the definition. Will include
	// delimiter characters.
	Comment       string           `protobuf:"bytes,2,opt,name=comment,proto3" json:"comment,omitempty"`
	Relations     []*ExpRelation   `protobuf:"bytes,3,rep,name=relations,proto3" json:"relations,omitempty"`
	Permissions   []*ExpPermission `protobuf:"bytes,4,rep,name=permissions,proto3" json:"permissions,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ExpDefinition) Reset() {
	*x = ExpDefinition{}
	mi := &file_authzed_api_v1_experimental_service_proto_msgTypes[19]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ExpDefinition) ProtoMessage() {}

func (x *ExpDefinition) ProtoReflect() protoreflect.Message {
	mi := &file_authzed_api_v1_experimental_service_proto_msgTypes[19]
	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 ExpDefinition.ProtoReflect.Descriptor instead.
func (*ExpDefinition) Descriptor() ([]byte, []int) {
	return file_authzed_api_v1_experimental_service_proto_rawDescGZIP(), []int{19}
}

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

func (x *ExpDefinition) GetComment() string {
	if x != nil {
		return x.Comment
	}
	return ""
}

func (x *ExpDefinition) GetRelations() []*ExpRelation {
	if x != nil {
		return x.Relations
	}
	return nil
}

func (x *ExpDefinition) GetPermissions() []*ExpPermission {
	if x != nil {
		return x.Permissions
	}
	return nil
}

// ExpCaveat is the representation of a caveat in the schema.
type ExpCaveat struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	Name  string                 `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// comment is a human-readable comments on the caveat. Will include
	// delimiter characters.
	Comment       string                `protobuf:"bytes,2,opt,name=comment,proto3" json:"comment,omitempty"`
	Parameters    []*ExpCaveatParameter `protobuf:"bytes,3,rep,name=parameters,proto3" json:"parameters,omitempty"`
	Expression    string                `protobuf:"bytes,4,opt,name=expression,proto3" json:"expression,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ExpCaveat) ProtoMessage() {}

func (x *ExpCaveat) ProtoReflect() protoreflect.Message {
	mi := &file_authzed_api_v1_experimental_service_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 ExpCaveat.ProtoReflect.Descriptor instead.
func (*ExpCaveat) Descriptor() ([]byte, []int) {
	return file_authzed_api_v1_experimental_service_proto_rawDescGZIP(), []int{20}
}

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

func (x *ExpCaveat) GetComment() string {
	if x != nil {
		return x.Comment
	}
	return ""
}

func (x *ExpCaveat) GetParameters() []*ExpCaveatParameter {
	if x != nil {
		return x.Parameters
	}
	return nil
}

func (x *ExpCaveat) GetExpression() string {
	if x != nil {
		return x.Expression
	}
	return ""
}

// ExpCaveatParameter is the representation of a parameter in a caveat.
type ExpCaveatParameter struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	Name  string                 `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// type is the type of the parameter. Will be a string representing the
	// type, e.g. `int` or `list<string>`
	Type             string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"`
	ParentCaveatName string `protobuf:"bytes,3,opt,name=parent_caveat_name,json=parentCaveatName,proto3" json:"parent_caveat_name,omitempty"`
	unknownFields    protoimpl.UnknownFields
	sizeCache        protoimpl.SizeCache
}

func (x *ExpCaveatParameter) Reset() {
	*x = ExpCaveatParameter{}
	mi := &file_authzed_api_v1_experimental_service_proto_msgTypes[21]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ExpCaveatParameter) ProtoMessage() {}

func (x *ExpCaveatParameter) ProtoReflect() protoreflect.Message {
	mi := &file_authzed_api_v1_experimental_service_proto_msgTypes[21]
	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 ExpCaveatParameter.ProtoReflect.Descriptor instead.
func (*ExpCaveatParameter) Descriptor() ([]byte, []int) {
	return file_authzed_api_v1_experimental_service_proto_rawDescGZIP(), []int{21}
}

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

func (x *ExpCaveatParameter) GetType() string {
	if x != nil {
		return x.Type
	}
	return ""
}

func (x *ExpCaveatParameter) GetParentCaveatName() string {
	if x != nil {
		return x.ParentCaveatName
	}
	return ""
}

// ExpRelation is the representation of a relation in the schema.
type ExpRelation struct {
	state                protoimpl.MessageState `protogen:"open.v1"`
	Name                 string                 `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	Comment              string                 `protobuf:"bytes,2,opt,name=comment,proto3" json:"comment,omitempty"`
	ParentDefinitionName string                 `protobuf:"bytes,3,opt,name=parent_definition_name,json=parentDefinitionName,proto3" json:"parent_definition_name,omitempty"`
	SubjectTypes         []*ExpTypeReference    `protobuf:"bytes,4,rep,name=subject_types,json=subjectTypes,proto3" json:"subject_types,omitempty"`
	unknownFields        protoimpl.UnknownFields
	sizeCache            protoimpl.SizeCache
}

func (x *ExpRelation) Reset() {
	*x = ExpRelation{}
	mi := &file_authzed_api_v1_experimental_service_proto_msgTypes[22]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ExpRelation) ProtoMessage() {}

func (x *ExpRelation) ProtoReflect() protoreflect.Message {
	mi := &file_authzed_api_v1_experimental_service_proto_msgTypes[22]
	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 ExpRelation.ProtoReflect.Descriptor instead.
func (*ExpRelation) Descriptor() ([]byte, []int) {
	return file_authzed_api_v1_experimental_service_proto_rawDescGZIP(), []int{22}
}

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

func (x *ExpRelation) GetComment() string {
	if x != nil {
		return x.Comment
	}
	return ""
}

func (x *ExpRelation) GetParentDefinitionName() string {
	if x != nil {
		return x.ParentDefinitionName
	}
	return ""
}

func (x *ExpRelation) GetSubjectTypes() []*ExpTypeReference {
	if x != nil {
		return x.SubjectTypes
	}
	return nil
}

// ExpTypeReference is the representation of a type reference in the schema.
type ExpTypeReference struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// subject_definition_name is the name of the subject's definition.
	SubjectDefinitionName string `protobuf:"bytes,1,opt,name=subject_definition_name,json=subjectDefinitionName,proto3" json:"subject_definition_name,omitempty"`
	// optional_caveat_name is the name of the caveat that is applied to the subject, if any.
	OptionalCaveatName string `protobuf:"bytes,2,opt,name=optional_caveat_name,json=optionalCaveatName,proto3" json:"optional_caveat_name,omitempty"`
	// Types that are valid to be assigned to Typeref:
	//
	//	*ExpTypeReference_IsTerminalSubject
	//	*ExpTypeReference_OptionalRelationName
	//	*ExpTypeReference_IsPublicWildcard
	Typeref       isExpTypeReference_Typeref `protobuf_oneof:"typeref"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ExpTypeReference) Reset() {
	*x = ExpTypeReference{}
	mi := &file_authzed_api_v1_experimental_service_proto_msgTypes[23]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ExpTypeReference) ProtoMessage() {}

func (x *ExpTypeReference) ProtoReflect() protoreflect.Message {
	mi := &file_authzed_api_v1_experimental_service_proto_msgTypes[23]
	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 ExpTypeReference.ProtoReflect.Descriptor instead.
func (*ExpTypeReference) Descriptor() ([]byte, []int) {
	return file_authzed_api_v1_experimental_service_proto_rawDescGZIP(), []int{23}
}

func (x *ExpTypeReference) GetSubjectDefinitionName() string {
	if x != nil {
		return x.SubjectDefinitionName
	}
	return ""
}

func (x *ExpTypeReference) GetOptionalCaveatName() string {
	if x != nil {
		return x.OptionalCaveatName
	}
	return ""
}

func (x *ExpTypeReference) GetTyperef() isExpTypeReference_Typeref {
	if x != nil {
		return x.Typeref
	}
	return nil
}

func (x *ExpTypeReference) GetIsTerminalSubject() bool {
	if x != nil {
		if x, ok := x.Typeref.(*ExpTypeReference_IsTerminalSubject); ok {
			return x.IsTerminalSubject
		}
	}
	return false
}

func (x *ExpTypeReference) GetOptionalRelationName() string {
	if x != nil {
		if x, ok := x.Typeref.(*ExpTypeReference_OptionalRelationName); ok {
			return x.OptionalRelationName
		}
	}
	return ""
}

func (x *ExpTypeReference) GetIsPublicWildcard() bool {
	if x != nil {
		if x, ok := x.Typeref.(*ExpTypeReference_IsPublicWildcard); ok {
			return x.IsPublicWildcard
		}
	}
	return false
}

type isExpTypeReference_Typeref interface {
	isExpTypeReference_Typeref()
}

type ExpTypeReference_IsTerminalSubject struct {
	// is_terminal_subject is true if the subject is terminal, meaning it is referenced directly vs a sub-relation.
	IsTerminalSubject bool `protobuf:"varint,3,opt,name=is_terminal_subject,json=isTerminalSubject,proto3,oneof"`
}

type ExpTypeReference_OptionalRelationName struct {
	// optional_relation_name is the name of the relation that is applied to the subject, if any.
	OptionalRelationName string `protobuf:"bytes,4,opt,name=optional_relation_name,json=optionalRelationName,proto3,oneof"`
}

type ExpTypeReference_IsPublicWildcard struct {
	// is_public_wildcard is true if the subject is a public wildcard.
	IsPublicWildcard bool `protobuf:"varint,5,opt,name=is_public_wildcard,json=isPublicWildcard,proto3,oneof"`
}

func (*ExpTypeReference_IsTerminalSubject) isExpTypeReference_Typeref() {}

func (*ExpTypeReference_OptionalRelationName) isExpTypeReference_Typeref() {}

func (*ExpTypeReference_IsPublicWildcard) isExpTypeReference_Typeref() {}

// ExpPermission is the representation of a permission in the schema.
type ExpPermission struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	Name  string                 `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// comment is a human-readable comments on the permission. Will include
	// delimiter characters.
	Comment              string `protobuf:"bytes,2,opt,name=comment,proto3" json:"comment,omitempty"`
	ParentDefinitionName string `protobuf:"bytes,3,opt,name=parent_definition_name,json=parentDefinitionName,proto3" json:"parent_definition_name,omitempty"`
	unknownFields        protoimpl.UnknownFields
	sizeCache            protoimpl.SizeCache
}

func (x *ExpPermission) Reset() {
	*x = ExpPermission{}
	mi := &file_authzed_api_v1_experimental_service_proto_msgTypes[24]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ExpPermission) ProtoMessage() {}

func (x *ExpPermission) ProtoReflect() protoreflect.Message {
	mi := &file_authzed_api_v1_experimental_service_proto_msgTypes[24]
	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 ExpPermission.ProtoReflect.Descriptor instead.
func (*ExpPermission) Descriptor() ([]byte, []int) {
	return file_authzed_api_v1_experimental_service_proto_rawDescGZIP(), []int{24}
}

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

func (x *ExpPermission) GetComment() string {
	if x != nil {
		return x.Comment
	}
	return ""
}

func (x *ExpPermission) GetParentDefinitionName() string {
	if x != nil {
		return x.ParentDefinitionName
	}
	return ""
}

type ExperimentalComputablePermissionsRequest struct {
	state          protoimpl.MessageState `protogen:"open.v1"`
	Consistency    *Consistency           `protobuf:"bytes,1,opt,name=consistency,proto3" json:"consistency,omitempty"`
	DefinitionName string                 `protobuf:"bytes,2,opt,name=definition_name,json=definitionName,proto3" json:"definition_name,omitempty"`
	RelationName   string                 `protobuf:"bytes,3,opt,name=relation_name,json=relationName,proto3" json:"relation_name,omitempty"`
	// optional_definition_name_match is a prefix that is matched against the definition name(s)
	// for the permissions returned.
	// If not specified, will be ignored.
	OptionalDefinitionNameFilter string `protobuf:"bytes,4,opt,name=optional_definition_name_filter,json=optionalDefinitionNameFilter,proto3" json:"optional_definition_name_filter,omitempty"`
	unknownFields                protoimpl.UnknownFields
	sizeCache                    protoimpl.SizeCache
}

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

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

func (*ExperimentalComputablePermissionsRequest) ProtoMessage() {}

func (x *ExperimentalComputablePermissionsRequest) ProtoReflect() protoreflect.Message {
	mi := &file_authzed_api_v1_experimental_service_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 ExperimentalComputablePermissionsRequest.ProtoReflect.Descriptor instead.
func (*ExperimentalComputablePermissionsRequest) Descriptor() ([]byte, []int) {
	return file_authzed_api_v1_experimental_service_proto_rawDescGZIP(), []int{25}
}

func (x *ExperimentalComputablePermissionsRequest) GetConsistency() *Consistency {
	if x != nil {
		return x.Consistency
	}
	return nil
}

func (x *ExperimentalComputablePermissionsRequest) GetDefinitionName() string {
	if x != nil {
		return x.DefinitionName
	}
	return ""
}

func (x *ExperimentalComputablePermissionsRequest) GetRelationName() string {
	if x != nil {
		return x.RelationName
	}
	return ""
}

func (x *ExperimentalComputablePermissionsRequest) GetOptionalDefinitionNameFilter() string {
	if x != nil {
		return x.OptionalDefinitionNameFilter
	}
	return ""
}

// ExpRelationReference is a reference to a relation or permission in the schema.
type ExpRelationReference struct {
	state          protoimpl.MessageState `protogen:"open.v1"`
	DefinitionName string                 `protobuf:"bytes,1,opt,name=definition_name,json=definitionName,proto3" json:"definition_name,omitempty"`
	RelationName   string                 `protobuf:"bytes,2,opt,name=relation_name,json=relationName,proto3" json:"relation_name,omitempty"`
	IsPermission   bool                   `protobuf:"varint,3,opt,name=is_permission,json=isPermission,proto3" json:"is_permission,omitempty"`
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

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

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

func (*ExpRelationReference) ProtoMessage() {}

func (x *ExpRelationReference) ProtoReflect() protoreflect.Message {
	mi := &file_authzed_api_v1_experimental_service_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 ExpRelationReference.ProtoReflect.Descriptor instead.
func (*ExpRelationReference) Descriptor() ([]byte, []int) {
	return file_authzed_api_v1_experimental_service_proto_rawDescGZIP(), []int{26}
}

func (x *ExpRelationReference) GetDefinitionName() string {
	if x != nil {
		return x.DefinitionName
	}
	return ""
}

func (x *ExpRelationReference) GetRelationName() string {
	if x != nil {
		return x.RelationName
	}
	return ""
}

func (x *ExpRelationReference) GetIsPermission() bool {
	if x != nil {
		return x.IsPermission
	}
	return false
}

type ExperimentalComputablePermissionsResponse struct {
	state       protoimpl.MessageState  `protogen:"open.v1"`
	Permissions []*ExpRelationReference `protobuf:"bytes,1,rep,name=permissions,proto3" json:"permissions,omitempty"`
	// read_at is the ZedToken at which the schema was read.
	ReadAt        *ZedToken `protobuf:"bytes,2,opt,name=read_at,json=readAt,proto3" json:"read_at,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ExperimentalComputablePermissionsResponse) ProtoMessage() {}

func (x *ExperimentalComputablePermissionsResponse) ProtoReflect() protoreflect.Message {
	mi := &file_authzed_api_v1_experimental_service_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 ExperimentalComputablePermissionsResponse.ProtoReflect.Descriptor instead.
func (*ExperimentalComputablePermissionsResponse) Descriptor() ([]byte, []int) {
	return file_authzed_api_v1_experimental_service_proto_rawDescGZIP(), []int{27}
}

func (x *ExperimentalComputablePermissionsResponse) GetPermissions() []*ExpRelationReference {
	if x != nil {
		return x.Permissions
	}
	return nil
}

func (x *ExperimentalComputablePermissionsResponse) GetReadAt() *ZedToken {
	if x != nil {
		return x.ReadAt
	}
	return nil
}

type ExperimentalDependentRelationsRequest struct {
	state          protoimpl.MessageState `protogen:"open.v1"`
	Consistency    *Consistency           `protobuf:"bytes,1,opt,name=consistency,proto3" json:"consistency,omitempty"`
	DefinitionName string                 `protobuf:"bytes,2,opt,name=definition_name,json=definitionName,proto3" json:"definition_name,omitempty"`
	PermissionName string                 `protobuf:"bytes,3,opt,name=permission_name,json=permissionName,proto3" json:"permission_name,omitempty"`
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

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

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

func (*ExperimentalDependentRelationsRequest) ProtoMessage() {}

func (x *ExperimentalDependentRelationsRequest) ProtoReflect() protoreflect.Message {
	mi := &file_authzed_api_v1_experimental_service_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 ExperimentalDependentRelationsRequest.ProtoReflect.Descriptor instead.
func (*ExperimentalDependentRelationsRequest) Descriptor() ([]byte, []int) {
	return file_authzed_api_v1_experimental_service_proto_rawDescGZIP(), []int{28}
}

func (x *ExperimentalDependentRelationsRequest) GetConsistency() *Consistency {
	if x != nil {
		return x.Consistency
	}
	return nil
}

func (x *ExperimentalDependentRelationsRequest) GetDefinitionName() string {
	if x != nil {
		return x.DefinitionName
	}
	return ""
}

func (x *ExperimentalDependentRelationsRequest) GetPermissionName() string {
	if x != nil {
		return x.PermissionName
	}
	return ""
}

type ExperimentalDependentRelationsResponse struct {
	state     protoimpl.MessageState  `protogen:"open.v1"`
	Relations []*ExpRelationReference `protobuf:"bytes,1,rep,name=relations,proto3" json:"relations,omitempty"`
	// read_at is the ZedToken at which the schema was read.
	ReadAt        *ZedToken `protobuf:"bytes,2,opt,name=read_at,json=readAt,proto3" json:"read_at,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ExperimentalDependentRelationsResponse) ProtoMessage() {}

func (x *ExperimentalDependentRelationsResponse) ProtoReflect() protoreflect.Message {
	mi := &file_authzed_api_v1_experimental_service_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 ExperimentalDependentRelationsResponse.ProtoReflect.Descriptor instead.
func (*ExperimentalDependentRelationsResponse) Descriptor() ([]byte, []int) {
	return file_authzed_api_v1_experimental_service_proto_rawDescGZIP(), []int{29}
}

func (x *ExperimentalDependentRelationsResponse) GetRelations() []*ExpRelationReference {
	if x != nil {
		return x.Relations
	}
	return nil
}

func (x *ExperimentalDependentRelationsResponse) GetReadAt() *ZedToken {
	if x != nil {
		return x.ReadAt
	}
	return nil
}

type ExperimentalDiffSchemaRequest struct {
	state            protoimpl.MessageState `protogen:"open.v1"`
	Consistency      *Consistency           `protobuf:"bytes,1,opt,name=consistency,proto3" json:"consistency,omitempty"`
	ComparisonSchema string                 `protobuf:"bytes,2,opt,name=comparison_schema,json=comparisonSchema,proto3" json:"comparison_schema,omitempty"`
	unknownFields    protoimpl.UnknownFields
	sizeCache        protoimpl.SizeCache
}

func (x *ExperimentalDiffSchemaRequest) Reset() {
	*x = ExperimentalDiffSchemaRequest{}
	mi := &file_authzed_api_v1_experimental_service_proto_msgTypes[30]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ExperimentalDiffSchemaRequest) ProtoMessage() {}

func (x *ExperimentalDiffSchemaRequest) ProtoReflect() protoreflect.Message {
	mi := &file_authzed_api_v1_experimental_service_proto_msgTypes[30]
	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 ExperimentalDiffSchemaRequest.ProtoReflect.Descriptor instead.
func (*ExperimentalDiffSchemaRequest) Descriptor() ([]byte, []int) {
	return file_authzed_api_v1_experimental_service_proto_rawDescGZIP(), []int{30}
}

func (x *ExperimentalDiffSchemaRequest) GetConsistency() *Consistency {
	if x != nil {
		return x.Consistency
	}
	return nil
}

func (x *ExperimentalDiffSchemaRequest) GetComparisonSchema() string {
	if x != nil {
		return x.ComparisonSchema
	}
	return ""
}

type ExperimentalDiffSchemaResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	Diffs []*ExpSchemaDiff       `protobuf:"bytes,1,rep,name=diffs,proto3" json:"diffs,omitempty"`
	// read_at is the ZedToken at which the schema was read.
	ReadAt        *ZedToken `protobuf:"bytes,2,opt,name=read_at,json=readAt,proto3" json:"read_at,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ExperimentalDiffSchemaResponse) Reset() {
	*x = ExperimentalDiffSchemaResponse{}
	mi := &file_authzed_api_v1_experimental_service_proto_msgTypes[31]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ExperimentalDiffSchemaResponse) ProtoMessage() {}

func (x *ExperimentalDiffSchemaResponse) ProtoReflect() protoreflect.Message {
	mi := &file_authzed_api_v1_experimental_service_proto_msgTypes[31]
	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 ExperimentalDiffSchemaResponse.ProtoReflect.Descriptor instead.
func (*ExperimentalDiffSchemaResponse) Descriptor() ([]byte, []int) {
	return file_authzed_api_v1_experimental_service_proto_rawDescGZIP(), []int{31}
}

func (x *ExperimentalDiffSchemaResponse) GetDiffs() []*ExpSchemaDiff {
	if x != nil {
		return x.Diffs
	}
	return nil
}

func (x *ExperimentalDiffSchemaResponse) GetReadAt() *ZedToken {
	if x != nil {
		return x.ReadAt
	}
	return nil
}

type ExpRelationSubjectTypeChange struct {
	state              protoimpl.MessageState `protogen:"open.v1"`
	Relation           *ExpRelation           `protobuf:"bytes,1,opt,name=relation,proto3" json:"relation,omitempty"`
	ChangedSubjectType *ExpTypeReference      `protobuf:"bytes,2,opt,name=changed_subject_type,json=changedSubjectType,proto3" json:"changed_subject_type,omitempty"`
	unknownFields      protoimpl.UnknownFields
	sizeCache          protoimpl.SizeCache
}

func (x *ExpRelationSubjectTypeChange) Reset() {
	*x = ExpRelationSubjectTypeChange{}
	mi := &file_authzed_api_v1_experimental_service_proto_msgTypes[32]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ExpRelationSubjectTypeChange) ProtoMessage() {}

func (x *ExpRelationSubjectTypeChange) ProtoReflect() protoreflect.Message {
	mi := &file_authzed_api_v1_experimental_service_proto_msgTypes[32]
	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 ExpRelationSubjectTypeChange.ProtoReflect.Descriptor instead.
func (*ExpRelationSubjectTypeChange) Descriptor() ([]byte, []int) {
	return file_authzed_api_v1_experimental_service_proto_rawDescGZIP(), []int{32}
}

func (x *ExpRelationSubjectTypeChange) GetRelation() *ExpRelation {
	if x != nil {
		return x.Relation
	}
	return nil
}

func (x *ExpRelationSubjectTypeChange) GetChangedSubjectType() *ExpTypeReference {
	if x != nil {
		return x.ChangedSubjectType
	}
	return nil
}

type ExpCaveatParameterTypeChange struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Parameter     *ExpCaveatParameter    `protobuf:"bytes,1,opt,name=parameter,proto3" json:"parameter,omitempty"`
	PreviousType  string                 `protobuf:"bytes,2,opt,name=previous_type,json=previousType,proto3" json:"previous_type,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ExpCaveatParameterTypeChange) Reset() {
	*x = ExpCaveatParameterTypeChange{}
	mi := &file_authzed_api_v1_experimental_service_proto_msgTypes[33]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ExpCaveatParameterTypeChange) ProtoMessage() {}

func (x *ExpCaveatParameterTypeChange) ProtoReflect() protoreflect.Message {
	mi := &file_authzed_api_v1_experimental_service_proto_msgTypes[33]
	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 ExpCaveatParameterTypeChange.ProtoReflect.Descriptor instead.
func (*ExpCaveatParameterTypeChange) Descriptor() ([]byte, []int) {
	return file_authzed_api_v1_experimental_service_proto_rawDescGZIP(), []int{33}
}

func (x *ExpCaveatParameterTypeChange) GetParameter() *ExpCaveatParameter {
	if x != nil {
		return x.Parameter
	}
	return nil
}

func (x *ExpCaveatParameterTypeChange) GetPreviousType() string {
	if x != nil {
		return x.PreviousType
	}
	return ""
}

// ExpSchemaDiff is the representation of a diff between two schemas.
type ExpSchemaDiff struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Types that are valid to be assigned to Diff:
	//
	//	*ExpSchemaDiff_DefinitionAdded
	//	*ExpSchemaDiff_DefinitionRemoved
	//	*ExpSchemaDiff_DefinitionDocCommentChanged
	//	*ExpSchemaDiff_RelationAdded
	//	*ExpSchemaDiff_RelationRemoved
	//	*ExpSchemaDiff_RelationDocCommentChanged
	//	*ExpSchemaDiff_RelationSubjectTypeAdded
	//	*ExpSchemaDiff_RelationSubjectTypeRemoved
	//	*ExpSchemaDiff_PermissionAdded
	//	*ExpSchemaDiff_PermissionRemoved
	//	*ExpSchemaDiff_PermissionDocCommentChanged
	//	*ExpSchemaDiff_PermissionExprChanged
	//	*ExpSchemaDiff_CaveatAdded
	//	*ExpSchemaDiff_CaveatRemoved
	//	*ExpSchemaDiff_CaveatDocCommentChanged
	//	*ExpSchemaDiff_CaveatExprChanged
	//	*ExpSchemaDiff_CaveatParameterAdded
	//	*ExpSchemaDiff_CaveatParameterRemoved
	//	*ExpSchemaDiff_CaveatParameterTypeChanged
	Diff          isExpSchemaDiff_Diff `protobuf_oneof:"diff"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ExpSchemaDiff) Reset() {
	*x = ExpSchemaDiff{}
	mi := &file_authzed_api_v1_experimental_service_proto_msgTypes[34]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ExpSchemaDiff) ProtoMessage() {}

func (x *ExpSchemaDiff) ProtoReflect() protoreflect.Message {
	mi := &file_authzed_api_v1_experimental_service_proto_msgTypes[34]
	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 ExpSchemaDiff.ProtoReflect.Descriptor instead.
func (*ExpSchemaDiff) Descriptor() ([]byte, []int) {
	return file_authzed_api_v1_experimental_service_proto_rawDescGZIP(), []int{34}
}

func (x *ExpSchemaDiff) GetDiff() isExpSchemaDiff_Diff {
	if x != nil {
		return x.Diff
	}
	return nil
}

func (x *ExpSchemaDiff) GetDefinitionAdded() *ExpDefinition {
	if x != nil {
		if x, ok := x.Diff.(*ExpSchemaDiff_DefinitionAdded); ok {
			return x.DefinitionAdded
		}
	}
	return nil
}

func (x *ExpSchemaDiff) GetDefinitionRemoved() *ExpDefinition {
	if x != nil {
		if x, ok := x.Diff.(*ExpSchemaDiff_DefinitionRemoved); ok {
			return x.DefinitionRemoved
		}
	}
	return nil
}

func (x *ExpSchemaDiff) GetDefinitionDocCommentChanged() *ExpDefinition {
	if x != nil {
		if x, ok := x.Diff.(*ExpSchemaDiff_DefinitionDocCommentChanged); ok {
			return x.DefinitionDocCommentChanged
		}
	}
	return nil
}

func (x *ExpSchemaDiff) GetRelationAdded() *ExpRelation {
	if x != nil {
		if x, ok := x.Diff.(*ExpSchemaDiff_RelationAdded); ok {
			return x.RelationAdded
		}
	}
	return nil
}

func (x *ExpSchemaDiff) GetRelationRemoved() *ExpRelation {
	if x != nil {
		if x, ok := x.Diff.(*ExpSchemaDiff_RelationRemoved); ok {
			return x.RelationRemoved
		}
	}
	return nil
}

func (x *ExpSchemaDiff) GetRelationDocCommentChanged() *ExpRelation {
	if x != nil {
		if x, ok := x.Diff.(*ExpSchemaDiff_RelationDocCommentChanged); ok {
			return x.RelationDocCommentChanged
		}
	}
	return nil
}

func (x *ExpSchemaDiff) GetRelationSubjectTypeAdded() *ExpRelationSubjectTypeChange {
	if x != nil {
		if x, ok := x.Diff.(*ExpSchemaDiff_RelationSubjectTypeAdded); ok {
			return x.RelationSubjectTypeAdded
		}
	}
	return nil
}

func (x *ExpSchemaDiff) GetRelationSubjectTypeRemoved() *ExpRelationSubjectTypeChange {
	if x != nil {
		if x, ok := x.Diff.(*ExpSchemaDiff_RelationSubjectTypeRemoved); ok {
			return x.RelationSubjectTypeRemoved
		}
	}
	return nil
}

func (x *ExpSchemaDiff) GetPermissionAdded() *ExpPermission {
	if x != nil {
		if x, ok := x.Diff.(*ExpSchemaDiff_PermissionAdded); ok {
			return x.PermissionAdded
		}
	}
	return nil
}

func (x *ExpSchemaDiff) GetPermissionRemoved() *ExpPermission {
	if x != nil {
		if x, ok := x.Diff.(*ExpSchemaDiff_PermissionRemoved); ok {
			return x.PermissionRemoved
		}
	}
	return nil
}

func (x *ExpSchemaDiff) GetPermissionDocCommentChanged() *ExpPermission {
	if x != nil {
		if x, ok := x.Diff.(*ExpSchemaDiff_PermissionDocCommentChanged); ok {
			return x.PermissionDocCommentChanged
		}
	}
	return nil
}

func (x *ExpSchemaDiff) GetPermissionExprChanged() *ExpPermission {
	if x != nil {
		if x, ok := x.Diff.(*ExpSchemaDiff_PermissionExprChanged); ok {
			return x.PermissionExprChanged
		}
	}
	return nil
}

func (x *ExpSchemaDiff) GetCaveatAdded() *ExpCaveat {
	if x != nil {
		if x, ok := x.Diff.(*ExpSchemaDiff_CaveatAdded); ok {
			return x.CaveatAdded
		}
	}
	return nil
}

func (x *ExpSchemaDiff) GetCaveatRemoved() *ExpCaveat {
	if x != nil {
		if x, ok := x.Diff.(*ExpSchemaDiff_CaveatRemoved); ok {
			return x.CaveatRemoved
		}
	}
	return nil
}

func (x *ExpSchemaDiff) GetCaveatDocCommentChanged() *ExpCaveat {
	if x != nil {
		if x, ok := x.Diff.(*ExpSchemaDiff_CaveatDocCommentChanged); ok {
			return x.CaveatDocCommentChanged
		}
	}
	return nil
}

func (x *ExpSchemaDiff) GetCaveatExprChanged() *ExpCaveat {
	if x != nil {
		if x, ok := x.Diff.(*ExpSchemaDiff_CaveatExprChanged); ok {
			return x.CaveatExprChanged
		}
	}
	return nil
}

func (x *ExpSchemaDiff) GetCaveatParameterAdded() *ExpCaveatParameter {
	if x != nil {
		if x, ok := x.Diff.(*ExpSchemaDiff_CaveatParameterAdded); ok {
			return x.CaveatParameterAdded
		}
	}
	return nil
}

func (x *ExpSchemaDiff) GetCaveatParameterRemoved() *ExpCaveatParameter {
	if x != nil {
		if x, ok := x.Diff.(*ExpSchemaDiff_CaveatParameterRemoved); ok {
			return x.CaveatParameterRemoved
		}
	}
	return nil
}

func (x *ExpSchemaDiff) GetCaveatParameterTypeChanged() *ExpCaveatParameterTypeChange {
	if x != nil {
		if x, ok := x.Diff.(*ExpSchemaDiff_CaveatParameterTypeChanged); ok {
			return x.CaveatParameterTypeChanged
		}
	}
	return nil
}

type isExpSchemaDiff_Diff interface {
	isExpSchemaDiff_Diff()
}

type ExpSchemaDiff_DefinitionAdded struct {
	DefinitionAdded *ExpDefinition `protobuf:"bytes,1,opt,name=definition_added,json=definitionAdded,proto3,oneof"`
}

type ExpSchemaDiff_DefinitionRemoved struct {
	DefinitionRemoved *ExpDefinition `protobuf:"bytes,2,opt,name=definition_removed,json=definitionRemoved,proto3,oneof"`
}

type ExpSchemaDiff_DefinitionDocCommentChanged struct {
	DefinitionDocCommentChanged *ExpDefinition `protobuf:"bytes,3,opt,name=definition_doc_comment_changed,json=definitionDocCommentChanged,proto3,oneof"`
}

type ExpSchemaDiff_RelationAdded struct {
	RelationAdded *ExpRelation `protobuf:"bytes,4,opt,name=relation_added,json=relationAdded,proto3,oneof"`
}

type ExpSchemaDiff_RelationRemoved struct {
	RelationRemoved *ExpRelation `protobuf:"bytes,5,opt,name=relation_removed,json=relationRemoved,proto3,oneof"`
}

type ExpSchemaDiff_RelationDocCommentChanged struct {
	RelationDocCommentChanged *ExpRelation `protobuf:"bytes,6,opt,name=relation_doc_comment_changed,json=relationDocCommentChanged,proto3,oneof"`
}

type ExpSchemaDiff_RelationSubjectTypeAdded struct {
	RelationSubjectTypeAdded *ExpRelationSubjectTypeChange `protobuf:"bytes,7,opt,name=relation_subject_type_added,json=relationSubjectTypeAdded,proto3,oneof"`
}

type ExpSchemaDiff_RelationSubjectTypeRemoved struct {
	RelationSubjectTypeRemoved *ExpRelationSubjectTypeChange `protobuf:"bytes,8,opt,name=relation_subject_type_removed,json=relationSubjectTypeRemoved,proto3,oneof"`
}

type ExpSchemaDiff_PermissionAdded struct {
	PermissionAdded *ExpPermission `protobuf:"bytes,9,opt,name=permission_added,json=permissionAdded,proto3,oneof"`
}

type ExpSchemaDiff_PermissionRemoved struct {
	PermissionRemoved *ExpPermission `protobuf:"bytes,10,opt,name=permission_removed,json=permissionRemoved,proto3,oneof"`
}

type ExpSchemaDiff_PermissionDocCommentChanged struct {
	PermissionDocCommentChanged *ExpPermission `protobuf:"bytes,11,opt,name=permission_doc_comment_changed,json=permissionDocCommentChanged,proto3,oneof"`
}

type ExpSchemaDiff_PermissionExprChanged struct {
	PermissionExprChanged *ExpPermission `protobuf:"bytes,12,opt,name=permission_expr_changed,json=permissionExprChanged,proto3,oneof"`
}

type ExpSchemaDiff_CaveatAdded struct {
	CaveatAdded *ExpCaveat `protobuf:"bytes,13,opt,name=caveat_added,json=caveatAdded,proto3,oneof"`
}

type ExpSchemaDiff_CaveatRemoved struct {
	CaveatRemoved *ExpCaveat `protobuf:"bytes,14,opt,name=caveat_removed,json=caveatRemoved,proto3,oneof"`
}

type ExpSchemaDiff_CaveatDocCommentChanged struct {
	CaveatDocCommentChanged *ExpCaveat `protobuf:"bytes,15,opt,name=caveat_doc_comment_changed,json=caveatDocCommentChanged,proto3,oneof"`
}

type ExpSchemaDiff_CaveatExprChanged struct {
	CaveatExprChanged *ExpCaveat `protobuf:"bytes,16,opt,name=caveat_expr_changed,json=caveatExprChanged,proto3,oneof"`
}

type ExpSchemaDiff_CaveatParameterAdded struct {
	CaveatParameterAdded *ExpCaveatParameter `protobuf:"bytes,17,opt,name=caveat_parameter_added,json=caveatParameterAdded,proto3,oneof"`
}

type ExpSchemaDiff_CaveatParameterRemoved struct {
	CaveatParameterRemoved *ExpCaveatParameter `protobuf:"bytes,18,opt,name=caveat_parameter_removed,json=caveatParameterRemoved,proto3,oneof"`
}

type ExpSchemaDiff_CaveatParameterTypeChanged struct {
	CaveatParameterTypeChanged *ExpCaveatParameterTypeChange `protobuf:"bytes,19,opt,name=caveat_parameter_type_changed,json=caveatParameterTypeChanged,proto3,oneof"`
}

func (*ExpSchemaDiff_DefinitionAdded) isExpSchemaDiff_Diff() {}

func (*ExpSchemaDiff_DefinitionRemoved) isExpSchemaDiff_Diff() {}

func (*ExpSchemaDiff_DefinitionDocCommentChanged) isExpSchemaDiff_Diff() {}

func (*ExpSchemaDiff_RelationAdded) isExpSchemaDiff_Diff() {}

func (*ExpSchemaDiff_RelationRemoved) isExpSchemaDiff_Diff() {}

func (*ExpSchemaDiff_RelationDocCommentChanged) isExpSchemaDiff_Diff() {}

func (*ExpSchemaDiff_RelationSubjectTypeAdded) isExpSchemaDiff_Diff() {}

func (*ExpSchemaDiff_RelationSubjectTypeRemoved) isExpSchemaDiff_Diff() {}

func (*ExpSchemaDiff_PermissionAdded) isExpSchemaDiff_Diff() {}

func (*ExpSchemaDiff_PermissionRemoved) isExpSchemaDiff_Diff() {}

func (*ExpSchemaDiff_PermissionDocCommentChanged) isExpSchemaDiff_Diff() {}

func (*ExpSchemaDiff_PermissionExprChanged) isExpSchemaDiff_Diff() {}

func (*ExpSchemaDiff_CaveatAdded) isExpSchemaDiff_Diff() {}

func (*ExpSchemaDiff_CaveatRemoved) isExpSchemaDiff_Diff() {}

func (*ExpSchemaDiff_CaveatDocCommentChanged) isExpSchemaDiff_Diff() {}

func (*ExpSchemaDiff_CaveatExprChanged) isExpSchemaDiff_Diff() {}

func (*ExpSchemaDiff_CaveatParameterAdded) isExpSchemaDiff_Diff() {}

func (*ExpSchemaDiff_CaveatParameterRemoved) isExpSchemaDiff_Diff() {}

func (*ExpSchemaDiff_CaveatParameterTypeChanged) isExpSchemaDiff_Diff() {}

var File_authzed_api_v1_experimental_service_proto protoreflect.FileDescriptor

const file_authzed_api_v1_experimental_service_proto_rawDesc = "" +
	"\n" +
	")authzed/api/v1/experimental_service.proto\x12\x0eauthzed.api.v1\x1a\x19authzed/api/v1/core.proto\x1a'authzed/api/v1/permission_service.proto\x1a\x1bbuf/validate/validate.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x17google/rpc/status.proto\x1a.protoc-gen-openapiv2/options/annotations.proto\x1a\x17validate/validate.proto\"\xff\x01\n" +
	".ExperimentalRegisterRelationshipCounterRequest\x12h\n" +
	"\x04name\x18\x01 \x01(\tBT\xfaB'r%(@2!^([a-z][a-z0-9_]{1,62}[a-z0-9])?$\xbaH'r%(@2!^([a-z][a-z0-9_]{1,62}[a-z0-9])?$R\x04name\x12c\n" +
	"\x13relationship_filter\x18\x02 \x01(\v2\".authzed.api.v1.RelationshipFilterB\x0e\xfaB\x05\x8a\x01\x02\x10\x01\xbaH\x03\xc8\x01\x01R\x12relationshipFilter\"1\n" +
	"/ExperimentalRegisterRelationshipCounterResponse\"\x91\x01\n" +
	"%ExperimentalCountRelationshipsRequest\x12h\n" +
	"\x04name\x18\x01 \x01(\tBT\xfaB'r%(@2!^([a-z][a-z0-9_]{1,62}[a-z0-9])?$\xbaH'r%(@2!^([a-z][a-z0-9_]{1,62}[a-z0-9])?$R\x04name\"\xca\x01\n" +
	"&ExperimentalCountRelationshipsResponse\x12<\n" +
	"\x19counter_still_calculating\x18\x01 \x01(\bH\x00R\x17counterStillCalculating\x12P\n" +
	"\x12read_counter_value\x18\x02 \x01(\v2 .authzed.api.v1.ReadCounterValueH\x00R\x10readCounterValueB\x10\n" +
	"\x0ecounter_result\"\x84\x01\n" +
	"\x10ReadCounterValue\x12-\n" +
	"\x12relationship_count\x18\x01 \x01(\x04R\x11relationshipCount\x12A\n" +
	"\aread_at\x18\x02 \x01(\v2\x18.authzed.api.v1.ZedTokenB\x0e\xfaB\x05\x8a\x01\x02\x10\x01\xbaH\x03\xc8\x01\x01R\x06readAt\"\x9c\x01\n" +
	"0ExperimentalUnregisterRelationshipCounterRequest\x12h\n" +
	"\x04name\x18\x01 \x01(\tBT\xfaB'r%(@2!^([a-z][a-z0-9_]{1,62}[a-z0-9])?$\xbaH'r%(@2!^([a-z][a-z0-9_]{1,62}[a-z0-9])?$R\x04name\"3\n" +
	"1ExperimentalUnregisterRelationshipCounterResponse\"\xbd\x01\n" +
	"\x1aBulkCheckPermissionRequest\x12=\n" +
	"\vconsistency\x18\x01 \x01(\v2\x1b.authzed.api.v1.ConsistencyR\vconsistency\x12`\n" +
	"\x05items\x18\x02 \x03(\v2..authzed.api.v1.BulkCheckPermissionRequestItemB\x1a\xfaB\n" +
	"\x92\x01\a\"\x05\x8a\x01\x02\x10\x01\xbaH\b\x92\x01\x05\"\x03\xc8\x01\x01\x18\x01R\x05items\"\xf2\x02\n" +
	"\x1eBulkCheckPermissionRequestItem\x12K\n" +
	"\bresource\x18\x01 \x01(\v2\x1f.authzed.api.v1.ObjectReferenceB\x0e\xfaB\x05\x8a\x01\x02\x10\x01\xbaH\x03\xc8\x01\x01R\bresource\x12t\n" +
	"\n" +
	"permission\x18\x02 \x01(\tBT\xfaB'r%(@2!^([a-z][a-z0-9_]{1,62}[a-z0-9])?$\xbaH'r%(@2!^([a-z][a-z0-9_]{1,62}[a-z0-9])?$R\n" +
	"permission\x12J\n" +
	"\asubject\x18\x03 \x01(\v2 .authzed.api.v1.SubjectReferenceB\x0e\xfaB\x05\x8a\x01\x02\x10\x01\xbaH\x03\xc8\x01\x01R\asubject\x12A\n" +
	"\acontext\x18\x04 \x01(\v2\x17.google.protobuf.StructB\x0e\xfaB\x05\x8a\x01\x02\x10\x00\xbaH\x03\xc8\x01\x00R\acontext\"\xbf\x01\n" +
	"\x1bBulkCheckPermissionResponse\x12G\n" +
	"\n" +
	"checked_at\x18\x01 \x01(\v2\x18.authzed.api.v1.ZedTokenB\x0e\xfaB\x05\x8a\x01\x02\x10\x00\xbaH\x03\xc8\x01\x00R\tcheckedAt\x12W\n" +
	"\x05pairs\x18\x02 \x03(\v2'.authzed.api.v1.BulkCheckPermissionPairB\x18\xfaB\n" +
	"\x92\x01\a\"\x05\x8a\x01\x02\x10\x01\xbaH\b\x92\x01\x05\"\x03\xc8\x01\x01R\x05pairs\"\xe2\x01\n" +
	"\x17BulkCheckPermissionPair\x12H\n" +
	"\arequest\x18\x01 \x01(\v2..authzed.api.v1.BulkCheckPermissionRequestItemR\arequest\x12E\n" +
	"\x04item\x18\x02 \x01(\v2/.authzed.api.v1.BulkCheckPermissionResponseItemH\x00R\x04item\x12*\n" +
	"\x05error\x18\x03 \x01(\v2\x12.google.rpc.StatusH\x00R\x05errorB\n" +
	"\n" +
	"\bresponse\"\xfa\x01\n" +
	"\x1fBulkCheckPermissionResponseItem\x12t\n" +
	"\x0epermissionship\x18\x01 \x01(\x0e26.authzed.api.v1.CheckPermissionResponse.PermissionshipB\x14\xfaB\a\x82\x01\x04\x10\x01 \x00\xbaH\a\x82\x01\x04\x10\x01 \x00R\x0epermissionship\x12a\n" +
	"\x13partial_caveat_info\x18\x02 \x01(\v2!.authzed.api.v1.PartialCaveatInfoB\x0e\xfaB\x05\x8a\x01\x02\x10\x00\xbaH\x03\xc8\x01\x00R\x11partialCaveatInfo\"~\n" +
	"\x1eBulkImportRelationshipsRequest\x12\\\n" +
	"\rrelationships\x18\x01 \x03(\v2\x1c.authzed.api.v1.RelationshipB\x18\xfaB\n" +
	"\x92\x01\a\"\x05\x8a\x01\x02\x10\x01\xbaH\b\x92\x01\x05\"\x03\xc8\x01\x01R\rrelationships\"@\n" +
	"\x1fBulkImportRelationshipsResponse\x12\x1d\n" +
	"\n" +
	"num_loaded\x18\x01 \x01(\x04R\tnumLoaded\"\xbd\x02\n" +
	"\x1eBulkExportRelationshipsRequest\x12=\n" +
	"\vconsistency\x18\x01 \x01(\v2\x1b.authzed.api.v1.ConsistencyR\vconsistency\x125\n" +
	"\x0eoptional_limit\x18\x02 \x01(\rB\x0e\xfaB\x04*\x02(\x00\xbaH\x04*\x02(\x00R\roptionalLimit\x12?\n" +
	"\x0foptional_cursor\x18\x03 \x01(\v2\x16.authzed.api.v1.CursorR\x0eoptionalCursor\x12d\n" +
	"\x1coptional_relationship_filter\x18\x04 \x01(\v2\".authzed.api.v1.RelationshipFilterR\x1aoptionalRelationshipFilter\"\xad\x01\n" +
	"\x1fBulkExportRelationshipsResponse\x12F\n" +
	"\x13after_result_cursor\x18\x01 \x01(\v2\x16.authzed.api.v1.CursorR\x11afterResultCursor\x12B\n" +
	"\rrelationships\x18\x02 \x03(\v2\x1c.authzed.api.v1.RelationshipR\rrelationships\"\xad\x01\n" +
	" ExperimentalReflectSchemaRequest\x12=\n" +
	"\vconsistency\x18\x01 \x01(\v2\x1b.authzed.api.v1.ConsistencyR\vconsistency\x12J\n" +
	"\x10optional_filters\x18\x02 \x03(\v2\x1f.authzed.api.v1.ExpSchemaFilterR\x0foptionalFilters\"\xcc\x01\n" +
	"!ExperimentalReflectSchemaResponse\x12?\n" +
	"\vdefinitions\x18\x01 \x03(\v2\x1d.authzed.api.v1.ExpDefinitionR\vdefinitions\x123\n" +
	"\acaveats\x18\x02 \x03(\v2\x19.authzed.api.v1.ExpCaveatR\acaveats\x121\n" +
	"\aread_at\x18\x03 \x01(\v2\x18.authzed.api.v1.ZedTokenR\x06readAt\"\xa1\x02\n" +
	"\x0fExpSchemaFilter\x12E\n" +
	"\x1foptional_definition_name_filter\x18\x01 \x01(\tR\x1coptionalDefinitionNameFilter\x12=\n" +
	"\x1boptional_caveat_name_filter\x18\x02 \x01(\tR\x18optionalCaveatNameFilter\x12A\n" +
	"\x1doptional_relation_name_filter\x18\x03 \x01(\tR\x1aoptionalRelationNameFilter\x12E\n" +
	"\x1foptional_permission_name_filter\x18\x04 \x01(\tR\x1coptionalPermissionNameFilter\"\xb9\x01\n" +
	"\rExpDefinition\x12\x12\n" +
	"\x04name\x18\x01 \x01(\tR\x04name\x12\x18\n" +
	"\acomment\x18\x02 \x01(\tR\acomment\x129\n" +
	"\trelations\x18\x03 \x03(\v2\x1b.authzed.api.v1.ExpRelationR\trelations\x12?\n" +
	"\vpermissions\x18\x04 \x03(\v2\x1d.authzed.api.v1.ExpPermissionR\vpermissions\"\x9d\x01\n" +
	"\tExpCaveat\x12\x12\n" +
	"\x04name\x18\x01 \x01(\tR\x04name\x12\x18\n" +
	"\acomment\x18\x02 \x01(\tR\acomment\x12B\n" +
	"\n" +
	"parameters\x18\x03 \x03(\v2\".authzed.api.v1.ExpCaveatParameterR\n" +
	"parameters\x12\x1e\n" +
	"\n" +
	"expression\x18\x04 \x01(\tR\n" +
	"expression\"j\n" +
	"\x12ExpCaveatParameter\x12\x12\n" +
	"\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n" +
	"\x04type\x18\x02 \x01(\tR\x04type\x12,\n" +
	"\x12parent_caveat_name\x18\x03 \x01(\tR\x10parentCaveatName\"\xb8\x01\n" +
	"\vExpRelation\x12\x12\n" +
	"\x04name\x18\x01 \x01(\tR\x04name\x12\x18\n" +
	"\acomment\x18\x02 \x01(\tR\acomment\x124\n" +
	"\x16parent_definition_name\x18\x03 \x01(\tR\x14parentDefinitionName\x12E\n" +
	"\rsubject_types\x18\x04 \x03(\v2 .authzed.api.v1.ExpTypeReferenceR\fsubjectTypes\"\xa1\x02\n" +
	"\x10ExpTypeReference\x126\n" +
	"\x17subject_definition_name\x18\x01 \x01(\tR\x15subjectDefinitionName\x120\n" +
	"\x14optional_caveat_name\x18\x02 \x01(\tR\x12optionalCaveatName\x120\n" +
	"\x13is_terminal_subject\x18\x03 \x01(\bH\x00R\x11isTerminalSubject\x126\n" +
	"\x16optional_relation_name\x18\x04 \x01(\tH\x00R\x14optionalRelationName\x12.\n" +
	"\x12is_public_wildcard\x18\x05 \x01(\bH\x00R\x10isPublicWildcardB\t\n" +
	"\atyperef\"s\n" +
	"\rExpPermission\x12\x12\n" +
	"\x04name\x18\x01 \x01(\tR\x04name\x12\x18\n" +
	"\acomment\x18\x02 \x01(\tR\acomment\x124\n" +
	"\x16parent_definition_name\x18\x03 \x01(\tR\x14parentDefinitionName\"\xfe\x01\n" +
	"(ExperimentalComputablePermissionsRequest\x12=\n" +
	"\vconsistency\x18\x01 \x01(\v2\x1b.authzed.api.v1.ConsistencyR\vconsistency\x12'\n" +
	"\x0fdefinition_name\x18\x02 \x01(\tR\x0edefinitionName\x12#\n" +
	"\rrelation_name\x18\x03 \x01(\tR\frelationName\x12E\n" +
	"\x1foptional_definition_name_filter\x18\x04 \x01(\tR\x1coptionalDefinitionNameFilter\"\x89\x01\n" +
	"\x14ExpRelationReference\x12'\n" +
	"\x0fdefinition_name\x18\x01 \x01(\tR\x0edefinitionName\x12#\n" +
	"\rrelation_name\x18\x02 \x01(\tR\frelationName\x12#\n" +
	"\ris_permission\x18\x03 \x01(\bR\fisPermission\"\xa6\x01\n" +
	")ExperimentalComputablePermissionsResponse\x12F\n" +
	"\vpermissions\x18\x01 \x03(\v2$.authzed.api.v1.ExpRelationReferenceR\vpermissions\x121\n" +
	"\aread_at\x18\x02 \x01(\v2\x18.authzed.api.v1.ZedTokenR\x06readAt\"\xb8\x01\n" +
	"%ExperimentalDependentRelationsRequest\x12=\n" +
	"\vconsistency\x18\x01 \x01(\v2\x1b.authzed.api.v1.ConsistencyR\vconsistency\x12'\n" +
	"\x0fdefinition_name\x18\x02 \x01(\tR\x0edefinitionName\x12'\n" +
	"\x0fpermission_name\x18\x03 \x01(\tR\x0epermissionName\"\x9f\x01\n" +
	"&ExperimentalDependentRelationsResponse\x12B\n" +
	"\trelations\x18\x01 \x03(\v2$.authzed.api.v1.ExpRelationReferenceR\trelations\x121\n" +
	"\aread_at\x18\x02 \x01(\v2\x18.authzed.api.v1.ZedTokenR\x06readAt\"\x8b\x01\n" +
	"\x1dExperimentalDiffSchemaRequest\x12=\n" +
	"\vconsistency\x18\x01 \x01(\v2\x1b.authzed.api.v1.ConsistencyR\vconsistency\x12+\n" +
	"\x11comparison_schema\x18\x02 \x01(\tR\x10comparisonSchema\"\x88\x01\n" +
	"\x1eExperimentalDiffSchemaResponse\x123\n" +
	"\x05diffs\x18\x01 \x03(\v2\x1d.authzed.api.v1.ExpSchemaDiffR\x05diffs\x121\n" +
	"\aread_at\x18\x02 \x01(\v2\x18.authzed.api.v1.ZedTokenR\x06readAt\"\xab\x01\n" +
	"\x1cExpRelationSubjectTypeChange\x127\n" +
	"\brelation\x18\x01 \x01(\v2\x1b.authzed.api.v1.ExpRelationR\brelation\x12R\n" +
	"\x14changed_subject_type\x18\x02 \x01(\v2 .authzed.api.v1.ExpTypeReferenceR\x12changedSubjectType\"\x85\x01\n" +
	"\x1cExpCaveatParameterTypeChange\x12@\n" +
	"\tparameter\x18\x01 \x01(\v2\".authzed.api.v1.ExpCaveatParameterR\tparameter\x12#\n" +
	"\rprevious_type\x18\x02 \x01(\tR\fpreviousType\"\xa0\r\n" +
	"\rExpSchemaDiff\x12J\n" +
	"\x10definition_added\x18\x01 \x01(\v2\x1d.authzed.api.v1.ExpDefinitionH\x00R\x0fdefinitionAdded\x12N\n" +
	"\x12definition_removed\x18\x02 \x01(\v2\x1d.authzed.api.v1.ExpDefinitionH\x00R\x11definitionRemoved\x12d\n" +
	"\x1edefinition_doc_comment_changed\x18\x03 \x01(\v2\x1d.authzed.api.v1.ExpDefinitionH\x00R\x1bdefinitionDocCommentChanged\x12D\n" +
	"\x0erelation_added\x18\x04 \x01(\v2\x1b.authzed.api.v1.ExpRelationH\x00R\rrelationAdded\x12H\n" +
	"\x10relation_removed\x18\x05 \x01(\v2\x1b.authzed.api.v1.ExpRelationH\x00R\x0frelationRemoved\x12^\n" +
	"\x1crelation_doc_comment_changed\x18\x06 \x01(\v2\x1b.authzed.api.v1.ExpRelationH\x00R\x19relationDocCommentChanged\x12m\n" +
	"\x1brelation_subject_type_added\x18\a \x01(\v2,.authzed.api.v1.ExpRelationSubjectTypeChangeH\x00R\x18relationSubjectTypeAdded\x12q\n" +
	"\x1drelation_subject_type_removed\x18\b \x01(\v2,.authzed.api.v1.ExpRelationSubjectTypeChangeH\x00R\x1arelationSubjectTypeRemoved\x12J\n" +
	"\x10permission_added\x18\t \x01(\v2\x1d.authzed.api.v1.ExpPermissionH\x00R\x0fpermissionAdded\x12N\n" +
	"\x12permission_removed\x18\n" +
	" \x01(\v2\x1d.authzed.api.v1.ExpPermissionH\x00R\x11permissionRemoved\x12d\n" +
	"\x1epermission_doc_comment_changed\x18\v \x01(\v2\x1d.authzed.api.v1.ExpPermissionH\x00R\x1bpermissionDocCommentChanged\x12W\n" +
	"\x17permission_expr_changed\x18\f \x01(\v2\x1d.authzed.api.v1.ExpPermissionH\x00R\x15permissionExprChanged\x12>\n" +
	"\fcaveat_added\x18\r \x01(\v2\x19.authzed.api.v1.ExpCaveatH\x00R\vcaveatAdded\x12B\n" +
	"\x0ecaveat_removed\x18\x0e \x01(\v2\x19.authzed.api.v1.ExpCaveatH\x00R\rcaveatRemoved\x12X\n" +
	"\x1acaveat_doc_comment_changed\x18\x0f \x01(\v2\x19.authzed.api.v1.ExpCaveatH\x00R\x17caveatDocCommentChanged\x12K\n" +
	"\x13caveat_expr_changed\x18\x10 \x01(\v2\x19.authzed.api.v1.ExpCaveatH\x00R\x11caveatExprChanged\x12Z\n" +
	"\x16caveat_parameter_added\x18\x11 \x01(\v2\".authzed.api.v1.ExpCaveatParameterH\x00R\x14caveatParameterAdded\x12^\n" +
	"\x18caveat_parameter_removed\x18\x12 \x01(\v2\".authzed.api.v1.ExpCaveatParameterH\x00R\x16caveatParameterRemoved\x12q\n" +
	"\x1dcaveat_parameter_type_changed\x18\x13 \x01(\v2,.authzed.api.v1.ExpCaveatParameterTypeChangeH\x00R\x1acaveatParameterTypeChangedB\x06\n" +
	"\x04diff2\xd8\x10\n" +
	"\x13ExperimentalService\x12\xc4\x01\n" +
	"\x17BulkImportRelationships\x12..authzed.api.v1.BulkImportRelationshipsRequest\x1a/.authzed.api.v1.BulkImportRelationshipsResponse\"F\x92A\f\n" +
	"\n" +
	"Deprecated\x82\xd3\xe4\x93\x02.:\x01*\")/v1/experimental/relationships/bulkimport\x88\x02\x01(\x01\x12\xc4\x01\n" +
	"\x17BulkExportRelationships\x12..authzed.api.v1.BulkExportRelationshipsRequest\x1a/.authzed.api.v1.BulkExportRelationshipsResponse\"F\x92A\f\n" +
	"\n" +
	"Deprecated\x82\xd3\xe4\x93\x02.:\x01*\")/v1/experimental/relationships/bulkexport\x88\x02\x010\x01\x12\xbd\x01\n" +
	"\x13BulkCheckPermission\x12*.authzed.api.v1.BulkCheckPermissionRequest\x1a+.authzed.api.v1.BulkCheckPermissionResponse\"M\x92A\f\n" +
	"\n" +
	"Deprecated\x82\xd3\xe4\x93\x025:\x01*\"0/v1/experimental/permissions/bulkcheckpermission\x88\x02\x01\x12\xbd\x01\n" +
	"\x19ExperimentalReflectSchema\x120.authzed.api.v1.ExperimentalReflectSchemaRequest\x1a1.authzed.api.v1.ExperimentalReflectSchemaResponse\";\x92A\f\n" +
	"\n" +
	"Deprecated\x82\xd3\xe4\x93\x02#:\x01*\"\x1e/v1/experimental/reflectschema\x88\x02\x01\x12\xde\x01\n" +
	"!ExperimentalComputablePermissions\x128.authzed.api.v1.ExperimentalComputablePermissionsRequest\x1a9.authzed.api.v1.ExperimentalComputablePermissionsResponse\"D\x92A\f\n" +
	"\n" +
	"Deprecated\x82\xd3\xe4\x93\x02,:\x01*\"'/v1/experimental/permissions/computable\x88\x02\x01\x12\xd4\x01\n" +
	"\x1eExperimentalDependentRelations\x125.authzed.api.v1.ExperimentalDependentRelationsRequest\x1a6.authzed.api.v1.ExperimentalDependentRelationsResponse\"C\x92A\f\n" +
	"\n" +
	"Deprecated\x82\xd3\xe4\x93\x02+:\x01*\"&/v1/experimental/permissions/dependent\x88\x02\x01\x12\xb1\x01\n" +
	"\x16ExperimentalDiffSchema\x12-.authzed.api.v1.ExperimentalDiffSchemaRequest\x1a..authzed.api.v1.ExperimentalDiffSchemaResponse\"8\x92A\f\n" +
	"\n" +
	"Deprecated\x82\xd3\xe4\x93\x02 :\x01*\"\x1b/v1/experimental/diffschema\x88\x02\x01\x12\xf4\x01\n" +
	"'ExperimentalRegisterRelationshipCounter\x12>.authzed.api.v1.ExperimentalRegisterRelationshipCounterRequest\x1a?.authzed.api.v1.ExperimentalRegisterRelationshipCounterResponse\"H\x92A\x0e\n" +
	"\fExperimental\x82\xd3\xe4\x93\x021:\x01*\",/v1/experimental/registerrelationshipcounter\x12\xd0\x01\n" +
	"\x1eExperimentalCountRelationships\x125.authzed.api.v1.ExperimentalCountRelationshipsRequest\x1a6.authzed.api.v1.ExperimentalCountRelationshipsResponse\"?\x92A\x0e\n" +
	"\fExperimental\x82\xd3\xe4\x93\x02(:\x01*\"#/v1/experimental/countrelationships\x12\xfc\x01\n" +
	")ExperimentalUnregisterRelationshipCounter\x12@.authzed.api.v1.ExperimentalUnregisterRelationshipCounterRequest\x1aA.authzed.api.v1.ExperimentalUnregisterRelationshipCounterResponse\"J\x92A\x0e\n" +
	"\fExperimental\x82\xd3\xe4\x93\x023:\x01*\"./v1/experimental/unregisterrelationshipcounterBJ\n" +
	"\x12com.authzed.api.v1P\x01Z2github.com/authzed/authzed-go/proto/authzed/api/v1b\x06proto3"

var (
	file_authzed_api_v1_experimental_service_proto_rawDescOnce sync.Once
	file_authzed_api_v1_experimental_service_proto_rawDescData []byte
)

func file_authzed_api_v1_experimental_service_proto_rawDescGZIP() []byte {
	file_authzed_api_v1_experimental_service_proto_rawDescOnce.Do(func() {
		file_authzed_api_v1_experimental_service_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_authzed_api_v1_experimental_service_proto_rawDesc), len(file_authzed_api_v1_experimental_service_proto_rawDesc)))
	})
	return file_authzed_api_v1_experimental_service_proto_rawDescData
}

var file_authzed_api_v1_experimental_service_proto_msgTypes = make([]protoimpl.MessageInfo, 35)
var file_authzed_api_v1_experimental_service_proto_goTypes = []any{
	(*ExperimentalRegisterRelationshipCounterRequest)(nil),    // 0: authzed.api.v1.ExperimentalRegisterRelationshipCounterRequest
	(*ExperimentalRegisterRelationshipCounterResponse)(nil),   // 1: authzed.api.v1.ExperimentalRegisterRelationshipCounterResponse
	(*ExperimentalCountRelationshipsRequest)(nil),             // 2: authzed.api.v1.ExperimentalCountRelationshipsRequest
	(*ExperimentalCountRelationshipsResponse)(nil),            // 3: authzed.api.v1.ExperimentalCountRelationshipsResponse
	(*ReadCounterValue)(nil),                                  // 4: authzed.api.v1.ReadCounterValue
	(*ExperimentalUnregisterRelationshipCounterRequest)(nil),  // 5: authzed.api.v1.ExperimentalUnregisterRelationshipCounterRequest
	(*ExperimentalUnregisterRelationshipCounterResponse)(nil), // 6: authzed.api.v1.ExperimentalUnregisterRelationshipCounterResponse
	(*BulkCheckPermissionRequest)(nil),                        // 7: authzed.api.v1.BulkCheckPermissionRequest
	(*BulkCheckPermissionRequestItem)(nil),                    // 8: authzed.api.v1.BulkCheckPermissionRequestItem
	(*BulkCheckPermissionResponse)(nil),                       // 9: authzed.api.v1.BulkCheckPermissionResponse
	(*BulkCheckPermissionPair)(nil),                           // 10: authzed.api.v1.BulkCheckPermissionPair
	(*BulkCheckPermissionResponseItem)(nil),                   // 11: authzed.api.v1.BulkCheckPermissionResponseItem
	(*BulkImportRelationshipsRequest)(nil),                    // 12: authzed.api.v1.BulkImportRelationshipsRequest
	(*BulkImportRelationshipsResponse)(nil),                   // 13: authzed.api.v1.BulkImportRelationshipsResponse
	(*BulkExportRelationshipsRequest)(nil),                    // 14: authzed.api.v1.BulkExportRelationshipsRequest
	(*BulkExportRelationshipsResponse)(nil),                   // 15: authzed.api.v1.BulkExportRelationshipsResponse
	(*ExperimentalReflectSchemaRequest)(nil),                  // 16: authzed.api.v1.ExperimentalReflectSchemaRequest
	(*ExperimentalReflectSchemaResponse)(nil),                 // 17: authzed.api.v1.ExperimentalReflectSchemaResponse
	(*ExpSchemaFilter)(nil),                                   // 18: authzed.api.v1.ExpSchemaFilter
	(*ExpDefinition)(nil),                                     // 19: authzed.api.v1.ExpDefinition
	(*ExpCaveat)(nil),                                         // 20: authzed.api.v1.ExpCaveat
	(*ExpCaveatParameter)(nil),                                // 21: authzed.api.v1.ExpCaveatParameter
	(*ExpRelation)(nil),                                       // 22: authzed.api.v1.ExpRelation
	(*ExpTypeReference)(nil),                                  // 23: authzed.api.v1.ExpTypeReference
	(*ExpPermission)(nil),                                     // 24: authzed.api.v1.ExpPermission
	(*ExperimentalComputablePermissionsRequest)(nil),          // 25: authzed.api.v1.ExperimentalComputablePermissionsRequest
	(*ExpRelationReference)(nil),                              // 26: authzed.api.v1.ExpRelationReference
	(*ExperimentalComputablePermissionsResponse)(nil),         // 27: authzed.api.v1.ExperimentalComputablePermissionsResponse
	(*ExperimentalDependentRelationsRequest)(nil),             // 28: authzed.api.v1.ExperimentalDependentRelationsRequest
	(*ExperimentalDependentRelationsResponse)(nil),            // 29: authzed.api.v1.ExperimentalDependentRelationsResponse
	(*ExperimentalDiffSchemaRequest)(nil),                     // 30: authzed.api.v1.ExperimentalDiffSchemaRequest
	(*ExperimentalDiffSchemaResponse)(nil),                    // 31: authzed.api.v1.ExperimentalDiffSchemaResponse
	(*ExpRelationSubjectTypeChange)(nil),                      // 32: authzed.api.v1.ExpRelationSubjectTypeChange
	(*ExpCaveatParameterTypeChange)(nil),                      // 33: authzed.api.v1.ExpCaveatParameterTypeChange
	(*ExpSchemaDiff)(nil),                                     // 34: authzed.api.v1.ExpSchemaDiff
	(*RelationshipFilter)(nil),                                // 35: authzed.api.v1.RelationshipFilter
	(*ZedToken)(nil),                                          // 36: authzed.api.v1.ZedToken
	(*Consistency)(nil),                                       // 37: authzed.api.v1.Consistency
	(*ObjectReference)(nil),                                   // 38: authzed.api.v1.ObjectReference
	(*SubjectReference)(nil),                                  // 39: authzed.api.v1.SubjectReference
	(*structpb.Struct)(nil),                                   // 40: google.protobuf.Struct
	(*status.Status)(nil),                                     // 41: google.rpc.Status
	(CheckPermissionResponse_Permissionship)(0),               // 42: authzed.api.v1.CheckPermissionResponse.Permissionship
	(*PartialCaveatInfo)(nil),                                 // 43: authzed.api.v1.PartialCaveatInfo
	(*Relationship)(nil),                                      // 44: authzed.api.v1.Relationship
	(*Cursor)(nil),                                            // 45: authzed.api.v1.Cursor
}
var file_authzed_api_v1_experimental_service_proto_depIdxs = []int32{
	35, // 0: authzed.api.v1.ExperimentalRegisterRelationshipCounterRequest.relationship_filter:type_name -> authzed.api.v1.RelationshipFilter
	4,  // 1: authzed.api.v1.ExperimentalCountRelationshipsResponse.read_counter_value:type_name -> authzed.api.v1.ReadCounterValue
	36, // 2: authzed.api.v1.ReadCounterValue.read_at:type_name -> authzed.api.v1.ZedToken
	37, // 3: authzed.api.v1.BulkCheckPermissionRequest.consistency:type_name -> authzed.api.v1.Consistency
	8,  // 4: authzed.api.v1.BulkCheckPermissionRequest.items:type_name -> authzed.api.v1.BulkCheckPermissionRequestItem
	38, // 5: authzed.api.v1.BulkCheckPermissionRequestItem.resource:type_name -> authzed.api.v1.ObjectReference
	39, // 6: authzed.api.v1.BulkCheckPermissionRequestItem.subject:type_name -> authzed.api.v1.SubjectReference
	40, // 7: authzed.api.v1.BulkCheckPermissionRequestItem.context:type_name -> google.protobuf.Struct
	36, // 8: authzed.api.v1.BulkCheckPermissionResponse.checked_at:type_name -> authzed.api.v1.ZedToken
	10, // 9: authzed.api.v1.BulkCheckPermissionResponse.pairs:type_name -> authzed.api.v1.BulkCheckPermissionPair
	8,  // 10: authzed.api.v1.BulkCheckPermissionPair.request:type_name -> authzed.api.v1.BulkCheckPermissionRequestItem
	11, // 11: authzed.api.v1.BulkCheckPermissionPair.item:type_name -> authzed.api.v1.BulkCheckPermissionResponseItem
	41, // 12: authzed.api.v1.BulkCheckPermissionPair.error:type_name -> google.rpc.Status
	42, // 13: authzed.api.v1.BulkCheckPermissionResponseItem.permissionship:type_name -> authzed.api.v1.CheckPermissionResponse.Permissionship
	43, // 14: authzed.api.v1.BulkCheckPermissionResponseItem.partial_caveat_info:type_name -> authzed.api.v1.PartialCaveatInfo
	44, // 15: authzed.api.v1.BulkImportRelationshipsRequest.relationships:type_name -> authzed.api.v1.Relationship
	37, // 16: authzed.api.v1.BulkExportRelationshipsRequest.consistency:type_name -> authzed.api.v1.Consistency
	45, // 17: authzed.api.v1.BulkExportRelationshipsRequest.optional_cursor:type_name -> authzed.api.v1.Cursor
	35, // 18: authzed.api.v1.BulkExportRelationshipsRequest.optional_relationship_filter:type_name -> authzed.api.v1.RelationshipFilter
	45, // 19: authzed.api.v1.BulkExportRelationshipsResponse.after_result_cursor:type_name -> authzed.api.v1.Cursor
	44, // 20: authzed.api.v1.BulkExportRelationshipsResponse.relationships:type_name -> authzed.api.v1.Relationship
	37, // 21: authzed.api.v1.ExperimentalReflectSchemaRequest.consistency:type_name -> authzed.api.v1.Consistency
	18, // 22: authzed.api.v1.ExperimentalReflectSchemaRequest.optional_filters:type_name -> authzed.api.v1.ExpSchemaFilter
	19, // 23: authzed.api.v1.ExperimentalReflectSchemaResponse.definitions:type_name -> authzed.api.v1.ExpDefinition
	20, // 24: authzed.api.v1.ExperimentalReflectSchemaResponse.caveats:type_name -> authzed.api.v1.ExpCaveat
	36, // 25: authzed.api.v1.ExperimentalReflectSchemaResponse.read_at:type_name -> authzed.api.v1.ZedToken
	22, // 26: authzed.api.v1.ExpDefinition.relations:type_name -> authzed.api.v1.ExpRelation
	24, // 27: authzed.api.v1.ExpDefinition.permissions:type_name -> authzed.api.v1.ExpPermission
	21, // 28: authzed.api.v1.ExpCaveat.parameters:type_name -> authzed.api.v1.ExpCaveatParameter
	23, // 29: authzed.api.v1.ExpRelation.subject_types:type_name -> authzed.api.v1.ExpTypeReference
	37, // 30: authzed.api.v1.ExperimentalComputablePermissionsRequest.consistency:type_name -> authzed.api.v1.Consistency
	26, // 31: authzed.api.v1.ExperimentalComputablePermissionsResponse.permissions:type_name -> authzed.api.v1.ExpRelationReference
	36, // 32: authzed.api.v1.ExperimentalComputablePermissionsResponse.read_at:type_name -> authzed.api.v1.ZedToken
	37, // 33: authzed.api.v1.ExperimentalDependentRelationsRequest.consistency:type_name -> authzed.api.v1.Consistency
	26, // 34: authzed.api.v1.ExperimentalDependentRelationsResponse.relations:type_name -> authzed.api.v1.ExpRelationReference
	36, // 35: authzed.api.v1.ExperimentalDependentRelationsResponse.read_at:type_name -> authzed.api.v1.ZedToken
	37, // 36: authzed.api.v1.ExperimentalDiffSchemaRequest.consistency:type_name -> authzed.api.v1.Consistency
	34, // 37: authzed.api.v1.ExperimentalDiffSchemaResponse.diffs:type_name -> authzed.api.v1.ExpSchemaDiff
	36, // 38: authzed.api.v1.ExperimentalDiffSchemaResponse.read_at:type_name -> authzed.api.v1.ZedToken
	22, // 39: authzed.api.v1.ExpRelationSubjectTypeChange.relation:type_name -> authzed.api.v1.ExpRelation
	23, // 40: authzed.api.v1.ExpRelationSubjectTypeChange.changed_subject_type:type_name -> authzed.api.v1.ExpTypeReference
	21, // 41: authzed.api.v1.ExpCaveatParameterTypeChange.parameter:type_name -> authzed.api.v1.ExpCaveatParameter
	19, // 42: authzed.api.v1.ExpSchemaDiff.definition_added:type_name -> authzed.api.v1.ExpDefinition
	19, // 43: authzed.api.v1.ExpSchemaDiff.definition_removed:type_name -> authzed.api.v1.ExpDefinition
	19, // 44: authzed.api.v1.ExpSchemaDiff.definition_doc_comment_changed:type_name -> authzed.api.v1.ExpDefinition
	22, // 45: authzed.api.v1.ExpSchemaDiff.relation_added:type_name -> authzed.api.v1.ExpRelation
	22, // 46: authzed.api.v1.ExpSchemaDiff.relation_removed:type_name -> authzed.api.v1.ExpRelation
	22, // 47: authzed.api.v1.ExpSchemaDiff.relation_doc_comment_changed:type_name -> authzed.api.v1.ExpRelation
	32, // 48: authzed.api.v1.ExpSchemaDiff.relation_subject_type_added:type_name -> authzed.api.v1.ExpRelationSubjectTypeChange
	32, // 49: authzed.api.v1.ExpSchemaDiff.relation_subject_type_removed:type_name -> authzed.api.v1.ExpRelationSubjectTypeChange
	24, // 50: authzed.api.v1.ExpSchemaDiff.permission_added:type_name -> authzed.api.v1.ExpPermission
	24, // 51: authzed.api.v1.ExpSchemaDiff.permission_removed:type_name -> authzed.api.v1.ExpPermission
	24, // 52: authzed.api.v1.ExpSchemaDiff.permission_doc_comment_changed:type_name -> authzed.api.v1.ExpPermission
	24, // 53: authzed.api.v1.ExpSchemaDiff.permission_expr_changed:type_name -> authzed.api.v1.ExpPermission
	20, // 54: authzed.api.v1.ExpSchemaDiff.caveat_added:type_name -> authzed.api.v1.ExpCaveat
	20, // 55: authzed.api.v1.ExpSchemaDiff.caveat_removed:type_name -> authzed.api.v1.ExpCaveat
	20, // 56: authzed.api.v1.ExpSchemaDiff.caveat_doc_comment_changed:type_name -> authzed.api.v1.ExpCaveat
	20, // 57: authzed.api.v1.ExpSchemaDiff.caveat_expr_changed:type_name -> authzed.api.v1.ExpCaveat
	21, // 58: authzed.api.v1.ExpSchemaDiff.caveat_parameter_added:type_name -> authzed.api.v1.ExpCaveatParameter
	21, // 59: authzed.api.v1.ExpSchemaDiff.caveat_parameter_removed:type_name -> authzed.api.v1.ExpCaveatParameter
	33, // 60: authzed.api.v1.ExpSchemaDiff.caveat_parameter_type_changed:type_name -> authzed.api.v1.ExpCaveatParameterTypeChange
	12, // 61: authzed.api.v1.ExperimentalService.BulkImportRelationships:input_type -> authzed.api.v1.BulkImportRelationshipsRequest
	14, // 62: authzed.api.v1.ExperimentalService.BulkExportRelationships:input_type -> authzed.api.v1.BulkExportRelationshipsRequest
	7,  // 63: authzed.api.v1.ExperimentalService.BulkCheckPermission:input_type -> authzed.api.v1.BulkCheckPermissionRequest
	16, // 64: authzed.api.v1.ExperimentalService.ExperimentalReflectSchema:input_type -> authzed.api.v1.ExperimentalReflectSchemaRequest
	25, // 65: authzed.api.v1.ExperimentalService.ExperimentalComputablePermissions:input_type -> authzed.api.v1.ExperimentalComputablePermissionsRequest
	28, // 66: authzed.api.v1.ExperimentalService.ExperimentalDependentRelations:input_type -> authzed.api.v1.ExperimentalDependentRelationsRequest
	30, // 67: authzed.api.v1.ExperimentalService.ExperimentalDiffSchema:input_type -> authzed.api.v1.ExperimentalDiffSchemaRequest
	0,  // 68: authzed.api.v1.ExperimentalService.ExperimentalRegisterRelationshipCounter:input_type -> authzed.api.v1.ExperimentalRegisterRelationshipCounterRequest
	2,  // 69: authzed.api.v1.ExperimentalService.ExperimentalCountRelationships:input_type -> authzed.api.v1.ExperimentalCountRelationshipsRequest
	5,  // 70: authzed.api.v1.ExperimentalService.ExperimentalUnregisterRelationshipCounter:input_type -> authzed.api.v1.ExperimentalUnregisterRelationshipCounterRequest
	13, // 71: authzed.api.v1.ExperimentalService.BulkImportRelationships:output_type -> authzed.api.v1.BulkImportRelationshipsResponse
	15, // 72: authzed.api.v1.ExperimentalService.BulkExportRelationships:output_type -> authzed.api.v1.BulkExportRelationshipsResponse
	9,  // 73: authzed.api.v1.ExperimentalService.BulkCheckPermission:output_type -> authzed.api.v1.BulkCheckPermissionResponse
	17, // 74: authzed.api.v1.ExperimentalService.ExperimentalReflectSchema:output_type -> authzed.api.v1.ExperimentalReflectSchemaResponse
	27, // 75: authzed.api.v1.ExperimentalService.ExperimentalComputablePermissions:output_type -> authzed.api.v1.ExperimentalComputablePermissionsResponse
	29, // 76: authzed.api.v1.ExperimentalService.ExperimentalDependentRelations:output_type -> authzed.api.v1.ExperimentalDependentRelationsResponse
	31, // 77: authzed.api.v1.ExperimentalService.ExperimentalDiffSchema:output_type -> authzed.api.v1.ExperimentalDiffSchemaResponse
	1,  // 78: authzed.api.v1.ExperimentalService.ExperimentalRegisterRelationshipCounter:output_type -> authzed.api.v1.ExperimentalRegisterRelationshipCounterResponse
	3,  // 79: authzed.api.v1.ExperimentalService.ExperimentalCountRelationships:output_type -> authzed.api.v1.ExperimentalCountRelationshipsResponse
	6,  // 80: authzed.api.v1.ExperimentalService.ExperimentalUnregisterRelationshipCounter:output_type -> authzed.api.v1.ExperimentalUnregisterRelationshipCounterResponse
	71, // [71:81] is the sub-list for method output_type
	61, // [61:71] is the sub-list for method input_type
	61, // [61:61] is the sub-list for extension type_name
	61, // [61:61] is the sub-list for extension extendee
	0,  // [0:61] is the sub-list for field type_name
}

func init() { file_authzed_api_v1_experimental_service_proto_init() }
func file_authzed_api_v1_experimental_service_proto_init() {
	if File_authzed_api_v1_experimental_service_proto != nil {
		return
	}
	file_authzed_api_v1_core_proto_init()
	file_authzed_api_v1_permission_service_proto_init()
	file_authzed_api_v1_experimental_service_proto_msgTypes[3].OneofWrappers = []any{
		(*ExperimentalCountRelationshipsResponse_CounterStillCalculating)(nil),
		(*ExperimentalCountRelationshipsResponse_ReadCounterValue)(nil),
	}
	file_authzed_api_v1_experimental_service_proto_msgTypes[10].OneofWrappers = []any{
		(*BulkCheckPermissionPair_Item)(nil),
		(*BulkCheckPermissionPair_Error)(nil),
	}
	file_authzed_api_v1_experimental_service_proto_msgTypes[23].OneofWrappers = []any{
		(*ExpTypeReference_IsTerminalSubject)(nil),
		(*ExpTypeReference_OptionalRelationName)(nil),
		(*ExpTypeReference_IsPublicWildcard)(nil),
	}
	file_authzed_api_v1_experimental_service_proto_msgTypes[34].OneofWrappers = []any{
		(*ExpSchemaDiff_DefinitionAdded)(nil),
		(*ExpSchemaDiff_DefinitionRemoved)(nil),
		(*ExpSchemaDiff_DefinitionDocCommentChanged)(nil),
		(*ExpSchemaDiff_RelationAdded)(nil),
		(*ExpSchemaDiff_RelationRemoved)(nil),
		(*ExpSchemaDiff_RelationDocCommentChanged)(nil),
		(*ExpSchemaDiff_RelationSubjectTypeAdded)(nil),
		(*ExpSchemaDiff_RelationSubjectTypeRemoved)(nil),
		(*ExpSchemaDiff_PermissionAdded)(nil),
		(*ExpSchemaDiff_PermissionRemoved)(nil),
		(*ExpSchemaDiff_PermissionDocCommentChanged)(nil),
		(*ExpSchemaDiff_PermissionExprChanged)(nil),
		(*ExpSchemaDiff_CaveatAdded)(nil),
		(*ExpSchemaDiff_CaveatRemoved)(nil),
		(*ExpSchemaDiff_CaveatDocCommentChanged)(nil),
		(*ExpSchemaDiff_CaveatExprChanged)(nil),
		(*ExpSchemaDiff_CaveatParameterAdded)(nil),
		(*ExpSchemaDiff_CaveatParameterRemoved)(nil),
		(*ExpSchemaDiff_CaveatParameterTypeChanged)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: unsafe.Slice(unsafe.StringData(file_authzed_api_v1_experimental_service_proto_rawDesc), len(file_authzed_api_v1_experimental_service_proto_rawDesc)),
			NumEnums:      0,
			NumMessages:   35,
			NumExtensions: 0,
			NumServices:   1,
		},
		GoTypes:           file_authzed_api_v1_experimental_service_proto_goTypes,
		DependencyIndexes: file_authzed_api_v1_experimental_service_proto_depIdxs,
		MessageInfos:      file_authzed_api_v1_experimental_service_proto_msgTypes,
	}.Build()
	File_authzed_api_v1_experimental_service_proto = out.File
	file_authzed_api_v1_experimental_service_proto_goTypes = nil
	file_authzed_api_v1_experimental_service_proto_depIdxs = nil
}
