// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.36.11
// 	protoc        (unknown)
// source: runtime/v1/effective_permissions.proto

package runtimev1

import (
	v1 "github.com/pingcap-inc/nexuscrm-contract/wire-go/gen/common/v1"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	reflect "reflect"
	sync "sync"
	unsafe "unsafe"
)

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

type EffectivePermissionSection int32

const (
	EffectivePermissionSection_EFFECTIVE_PERMISSION_SECTION_UNSPECIFIED             EffectivePermissionSection = 0
	EffectivePermissionSection_EFFECTIVE_PERMISSION_SECTION_SYSTEM_PERMISSIONS      EffectivePermissionSection = 1
	EffectivePermissionSection_EFFECTIVE_PERMISSION_SECTION_CUSTOM_PERMISSIONS      EffectivePermissionSection = 2
	EffectivePermissionSection_EFFECTIVE_PERMISSION_SECTION_OBJECT_PERMISSIONS      EffectivePermissionSection = 3
	EffectivePermissionSection_EFFECTIVE_PERMISSION_SECTION_FIELD_PERMISSIONS       EffectivePermissionSection = 4
	EffectivePermissionSection_EFFECTIVE_PERMISSION_SECTION_APPLICATION_PERMISSIONS EffectivePermissionSection = 5
	EffectivePermissionSection_EFFECTIVE_PERMISSION_SECTION_NAVIGATION_PERMISSIONS  EffectivePermissionSection = 6
	EffectivePermissionSection_EFFECTIVE_PERMISSION_SECTION_RECORD_TYPE_PERMISSIONS EffectivePermissionSection = 7
)

// Enum value maps for EffectivePermissionSection.
var (
	EffectivePermissionSection_name = map[int32]string{
		0: "EFFECTIVE_PERMISSION_SECTION_UNSPECIFIED",
		1: "EFFECTIVE_PERMISSION_SECTION_SYSTEM_PERMISSIONS",
		2: "EFFECTIVE_PERMISSION_SECTION_CUSTOM_PERMISSIONS",
		3: "EFFECTIVE_PERMISSION_SECTION_OBJECT_PERMISSIONS",
		4: "EFFECTIVE_PERMISSION_SECTION_FIELD_PERMISSIONS",
		5: "EFFECTIVE_PERMISSION_SECTION_APPLICATION_PERMISSIONS",
		6: "EFFECTIVE_PERMISSION_SECTION_NAVIGATION_PERMISSIONS",
		7: "EFFECTIVE_PERMISSION_SECTION_RECORD_TYPE_PERMISSIONS",
	}
	EffectivePermissionSection_value = map[string]int32{
		"EFFECTIVE_PERMISSION_SECTION_UNSPECIFIED":             0,
		"EFFECTIVE_PERMISSION_SECTION_SYSTEM_PERMISSIONS":      1,
		"EFFECTIVE_PERMISSION_SECTION_CUSTOM_PERMISSIONS":      2,
		"EFFECTIVE_PERMISSION_SECTION_OBJECT_PERMISSIONS":      3,
		"EFFECTIVE_PERMISSION_SECTION_FIELD_PERMISSIONS":       4,
		"EFFECTIVE_PERMISSION_SECTION_APPLICATION_PERMISSIONS": 5,
		"EFFECTIVE_PERMISSION_SECTION_NAVIGATION_PERMISSIONS":  6,
		"EFFECTIVE_PERMISSION_SECTION_RECORD_TYPE_PERMISSIONS": 7,
	}
)

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

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

func (EffectivePermissionSection) Descriptor() protoreflect.EnumDescriptor {
	return file_runtime_v1_effective_permissions_proto_enumTypes[0].Descriptor()
}

func (EffectivePermissionSection) Type() protoreflect.EnumType {
	return &file_runtime_v1_effective_permissions_proto_enumTypes[0]
}

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

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

// Identity and authority are authenticated transport context. An optional
// target principal is only a requested subject; Runtime authorizes disclosure.
type ReadEffectivePermissionsRequest struct {
	state              protoimpl.MessageState        `protogen:"open.v1"`
	TargetPrincipalId  string                        `protobuf:"bytes,1,opt,name=target_principal_id,json=targetPrincipalId,proto3" json:"target_principal_id,omitempty"`
	MinCatalogRevision *uint64                       `protobuf:"varint,2,opt,name=min_catalog_revision,json=minCatalogRevision,proto3,oneof" json:"min_catalog_revision,omitempty"`
	Selection          *EffectivePermissionSelection `protobuf:"bytes,3,opt,name=selection,proto3" json:"selection,omitempty"`
	unknownFields      protoimpl.UnknownFields
	sizeCache          protoimpl.SizeCache
}

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

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

func (*ReadEffectivePermissionsRequest) ProtoMessage() {}

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

func (x *ReadEffectivePermissionsRequest) GetTargetPrincipalId() string {
	if x != nil {
		return x.TargetPrincipalId
	}
	return ""
}

func (x *ReadEffectivePermissionsRequest) GetMinCatalogRevision() uint64 {
	if x != nil && x.MinCatalogRevision != nil {
		return *x.MinCatalogRevision
	}
	return 0
}

func (x *ReadEffectivePermissionsRequest) GetSelection() *EffectivePermissionSelection {
	if x != nil {
		return x.Selection
	}
	return nil
}

// Resource types scope only object, field and record-type sections. All values
// are neutral immutable Catalog identities; product-specific UI selection stays
// above this wire boundary.
type EffectivePermissionSelection struct {
	state         protoimpl.MessageState       `protogen:"open.v1"`
	Sections      []EffectivePermissionSection `protobuf:"varint,1,rep,packed,name=sections,proto3,enum=nexuscrm.runtime.v1.EffectivePermissionSection" json:"sections,omitempty"`
	ResourceTypes []string                     `protobuf:"bytes,2,rep,name=resource_types,json=resourceTypes,proto3" json:"resource_types,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*EffectivePermissionSelection) ProtoMessage() {}

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

func (x *EffectivePermissionSelection) GetSections() []EffectivePermissionSection {
	if x != nil {
		return x.Sections
	}
	return nil
}

func (x *EffectivePermissionSelection) GetResourceTypes() []string {
	if x != nil {
		return x.ResourceTypes
	}
	return nil
}

type EffectivePermissionGrant struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	PermissionId  string                 `protobuf:"bytes,1,opt,name=permission_id,json=permissionId,proto3" json:"permission_id,omitempty"`
	Granted       bool                   `protobuf:"varint,2,opt,name=granted,proto3" json:"granted,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*EffectivePermissionGrant) ProtoMessage() {}

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

func (x *EffectivePermissionGrant) GetPermissionId() string {
	if x != nil {
		return x.PermissionId
	}
	return ""
}

func (x *EffectivePermissionGrant) GetGranted() bool {
	if x != nil {
		return x.Granted
	}
	return false
}

// One Catalog resource-type authorization projection. These are neutral
// record-engine operations; public dialect permission names stay in L1.
type EffectiveObjectPermission struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	ResourceType  string                 `protobuf:"bytes,1,opt,name=resource_type,json=resourceType,proto3" json:"resource_type,omitempty"`
	CanRead       bool                   `protobuf:"varint,2,opt,name=can_read,json=canRead,proto3" json:"can_read,omitempty"`
	CanCreate     bool                   `protobuf:"varint,3,opt,name=can_create,json=canCreate,proto3" json:"can_create,omitempty"`
	CanEdit       bool                   `protobuf:"varint,4,opt,name=can_edit,json=canEdit,proto3" json:"can_edit,omitempty"`
	CanDelete     bool                   `protobuf:"varint,5,opt,name=can_delete,json=canDelete,proto3" json:"can_delete,omitempty"`
	CanDeactivate bool                   `protobuf:"varint,6,opt,name=can_deactivate,json=canDeactivate,proto3" json:"can_deactivate,omitempty"`
	CanViewAll    bool                   `protobuf:"varint,7,opt,name=can_view_all,json=canViewAll,proto3" json:"can_view_all,omitempty"`
	CanModifyAll  bool                   `protobuf:"varint,8,opt,name=can_modify_all,json=canModifyAll,proto3" json:"can_modify_all,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*EffectiveObjectPermission) ProtoMessage() {}

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

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

func (x *EffectiveObjectPermission) GetCanRead() bool {
	if x != nil {
		return x.CanRead
	}
	return false
}

func (x *EffectiveObjectPermission) GetCanCreate() bool {
	if x != nil {
		return x.CanCreate
	}
	return false
}

func (x *EffectiveObjectPermission) GetCanEdit() bool {
	if x != nil {
		return x.CanEdit
	}
	return false
}

func (x *EffectiveObjectPermission) GetCanDelete() bool {
	if x != nil {
		return x.CanDelete
	}
	return false
}

func (x *EffectiveObjectPermission) GetCanDeactivate() bool {
	if x != nil {
		return x.CanDeactivate
	}
	return false
}

func (x *EffectiveObjectPermission) GetCanViewAll() bool {
	if x != nil {
		return x.CanViewAll
	}
	return false
}

func (x *EffectiveObjectPermission) GetCanModifyAll() bool {
	if x != nil {
		return x.CanModifyAll
	}
	return false
}

type EffectiveFieldPermission struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Resolved insert capability; never derive it from can_edit.
	CanCreate     bool   `protobuf:"varint,5,opt,name=can_create,json=canCreate,proto3" json:"can_create,omitempty"`
	ResourceType  string `protobuf:"bytes,1,opt,name=resource_type,json=resourceType,proto3" json:"resource_type,omitempty"`
	FieldName     string `protobuf:"bytes,2,opt,name=field_name,json=fieldName,proto3" json:"field_name,omitempty"`
	CanRead       bool   `protobuf:"varint,3,opt,name=can_read,json=canRead,proto3" json:"can_read,omitempty"`
	CanEdit       bool   `protobuf:"varint,4,opt,name=can_edit,json=canEdit,proto3" json:"can_edit,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*EffectiveFieldPermission) ProtoMessage() {}

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

func (x *EffectiveFieldPermission) GetCanCreate() bool {
	if x != nil {
		return x.CanCreate
	}
	return false
}

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

func (x *EffectiveFieldPermission) GetFieldName() string {
	if x != nil {
		return x.FieldName
	}
	return ""
}

func (x *EffectiveFieldPermission) GetCanRead() bool {
	if x != nil {
		return x.CanRead
	}
	return false
}

func (x *EffectiveFieldPermission) GetCanEdit() bool {
	if x != nil {
		return x.CanEdit
	}
	return false
}

type EffectiveApplicationPermission struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	ApplicationId string                 `protobuf:"bytes,1,opt,name=application_id,json=applicationId,proto3" json:"application_id,omitempty"`
	CanView       bool                   `protobuf:"varint,2,opt,name=can_view,json=canView,proto3" json:"can_view,omitempty"`
	IsDefault     bool                   `protobuf:"varint,3,opt,name=is_default,json=isDefault,proto3" json:"is_default,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*EffectiveApplicationPermission) ProtoMessage() {}

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

func (x *EffectiveApplicationPermission) GetApplicationId() string {
	if x != nil {
		return x.ApplicationId
	}
	return ""
}

func (x *EffectiveApplicationPermission) GetCanView() bool {
	if x != nil {
		return x.CanView
	}
	return false
}

func (x *EffectiveApplicationPermission) GetIsDefault() bool {
	if x != nil {
		return x.IsDefault
	}
	return false
}

type EffectiveNavigationPermission struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	NavigationKey string                 `protobuf:"bytes,1,opt,name=navigation_key,json=navigationKey,proto3" json:"navigation_key,omitempty"`
	CanView       bool                   `protobuf:"varint,2,opt,name=can_view,json=canView,proto3" json:"can_view,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*EffectiveNavigationPermission) ProtoMessage() {}

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

func (x *EffectiveNavigationPermission) GetNavigationKey() string {
	if x != nil {
		return x.NavigationKey
	}
	return ""
}

func (x *EffectiveNavigationPermission) GetCanView() bool {
	if x != nil {
		return x.CanView
	}
	return false
}

// One caller-effective availability decision for an active neutral Catalog
// record type. Public-dialect record-type shapes remain an L1 concern.
type EffectiveRecordTypePermission struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	ResourceType  string                 `protobuf:"bytes,1,opt,name=resource_type,json=resourceType,proto3" json:"resource_type,omitempty"`
	RecordTypeId  string                 `protobuf:"bytes,2,opt,name=record_type_id,json=recordTypeId,proto3" json:"record_type_id,omitempty"`
	Available     bool                   `protobuf:"varint,5,opt,name=available,proto3" json:"available,omitempty"`
	IsDefault     bool                   `protobuf:"varint,7,opt,name=is_default,json=isDefault,proto3" json:"is_default,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*EffectiveRecordTypePermission) ProtoMessage() {}

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

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

func (x *EffectiveRecordTypePermission) GetRecordTypeId() string {
	if x != nil {
		return x.RecordTypeId
	}
	return ""
}

func (x *EffectiveRecordTypePermission) GetAvailable() bool {
	if x != nil {
		return x.Available
	}
	return false
}

func (x *EffectiveRecordTypePermission) GetIsDefault() bool {
	if x != nil {
		return x.IsDefault
	}
	return false
}

type ReadEffectivePermissionsResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Permission identifiers defined by the platform permission catalog.
	SystemPermissions []*EffectivePermissionGrant `protobuf:"bytes,1,rep,name=system_permissions,json=systemPermissions,proto3" json:"system_permissions,omitempty"`
	// Permission identifiers authored through the generic metadata extension.
	CustomPermissions      []*EffectivePermissionGrant       `protobuf:"bytes,2,rep,name=custom_permissions,json=customPermissions,proto3" json:"custom_permissions,omitempty"`
	ObjectPermissions      []*EffectiveObjectPermission      `protobuf:"bytes,3,rep,name=object_permissions,json=objectPermissions,proto3" json:"object_permissions,omitempty"`
	FieldPermissions       []*EffectiveFieldPermission       `protobuf:"bytes,4,rep,name=field_permissions,json=fieldPermissions,proto3" json:"field_permissions,omitempty"`
	Receipts               *v1.ConsistencyReceipts           `protobuf:"bytes,5,opt,name=receipts,proto3" json:"receipts,omitempty"`
	ApplicationPermissions []*EffectiveApplicationPermission `protobuf:"bytes,6,rep,name=application_permissions,json=applicationPermissions,proto3" json:"application_permissions,omitempty"`
	NavigationPermissions  []*EffectiveNavigationPermission  `protobuf:"bytes,7,rep,name=navigation_permissions,json=navigationPermissions,proto3" json:"navigation_permissions,omitempty"`
	RecordTypePermissions  []*EffectiveRecordTypePermission  `protobuf:"bytes,8,rep,name=record_type_permissions,json=recordTypePermissions,proto3" json:"record_type_permissions,omitempty"`
	unknownFields          protoimpl.UnknownFields
	sizeCache              protoimpl.SizeCache
}

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

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

func (*ReadEffectivePermissionsResponse) ProtoMessage() {}

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

func (x *ReadEffectivePermissionsResponse) GetSystemPermissions() []*EffectivePermissionGrant {
	if x != nil {
		return x.SystemPermissions
	}
	return nil
}

func (x *ReadEffectivePermissionsResponse) GetCustomPermissions() []*EffectivePermissionGrant {
	if x != nil {
		return x.CustomPermissions
	}
	return nil
}

func (x *ReadEffectivePermissionsResponse) GetObjectPermissions() []*EffectiveObjectPermission {
	if x != nil {
		return x.ObjectPermissions
	}
	return nil
}

func (x *ReadEffectivePermissionsResponse) GetFieldPermissions() []*EffectiveFieldPermission {
	if x != nil {
		return x.FieldPermissions
	}
	return nil
}

func (x *ReadEffectivePermissionsResponse) GetReceipts() *v1.ConsistencyReceipts {
	if x != nil {
		return x.Receipts
	}
	return nil
}

func (x *ReadEffectivePermissionsResponse) GetApplicationPermissions() []*EffectiveApplicationPermission {
	if x != nil {
		return x.ApplicationPermissions
	}
	return nil
}

func (x *ReadEffectivePermissionsResponse) GetNavigationPermissions() []*EffectiveNavigationPermission {
	if x != nil {
		return x.NavigationPermissions
	}
	return nil
}

func (x *ReadEffectivePermissionsResponse) GetRecordTypePermissions() []*EffectiveRecordTypePermission {
	if x != nil {
		return x.RecordTypePermissions
	}
	return nil
}

var File_runtime_v1_effective_permissions_proto protoreflect.FileDescriptor

const file_runtime_v1_effective_permissions_proto_rawDesc = "" +
	"\n" +
	"&runtime/v1/effective_permissions.proto\x12\x13nexuscrm.runtime.v1\x1a\x16common/v1/common.proto\"\xf2\x01\n" +
	"\x1fReadEffectivePermissionsRequest\x12.\n" +
	"\x13target_principal_id\x18\x01 \x01(\tR\x11targetPrincipalId\x125\n" +
	"\x14min_catalog_revision\x18\x02 \x01(\x04H\x00R\x12minCatalogRevision\x88\x01\x01\x12O\n" +
	"\tselection\x18\x03 \x01(\v21.nexuscrm.runtime.v1.EffectivePermissionSelectionR\tselectionB\x17\n" +
	"\x15_min_catalog_revision\"\x92\x01\n" +
	"\x1cEffectivePermissionSelection\x12K\n" +
	"\bsections\x18\x01 \x03(\x0e2/.nexuscrm.runtime.v1.EffectivePermissionSectionR\bsections\x12%\n" +
	"\x0eresource_types\x18\x02 \x03(\tR\rresourceTypes\"Y\n" +
	"\x18EffectivePermissionGrant\x12#\n" +
	"\rpermission_id\x18\x01 \x01(\tR\fpermissionId\x12\x18\n" +
	"\agranted\x18\x02 \x01(\bR\agranted\"\xa3\x02\n" +
	"\x19EffectiveObjectPermission\x12#\n" +
	"\rresource_type\x18\x01 \x01(\tR\fresourceType\x12\x19\n" +
	"\bcan_read\x18\x02 \x01(\bR\acanRead\x12\x1d\n" +
	"\n" +
	"can_create\x18\x03 \x01(\bR\tcanCreate\x12\x19\n" +
	"\bcan_edit\x18\x04 \x01(\bR\acanEdit\x12\x1d\n" +
	"\n" +
	"can_delete\x18\x05 \x01(\bR\tcanDelete\x12%\n" +
	"\x0ecan_deactivate\x18\x06 \x01(\bR\rcanDeactivate\x12 \n" +
	"\fcan_view_all\x18\a \x01(\bR\n" +
	"canViewAll\x12$\n" +
	"\x0ecan_modify_all\x18\b \x01(\bR\fcanModifyAll\"\xb3\x01\n" +
	"\x18EffectiveFieldPermission\x12\x1d\n" +
	"\n" +
	"can_create\x18\x05 \x01(\bR\tcanCreate\x12#\n" +
	"\rresource_type\x18\x01 \x01(\tR\fresourceType\x12\x1d\n" +
	"\n" +
	"field_name\x18\x02 \x01(\tR\tfieldName\x12\x19\n" +
	"\bcan_read\x18\x03 \x01(\bR\acanRead\x12\x19\n" +
	"\bcan_edit\x18\x04 \x01(\bR\acanEdit\"\x81\x01\n" +
	"\x1eEffectiveApplicationPermission\x12%\n" +
	"\x0eapplication_id\x18\x01 \x01(\tR\rapplicationId\x12\x19\n" +
	"\bcan_view\x18\x02 \x01(\bR\acanView\x12\x1d\n" +
	"\n" +
	"is_default\x18\x03 \x01(\bR\tisDefault\"a\n" +
	"\x1dEffectiveNavigationPermission\x12%\n" +
	"\x0enavigation_key\x18\x01 \x01(\tR\rnavigationKey\x12\x19\n" +
	"\bcan_view\x18\x02 \x01(\bR\acanView\"\xd7\x01\n" +
	"\x1dEffectiveRecordTypePermission\x12#\n" +
	"\rresource_type\x18\x01 \x01(\tR\fresourceType\x12$\n" +
	"\x0erecord_type_id\x18\x02 \x01(\tR\frecordTypeId\x12\x1c\n" +
	"\tavailable\x18\x05 \x01(\bR\tavailable\x12\x1d\n" +
	"\n" +
	"is_default\x18\a \x01(\bR\tisDefaultJ\x04\b\x03\x10\x04J\x04\b\x04\x10\x05J\x04\b\x06\x10\aR\x0edeveloper_nameR\x04nameR\x06master\"\xa3\x06\n" +
	" ReadEffectivePermissionsResponse\x12\\\n" +
	"\x12system_permissions\x18\x01 \x03(\v2-.nexuscrm.runtime.v1.EffectivePermissionGrantR\x11systemPermissions\x12\\\n" +
	"\x12custom_permissions\x18\x02 \x03(\v2-.nexuscrm.runtime.v1.EffectivePermissionGrantR\x11customPermissions\x12]\n" +
	"\x12object_permissions\x18\x03 \x03(\v2..nexuscrm.runtime.v1.EffectiveObjectPermissionR\x11objectPermissions\x12Z\n" +
	"\x11field_permissions\x18\x04 \x03(\v2-.nexuscrm.runtime.v1.EffectiveFieldPermissionR\x10fieldPermissions\x12C\n" +
	"\breceipts\x18\x05 \x01(\v2'.nexuscrm.common.v1.ConsistencyReceiptsR\breceipts\x12l\n" +
	"\x17application_permissions\x18\x06 \x03(\v23.nexuscrm.runtime.v1.EffectiveApplicationPermissionR\x16applicationPermissions\x12i\n" +
	"\x16navigation_permissions\x18\a \x03(\v22.nexuscrm.runtime.v1.EffectiveNavigationPermissionR\x15navigationPermissions\x12j\n" +
	"\x17record_type_permissions\x18\b \x03(\v22.nexuscrm.runtime.v1.EffectiveRecordTypePermissionR\x15recordTypePermissions*\xca\x03\n" +
	"\x1aEffectivePermissionSection\x12,\n" +
	"(EFFECTIVE_PERMISSION_SECTION_UNSPECIFIED\x10\x00\x123\n" +
	"/EFFECTIVE_PERMISSION_SECTION_SYSTEM_PERMISSIONS\x10\x01\x123\n" +
	"/EFFECTIVE_PERMISSION_SECTION_CUSTOM_PERMISSIONS\x10\x02\x123\n" +
	"/EFFECTIVE_PERMISSION_SECTION_OBJECT_PERMISSIONS\x10\x03\x122\n" +
	".EFFECTIVE_PERMISSION_SECTION_FIELD_PERMISSIONS\x10\x04\x128\n" +
	"4EFFECTIVE_PERMISSION_SECTION_APPLICATION_PERMISSIONS\x10\x05\x127\n" +
	"3EFFECTIVE_PERMISSION_SECTION_NAVIGATION_PERMISSIONS\x10\x06\x128\n" +
	"4EFFECTIVE_PERMISSION_SECTION_RECORD_TYPE_PERMISSIONS\x10\a2\xa6\x01\n" +
	"\x1aEffectivePermissionService\x12\x87\x01\n" +
	"\x18ReadEffectivePermissions\x124.nexuscrm.runtime.v1.ReadEffectivePermissionsRequest\x1a5.nexuscrm.runtime.v1.ReadEffectivePermissionsResponseBKZIgithub.com/pingcap-inc/nexuscrm-contract/wire-go/gen/runtime/v1;runtimev1b\x06proto3"

var (
	file_runtime_v1_effective_permissions_proto_rawDescOnce sync.Once
	file_runtime_v1_effective_permissions_proto_rawDescData []byte
)

func file_runtime_v1_effective_permissions_proto_rawDescGZIP() []byte {
	file_runtime_v1_effective_permissions_proto_rawDescOnce.Do(func() {
		file_runtime_v1_effective_permissions_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_runtime_v1_effective_permissions_proto_rawDesc), len(file_runtime_v1_effective_permissions_proto_rawDesc)))
	})
	return file_runtime_v1_effective_permissions_proto_rawDescData
}

var file_runtime_v1_effective_permissions_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
var file_runtime_v1_effective_permissions_proto_msgTypes = make([]protoimpl.MessageInfo, 9)
var file_runtime_v1_effective_permissions_proto_goTypes = []any{
	(EffectivePermissionSection)(0),          // 0: nexuscrm.runtime.v1.EffectivePermissionSection
	(*ReadEffectivePermissionsRequest)(nil),  // 1: nexuscrm.runtime.v1.ReadEffectivePermissionsRequest
	(*EffectivePermissionSelection)(nil),     // 2: nexuscrm.runtime.v1.EffectivePermissionSelection
	(*EffectivePermissionGrant)(nil),         // 3: nexuscrm.runtime.v1.EffectivePermissionGrant
	(*EffectiveObjectPermission)(nil),        // 4: nexuscrm.runtime.v1.EffectiveObjectPermission
	(*EffectiveFieldPermission)(nil),         // 5: nexuscrm.runtime.v1.EffectiveFieldPermission
	(*EffectiveApplicationPermission)(nil),   // 6: nexuscrm.runtime.v1.EffectiveApplicationPermission
	(*EffectiveNavigationPermission)(nil),    // 7: nexuscrm.runtime.v1.EffectiveNavigationPermission
	(*EffectiveRecordTypePermission)(nil),    // 8: nexuscrm.runtime.v1.EffectiveRecordTypePermission
	(*ReadEffectivePermissionsResponse)(nil), // 9: nexuscrm.runtime.v1.ReadEffectivePermissionsResponse
	(*v1.ConsistencyReceipts)(nil),           // 10: nexuscrm.common.v1.ConsistencyReceipts
}
var file_runtime_v1_effective_permissions_proto_depIdxs = []int32{
	2,  // 0: nexuscrm.runtime.v1.ReadEffectivePermissionsRequest.selection:type_name -> nexuscrm.runtime.v1.EffectivePermissionSelection
	0,  // 1: nexuscrm.runtime.v1.EffectivePermissionSelection.sections:type_name -> nexuscrm.runtime.v1.EffectivePermissionSection
	3,  // 2: nexuscrm.runtime.v1.ReadEffectivePermissionsResponse.system_permissions:type_name -> nexuscrm.runtime.v1.EffectivePermissionGrant
	3,  // 3: nexuscrm.runtime.v1.ReadEffectivePermissionsResponse.custom_permissions:type_name -> nexuscrm.runtime.v1.EffectivePermissionGrant
	4,  // 4: nexuscrm.runtime.v1.ReadEffectivePermissionsResponse.object_permissions:type_name -> nexuscrm.runtime.v1.EffectiveObjectPermission
	5,  // 5: nexuscrm.runtime.v1.ReadEffectivePermissionsResponse.field_permissions:type_name -> nexuscrm.runtime.v1.EffectiveFieldPermission
	10, // 6: nexuscrm.runtime.v1.ReadEffectivePermissionsResponse.receipts:type_name -> nexuscrm.common.v1.ConsistencyReceipts
	6,  // 7: nexuscrm.runtime.v1.ReadEffectivePermissionsResponse.application_permissions:type_name -> nexuscrm.runtime.v1.EffectiveApplicationPermission
	7,  // 8: nexuscrm.runtime.v1.ReadEffectivePermissionsResponse.navigation_permissions:type_name -> nexuscrm.runtime.v1.EffectiveNavigationPermission
	8,  // 9: nexuscrm.runtime.v1.ReadEffectivePermissionsResponse.record_type_permissions:type_name -> nexuscrm.runtime.v1.EffectiveRecordTypePermission
	1,  // 10: nexuscrm.runtime.v1.EffectivePermissionService.ReadEffectivePermissions:input_type -> nexuscrm.runtime.v1.ReadEffectivePermissionsRequest
	9,  // 11: nexuscrm.runtime.v1.EffectivePermissionService.ReadEffectivePermissions:output_type -> nexuscrm.runtime.v1.ReadEffectivePermissionsResponse
	11, // [11:12] is the sub-list for method output_type
	10, // [10:11] is the sub-list for method input_type
	10, // [10:10] is the sub-list for extension type_name
	10, // [10:10] is the sub-list for extension extendee
	0,  // [0:10] is the sub-list for field type_name
}

func init() { file_runtime_v1_effective_permissions_proto_init() }
func file_runtime_v1_effective_permissions_proto_init() {
	if File_runtime_v1_effective_permissions_proto != nil {
		return
	}
	file_runtime_v1_effective_permissions_proto_msgTypes[0].OneofWrappers = []any{}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: unsafe.Slice(unsafe.StringData(file_runtime_v1_effective_permissions_proto_rawDesc), len(file_runtime_v1_effective_permissions_proto_rawDesc)),
			NumEnums:      1,
			NumMessages:   9,
			NumExtensions: 0,
			NumServices:   1,
		},
		GoTypes:           file_runtime_v1_effective_permissions_proto_goTypes,
		DependencyIndexes: file_runtime_v1_effective_permissions_proto_depIdxs,
		EnumInfos:         file_runtime_v1_effective_permissions_proto_enumTypes,
		MessageInfos:      file_runtime_v1_effective_permissions_proto_msgTypes,
	}.Build()
	File_runtime_v1_effective_permissions_proto = out.File
	file_runtime_v1_effective_permissions_proto_goTypes = nil
	file_runtime_v1_effective_permissions_proto_depIdxs = nil
}
