// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.36.8
// 	protoc        (unknown)
// source: authzed/api/v1/permission_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"
	timestamppb "google.golang.org/protobuf/types/known/timestamppb"
	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)
)

// LookupPermissionship represents whether a Lookup response was partially evaluated or not
type LookupPermissionship int32

const (
	LookupPermissionship_LOOKUP_PERMISSIONSHIP_UNSPECIFIED            LookupPermissionship = 0
	LookupPermissionship_LOOKUP_PERMISSIONSHIP_HAS_PERMISSION         LookupPermissionship = 1
	LookupPermissionship_LOOKUP_PERMISSIONSHIP_CONDITIONAL_PERMISSION LookupPermissionship = 2
)

// Enum value maps for LookupPermissionship.
var (
	LookupPermissionship_name = map[int32]string{
		0: "LOOKUP_PERMISSIONSHIP_UNSPECIFIED",
		1: "LOOKUP_PERMISSIONSHIP_HAS_PERMISSION",
		2: "LOOKUP_PERMISSIONSHIP_CONDITIONAL_PERMISSION",
	}
	LookupPermissionship_value = map[string]int32{
		"LOOKUP_PERMISSIONSHIP_UNSPECIFIED":            0,
		"LOOKUP_PERMISSIONSHIP_HAS_PERMISSION":         1,
		"LOOKUP_PERMISSIONSHIP_CONDITIONAL_PERMISSION": 2,
	}
)

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

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

func (LookupPermissionship) Descriptor() protoreflect.EnumDescriptor {
	return file_authzed_api_v1_permission_service_proto_enumTypes[0].Descriptor()
}

func (LookupPermissionship) Type() protoreflect.EnumType {
	return &file_authzed_api_v1_permission_service_proto_enumTypes[0]
}

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

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

type Precondition_Operation int32

const (
	Precondition_OPERATION_UNSPECIFIED    Precondition_Operation = 0
	Precondition_OPERATION_MUST_NOT_MATCH Precondition_Operation = 1
	Precondition_OPERATION_MUST_MATCH     Precondition_Operation = 2
)

// Enum value maps for Precondition_Operation.
var (
	Precondition_Operation_name = map[int32]string{
		0: "OPERATION_UNSPECIFIED",
		1: "OPERATION_MUST_NOT_MATCH",
		2: "OPERATION_MUST_MATCH",
	}
	Precondition_Operation_value = map[string]int32{
		"OPERATION_UNSPECIFIED":    0,
		"OPERATION_MUST_NOT_MATCH": 1,
		"OPERATION_MUST_MATCH":     2,
	}
)

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

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

func (Precondition_Operation) Descriptor() protoreflect.EnumDescriptor {
	return file_authzed_api_v1_permission_service_proto_enumTypes[1].Descriptor()
}

func (Precondition_Operation) Type() protoreflect.EnumType {
	return &file_authzed_api_v1_permission_service_proto_enumTypes[1]
}

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

// Deprecated: Use Precondition_Operation.Descriptor instead.
func (Precondition_Operation) EnumDescriptor() ([]byte, []int) {
	return file_authzed_api_v1_permission_service_proto_rawDescGZIP(), []int{5, 0}
}

type DeleteRelationshipsResponse_DeletionProgress int32

const (
	DeleteRelationshipsResponse_DELETION_PROGRESS_UNSPECIFIED DeleteRelationshipsResponse_DeletionProgress = 0
	// DELETION_PROGRESS_COMPLETE indicates that all remaining relationships matching the filter
	// were deleted. Will be returned even if no relationships were deleted.
	DeleteRelationshipsResponse_DELETION_PROGRESS_COMPLETE DeleteRelationshipsResponse_DeletionProgress = 1
	// DELETION_PROGRESS_PARTIAL indicates that a subset of the relationships matching the filter
	// were deleted. Only returned if optional_allow_partial_deletions was true, an optional_limit was
	// specified, and there existed more relationships matching the filter than optional_limit would allow.
	// Once all remaining relationships have been deleted, DELETION_PROGRESS_COMPLETE will be returned.
	DeleteRelationshipsResponse_DELETION_PROGRESS_PARTIAL DeleteRelationshipsResponse_DeletionProgress = 2
)

// Enum value maps for DeleteRelationshipsResponse_DeletionProgress.
var (
	DeleteRelationshipsResponse_DeletionProgress_name = map[int32]string{
		0: "DELETION_PROGRESS_UNSPECIFIED",
		1: "DELETION_PROGRESS_COMPLETE",
		2: "DELETION_PROGRESS_PARTIAL",
	}
	DeleteRelationshipsResponse_DeletionProgress_value = map[string]int32{
		"DELETION_PROGRESS_UNSPECIFIED": 0,
		"DELETION_PROGRESS_COMPLETE":    1,
		"DELETION_PROGRESS_PARTIAL":     2,
	}
)

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

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

func (DeleteRelationshipsResponse_DeletionProgress) Descriptor() protoreflect.EnumDescriptor {
	return file_authzed_api_v1_permission_service_proto_enumTypes[2].Descriptor()
}

func (DeleteRelationshipsResponse_DeletionProgress) Type() protoreflect.EnumType {
	return &file_authzed_api_v1_permission_service_proto_enumTypes[2]
}

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

// Deprecated: Use DeleteRelationshipsResponse_DeletionProgress.Descriptor instead.
func (DeleteRelationshipsResponse_DeletionProgress) EnumDescriptor() ([]byte, []int) {
	return file_authzed_api_v1_permission_service_proto_rawDescGZIP(), []int{9, 0}
}

type CheckPermissionResponse_Permissionship int32

const (
	CheckPermissionResponse_PERMISSIONSHIP_UNSPECIFIED            CheckPermissionResponse_Permissionship = 0
	CheckPermissionResponse_PERMISSIONSHIP_NO_PERMISSION          CheckPermissionResponse_Permissionship = 1
	CheckPermissionResponse_PERMISSIONSHIP_HAS_PERMISSION         CheckPermissionResponse_Permissionship = 2
	CheckPermissionResponse_PERMISSIONSHIP_CONDITIONAL_PERMISSION CheckPermissionResponse_Permissionship = 3
)

// Enum value maps for CheckPermissionResponse_Permissionship.
var (
	CheckPermissionResponse_Permissionship_name = map[int32]string{
		0: "PERMISSIONSHIP_UNSPECIFIED",
		1: "PERMISSIONSHIP_NO_PERMISSION",
		2: "PERMISSIONSHIP_HAS_PERMISSION",
		3: "PERMISSIONSHIP_CONDITIONAL_PERMISSION",
	}
	CheckPermissionResponse_Permissionship_value = map[string]int32{
		"PERMISSIONSHIP_UNSPECIFIED":            0,
		"PERMISSIONSHIP_NO_PERMISSION":          1,
		"PERMISSIONSHIP_HAS_PERMISSION":         2,
		"PERMISSIONSHIP_CONDITIONAL_PERMISSION": 3,
	}
)

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

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

func (CheckPermissionResponse_Permissionship) Descriptor() protoreflect.EnumDescriptor {
	return file_authzed_api_v1_permission_service_proto_enumTypes[3].Descriptor()
}

func (CheckPermissionResponse_Permissionship) Type() protoreflect.EnumType {
	return &file_authzed_api_v1_permission_service_proto_enumTypes[3]
}

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

// Deprecated: Use CheckPermissionResponse_Permissionship.Descriptor instead.
func (CheckPermissionResponse_Permissionship) EnumDescriptor() ([]byte, []int) {
	return file_authzed_api_v1_permission_service_proto_rawDescGZIP(), []int{11, 0}
}

type LookupSubjectsRequest_WildcardOption int32

const (
	LookupSubjectsRequest_WILDCARD_OPTION_UNSPECIFIED       LookupSubjectsRequest_WildcardOption = 0
	LookupSubjectsRequest_WILDCARD_OPTION_INCLUDE_WILDCARDS LookupSubjectsRequest_WildcardOption = 1
	LookupSubjectsRequest_WILDCARD_OPTION_EXCLUDE_WILDCARDS LookupSubjectsRequest_WildcardOption = 2
)

// Enum value maps for LookupSubjectsRequest_WildcardOption.
var (
	LookupSubjectsRequest_WildcardOption_name = map[int32]string{
		0: "WILDCARD_OPTION_UNSPECIFIED",
		1: "WILDCARD_OPTION_INCLUDE_WILDCARDS",
		2: "WILDCARD_OPTION_EXCLUDE_WILDCARDS",
	}
	LookupSubjectsRequest_WildcardOption_value = map[string]int32{
		"WILDCARD_OPTION_UNSPECIFIED":       0,
		"WILDCARD_OPTION_INCLUDE_WILDCARDS": 1,
		"WILDCARD_OPTION_EXCLUDE_WILDCARDS": 2,
	}
)

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

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

func (LookupSubjectsRequest_WildcardOption) Descriptor() protoreflect.EnumDescriptor {
	return file_authzed_api_v1_permission_service_proto_enumTypes[4].Descriptor()
}

func (LookupSubjectsRequest_WildcardOption) Type() protoreflect.EnumType {
	return &file_authzed_api_v1_permission_service_proto_enumTypes[4]
}

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

// Deprecated: Use LookupSubjectsRequest_WildcardOption.Descriptor instead.
func (LookupSubjectsRequest_WildcardOption) EnumDescriptor() ([]byte, []int) {
	return file_authzed_api_v1_permission_service_proto_rawDescGZIP(), []int{21, 0}
}

// Consistency will define how a request is handled by the backend.
// By defining a consistency requirement, and a token at which those
// requirements should be applied, where applicable.
type Consistency struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Types that are valid to be assigned to Requirement:
	//
	//	*Consistency_MinimizeLatency
	//	*Consistency_AtLeastAsFresh
	//	*Consistency_AtExactSnapshot
	//	*Consistency_FullyConsistent
	Requirement   isConsistency_Requirement `protobuf_oneof:"requirement"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*Consistency) ProtoMessage() {}

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

func (x *Consistency) GetRequirement() isConsistency_Requirement {
	if x != nil {
		return x.Requirement
	}
	return nil
}

func (x *Consistency) GetMinimizeLatency() bool {
	if x != nil {
		if x, ok := x.Requirement.(*Consistency_MinimizeLatency); ok {
			return x.MinimizeLatency
		}
	}
	return false
}

func (x *Consistency) GetAtLeastAsFresh() *ZedToken {
	if x != nil {
		if x, ok := x.Requirement.(*Consistency_AtLeastAsFresh); ok {
			return x.AtLeastAsFresh
		}
	}
	return nil
}

func (x *Consistency) GetAtExactSnapshot() *ZedToken {
	if x != nil {
		if x, ok := x.Requirement.(*Consistency_AtExactSnapshot); ok {
			return x.AtExactSnapshot
		}
	}
	return nil
}

func (x *Consistency) GetFullyConsistent() bool {
	if x != nil {
		if x, ok := x.Requirement.(*Consistency_FullyConsistent); ok {
			return x.FullyConsistent
		}
	}
	return false
}

type isConsistency_Requirement interface {
	isConsistency_Requirement()
}

type Consistency_MinimizeLatency struct {
	// minimize_latency indicates that the latency for the call should be
	// minimized by having the system select the fastest snapshot available.
	MinimizeLatency bool `protobuf:"varint,1,opt,name=minimize_latency,json=minimizeLatency,proto3,oneof"`
}

type Consistency_AtLeastAsFresh struct {
	// at_least_as_fresh indicates that all data used in the API call must be
	// *at least as fresh* as that found in the ZedToken; more recent data might
	// be used if available or faster.
	AtLeastAsFresh *ZedToken `protobuf:"bytes,2,opt,name=at_least_as_fresh,json=atLeastAsFresh,proto3,oneof"`
}

type Consistency_AtExactSnapshot struct {
	// at_exact_snapshot indicates that all data used in the API call must be
	// *at the given* snapshot in time; if the snapshot is no longer available,
	// an error will be returned to the caller.
	AtExactSnapshot *ZedToken `protobuf:"bytes,3,opt,name=at_exact_snapshot,json=atExactSnapshot,proto3,oneof"`
}

type Consistency_FullyConsistent struct {
	// fully_consistent indicates that all data used in the API call *must* be
	// at the most recent snapshot found.
	//
	// NOTE: using this method can be *quite slow*, so unless there is a need to
	// do so, it is recommended to use `at_least_as_fresh` with a stored
	// ZedToken.
	FullyConsistent bool `protobuf:"varint,4,opt,name=fully_consistent,json=fullyConsistent,proto3,oneof"`
}

func (*Consistency_MinimizeLatency) isConsistency_Requirement() {}

func (*Consistency_AtLeastAsFresh) isConsistency_Requirement() {}

func (*Consistency_AtExactSnapshot) isConsistency_Requirement() {}

func (*Consistency_FullyConsistent) isConsistency_Requirement() {}

// RelationshipFilter is a collection of filters which when applied to a
// relationship will return relationships that have exactly matching fields.
//
// All fields are optional and if left unspecified will not filter relationships,
// but at least one field must be specified.
//
// NOTE: The performance of the API will be affected by the selection of fields
// on which to filter. If a field is not indexed, the performance of the API
// can be significantly slower.
type RelationshipFilter struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// resource_type is the *optional* resource type of the relationship.
	// NOTE: It is not prefixed with "optional_" for legacy compatibility.
	ResourceType string `protobuf:"bytes,1,opt,name=resource_type,json=resourceType,proto3" json:"resource_type,omitempty"`
	// optional_resource_id is the *optional* resource ID of the relationship.
	// If specified, optional_resource_id_prefix cannot be specified.
	OptionalResourceId string `protobuf:"bytes,2,opt,name=optional_resource_id,json=optionalResourceId,proto3" json:"optional_resource_id,omitempty"`
	// optional_resource_id_prefix is the *optional* prefix for the resource ID of the relationship.
	// If specified, optional_resource_id cannot be specified.
	OptionalResourceIdPrefix string `protobuf:"bytes,5,opt,name=optional_resource_id_prefix,json=optionalResourceIdPrefix,proto3" json:"optional_resource_id_prefix,omitempty"`
	// relation is the *optional* relation of the relationship.
	OptionalRelation string `protobuf:"bytes,3,opt,name=optional_relation,json=optionalRelation,proto3" json:"optional_relation,omitempty"`
	// optional_subject_filter is the optional filter for the subjects of the relationships.
	OptionalSubjectFilter *SubjectFilter `protobuf:"bytes,4,opt,name=optional_subject_filter,json=optionalSubjectFilter,proto3" json:"optional_subject_filter,omitempty"`
	unknownFields         protoimpl.UnknownFields
	sizeCache             protoimpl.SizeCache
}

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

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

func (*RelationshipFilter) ProtoMessage() {}

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

func (x *RelationshipFilter) GetResourceType() string {
	if x != nil {
		return x.ResourceType
	}
	return ""
}

func (x *RelationshipFilter) GetOptionalResourceId() string {
	if x != nil {
		return x.OptionalResourceId
	}
	return ""
}

func (x *RelationshipFilter) GetOptionalResourceIdPrefix() string {
	if x != nil {
		return x.OptionalResourceIdPrefix
	}
	return ""
}

func (x *RelationshipFilter) GetOptionalRelation() string {
	if x != nil {
		return x.OptionalRelation
	}
	return ""
}

func (x *RelationshipFilter) GetOptionalSubjectFilter() *SubjectFilter {
	if x != nil {
		return x.OptionalSubjectFilter
	}
	return nil
}

// SubjectFilter specifies a filter on the subject of a relationship.
//
// subject_type is required and all other fields are optional, and will not
// impose any additional requirements if left unspecified.
type SubjectFilter struct {
	state             protoimpl.MessageState        `protogen:"open.v1"`
	SubjectType       string                        `protobuf:"bytes,1,opt,name=subject_type,json=subjectType,proto3" json:"subject_type,omitempty"`
	OptionalSubjectId string                        `protobuf:"bytes,2,opt,name=optional_subject_id,json=optionalSubjectId,proto3" json:"optional_subject_id,omitempty"`
	OptionalRelation  *SubjectFilter_RelationFilter `protobuf:"bytes,3,opt,name=optional_relation,json=optionalRelation,proto3" json:"optional_relation,omitempty"`
	unknownFields     protoimpl.UnknownFields
	sizeCache         protoimpl.SizeCache
}

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

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

func (*SubjectFilter) ProtoMessage() {}

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

func (x *SubjectFilter) GetSubjectType() string {
	if x != nil {
		return x.SubjectType
	}
	return ""
}

func (x *SubjectFilter) GetOptionalSubjectId() string {
	if x != nil {
		return x.OptionalSubjectId
	}
	return ""
}

func (x *SubjectFilter) GetOptionalRelation() *SubjectFilter_RelationFilter {
	if x != nil {
		return x.OptionalRelation
	}
	return nil
}

// ReadRelationshipsRequest specifies one or more filters used to read matching
// relationships within the system.
type ReadRelationshipsRequest struct {
	state       protoimpl.MessageState `protogen:"open.v1"`
	Consistency *Consistency           `protobuf:"bytes,1,opt,name=consistency,proto3" json:"consistency,omitempty"`
	// relationship_filter defines the filter to be applied to the relationships
	// to be returned.
	RelationshipFilter *RelationshipFilter `protobuf:"bytes,2,opt,name=relationship_filter,json=relationshipFilter,proto3" json:"relationship_filter,omitempty"`
	// optional_limit, if non-zero, specifies the limit on the number of relationships to return
	// before the stream is closed on the server side. By default, the stream will continue
	// resolving relationships until exhausted or the stream is closed due to the client or a
	// network issue.
	OptionalLimit uint32 `protobuf:"varint,3,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 ReadRelationshipsResponse object.
	OptionalCursor *Cursor `protobuf:"bytes,4,opt,name=optional_cursor,json=optionalCursor,proto3" json:"optional_cursor,omitempty"`
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

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

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

func (*ReadRelationshipsRequest) ProtoMessage() {}

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

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

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

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

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

// ReadRelationshipsResponse contains a Relationship found that matches the
// specified relationship filter(s). A instance of this response message will
// be streamed to the client for each relationship found.
type ReadRelationshipsResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// read_at is the ZedToken at which the relationship was found.
	ReadAt *ZedToken `protobuf:"bytes,1,opt,name=read_at,json=readAt,proto3" json:"read_at,omitempty"`
	// relationship is the found relationship.
	Relationship *Relationship `protobuf:"bytes,2,opt,name=relationship,proto3" json:"relationship,omitempty"`
	// after_result_cursor holds a cursor that can be used to resume the ReadRelationships stream after this
	// result.
	AfterResultCursor *Cursor `protobuf:"bytes,3,opt,name=after_result_cursor,json=afterResultCursor,proto3" json:"after_result_cursor,omitempty"`
	unknownFields     protoimpl.UnknownFields
	sizeCache         protoimpl.SizeCache
}

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

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

func (*ReadRelationshipsResponse) ProtoMessage() {}

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

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

func (x *ReadRelationshipsResponse) GetRelationship() *Relationship {
	if x != nil {
		return x.Relationship
	}
	return nil
}

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

// Precondition specifies how and the existence or absence of certain
// relationships as expressed through the accompanying filter should affect
// whether or not the operation proceeds.
//
// MUST_NOT_MATCH will fail the parent request if any relationships match the
// relationships filter.
// MUST_MATCH will fail the parent request if there are no
// relationships that match the filter.
type Precondition struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Operation     Precondition_Operation `protobuf:"varint,1,opt,name=operation,proto3,enum=authzed.api.v1.Precondition_Operation" json:"operation,omitempty"`
	Filter        *RelationshipFilter    `protobuf:"bytes,2,opt,name=filter,proto3" json:"filter,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*Precondition) ProtoMessage() {}

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

func (x *Precondition) GetOperation() Precondition_Operation {
	if x != nil {
		return x.Operation
	}
	return Precondition_OPERATION_UNSPECIFIED
}

func (x *Precondition) GetFilter() *RelationshipFilter {
	if x != nil {
		return x.Filter
	}
	return nil
}

// WriteRelationshipsRequest contains a list of Relationship mutations that
// should be applied to the service. If the optional_preconditions parameter
// is included, all of the specified preconditions must also be satisfied before
// the write will be committed. All updates will be applied transactionally,
// and if any preconditions fail, the entire transaction will be reverted.
type WriteRelationshipsRequest struct {
	state                 protoimpl.MessageState `protogen:"open.v1"`
	Updates               []*RelationshipUpdate  `protobuf:"bytes,1,rep,name=updates,proto3" json:"updates,omitempty"`
	OptionalPreconditions []*Precondition        `protobuf:"bytes,2,rep,name=optional_preconditions,json=optionalPreconditions,proto3" json:"optional_preconditions,omitempty"` // To be bounded by configuration
	// optional_transaction_metadata is an optional field that can be used to store metadata about the transaction.
	// If specified, this metadata will be supplied in the WatchResponse for the updates associated with this
	// transaction.
	OptionalTransactionMetadata *structpb.Struct `protobuf:"bytes,3,opt,name=optional_transaction_metadata,json=optionalTransactionMetadata,proto3" json:"optional_transaction_metadata,omitempty"`
	unknownFields               protoimpl.UnknownFields
	sizeCache                   protoimpl.SizeCache
}

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

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

func (*WriteRelationshipsRequest) ProtoMessage() {}

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

func (x *WriteRelationshipsRequest) GetUpdates() []*RelationshipUpdate {
	if x != nil {
		return x.Updates
	}
	return nil
}

func (x *WriteRelationshipsRequest) GetOptionalPreconditions() []*Precondition {
	if x != nil {
		return x.OptionalPreconditions
	}
	return nil
}

func (x *WriteRelationshipsRequest) GetOptionalTransactionMetadata() *structpb.Struct {
	if x != nil {
		return x.OptionalTransactionMetadata
	}
	return nil
}

type WriteRelationshipsResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	WrittenAt     *ZedToken              `protobuf:"bytes,1,opt,name=written_at,json=writtenAt,proto3" json:"written_at,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*WriteRelationshipsResponse) ProtoMessage() {}

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

func (x *WriteRelationshipsResponse) GetWrittenAt() *ZedToken {
	if x != nil {
		return x.WrittenAt
	}
	return nil
}

// DeleteRelationshipsRequest specifies which Relationships should be deleted,
// requesting the delete of *ALL* relationships that match the specified
// filters. If the optional_preconditions parameter is included, all of the
// specified preconditions must also be satisfied before the delete will be
// executed.
type DeleteRelationshipsRequest struct {
	state                 protoimpl.MessageState `protogen:"open.v1"`
	RelationshipFilter    *RelationshipFilter    `protobuf:"bytes,1,opt,name=relationship_filter,json=relationshipFilter,proto3" json:"relationship_filter,omitempty"`
	OptionalPreconditions []*Precondition        `protobuf:"bytes,2,rep,name=optional_preconditions,json=optionalPreconditions,proto3" json:"optional_preconditions,omitempty"` // To be bounded by configuration
	// optional_limit, if non-zero, specifies the limit on the number of relationships to be deleted.
	// If there are more matching relationships found to be deleted than the limit specified here,
	// the deletion call will fail with an error to prevent partial deletion. If partial deletion
	// is needed, specify below that partial deletion is allowed. Partial deletions can be used
	// in a loop to delete large amounts of relationships in a *non-transactional* manner.
	OptionalLimit uint32 `protobuf:"varint,3,opt,name=optional_limit,json=optionalLimit,proto3" json:"optional_limit,omitempty"`
	// optional_allow_partial_deletions, if true and a limit is specified, will delete matching found
	// relationships up to the count specified in optional_limit, and no more.
	OptionalAllowPartialDeletions bool `protobuf:"varint,4,opt,name=optional_allow_partial_deletions,json=optionalAllowPartialDeletions,proto3" json:"optional_allow_partial_deletions,omitempty"`
	// optional_transaction_metadata is an optional field that can be used to store metadata about the transaction.
	// If specified, this metadata will be supplied in the WatchResponse for the deletions associated with
	// this transaction.
	OptionalTransactionMetadata *structpb.Struct `protobuf:"bytes,5,opt,name=optional_transaction_metadata,json=optionalTransactionMetadata,proto3" json:"optional_transaction_metadata,omitempty"`
	unknownFields               protoimpl.UnknownFields
	sizeCache                   protoimpl.SizeCache
}

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

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

func (*DeleteRelationshipsRequest) ProtoMessage() {}

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

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

func (x *DeleteRelationshipsRequest) GetOptionalPreconditions() []*Precondition {
	if x != nil {
		return x.OptionalPreconditions
	}
	return nil
}

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

func (x *DeleteRelationshipsRequest) GetOptionalAllowPartialDeletions() bool {
	if x != nil {
		return x.OptionalAllowPartialDeletions
	}
	return false
}

func (x *DeleteRelationshipsRequest) GetOptionalTransactionMetadata() *structpb.Struct {
	if x != nil {
		return x.OptionalTransactionMetadata
	}
	return nil
}

type DeleteRelationshipsResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// deleted_at is the revision at which the relationships were deleted.
	DeletedAt *ZedToken `protobuf:"bytes,1,opt,name=deleted_at,json=deletedAt,proto3" json:"deleted_at,omitempty"`
	// deletion_progress is an enumeration of the possible outcomes that occurred when attempting to delete the specified relationships.
	DeletionProgress DeleteRelationshipsResponse_DeletionProgress `protobuf:"varint,2,opt,name=deletion_progress,json=deletionProgress,proto3,enum=authzed.api.v1.DeleteRelationshipsResponse_DeletionProgress" json:"deletion_progress,omitempty"`
	// relationships_deleted_count is the number of relationships that were deleted.
	RelationshipsDeletedCount uint64 `protobuf:"varint,3,opt,name=relationships_deleted_count,json=relationshipsDeletedCount,proto3" json:"relationships_deleted_count,omitempty"`
	unknownFields             protoimpl.UnknownFields
	sizeCache                 protoimpl.SizeCache
}

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

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

func (*DeleteRelationshipsResponse) ProtoMessage() {}

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

func (x *DeleteRelationshipsResponse) GetDeletedAt() *ZedToken {
	if x != nil {
		return x.DeletedAt
	}
	return nil
}

func (x *DeleteRelationshipsResponse) GetDeletionProgress() DeleteRelationshipsResponse_DeletionProgress {
	if x != nil {
		return x.DeletionProgress
	}
	return DeleteRelationshipsResponse_DELETION_PROGRESS_UNSPECIFIED
}

func (x *DeleteRelationshipsResponse) GetRelationshipsDeletedCount() uint64 {
	if x != nil {
		return x.RelationshipsDeletedCount
	}
	return 0
}

// CheckPermissionRequest issues a check on whether a subject has a permission
// or is a member of a relation, on a specific resource.
type CheckPermissionRequest struct {
	state       protoimpl.MessageState `protogen:"open.v1"`
	Consistency *Consistency           `protobuf:"bytes,1,opt,name=consistency,proto3" json:"consistency,omitempty"`
	// resource is the resource on which to check the permission or relation.
	Resource *ObjectReference `protobuf:"bytes,2,opt,name=resource,proto3" json:"resource,omitempty"`
	// permission is the name of the permission (or relation) on which to execute
	// the check.
	Permission string `protobuf:"bytes,3,opt,name=permission,proto3" json:"permission,omitempty"`
	// subject is the subject that will be checked for the permission or relation.
	Subject *SubjectReference `protobuf:"bytes,4,opt,name=subject,proto3" json:"subject,omitempty"`
	// context consists of named values that are injected into the caveat evaluation context
	Context *structpb.Struct `protobuf:"bytes,5,opt,name=context,proto3" json:"context,omitempty"`
	// with_tracing, if true, indicates that the response should include a debug trace.
	// This can be useful for debugging and performance analysis, but adds a small amount
	// of compute overhead to the request.
	WithTracing   bool `protobuf:"varint,6,opt,name=with_tracing,json=withTracing,proto3" json:"with_tracing,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*CheckPermissionRequest) ProtoMessage() {}

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

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

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

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

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

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

func (x *CheckPermissionRequest) GetWithTracing() bool {
	if x != nil {
		return x.WithTracing
	}
	return false
}

type CheckPermissionResponse struct {
	state     protoimpl.MessageState `protogen:"open.v1"`
	CheckedAt *ZedToken              `protobuf:"bytes,1,opt,name=checked_at,json=checkedAt,proto3" json:"checked_at,omitempty"`
	// Permissionship communicates whether or not the subject has the requested
	// permission or has a relationship with the given resource, over the given
	// relation.
	//
	// This value will be authzed.api.v1.PERMISSIONSHIP_HAS_PERMISSION if the
	// requested subject is a member of the computed permission set or there
	// exists a relationship with the requested relation from the given resource
	// to the given subject.
	Permissionship CheckPermissionResponse_Permissionship `protobuf:"varint,2,opt,name=permissionship,proto3,enum=authzed.api.v1.CheckPermissionResponse_Permissionship" json:"permissionship,omitempty"`
	// partial_caveat_info holds information of a partially-evaluated caveated response
	PartialCaveatInfo *PartialCaveatInfo `protobuf:"bytes,3,opt,name=partial_caveat_info,json=partialCaveatInfo,proto3" json:"partial_caveat_info,omitempty"`
	// debug_trace is the debugging trace of this check, if requested.
	DebugTrace *DebugInformation `protobuf:"bytes,4,opt,name=debug_trace,json=debugTrace,proto3" json:"debug_trace,omitempty"`
	// optional_expires_at is the time at which at least one of the relationships used to
	// compute this result, expires (if any). This is *not* related to the caching window.
	OptionalExpiresAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=optional_expires_at,json=optionalExpiresAt,proto3" json:"optional_expires_at,omitempty"`
	unknownFields     protoimpl.UnknownFields
	sizeCache         protoimpl.SizeCache
}

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

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

func (*CheckPermissionResponse) ProtoMessage() {}

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

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

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

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

func (x *CheckPermissionResponse) GetDebugTrace() *DebugInformation {
	if x != nil {
		return x.DebugTrace
	}
	return nil
}

func (x *CheckPermissionResponse) GetOptionalExpiresAt() *timestamppb.Timestamp {
	if x != nil {
		return x.OptionalExpiresAt
	}
	return nil
}

// CheckBulkPermissionsRequest issues a check on whether a subject has permission
// or is a member of a relation on a specific resource for each item in the list.
//
// The ordering of the items in the response is maintained in the response.
// Checks with the same subject/permission will automatically be batched for performance optimization.
type CheckBulkPermissionsRequest struct {
	state       protoimpl.MessageState             `protogen:"open.v1"`
	Consistency *Consistency                       `protobuf:"bytes,1,opt,name=consistency,proto3" json:"consistency,omitempty"`
	Items       []*CheckBulkPermissionsRequestItem `protobuf:"bytes,2,rep,name=items,proto3" json:"items,omitempty"`
	// with_tracing, if true, indicates that each response should include a debug trace.
	// This can be useful for debugging and performance analysis, but adds a small amount
	// of compute overhead to the request.
	WithTracing   bool `protobuf:"varint,3,opt,name=with_tracing,json=withTracing,proto3" json:"with_tracing,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*CheckBulkPermissionsRequest) ProtoMessage() {}

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

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

func (x *CheckBulkPermissionsRequest) GetItems() []*CheckBulkPermissionsRequestItem {
	if x != nil {
		return x.Items
	}
	return nil
}

func (x *CheckBulkPermissionsRequest) GetWithTracing() bool {
	if x != nil {
		return x.WithTracing
	}
	return false
}

type CheckBulkPermissionsRequestItem 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 *CheckBulkPermissionsRequestItem) Reset() {
	*x = CheckBulkPermissionsRequestItem{}
	mi := &file_authzed_api_v1_permission_service_proto_msgTypes[13]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*CheckBulkPermissionsRequestItem) ProtoMessage() {}

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

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

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

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

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

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

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

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

func (*CheckBulkPermissionsResponse) ProtoMessage() {}

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

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

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

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

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

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

func (*CheckBulkPermissionsPair) ProtoMessage() {}

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

func (x *CheckBulkPermissionsPair) GetRequest() *CheckBulkPermissionsRequestItem {
	if x != nil {
		return x.Request
	}
	return nil
}

func (x *CheckBulkPermissionsPair) GetResponse() isCheckBulkPermissionsPair_Response {
	if x != nil {
		return x.Response
	}
	return nil
}

func (x *CheckBulkPermissionsPair) GetItem() *CheckBulkPermissionsResponseItem {
	if x != nil {
		if x, ok := x.Response.(*CheckBulkPermissionsPair_Item); ok {
			return x.Item
		}
	}
	return nil
}

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

type isCheckBulkPermissionsPair_Response interface {
	isCheckBulkPermissionsPair_Response()
}

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

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

func (*CheckBulkPermissionsPair_Item) isCheckBulkPermissionsPair_Response() {}

func (*CheckBulkPermissionsPair_Error) isCheckBulkPermissionsPair_Response() {}

type CheckBulkPermissionsResponseItem 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"`
	// debug_trace is the debugging trace of this check, if requested.
	DebugTrace    *DebugInformation `protobuf:"bytes,3,opt,name=debug_trace,json=debugTrace,proto3" json:"debug_trace,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*CheckBulkPermissionsResponseItem) ProtoMessage() {}

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

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

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

func (x *CheckBulkPermissionsResponseItem) GetDebugTrace() *DebugInformation {
	if x != nil {
		return x.DebugTrace
	}
	return nil
}

// ExpandPermissionTreeRequest returns a tree representing the expansion of all
// relationships found accessible from a permission or relation on a particular
// resource.
//
// ExpandPermissionTreeRequest is typically used to determine the full set of
// subjects with a permission, along with the relationships that grant said
// access.
type ExpandPermissionTreeRequest struct {
	state       protoimpl.MessageState `protogen:"open.v1"`
	Consistency *Consistency           `protobuf:"bytes,1,opt,name=consistency,proto3" json:"consistency,omitempty"`
	// resource is the resource over which to run the expansion.
	Resource *ObjectReference `protobuf:"bytes,2,opt,name=resource,proto3" json:"resource,omitempty"`
	// permission is the name of the permission or relation over which to run the
	// expansion for the resource.
	Permission    string `protobuf:"bytes,3,opt,name=permission,proto3" json:"permission,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ExpandPermissionTreeRequest) ProtoMessage() {}

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

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

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

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

type ExpandPermissionTreeResponse struct {
	state      protoimpl.MessageState `protogen:"open.v1"`
	ExpandedAt *ZedToken              `protobuf:"bytes,1,opt,name=expanded_at,json=expandedAt,proto3" json:"expanded_at,omitempty"`
	// tree_root is a tree structure whose leaf nodes are subjects, and
	// intermediate nodes represent the various operations (union, intersection,
	// exclusion) to reach those subjects.
	TreeRoot      *PermissionRelationshipTree `protobuf:"bytes,2,opt,name=tree_root,json=treeRoot,proto3" json:"tree_root,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ExpandPermissionTreeResponse) ProtoMessage() {}

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

func (x *ExpandPermissionTreeResponse) GetExpandedAt() *ZedToken {
	if x != nil {
		return x.ExpandedAt
	}
	return nil
}

func (x *ExpandPermissionTreeResponse) GetTreeRoot() *PermissionRelationshipTree {
	if x != nil {
		return x.TreeRoot
	}
	return nil
}

// LookupResourcesRequest performs a lookup of all resources of a particular
// kind on which the subject has the specified permission or the relation in
// which the subject exists, streaming back the IDs of those resources.
type LookupResourcesRequest struct {
	state       protoimpl.MessageState `protogen:"open.v1"`
	Consistency *Consistency           `protobuf:"bytes,1,opt,name=consistency,proto3" json:"consistency,omitempty"`
	// resource_object_type is the type of resource object for which the IDs will
	// be returned.
	ResourceObjectType string `protobuf:"bytes,2,opt,name=resource_object_type,json=resourceObjectType,proto3" json:"resource_object_type,omitempty"`
	// permission is the name of the permission or relation for which the subject
	// must Check.
	Permission string `protobuf:"bytes,3,opt,name=permission,proto3" json:"permission,omitempty"`
	// subject is the subject with access to the resources.
	Subject *SubjectReference `protobuf:"bytes,4,opt,name=subject,proto3" json:"subject,omitempty"`
	// context consists of named values that are injected into the caveat evaluation context
	Context *structpb.Struct `protobuf:"bytes,5,opt,name=context,proto3" json:"context,omitempty"`
	// optional_limit, if non-zero, specifies the limit on the number of resources to return
	// before the stream is closed on the server side. By default, the stream will continue
	// resolving resources until exhausted or the stream is closed due to the client or a
	// network issue.
	OptionalLimit uint32 `protobuf:"varint,6,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 LookupResourcesResponse object.
	OptionalCursor *Cursor `protobuf:"bytes,7,opt,name=optional_cursor,json=optionalCursor,proto3" json:"optional_cursor,omitempty"`
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

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

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

func (*LookupResourcesRequest) ProtoMessage() {}

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

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

func (x *LookupResourcesRequest) GetResourceObjectType() string {
	if x != nil {
		return x.ResourceObjectType
	}
	return ""
}

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

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

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

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

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

// LookupResourcesResponse contains a single matching resource object ID for the
// requested object type, permission, and subject.
type LookupResourcesResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// looked_up_at is the ZedToken at which the resource was found.
	LookedUpAt *ZedToken `protobuf:"bytes,1,opt,name=looked_up_at,json=lookedUpAt,proto3" json:"looked_up_at,omitempty"`
	// resource_object_id is the object ID of the found resource.
	ResourceObjectId string `protobuf:"bytes,2,opt,name=resource_object_id,json=resourceObjectId,proto3" json:"resource_object_id,omitempty"`
	// permissionship indicates whether the response was partially evaluated or not
	Permissionship LookupPermissionship `protobuf:"varint,3,opt,name=permissionship,proto3,enum=authzed.api.v1.LookupPermissionship" json:"permissionship,omitempty"`
	// partial_caveat_info holds information of a partially-evaluated caveated response
	PartialCaveatInfo *PartialCaveatInfo `protobuf:"bytes,4,opt,name=partial_caveat_info,json=partialCaveatInfo,proto3" json:"partial_caveat_info,omitempty"`
	// after_result_cursor holds a cursor that can be used to resume the LookupResources stream after this
	// result.
	AfterResultCursor *Cursor `protobuf:"bytes,5,opt,name=after_result_cursor,json=afterResultCursor,proto3" json:"after_result_cursor,omitempty"`
	unknownFields     protoimpl.UnknownFields
	sizeCache         protoimpl.SizeCache
}

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

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

func (*LookupResourcesResponse) ProtoMessage() {}

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

func (x *LookupResourcesResponse) GetLookedUpAt() *ZedToken {
	if x != nil {
		return x.LookedUpAt
	}
	return nil
}

func (x *LookupResourcesResponse) GetResourceObjectId() string {
	if x != nil {
		return x.ResourceObjectId
	}
	return ""
}

func (x *LookupResourcesResponse) GetPermissionship() LookupPermissionship {
	if x != nil {
		return x.Permissionship
	}
	return LookupPermissionship_LOOKUP_PERMISSIONSHIP_UNSPECIFIED
}

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

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

// LookupSubjectsRequest performs a lookup of all subjects of a particular
// kind for which the subject has the specified permission or the relation in
// which the subject exists, streaming back the IDs of those subjects.
type LookupSubjectsRequest struct {
	state       protoimpl.MessageState `protogen:"open.v1"`
	Consistency *Consistency           `protobuf:"bytes,1,opt,name=consistency,proto3" json:"consistency,omitempty"`
	// resource is the resource for which all matching subjects for the permission
	// or relation will be returned.
	Resource *ObjectReference `protobuf:"bytes,2,opt,name=resource,proto3" json:"resource,omitempty"`
	// permission is the name of the permission (or relation) for which to find
	// the subjects.
	Permission string `protobuf:"bytes,3,opt,name=permission,proto3" json:"permission,omitempty"`
	// subject_object_type is the type of subject object for which the IDs will
	// be returned.
	SubjectObjectType string `protobuf:"bytes,4,opt,name=subject_object_type,json=subjectObjectType,proto3" json:"subject_object_type,omitempty"`
	// optional_subject_relation is the optional relation for the subject.
	OptionalSubjectRelation string `protobuf:"bytes,5,opt,name=optional_subject_relation,json=optionalSubjectRelation,proto3" json:"optional_subject_relation,omitempty"`
	// context consists of named values that are injected into the caveat evaluation context
	Context *structpb.Struct `protobuf:"bytes,6,opt,name=context,proto3" json:"context,omitempty"`
	// optional_concrete_limit is currently unimplemented for LookupSubjects
	// and will return an error as of SpiceDB version 1.40.1. This will
	// be implemented in a future version of SpiceDB.
	OptionalConcreteLimit uint32 `protobuf:"varint,7,opt,name=optional_concrete_limit,json=optionalConcreteLimit,proto3" json:"optional_concrete_limit,omitempty"`
	// optional_cursor is currently unimplemented for LookupSubjects
	// and will be ignored as of SpiceDB version 1.40.1. This will
	// be implemented in a future version of SpiceDB.
	OptionalCursor *Cursor `protobuf:"bytes,8,opt,name=optional_cursor,json=optionalCursor,proto3" json:"optional_cursor,omitempty"`
	// wildcard_option specifies whether wildcards should be returned by LookupSubjects.
	// For backwards compatibility, defaults to WILDCARD_OPTION_INCLUDE_WILDCARDS if unspecified.
	WildcardOption LookupSubjectsRequest_WildcardOption `protobuf:"varint,9,opt,name=wildcard_option,json=wildcardOption,proto3,enum=authzed.api.v1.LookupSubjectsRequest_WildcardOption" json:"wildcard_option,omitempty"`
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

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

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

func (*LookupSubjectsRequest) ProtoMessage() {}

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

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

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

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

func (x *LookupSubjectsRequest) GetSubjectObjectType() string {
	if x != nil {
		return x.SubjectObjectType
	}
	return ""
}

func (x *LookupSubjectsRequest) GetOptionalSubjectRelation() string {
	if x != nil {
		return x.OptionalSubjectRelation
	}
	return ""
}

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

func (x *LookupSubjectsRequest) GetOptionalConcreteLimit() uint32 {
	if x != nil {
		return x.OptionalConcreteLimit
	}
	return 0
}

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

func (x *LookupSubjectsRequest) GetWildcardOption() LookupSubjectsRequest_WildcardOption {
	if x != nil {
		return x.WildcardOption
	}
	return LookupSubjectsRequest_WILDCARD_OPTION_UNSPECIFIED
}

// LookupSubjectsResponse contains a single matching subject object ID for the
// requested subject object type on the permission or relation.
type LookupSubjectsResponse struct {
	state      protoimpl.MessageState `protogen:"open.v1"`
	LookedUpAt *ZedToken              `protobuf:"bytes,1,opt,name=looked_up_at,json=lookedUpAt,proto3" json:"looked_up_at,omitempty"`
	// subject_object_id is the Object ID of the subject found. May be a `*` if
	// a wildcard was found.
	// deprecated: use `subject`
	//
	// Deprecated: Marked as deprecated in authzed/api/v1/permission_service.proto.
	SubjectObjectId string `protobuf:"bytes,2,opt,name=subject_object_id,json=subjectObjectId,proto3" json:"subject_object_id,omitempty"`
	// excluded_subject_ids are the Object IDs of the subjects excluded. This list
	// will only contain object IDs if `subject_object_id` is a wildcard (`*`) and
	// will only be populated if exclusions exist from the wildcard.
	// deprecated: use `excluded_subjects`
	//
	// Deprecated: Marked as deprecated in authzed/api/v1/permission_service.proto.
	ExcludedSubjectIds []string `protobuf:"bytes,3,rep,name=excluded_subject_ids,json=excludedSubjectIds,proto3" json:"excluded_subject_ids,omitempty"`
	// permissionship indicates whether the response was partially evaluated or not
	// deprecated: use `subject.permissionship`
	//
	// Deprecated: Marked as deprecated in authzed/api/v1/permission_service.proto.
	Permissionship LookupPermissionship `protobuf:"varint,4,opt,name=permissionship,proto3,enum=authzed.api.v1.LookupPermissionship" json:"permissionship,omitempty"`
	// partial_caveat_info holds information of a partially-evaluated caveated response
	// deprecated: use `subject.partial_caveat_info`
	//
	// Deprecated: Marked as deprecated in authzed/api/v1/permission_service.proto.
	PartialCaveatInfo *PartialCaveatInfo `protobuf:"bytes,5,opt,name=partial_caveat_info,json=partialCaveatInfo,proto3" json:"partial_caveat_info,omitempty"`
	// subject is the subject found, along with its permissionship.
	Subject *ResolvedSubject `protobuf:"bytes,6,opt,name=subject,proto3" json:"subject,omitempty"`
	// excluded_subjects are the subjects excluded. This list
	// will only contain subjects if `subject.subject_object_id` is a wildcard (`*`) and
	// will only be populated if exclusions exist from the wildcard.
	ExcludedSubjects []*ResolvedSubject `protobuf:"bytes,7,rep,name=excluded_subjects,json=excludedSubjects,proto3" json:"excluded_subjects,omitempty"`
	// after_result_cursor holds a cursor that can be used to resume the LookupSubjects stream after this
	// result.
	AfterResultCursor *Cursor `protobuf:"bytes,8,opt,name=after_result_cursor,json=afterResultCursor,proto3" json:"after_result_cursor,omitempty"`
	unknownFields     protoimpl.UnknownFields
	sizeCache         protoimpl.SizeCache
}

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

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

func (*LookupSubjectsResponse) ProtoMessage() {}

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

func (x *LookupSubjectsResponse) GetLookedUpAt() *ZedToken {
	if x != nil {
		return x.LookedUpAt
	}
	return nil
}

// Deprecated: Marked as deprecated in authzed/api/v1/permission_service.proto.
func (x *LookupSubjectsResponse) GetSubjectObjectId() string {
	if x != nil {
		return x.SubjectObjectId
	}
	return ""
}

// Deprecated: Marked as deprecated in authzed/api/v1/permission_service.proto.
func (x *LookupSubjectsResponse) GetExcludedSubjectIds() []string {
	if x != nil {
		return x.ExcludedSubjectIds
	}
	return nil
}

// Deprecated: Marked as deprecated in authzed/api/v1/permission_service.proto.
func (x *LookupSubjectsResponse) GetPermissionship() LookupPermissionship {
	if x != nil {
		return x.Permissionship
	}
	return LookupPermissionship_LOOKUP_PERMISSIONSHIP_UNSPECIFIED
}

// Deprecated: Marked as deprecated in authzed/api/v1/permission_service.proto.
func (x *LookupSubjectsResponse) GetPartialCaveatInfo() *PartialCaveatInfo {
	if x != nil {
		return x.PartialCaveatInfo
	}
	return nil
}

func (x *LookupSubjectsResponse) GetSubject() *ResolvedSubject {
	if x != nil {
		return x.Subject
	}
	return nil
}

func (x *LookupSubjectsResponse) GetExcludedSubjects() []*ResolvedSubject {
	if x != nil {
		return x.ExcludedSubjects
	}
	return nil
}

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

// ResolvedSubject is a single subject resolved within LookupSubjects.
type ResolvedSubject struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// subject_object_id is the Object ID of the subject found. May be a `*` if
	// a wildcard was found.
	SubjectObjectId string `protobuf:"bytes,1,opt,name=subject_object_id,json=subjectObjectId,proto3" json:"subject_object_id,omitempty"`
	// permissionship indicates whether the response was partially evaluated or not
	Permissionship LookupPermissionship `protobuf:"varint,2,opt,name=permissionship,proto3,enum=authzed.api.v1.LookupPermissionship" json:"permissionship,omitempty"`
	// partial_caveat_info holds information of a partially-evaluated caveated response
	PartialCaveatInfo *PartialCaveatInfo `protobuf:"bytes,3,opt,name=partial_caveat_info,json=partialCaveatInfo,proto3" json:"partial_caveat_info,omitempty"`
	unknownFields     protoimpl.UnknownFields
	sizeCache         protoimpl.SizeCache
}

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

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

func (*ResolvedSubject) ProtoMessage() {}

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

func (x *ResolvedSubject) GetSubjectObjectId() string {
	if x != nil {
		return x.SubjectObjectId
	}
	return ""
}

func (x *ResolvedSubject) GetPermissionship() LookupPermissionship {
	if x != nil {
		return x.Permissionship
	}
	return LookupPermissionship_LOOKUP_PERMISSIONSHIP_UNSPECIFIED
}

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

// ImportBulkRelationshipsRequest represents one batch of the streaming
// ImportBulkRelationships API. The maximum size is only limited by the backing
// datastore, and optimal size should be determined by the calling client
// experimentally. When ImportBulk 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 ImportBulkRelationshipsRequest 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 *ImportBulkRelationshipsRequest) Reset() {
	*x = ImportBulkRelationshipsRequest{}
	mi := &file_authzed_api_v1_permission_service_proto_msgTypes[24]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ImportBulkRelationshipsRequest) ProtoMessage() {}

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

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

// ImportBulkRelationshipsResponse is returned on successful completion of the
// bulk load stream, and contains the total number of relationships loaded.
type ImportBulkRelationshipsResponse 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 *ImportBulkRelationshipsResponse) Reset() {
	*x = ImportBulkRelationshipsResponse{}
	mi := &file_authzed_api_v1_permission_service_proto_msgTypes[25]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ImportBulkRelationshipsResponse) ProtoMessage() {}

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

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

// ExportBulkRelationshipsRequest represents a resumable request for
// all relationships from the server.
type ExportBulkRelationshipsRequest 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 *ExportBulkRelationshipsRequest) Reset() {
	*x = ExportBulkRelationshipsRequest{}
	mi := &file_authzed_api_v1_permission_service_proto_msgTypes[26]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ExportBulkRelationshipsRequest) ProtoMessage() {}

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

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

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

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

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

// ExportBulkRelationshipsResponse 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 ExportBulkRelationshipsResponse 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 *ExportBulkRelationshipsResponse) Reset() {
	*x = ExportBulkRelationshipsResponse{}
	mi := &file_authzed_api_v1_permission_service_proto_msgTypes[27]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ExportBulkRelationshipsResponse) ProtoMessage() {}

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

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

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

type SubjectFilter_RelationFilter struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Relation      string                 `protobuf:"bytes,1,opt,name=relation,proto3" json:"relation,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*SubjectFilter_RelationFilter) ProtoMessage() {}

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

func (x *SubjectFilter_RelationFilter) GetRelation() string {
	if x != nil {
		return x.Relation
	}
	return ""
}

var File_authzed_api_v1_permission_service_proto protoreflect.FileDescriptor

const file_authzed_api_v1_permission_service_proto_rawDesc = "" +
	"\n" +
	"'authzed/api/v1/permission_service.proto\x12\x0eauthzed.api.v1\x1a\x19authzed/api/v1/core.proto\x1a\x1aauthzed/api/v1/debug.proto\x1a\x1bbuf/validate/validate.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x17google/rpc/status.proto\x1a.protoc-gen-openapiv2/options/annotations.proto\x1a\x17validate/validate.proto\"\xaf\x02\n" +
	"\vConsistency\x12;\n" +
	"\x10minimize_latency\x18\x01 \x01(\bB\x0e\xfaB\x04j\x02\b\x01\xbaH\x04j\x02\b\x01H\x00R\x0fminimizeLatency\x12E\n" +
	"\x11at_least_as_fresh\x18\x02 \x01(\v2\x18.authzed.api.v1.ZedTokenH\x00R\x0eatLeastAsFresh\x12F\n" +
	"\x11at_exact_snapshot\x18\x03 \x01(\v2\x18.authzed.api.v1.ZedTokenH\x00R\x0fatExactSnapshot\x12;\n" +
	"\x10fully_consistent\x18\x04 \x01(\bB\x0e\xfaB\x04j\x02\b\x01\xbaH\x04j\x02\b\x01H\x00R\x0ffullyConsistentB\x17\n" +
	"\vrequirement\x12\b\xf8B\x01\xbaH\x02\b\x01\"\xb8\x05\n" +
	"\x12RelationshipFilter\x12\xbc\x01\n" +
	"\rresource_type\x18\x01 \x01(\tB\x96\x01\xfaBHrF(\x80\x012A^(([a-z][a-z0-9_]{1,61}[a-z0-9]/)*[a-z][a-z0-9_]{1,62}[a-z0-9])?$\xbaHHrF(\x80\x012A^(([a-z][a-z0-9_]{1,61}[a-z0-9]/)*[a-z][a-z0-9_]{1,62}[a-z0-9])?$R\fresourceType\x12|\n" +
	"\x14optional_resource_id\x18\x02 \x01(\tBJ\xfaB\"r (\x80\b2\x1b^([a-zA-Z0-9/_|\\-=+]{1,})?$\xbaH\"r (\x80\b2\x1b^([a-zA-Z0-9/_|\\-=+]{1,})?$R\x12optionalResourceId\x12\x89\x01\n" +
	"\x1boptional_resource_id_prefix\x18\x05 \x01(\tBJ\xfaB\"r (\x80\b2\x1b^([a-zA-Z0-9/_|\\-=+]{1,})?$\xbaH\"r (\x80\b2\x1b^([a-zA-Z0-9/_|\\-=+]{1,})?$R\x18optionalResourceIdPrefix\x12\x81\x01\n" +
	"\x11optional_relation\x18\x03 \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\x10optionalRelation\x12U\n" +
	"\x17optional_subject_filter\x18\x04 \x01(\v2\x1d.authzed.api.v1.SubjectFilterR\x15optionalSubjectFilter\"\xad\x04\n" +
	"\rSubjectFilter\x12\xb4\x01\n" +
	"\fsubject_type\x18\x01 \x01(\tB\x90\x01\xfaBErC(\x80\x012>^([a-z][a-z0-9_]{1,61}[a-z0-9]/)*[a-z][a-z0-9_]{1,62}[a-z0-9]$\xbaHErC(\x80\x012>^([a-z][a-z0-9_]{1,61}[a-z0-9]/)*[a-z][a-z0-9_]{1,62}[a-z0-9]$R\vsubjectType\x12\x84\x01\n" +
	"\x13optional_subject_id\x18\x02 \x01(\tBT\xfaB'r%(\x80\b2 ^(([a-zA-Z0-9/_|\\-=+]{1,})|\\*)?$\xbaH'r%(\x80\b2 ^(([a-zA-Z0-9/_|\\-=+]{1,})|\\*)?$R\x11optionalSubjectId\x12Y\n" +
	"\x11optional_relation\x18\x03 \x01(\v2,.authzed.api.v1.SubjectFilter.RelationFilterR\x10optionalRelation\x1a\x82\x01\n" +
	"\x0eRelationFilter\x12p\n" +
	"\brelation\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\brelation\"\xb6\x02\n" +
	"\x18ReadRelationshipsRequest\x12=\n" +
	"\vconsistency\x18\x01 \x01(\v2\x1b.authzed.api.v1.ConsistencyR\vconsistency\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\x125\n" +
	"\x0eoptional_limit\x18\x03 \x01(\rB\x0e\xfaB\x04*\x02(\x00\xbaH\x04*\x02(\x00R\roptionalLimit\x12?\n" +
	"\x0foptional_cursor\x18\x04 \x01(\v2\x16.authzed.api.v1.CursorR\x0eoptionalCursor\"\xf8\x01\n" +
	"\x19ReadRelationshipsResponse\x12A\n" +
	"\aread_at\x18\x01 \x01(\v2\x18.authzed.api.v1.ZedTokenB\x0e\xfaB\x05\x8a\x01\x02\x10\x01\xbaH\x03\xc8\x01\x01R\x06readAt\x12P\n" +
	"\frelationship\x18\x02 \x01(\v2\x1c.authzed.api.v1.RelationshipB\x0e\xfaB\x05\x8a\x01\x02\x10\x01\xbaH\x03\xc8\x01\x01R\frelationship\x12F\n" +
	"\x13after_result_cursor\x18\x03 \x01(\v2\x16.authzed.api.v1.CursorR\x11afterResultCursor\"\x96\x02\n" +
	"\fPrecondition\x12Z\n" +
	"\toperation\x18\x01 \x01(\x0e2&.authzed.api.v1.Precondition.OperationB\x14\xfaB\a\x82\x01\x04\x10\x01 \x00\xbaH\a\x82\x01\x04\x10\x01 \x00R\toperation\x12J\n" +
	"\x06filter\x18\x02 \x01(\v2\".authzed.api.v1.RelationshipFilterB\x0e\xfaB\x05\x8a\x01\x02\x10\x01\xbaH\x03\xc8\x01\x01R\x06filter\"^\n" +
	"\tOperation\x12\x19\n" +
	"\x15OPERATION_UNSPECIFIED\x10\x00\x12\x1c\n" +
	"\x18OPERATION_MUST_NOT_MATCH\x10\x01\x12\x18\n" +
	"\x14OPERATION_MUST_MATCH\x10\x02\"\xcf\x02\n" +
	"\x19WriteRelationshipsRequest\x12V\n" +
	"\aupdates\x18\x01 \x03(\v2\".authzed.api.v1.RelationshipUpdateB\x18\xfaB\n" +
	"\x92\x01\a\"\x05\x8a\x01\x02\x10\x01\xbaH\b\x92\x01\x05\"\x03\xc8\x01\x01R\aupdates\x12m\n" +
	"\x16optional_preconditions\x18\x02 \x03(\v2\x1c.authzed.api.v1.PreconditionB\x18\xfaB\n" +
	"\x92\x01\a\"\x05\x8a\x01\x02\x10\x01\xbaH\b\x92\x01\x05\"\x03\xc8\x01\x01R\x15optionalPreconditions\x12k\n" +
	"\x1doptional_transaction_metadata\x18\x03 \x01(\v2\x17.google.protobuf.StructB\x0e\xfaB\x05\x8a\x01\x02\x10\x00\xbaH\x03\xc8\x01\x00R\x1boptionalTransactionMetadata\"U\n" +
	"\x1aWriteRelationshipsResponse\x127\n" +
	"\n" +
	"written_at\x18\x01 \x01(\v2\x18.authzed.api.v1.ZedTokenR\twrittenAt\"\xdd\x03\n" +
	"\x1aDeleteRelationshipsRequest\x12c\n" +
	"\x13relationship_filter\x18\x01 \x01(\v2\".authzed.api.v1.RelationshipFilterB\x0e\xfaB\x05\x8a\x01\x02\x10\x01\xbaH\x03\xc8\x01\x01R\x12relationshipFilter\x12m\n" +
	"\x16optional_preconditions\x18\x02 \x03(\v2\x1c.authzed.api.v1.PreconditionB\x18\xfaB\n" +
	"\x92\x01\a\"\x05\x8a\x01\x02\x10\x01\xbaH\b\x92\x01\x05\"\x03\xc8\x01\x01R\x15optionalPreconditions\x125\n" +
	"\x0eoptional_limit\x18\x03 \x01(\rB\x0e\xfaB\x04*\x02(\x00\xbaH\x04*\x02(\x00R\roptionalLimit\x12G\n" +
	" optional_allow_partial_deletions\x18\x04 \x01(\bR\x1doptionalAllowPartialDeletions\x12k\n" +
	"\x1doptional_transaction_metadata\x18\x05 \x01(\v2\x17.google.protobuf.StructB\x0e\xfaB\x05\x8a\x01\x02\x10\x00\xbaH\x03\xc8\x01\x00R\x1boptionalTransactionMetadata\"\xf7\x02\n" +
	"\x1bDeleteRelationshipsResponse\x127\n" +
	"\n" +
	"deleted_at\x18\x01 \x01(\v2\x18.authzed.api.v1.ZedTokenR\tdeletedAt\x12i\n" +
	"\x11deletion_progress\x18\x02 \x01(\x0e2<.authzed.api.v1.DeleteRelationshipsResponse.DeletionProgressR\x10deletionProgress\x12>\n" +
	"\x1brelationships_deleted_count\x18\x03 \x01(\x04R\x19relationshipsDeletedCount\"t\n" +
	"\x10DeletionProgress\x12!\n" +
	"\x1dDELETION_PROGRESS_UNSPECIFIED\x10\x00\x12\x1e\n" +
	"\x1aDELETION_PROGRESS_COMPLETE\x10\x01\x12\x1d\n" +
	"\x19DELETION_PROGRESS_PARTIAL\x10\x02\"\xcc\x03\n" +
	"\x16CheckPermissionRequest\x12=\n" +
	"\vconsistency\x18\x01 \x01(\v2\x1b.authzed.api.v1.ConsistencyR\vconsistency\x12K\n" +
	"\bresource\x18\x02 \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\x03 \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\x04 \x01(\v2 .authzed.api.v1.SubjectReferenceB\x0e\xfaB\x05\x8a\x01\x02\x10\x01\xbaH\x03\xc8\x01\x01R\asubject\x12A\n" +
	"\acontext\x18\x05 \x01(\v2\x17.google.protobuf.StructB\x0e\xfaB\x05\x8a\x01\x02\x10\x00\xbaH\x03\xc8\x01\x00R\acontext\x12!\n" +
	"\fwith_tracing\x18\x06 \x01(\bR\vwithTracing\"\xed\x04\n" +
	"\x17CheckPermissionResponse\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\x12t\n" +
	"\x0epermissionship\x18\x02 \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\x03 \x01(\v2!.authzed.api.v1.PartialCaveatInfoB\x0e\xfaB\x05\x8a\x01\x02\x10\x00\xbaH\x03\xc8\x01\x00R\x11partialCaveatInfo\x12A\n" +
	"\vdebug_trace\x18\x04 \x01(\v2 .authzed.api.v1.DebugInformationR\n" +
	"debugTrace\x12J\n" +
	"\x13optional_expires_at\x18\x05 \x01(\v2\x1a.google.protobuf.TimestampR\x11optionalExpiresAt\"\xa0\x01\n" +
	"\x0ePermissionship\x12\x1e\n" +
	"\x1aPERMISSIONSHIP_UNSPECIFIED\x10\x00\x12 \n" +
	"\x1cPERMISSIONSHIP_NO_PERMISSION\x10\x01\x12!\n" +
	"\x1dPERMISSIONSHIP_HAS_PERMISSION\x10\x02\x12)\n" +
	"%PERMISSIONSHIP_CONDITIONAL_PERMISSION\x10\x03\"\xe0\x01\n" +
	"\x1bCheckBulkPermissionsRequest\x12=\n" +
	"\vconsistency\x18\x01 \x01(\v2\x1b.authzed.api.v1.ConsistencyR\vconsistency\x12_\n" +
	"\x05items\x18\x02 \x03(\v2/.authzed.api.v1.CheckBulkPermissionsRequestItemB\x18\xfaB\n" +
	"\x92\x01\a\"\x05\x8a\x01\x02\x10\x01\xbaH\b\x92\x01\x05\"\x03\xc8\x01\x01R\x05items\x12!\n" +
	"\fwith_tracing\x18\x03 \x01(\bR\vwithTracing\"\xf3\x02\n" +
	"\x1fCheckBulkPermissionsRequestItem\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\"\xc1\x01\n" +
	"\x1cCheckBulkPermissionsResponse\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\x12X\n" +
	"\x05pairs\x18\x02 \x03(\v2(.authzed.api.v1.CheckBulkPermissionsPairB\x18\xfaB\n" +
	"\x92\x01\a\"\x05\x8a\x01\x02\x10\x01\xbaH\b\x92\x01\x05\"\x03\xc8\x01\x01R\x05pairs\"\xe5\x01\n" +
	"\x18CheckBulkPermissionsPair\x12I\n" +
	"\arequest\x18\x01 \x01(\v2/.authzed.api.v1.CheckBulkPermissionsRequestItemR\arequest\x12F\n" +
	"\x04item\x18\x02 \x01(\v20.authzed.api.v1.CheckBulkPermissionsResponseItemH\x00R\x04item\x12*\n" +
	"\x05error\x18\x03 \x01(\v2\x12.google.rpc.StatusH\x00R\x05errorB\n" +
	"\n" +
	"\bresponse\"\xbe\x02\n" +
	" CheckBulkPermissionsResponseItem\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\x12A\n" +
	"\vdebug_trace\x18\x03 \x01(\v2 .authzed.api.v1.DebugInformationR\n" +
	"debugTrace\"\x9f\x02\n" +
	"\x1bExpandPermissionTreeRequest\x12=\n" +
	"\vconsistency\x18\x01 \x01(\v2\x1b.authzed.api.v1.ConsistencyR\vconsistency\x12K\n" +
	"\bresource\x18\x02 \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\x03 \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\"\xa2\x01\n" +
	"\x1cExpandPermissionTreeResponse\x129\n" +
	"\vexpanded_at\x18\x01 \x01(\v2\x18.authzed.api.v1.ZedTokenR\n" +
	"expandedAt\x12G\n" +
	"\ttree_root\x18\x02 \x01(\v2*.authzed.api.v1.PermissionRelationshipTreeR\btreeRoot\"\x94\x05\n" +
	"\x16LookupResourcesRequest\x12=\n" +
	"\vconsistency\x18\x01 \x01(\v2\x1b.authzed.api.v1.ConsistencyR\vconsistency\x12\xc3\x01\n" +
	"\x14resource_object_type\x18\x02 \x01(\tB\x90\x01\xfaBErC(\x80\x012>^([a-z][a-z0-9_]{1,61}[a-z0-9]/)*[a-z][a-z0-9_]{1,62}[a-z0-9]$\xbaHErC(\x80\x012>^([a-z][a-z0-9_]{1,61}[a-z0-9]/)*[a-z][a-z0-9_]{1,62}[a-z0-9]$R\x12resourceObjectType\x12n\n" +
	"\n" +
	"permission\x18\x03 \x01(\tBN\xfaB$r\"(@2\x1e^[a-z][a-z0-9_]{1,62}[a-z0-9]$\xbaH$r\"(@2\x1e^[a-z][a-z0-9_]{1,62}[a-z0-9]$R\n" +
	"permission\x12J\n" +
	"\asubject\x18\x04 \x01(\v2 .authzed.api.v1.SubjectReferenceB\x0e\xfaB\x05\x8a\x01\x02\x10\x01\xbaH\x03\xc8\x01\x01R\asubject\x12A\n" +
	"\acontext\x18\x05 \x01(\v2\x17.google.protobuf.StructB\x0e\xfaB\x05\x8a\x01\x02\x10\x00\xbaH\x03\xc8\x01\x00R\acontext\x125\n" +
	"\x0eoptional_limit\x18\x06 \x01(\rB\x0e\xfaB\x04*\x02(\x00\xbaH\x04*\x02(\x00R\roptionalLimit\x12?\n" +
	"\x0foptional_cursor\x18\a \x01(\v2\x16.authzed.api.v1.CursorR\x0eoptionalCursor\"\x92\x03\n" +
	"\x17LookupResourcesResponse\x12:\n" +
	"\flooked_up_at\x18\x01 \x01(\v2\x18.authzed.api.v1.ZedTokenR\n" +
	"lookedUpAt\x12,\n" +
	"\x12resource_object_id\x18\x02 \x01(\tR\x10resourceObjectId\x12b\n" +
	"\x0epermissionship\x18\x03 \x01(\x0e2$.authzed.api.v1.LookupPermissionshipB\x14\xfaB\a\x82\x01\x04\x10\x01 \x00\xbaH\a\x82\x01\x04\x10\x01 \x00R\x0epermissionship\x12a\n" +
	"\x13partial_caveat_info\x18\x04 \x01(\v2!.authzed.api.v1.PartialCaveatInfoB\x0e\xfaB\x05\x8a\x01\x02\x10\x00\xbaH\x03\xc8\x01\x00R\x11partialCaveatInfo\x12F\n" +
	"\x13after_result_cursor\x18\x05 \x01(\v2\x16.authzed.api.v1.CursorR\x11afterResultCursor\"\x9c\b\n" +
	"\x15LookupSubjectsRequest\x12=\n" +
	"\vconsistency\x18\x01 \x01(\v2\x1b.authzed.api.v1.ConsistencyR\vconsistency\x12K\n" +
	"\bresource\x18\x02 \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\x03 \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\x12\xc1\x01\n" +
	"\x13subject_object_type\x18\x04 \x01(\tB\x90\x01\xfaBErC(\x80\x012>^([a-z][a-z0-9_]{1,61}[a-z0-9]/)*[a-z][a-z0-9_]{1,62}[a-z0-9]$\xbaHErC(\x80\x012>^([a-z][a-z0-9_]{1,61}[a-z0-9]/)*[a-z][a-z0-9_]{1,62}[a-z0-9]$R\x11subjectObjectType\x12\x90\x01\n" +
	"\x19optional_subject_relation\x18\x05 \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\x17optionalSubjectRelation\x12A\n" +
	"\acontext\x18\x06 \x01(\v2\x17.google.protobuf.StructB\x0e\xfaB\x05\x8a\x01\x02\x10\x00\xbaH\x03\xc8\x01\x00R\acontext\x12F\n" +
	"\x17optional_concrete_limit\x18\a \x01(\rB\x0e\xfaB\x04*\x02(\x00\xbaH\x04*\x02(\x00R\x15optionalConcreteLimit\x12?\n" +
	"\x0foptional_cursor\x18\b \x01(\v2\x16.authzed.api.v1.CursorR\x0eoptionalCursor\x12]\n" +
	"\x0fwildcard_option\x18\t \x01(\x0e24.authzed.api.v1.LookupSubjectsRequest.WildcardOptionR\x0ewildcardOption\"\x7f\n" +
	"\x0eWildcardOption\x12\x1f\n" +
	"\x1bWILDCARD_OPTION_UNSPECIFIED\x10\x00\x12%\n" +
	"!WILDCARD_OPTION_INCLUDE_WILDCARDS\x10\x01\x12%\n" +
	"!WILDCARD_OPTION_EXCLUDE_WILDCARDS\x10\x02\"\xd6\x04\n" +
	"\x16LookupSubjectsResponse\x12:\n" +
	"\flooked_up_at\x18\x01 \x01(\v2\x18.authzed.api.v1.ZedTokenR\n" +
	"lookedUpAt\x12.\n" +
	"\x11subject_object_id\x18\x02 \x01(\tB\x02\x18\x01R\x0fsubjectObjectId\x124\n" +
	"\x14excluded_subject_ids\x18\x03 \x03(\tB\x02\x18\x01R\x12excludedSubjectIds\x12d\n" +
	"\x0epermissionship\x18\x04 \x01(\x0e2$.authzed.api.v1.LookupPermissionshipB\x16\xfaB\a\x82\x01\x04\x10\x01 \x00\xbaH\a\x82\x01\x04\x10\x01 \x00\x18\x01R\x0epermissionship\x12c\n" +
	"\x13partial_caveat_info\x18\x05 \x01(\v2!.authzed.api.v1.PartialCaveatInfoB\x10\xfaB\x05\x8a\x01\x02\x10\x00\xbaH\x03\xc8\x01\x00\x18\x01R\x11partialCaveatInfo\x129\n" +
	"\asubject\x18\x06 \x01(\v2\x1f.authzed.api.v1.ResolvedSubjectR\asubject\x12L\n" +
	"\x11excluded_subjects\x18\a \x03(\v2\x1f.authzed.api.v1.ResolvedSubjectR\x10excludedSubjects\x12F\n" +
	"\x13after_result_cursor\x18\b \x01(\v2\x16.authzed.api.v1.CursorR\x11afterResultCursor\"\x84\x02\n" +
	"\x0fResolvedSubject\x12*\n" +
	"\x11subject_object_id\x18\x01 \x01(\tR\x0fsubjectObjectId\x12b\n" +
	"\x0epermissionship\x18\x02 \x01(\x0e2$.authzed.api.v1.LookupPermissionshipB\x14\xfaB\a\x82\x01\x04\x10\x01 \x00\xbaH\a\x82\x01\x04\x10\x01 \x00R\x0epermissionship\x12a\n" +
	"\x13partial_caveat_info\x18\x03 \x01(\v2!.authzed.api.v1.PartialCaveatInfoB\x0e\xfaB\x05\x8a\x01\x02\x10\x00\xbaH\x03\xc8\x01\x00R\x11partialCaveatInfo\"~\n" +
	"\x1eImportBulkRelationshipsRequest\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" +
	"\x1fImportBulkRelationshipsResponse\x12\x1d\n" +
	"\n" +
	"num_loaded\x18\x01 \x01(\x04R\tnumLoaded\"\xbd\x02\n" +
	"\x1eExportBulkRelationshipsRequest\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" +
	"\x1fExportBulkRelationshipsResponse\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*\x99\x01\n" +
	"\x14LookupPermissionship\x12%\n" +
	"!LOOKUP_PERMISSIONSHIP_UNSPECIFIED\x10\x00\x12(\n" +
	"$LOOKUP_PERMISSIONSHIP_HAS_PERMISSION\x10\x01\x120\n" +
	",LOOKUP_PERMISSIONSHIP_CONDITIONAL_PERMISSION\x10\x022\x8a\r\n" +
	"\x12PermissionsService\x12\x9d\x01\n" +
	"\x11ReadRelationships\x12(.authzed.api.v1.ReadRelationshipsRequest\x1a).authzed.api.v1.ReadRelationshipsResponse\"1\x92A\r\n" +
	"\vPermissions\x82\xd3\xe4\x93\x02\x1b:\x01*\"\x16/v1/relationships/read0\x01\x12\x9f\x01\n" +
	"\x12WriteRelationships\x12).authzed.api.v1.WriteRelationshipsRequest\x1a*.authzed.api.v1.WriteRelationshipsResponse\"2\x92A\r\n" +
	"\vPermissions\x82\xd3\xe4\x93\x02\x1c:\x01*\"\x17/v1/relationships/write\x12\xa3\x01\n" +
	"\x13DeleteRelationships\x12*.authzed.api.v1.DeleteRelationshipsRequest\x1a+.authzed.api.v1.DeleteRelationshipsResponse\"3\x92A\r\n" +
	"\vPermissions\x82\xd3\xe4\x93\x02\x1d:\x01*\"\x18/v1/relationships/delete\x12\x94\x01\n" +
	"\x0fCheckPermission\x12&.authzed.api.v1.CheckPermissionRequest\x1a'.authzed.api.v1.CheckPermissionResponse\"0\x92A\r\n" +
	"\vPermissions\x82\xd3\xe4\x93\x02\x1a:\x01*\"\x15/v1/permissions/check\x12\xa7\x01\n" +
	"\x14CheckBulkPermissions\x12+.authzed.api.v1.CheckBulkPermissionsRequest\x1a,.authzed.api.v1.CheckBulkPermissionsResponse\"4\x92A\r\n" +
	"\vPermissions\x82\xd3\xe4\x93\x02\x1e:\x01*\"\x19/v1/permissions/checkbulk\x12\xa4\x01\n" +
	"\x14ExpandPermissionTree\x12+.authzed.api.v1.ExpandPermissionTreeRequest\x1a,.authzed.api.v1.ExpandPermissionTreeResponse\"1\x92A\r\n" +
	"\vPermissions\x82\xd3\xe4\x93\x02\x1b:\x01*\"\x16/v1/permissions/expand\x12\x9a\x01\n" +
	"\x0fLookupResources\x12&.authzed.api.v1.LookupResourcesRequest\x1a'.authzed.api.v1.LookupResourcesResponse\"4\x92A\r\n" +
	"\vPermissions\x82\xd3\xe4\x93\x02\x1e:\x01*\"\x19/v1/permissions/resources0\x01\x12\x96\x01\n" +
	"\x0eLookupSubjects\x12%.authzed.api.v1.LookupSubjectsRequest\x1a&.authzed.api.v1.LookupSubjectsResponse\"3\x92A\r\n" +
	"\vPermissions\x82\xd3\xe4\x93\x02\x1d:\x01*\"\x18/v1/permissions/subjects0\x01\x12\xb5\x01\n" +
	"\x17ImportBulkRelationships\x12..authzed.api.v1.ImportBulkRelationshipsRequest\x1a/.authzed.api.v1.ImportBulkRelationshipsResponse\"7\x92A\r\n" +
	"\vPermissions\x82\xd3\xe4\x93\x02!:\x01*\"\x1c/v1/relationships/importbulk(\x01\x12\xb5\x01\n" +
	"\x17ExportBulkRelationships\x12..authzed.api.v1.ExportBulkRelationshipsRequest\x1a/.authzed.api.v1.ExportBulkRelationshipsResponse\"7\x92A\r\n" +
	"\vPermissions\x82\xd3\xe4\x93\x02!:\x01*\"\x1c/v1/relationships/exportbulk0\x01BJ\n" +
	"\x12com.authzed.api.v1P\x01Z2github.com/authzed/authzed-go/proto/authzed/api/v1b\x06proto3"

var (
	file_authzed_api_v1_permission_service_proto_rawDescOnce sync.Once
	file_authzed_api_v1_permission_service_proto_rawDescData []byte
)

func file_authzed_api_v1_permission_service_proto_rawDescGZIP() []byte {
	file_authzed_api_v1_permission_service_proto_rawDescOnce.Do(func() {
		file_authzed_api_v1_permission_service_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_authzed_api_v1_permission_service_proto_rawDesc), len(file_authzed_api_v1_permission_service_proto_rawDesc)))
	})
	return file_authzed_api_v1_permission_service_proto_rawDescData
}

var file_authzed_api_v1_permission_service_proto_enumTypes = make([]protoimpl.EnumInfo, 5)
var file_authzed_api_v1_permission_service_proto_msgTypes = make([]protoimpl.MessageInfo, 29)
var file_authzed_api_v1_permission_service_proto_goTypes = []any{
	(LookupPermissionship)(0),                         // 0: authzed.api.v1.LookupPermissionship
	(Precondition_Operation)(0),                       // 1: authzed.api.v1.Precondition.Operation
	(DeleteRelationshipsResponse_DeletionProgress)(0), // 2: authzed.api.v1.DeleteRelationshipsResponse.DeletionProgress
	(CheckPermissionResponse_Permissionship)(0),       // 3: authzed.api.v1.CheckPermissionResponse.Permissionship
	(LookupSubjectsRequest_WildcardOption)(0),         // 4: authzed.api.v1.LookupSubjectsRequest.WildcardOption
	(*Consistency)(nil),                               // 5: authzed.api.v1.Consistency
	(*RelationshipFilter)(nil),                        // 6: authzed.api.v1.RelationshipFilter
	(*SubjectFilter)(nil),                             // 7: authzed.api.v1.SubjectFilter
	(*ReadRelationshipsRequest)(nil),                  // 8: authzed.api.v1.ReadRelationshipsRequest
	(*ReadRelationshipsResponse)(nil),                 // 9: authzed.api.v1.ReadRelationshipsResponse
	(*Precondition)(nil),                              // 10: authzed.api.v1.Precondition
	(*WriteRelationshipsRequest)(nil),                 // 11: authzed.api.v1.WriteRelationshipsRequest
	(*WriteRelationshipsResponse)(nil),                // 12: authzed.api.v1.WriteRelationshipsResponse
	(*DeleteRelationshipsRequest)(nil),                // 13: authzed.api.v1.DeleteRelationshipsRequest
	(*DeleteRelationshipsResponse)(nil),               // 14: authzed.api.v1.DeleteRelationshipsResponse
	(*CheckPermissionRequest)(nil),                    // 15: authzed.api.v1.CheckPermissionRequest
	(*CheckPermissionResponse)(nil),                   // 16: authzed.api.v1.CheckPermissionResponse
	(*CheckBulkPermissionsRequest)(nil),               // 17: authzed.api.v1.CheckBulkPermissionsRequest
	(*CheckBulkPermissionsRequestItem)(nil),           // 18: authzed.api.v1.CheckBulkPermissionsRequestItem
	(*CheckBulkPermissionsResponse)(nil),              // 19: authzed.api.v1.CheckBulkPermissionsResponse
	(*CheckBulkPermissionsPair)(nil),                  // 20: authzed.api.v1.CheckBulkPermissionsPair
	(*CheckBulkPermissionsResponseItem)(nil),          // 21: authzed.api.v1.CheckBulkPermissionsResponseItem
	(*ExpandPermissionTreeRequest)(nil),               // 22: authzed.api.v1.ExpandPermissionTreeRequest
	(*ExpandPermissionTreeResponse)(nil),              // 23: authzed.api.v1.ExpandPermissionTreeResponse
	(*LookupResourcesRequest)(nil),                    // 24: authzed.api.v1.LookupResourcesRequest
	(*LookupResourcesResponse)(nil),                   // 25: authzed.api.v1.LookupResourcesResponse
	(*LookupSubjectsRequest)(nil),                     // 26: authzed.api.v1.LookupSubjectsRequest
	(*LookupSubjectsResponse)(nil),                    // 27: authzed.api.v1.LookupSubjectsResponse
	(*ResolvedSubject)(nil),                           // 28: authzed.api.v1.ResolvedSubject
	(*ImportBulkRelationshipsRequest)(nil),            // 29: authzed.api.v1.ImportBulkRelationshipsRequest
	(*ImportBulkRelationshipsResponse)(nil),           // 30: authzed.api.v1.ImportBulkRelationshipsResponse
	(*ExportBulkRelationshipsRequest)(nil),            // 31: authzed.api.v1.ExportBulkRelationshipsRequest
	(*ExportBulkRelationshipsResponse)(nil),           // 32: authzed.api.v1.ExportBulkRelationshipsResponse
	(*SubjectFilter_RelationFilter)(nil),              // 33: authzed.api.v1.SubjectFilter.RelationFilter
	(*ZedToken)(nil),                                  // 34: authzed.api.v1.ZedToken
	(*Cursor)(nil),                                    // 35: authzed.api.v1.Cursor
	(*Relationship)(nil),                              // 36: authzed.api.v1.Relationship
	(*RelationshipUpdate)(nil),                        // 37: authzed.api.v1.RelationshipUpdate
	(*structpb.Struct)(nil),                           // 38: google.protobuf.Struct
	(*ObjectReference)(nil),                           // 39: authzed.api.v1.ObjectReference
	(*SubjectReference)(nil),                          // 40: authzed.api.v1.SubjectReference
	(*PartialCaveatInfo)(nil),                         // 41: authzed.api.v1.PartialCaveatInfo
	(*DebugInformation)(nil),                          // 42: authzed.api.v1.DebugInformation
	(*timestamppb.Timestamp)(nil),                     // 43: google.protobuf.Timestamp
	(*status.Status)(nil),                             // 44: google.rpc.Status
	(*PermissionRelationshipTree)(nil),                // 45: authzed.api.v1.PermissionRelationshipTree
}
var file_authzed_api_v1_permission_service_proto_depIdxs = []int32{
	34, // 0: authzed.api.v1.Consistency.at_least_as_fresh:type_name -> authzed.api.v1.ZedToken
	34, // 1: authzed.api.v1.Consistency.at_exact_snapshot:type_name -> authzed.api.v1.ZedToken
	7,  // 2: authzed.api.v1.RelationshipFilter.optional_subject_filter:type_name -> authzed.api.v1.SubjectFilter
	33, // 3: authzed.api.v1.SubjectFilter.optional_relation:type_name -> authzed.api.v1.SubjectFilter.RelationFilter
	5,  // 4: authzed.api.v1.ReadRelationshipsRequest.consistency:type_name -> authzed.api.v1.Consistency
	6,  // 5: authzed.api.v1.ReadRelationshipsRequest.relationship_filter:type_name -> authzed.api.v1.RelationshipFilter
	35, // 6: authzed.api.v1.ReadRelationshipsRequest.optional_cursor:type_name -> authzed.api.v1.Cursor
	34, // 7: authzed.api.v1.ReadRelationshipsResponse.read_at:type_name -> authzed.api.v1.ZedToken
	36, // 8: authzed.api.v1.ReadRelationshipsResponse.relationship:type_name -> authzed.api.v1.Relationship
	35, // 9: authzed.api.v1.ReadRelationshipsResponse.after_result_cursor:type_name -> authzed.api.v1.Cursor
	1,  // 10: authzed.api.v1.Precondition.operation:type_name -> authzed.api.v1.Precondition.Operation
	6,  // 11: authzed.api.v1.Precondition.filter:type_name -> authzed.api.v1.RelationshipFilter
	37, // 12: authzed.api.v1.WriteRelationshipsRequest.updates:type_name -> authzed.api.v1.RelationshipUpdate
	10, // 13: authzed.api.v1.WriteRelationshipsRequest.optional_preconditions:type_name -> authzed.api.v1.Precondition
	38, // 14: authzed.api.v1.WriteRelationshipsRequest.optional_transaction_metadata:type_name -> google.protobuf.Struct
	34, // 15: authzed.api.v1.WriteRelationshipsResponse.written_at:type_name -> authzed.api.v1.ZedToken
	6,  // 16: authzed.api.v1.DeleteRelationshipsRequest.relationship_filter:type_name -> authzed.api.v1.RelationshipFilter
	10, // 17: authzed.api.v1.DeleteRelationshipsRequest.optional_preconditions:type_name -> authzed.api.v1.Precondition
	38, // 18: authzed.api.v1.DeleteRelationshipsRequest.optional_transaction_metadata:type_name -> google.protobuf.Struct
	34, // 19: authzed.api.v1.DeleteRelationshipsResponse.deleted_at:type_name -> authzed.api.v1.ZedToken
	2,  // 20: authzed.api.v1.DeleteRelationshipsResponse.deletion_progress:type_name -> authzed.api.v1.DeleteRelationshipsResponse.DeletionProgress
	5,  // 21: authzed.api.v1.CheckPermissionRequest.consistency:type_name -> authzed.api.v1.Consistency
	39, // 22: authzed.api.v1.CheckPermissionRequest.resource:type_name -> authzed.api.v1.ObjectReference
	40, // 23: authzed.api.v1.CheckPermissionRequest.subject:type_name -> authzed.api.v1.SubjectReference
	38, // 24: authzed.api.v1.CheckPermissionRequest.context:type_name -> google.protobuf.Struct
	34, // 25: authzed.api.v1.CheckPermissionResponse.checked_at:type_name -> authzed.api.v1.ZedToken
	3,  // 26: authzed.api.v1.CheckPermissionResponse.permissionship:type_name -> authzed.api.v1.CheckPermissionResponse.Permissionship
	41, // 27: authzed.api.v1.CheckPermissionResponse.partial_caveat_info:type_name -> authzed.api.v1.PartialCaveatInfo
	42, // 28: authzed.api.v1.CheckPermissionResponse.debug_trace:type_name -> authzed.api.v1.DebugInformation
	43, // 29: authzed.api.v1.CheckPermissionResponse.optional_expires_at:type_name -> google.protobuf.Timestamp
	5,  // 30: authzed.api.v1.CheckBulkPermissionsRequest.consistency:type_name -> authzed.api.v1.Consistency
	18, // 31: authzed.api.v1.CheckBulkPermissionsRequest.items:type_name -> authzed.api.v1.CheckBulkPermissionsRequestItem
	39, // 32: authzed.api.v1.CheckBulkPermissionsRequestItem.resource:type_name -> authzed.api.v1.ObjectReference
	40, // 33: authzed.api.v1.CheckBulkPermissionsRequestItem.subject:type_name -> authzed.api.v1.SubjectReference
	38, // 34: authzed.api.v1.CheckBulkPermissionsRequestItem.context:type_name -> google.protobuf.Struct
	34, // 35: authzed.api.v1.CheckBulkPermissionsResponse.checked_at:type_name -> authzed.api.v1.ZedToken
	20, // 36: authzed.api.v1.CheckBulkPermissionsResponse.pairs:type_name -> authzed.api.v1.CheckBulkPermissionsPair
	18, // 37: authzed.api.v1.CheckBulkPermissionsPair.request:type_name -> authzed.api.v1.CheckBulkPermissionsRequestItem
	21, // 38: authzed.api.v1.CheckBulkPermissionsPair.item:type_name -> authzed.api.v1.CheckBulkPermissionsResponseItem
	44, // 39: authzed.api.v1.CheckBulkPermissionsPair.error:type_name -> google.rpc.Status
	3,  // 40: authzed.api.v1.CheckBulkPermissionsResponseItem.permissionship:type_name -> authzed.api.v1.CheckPermissionResponse.Permissionship
	41, // 41: authzed.api.v1.CheckBulkPermissionsResponseItem.partial_caveat_info:type_name -> authzed.api.v1.PartialCaveatInfo
	42, // 42: authzed.api.v1.CheckBulkPermissionsResponseItem.debug_trace:type_name -> authzed.api.v1.DebugInformation
	5,  // 43: authzed.api.v1.ExpandPermissionTreeRequest.consistency:type_name -> authzed.api.v1.Consistency
	39, // 44: authzed.api.v1.ExpandPermissionTreeRequest.resource:type_name -> authzed.api.v1.ObjectReference
	34, // 45: authzed.api.v1.ExpandPermissionTreeResponse.expanded_at:type_name -> authzed.api.v1.ZedToken
	45, // 46: authzed.api.v1.ExpandPermissionTreeResponse.tree_root:type_name -> authzed.api.v1.PermissionRelationshipTree
	5,  // 47: authzed.api.v1.LookupResourcesRequest.consistency:type_name -> authzed.api.v1.Consistency
	40, // 48: authzed.api.v1.LookupResourcesRequest.subject:type_name -> authzed.api.v1.SubjectReference
	38, // 49: authzed.api.v1.LookupResourcesRequest.context:type_name -> google.protobuf.Struct
	35, // 50: authzed.api.v1.LookupResourcesRequest.optional_cursor:type_name -> authzed.api.v1.Cursor
	34, // 51: authzed.api.v1.LookupResourcesResponse.looked_up_at:type_name -> authzed.api.v1.ZedToken
	0,  // 52: authzed.api.v1.LookupResourcesResponse.permissionship:type_name -> authzed.api.v1.LookupPermissionship
	41, // 53: authzed.api.v1.LookupResourcesResponse.partial_caveat_info:type_name -> authzed.api.v1.PartialCaveatInfo
	35, // 54: authzed.api.v1.LookupResourcesResponse.after_result_cursor:type_name -> authzed.api.v1.Cursor
	5,  // 55: authzed.api.v1.LookupSubjectsRequest.consistency:type_name -> authzed.api.v1.Consistency
	39, // 56: authzed.api.v1.LookupSubjectsRequest.resource:type_name -> authzed.api.v1.ObjectReference
	38, // 57: authzed.api.v1.LookupSubjectsRequest.context:type_name -> google.protobuf.Struct
	35, // 58: authzed.api.v1.LookupSubjectsRequest.optional_cursor:type_name -> authzed.api.v1.Cursor
	4,  // 59: authzed.api.v1.LookupSubjectsRequest.wildcard_option:type_name -> authzed.api.v1.LookupSubjectsRequest.WildcardOption
	34, // 60: authzed.api.v1.LookupSubjectsResponse.looked_up_at:type_name -> authzed.api.v1.ZedToken
	0,  // 61: authzed.api.v1.LookupSubjectsResponse.permissionship:type_name -> authzed.api.v1.LookupPermissionship
	41, // 62: authzed.api.v1.LookupSubjectsResponse.partial_caveat_info:type_name -> authzed.api.v1.PartialCaveatInfo
	28, // 63: authzed.api.v1.LookupSubjectsResponse.subject:type_name -> authzed.api.v1.ResolvedSubject
	28, // 64: authzed.api.v1.LookupSubjectsResponse.excluded_subjects:type_name -> authzed.api.v1.ResolvedSubject
	35, // 65: authzed.api.v1.LookupSubjectsResponse.after_result_cursor:type_name -> authzed.api.v1.Cursor
	0,  // 66: authzed.api.v1.ResolvedSubject.permissionship:type_name -> authzed.api.v1.LookupPermissionship
	41, // 67: authzed.api.v1.ResolvedSubject.partial_caveat_info:type_name -> authzed.api.v1.PartialCaveatInfo
	36, // 68: authzed.api.v1.ImportBulkRelationshipsRequest.relationships:type_name -> authzed.api.v1.Relationship
	5,  // 69: authzed.api.v1.ExportBulkRelationshipsRequest.consistency:type_name -> authzed.api.v1.Consistency
	35, // 70: authzed.api.v1.ExportBulkRelationshipsRequest.optional_cursor:type_name -> authzed.api.v1.Cursor
	6,  // 71: authzed.api.v1.ExportBulkRelationshipsRequest.optional_relationship_filter:type_name -> authzed.api.v1.RelationshipFilter
	35, // 72: authzed.api.v1.ExportBulkRelationshipsResponse.after_result_cursor:type_name -> authzed.api.v1.Cursor
	36, // 73: authzed.api.v1.ExportBulkRelationshipsResponse.relationships:type_name -> authzed.api.v1.Relationship
	8,  // 74: authzed.api.v1.PermissionsService.ReadRelationships:input_type -> authzed.api.v1.ReadRelationshipsRequest
	11, // 75: authzed.api.v1.PermissionsService.WriteRelationships:input_type -> authzed.api.v1.WriteRelationshipsRequest
	13, // 76: authzed.api.v1.PermissionsService.DeleteRelationships:input_type -> authzed.api.v1.DeleteRelationshipsRequest
	15, // 77: authzed.api.v1.PermissionsService.CheckPermission:input_type -> authzed.api.v1.CheckPermissionRequest
	17, // 78: authzed.api.v1.PermissionsService.CheckBulkPermissions:input_type -> authzed.api.v1.CheckBulkPermissionsRequest
	22, // 79: authzed.api.v1.PermissionsService.ExpandPermissionTree:input_type -> authzed.api.v1.ExpandPermissionTreeRequest
	24, // 80: authzed.api.v1.PermissionsService.LookupResources:input_type -> authzed.api.v1.LookupResourcesRequest
	26, // 81: authzed.api.v1.PermissionsService.LookupSubjects:input_type -> authzed.api.v1.LookupSubjectsRequest
	29, // 82: authzed.api.v1.PermissionsService.ImportBulkRelationships:input_type -> authzed.api.v1.ImportBulkRelationshipsRequest
	31, // 83: authzed.api.v1.PermissionsService.ExportBulkRelationships:input_type -> authzed.api.v1.ExportBulkRelationshipsRequest
	9,  // 84: authzed.api.v1.PermissionsService.ReadRelationships:output_type -> authzed.api.v1.ReadRelationshipsResponse
	12, // 85: authzed.api.v1.PermissionsService.WriteRelationships:output_type -> authzed.api.v1.WriteRelationshipsResponse
	14, // 86: authzed.api.v1.PermissionsService.DeleteRelationships:output_type -> authzed.api.v1.DeleteRelationshipsResponse
	16, // 87: authzed.api.v1.PermissionsService.CheckPermission:output_type -> authzed.api.v1.CheckPermissionResponse
	19, // 88: authzed.api.v1.PermissionsService.CheckBulkPermissions:output_type -> authzed.api.v1.CheckBulkPermissionsResponse
	23, // 89: authzed.api.v1.PermissionsService.ExpandPermissionTree:output_type -> authzed.api.v1.ExpandPermissionTreeResponse
	25, // 90: authzed.api.v1.PermissionsService.LookupResources:output_type -> authzed.api.v1.LookupResourcesResponse
	27, // 91: authzed.api.v1.PermissionsService.LookupSubjects:output_type -> authzed.api.v1.LookupSubjectsResponse
	30, // 92: authzed.api.v1.PermissionsService.ImportBulkRelationships:output_type -> authzed.api.v1.ImportBulkRelationshipsResponse
	32, // 93: authzed.api.v1.PermissionsService.ExportBulkRelationships:output_type -> authzed.api.v1.ExportBulkRelationshipsResponse
	84, // [84:94] is the sub-list for method output_type
	74, // [74:84] is the sub-list for method input_type
	74, // [74:74] is the sub-list for extension type_name
	74, // [74:74] is the sub-list for extension extendee
	0,  // [0:74] is the sub-list for field type_name
}

func init() { file_authzed_api_v1_permission_service_proto_init() }
func file_authzed_api_v1_permission_service_proto_init() {
	if File_authzed_api_v1_permission_service_proto != nil {
		return
	}
	file_authzed_api_v1_core_proto_init()
	file_authzed_api_v1_debug_proto_init()
	file_authzed_api_v1_permission_service_proto_msgTypes[0].OneofWrappers = []any{
		(*Consistency_MinimizeLatency)(nil),
		(*Consistency_AtLeastAsFresh)(nil),
		(*Consistency_AtExactSnapshot)(nil),
		(*Consistency_FullyConsistent)(nil),
	}
	file_authzed_api_v1_permission_service_proto_msgTypes[15].OneofWrappers = []any{
		(*CheckBulkPermissionsPair_Item)(nil),
		(*CheckBulkPermissionsPair_Error)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: unsafe.Slice(unsafe.StringData(file_authzed_api_v1_permission_service_proto_rawDesc), len(file_authzed_api_v1_permission_service_proto_rawDesc)),
			NumEnums:      5,
			NumMessages:   29,
			NumExtensions: 0,
			NumServices:   1,
		},
		GoTypes:           file_authzed_api_v1_permission_service_proto_goTypes,
		DependencyIndexes: file_authzed_api_v1_permission_service_proto_depIdxs,
		EnumInfos:         file_authzed_api_v1_permission_service_proto_enumTypes,
		MessageInfos:      file_authzed_api_v1_permission_service_proto_msgTypes,
	}.Build()
	File_authzed_api_v1_permission_service_proto = out.File
	file_authzed_api_v1_permission_service_proto_goTypes = nil
	file_authzed_api_v1_permission_service_proto_depIdxs = nil
}
