// Identity messages for the unified identity model.
//
// TARS represents every authenticated principal -- human user, service
// account, machine workload -- as one Identity value. The shape mirrors
// IA's identity.v1 to keep wire formats congruent across platforms.
//
// See plan: check-ia-and-plan-optimized-cook.md item A1.

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

package identityv1

import (
	_ "google.golang.org/genproto/googleapis/api/annotations"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	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)
)

// IdentityType discriminates the principal kind. The value selects which
// of user / service_account / client is populated on an Identity.
type IdentityType int32

const (
	IdentityType_IDENTITY_TYPE_UNSPECIFIED IdentityType = 0
	// Human user authenticated via OIDC.
	IdentityType_IDENTITY_TYPE_USER IdentityType = 1
	// Long-lived service account authenticated via API key.
	IdentityType_IDENTITY_TYPE_SERVICE_ACCOUNT IdentityType = 2
	// Machine workload authenticated via short-lived JWT signed with a
	// pre-registered JWK.
	IdentityType_IDENTITY_TYPE_CLIENT IdentityType = 3
)

// Enum value maps for IdentityType.
var (
	IdentityType_name = map[int32]string{
		0: "IDENTITY_TYPE_UNSPECIFIED",
		1: "IDENTITY_TYPE_USER",
		2: "IDENTITY_TYPE_SERVICE_ACCOUNT",
		3: "IDENTITY_TYPE_CLIENT",
	}
	IdentityType_value = map[string]int32{
		"IDENTITY_TYPE_UNSPECIFIED":     0,
		"IDENTITY_TYPE_USER":            1,
		"IDENTITY_TYPE_SERVICE_ACCOUNT": 2,
		"IDENTITY_TYPE_CLIENT":          3,
	}
)

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

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

func (IdentityType) Descriptor() protoreflect.EnumDescriptor {
	return file_tars_identity_v1_identity_proto_enumTypes[0].Descriptor()
}

func (IdentityType) Type() protoreflect.EnumType {
	return &file_tars_identity_v1_identity_proto_enumTypes[0]
}

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

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

// IdentityState is the lifecycle state of an Identity.
type IdentityState int32

const (
	IdentityState_IDENTITY_STATE_UNSPECIFIED IdentityState = 0
	// Identity is active and may authenticate.
	IdentityState_IDENTITY_STATE_ACTIVE IdentityState = 1
	// Identity is suspended; authentication is rejected, data is retained.
	IdentityState_IDENTITY_STATE_SUSPENDED IdentityState = 2
	// Identity is soft-deleted; authentication is rejected and the record
	// is retained only for audit purposes.
	IdentityState_IDENTITY_STATE_DELETED IdentityState = 3
)

// Enum value maps for IdentityState.
var (
	IdentityState_name = map[int32]string{
		0: "IDENTITY_STATE_UNSPECIFIED",
		1: "IDENTITY_STATE_ACTIVE",
		2: "IDENTITY_STATE_SUSPENDED",
		3: "IDENTITY_STATE_DELETED",
	}
	IdentityState_value = map[string]int32{
		"IDENTITY_STATE_UNSPECIFIED": 0,
		"IDENTITY_STATE_ACTIVE":      1,
		"IDENTITY_STATE_SUSPENDED":   2,
		"IDENTITY_STATE_DELETED":     3,
	}
)

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

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

func (IdentityState) Descriptor() protoreflect.EnumDescriptor {
	return file_tars_identity_v1_identity_proto_enumTypes[1].Descriptor()
}

func (IdentityState) Type() protoreflect.EnumType {
	return &file_tars_identity_v1_identity_proto_enumTypes[1]
}

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

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

// UserDetails carries fields specific to human users.
type UserDetails struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Stable identifier from the upstream IdP (sub claim on the OIDC token).
	OidcSubject string `protobuf:"bytes,1,opt,name=oidc_subject,json=oidcSubject,proto3" json:"oidc_subject,omitempty"`
	// Issuer URL of the upstream IdP (matches iss on the OIDC token).
	OidcIssuer string `protobuf:"bytes,2,opt,name=oidc_issuer,json=oidcIssuer,proto3" json:"oidc_issuer,omitempty"`
	// Email address from the OIDC profile.
	Email string `protobuf:"bytes,3,opt,name=email,proto3" json:"email,omitempty"`
	// Display name from the OIDC profile.
	Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"`
	// True when the IdP asserted email ownership (the email_verified claim).
	EmailVerified bool `protobuf:"varint,5,opt,name=email_verified,json=emailVerified,proto3" json:"email_verified,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*UserDetails) ProtoMessage() {}

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

func (x *UserDetails) GetOidcSubject() string {
	if x != nil {
		return x.OidcSubject
	}
	return ""
}

func (x *UserDetails) GetOidcIssuer() string {
	if x != nil {
		return x.OidcIssuer
	}
	return ""
}

func (x *UserDetails) GetEmail() string {
	if x != nil {
		return x.Email
	}
	return ""
}

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

func (x *UserDetails) GetEmailVerified() bool {
	if x != nil {
		return x.EmailVerified
	}
	return false
}

// ServiceAccountDetails carries fields specific to service accounts.
type ServiceAccountDetails struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Human-friendly description of the account's purpose.
	Description   string `protobuf:"bytes,1,opt,name=description,proto3" json:"description,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ServiceAccountDetails) ProtoMessage() {}

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

func (x *ServiceAccountDetails) GetDescription() string {
	if x != nil {
		return x.Description
	}
	return ""
}

// ClientDetails carries fields specific to machine workloads.
type ClientDetails struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Description of the workload's purpose.
	Description   string `protobuf:"bytes,1,opt,name=description,proto3" json:"description,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ClientDetails) ProtoMessage() {}

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

func (x *ClientDetails) GetDescription() string {
	if x != nil {
		return x.Description
	}
	return ""
}

// Identity is the unified principal record.
//
// Every TARS token resolves to exactly one Identity. The facade injects
// the id into the X-Tetrate-Identity header on backend calls.
type Identity struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Resource name id_<ulid>. Server-assigned; immutable.
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// Customer this identity belongs to. Immutable. Empty for platform
	// identities (cross-customer operators).
	CustomerId string `protobuf:"bytes,2,opt,name=customer_id,json=customerId,proto3" json:"customer_id,omitempty"`
	// Discriminator selecting the populated details oneof branch.
	Type IdentityType `protobuf:"varint,3,opt,name=type,proto3,enum=tars.identity.v1.IdentityType" json:"type,omitempty"`
	// Lifecycle state.
	State IdentityState `protobuf:"varint,4,opt,name=state,proto3,enum=tars.identity.v1.IdentityState" json:"state,omitempty"`
	// Type-specific details.
	//
	// Types that are valid to be assigned to Details:
	//
	//	*Identity_User
	//	*Identity_ServiceAccount
	//	*Identity_Client
	Details isIdentity_Details `protobuf_oneof:"details"`
	// Role bundles assigned to this identity. Expanded into the flat
	// permission set at JWT-issue time.
	Bundles []string `protobuf:"bytes,20,rep,name=bundles,proto3" json:"bundles,omitempty"`
	// Customer memberships -- the set of customer ids this identity may
	// operate against. Populated by the facade from the identity's bindings
	// at JWT-issue time; surfaced on GetMe for the CLI's whoami output.
	CustomerMemberships []string `protobuf:"bytes,21,rep,name=customer_memberships,json=customerMemberships,proto3" json:"customer_memberships,omitempty"`
	// Timestamps.
	CreatedAt *timestamppb.Timestamp `protobuf:"bytes,50,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
	UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,51,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"`
	// Optimistic concurrency token. Echo the value back on update; a stale
	// value yields concurrent_update.
	Version       int64 `protobuf:"varint,52,opt,name=version,proto3" json:"version,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*Identity) ProtoMessage() {}

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

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

func (x *Identity) GetCustomerId() string {
	if x != nil {
		return x.CustomerId
	}
	return ""
}

func (x *Identity) GetType() IdentityType {
	if x != nil {
		return x.Type
	}
	return IdentityType_IDENTITY_TYPE_UNSPECIFIED
}

func (x *Identity) GetState() IdentityState {
	if x != nil {
		return x.State
	}
	return IdentityState_IDENTITY_STATE_UNSPECIFIED
}

func (x *Identity) GetDetails() isIdentity_Details {
	if x != nil {
		return x.Details
	}
	return nil
}

func (x *Identity) GetUser() *UserDetails {
	if x != nil {
		if x, ok := x.Details.(*Identity_User); ok {
			return x.User
		}
	}
	return nil
}

func (x *Identity) GetServiceAccount() *ServiceAccountDetails {
	if x != nil {
		if x, ok := x.Details.(*Identity_ServiceAccount); ok {
			return x.ServiceAccount
		}
	}
	return nil
}

func (x *Identity) GetClient() *ClientDetails {
	if x != nil {
		if x, ok := x.Details.(*Identity_Client); ok {
			return x.Client
		}
	}
	return nil
}

func (x *Identity) GetBundles() []string {
	if x != nil {
		return x.Bundles
	}
	return nil
}

func (x *Identity) GetCustomerMemberships() []string {
	if x != nil {
		return x.CustomerMemberships
	}
	return nil
}

func (x *Identity) GetCreatedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.CreatedAt
	}
	return nil
}

func (x *Identity) GetUpdatedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.UpdatedAt
	}
	return nil
}

func (x *Identity) GetVersion() int64 {
	if x != nil {
		return x.Version
	}
	return 0
}

type isIdentity_Details interface {
	isIdentity_Details()
}

type Identity_User struct {
	User *UserDetails `protobuf:"bytes,10,opt,name=user,proto3,oneof"`
}

type Identity_ServiceAccount struct {
	ServiceAccount *ServiceAccountDetails `protobuf:"bytes,11,opt,name=service_account,json=serviceAccount,proto3,oneof"`
}

type Identity_Client struct {
	Client *ClientDetails `protobuf:"bytes,12,opt,name=client,proto3,oneof"`
}

func (*Identity_User) isIdentity_Details() {}

func (*Identity_ServiceAccount) isIdentity_Details() {}

func (*Identity_Client) isIdentity_Details() {}

var File_tars_identity_v1_identity_proto protoreflect.FileDescriptor

const file_tars_identity_v1_identity_proto_rawDesc = "" +
	"\n" +
	"\x1ftars/identity/v1/identity.proto\x12\x10tars.identity.v1\x1a\x1fgoogle/api/field_behavior.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xac\x01\n" +
	"\vUserDetails\x12&\n" +
	"\foidc_subject\x18\x01 \x01(\tB\x03\xe0A\x02R\voidcSubject\x12$\n" +
	"\voidc_issuer\x18\x02 \x01(\tB\x03\xe0A\x02R\n" +
	"oidcIssuer\x12\x14\n" +
	"\x05email\x18\x03 \x01(\tR\x05email\x12\x12\n" +
	"\x04name\x18\x04 \x01(\tR\x04name\x12%\n" +
	"\x0eemail_verified\x18\x05 \x01(\bR\remailVerified\"9\n" +
	"\x15ServiceAccountDetails\x12 \n" +
	"\vdescription\x18\x01 \x01(\tR\vdescription\"1\n" +
	"\rClientDetails\x12 \n" +
	"\vdescription\x18\x01 \x01(\tR\vdescription\"\xf5\x04\n" +
	"\bIdentity\x12\x13\n" +
	"\x02id\x18\x01 \x01(\tB\x03\xe0A\x03R\x02id\x12$\n" +
	"\vcustomer_id\x18\x02 \x01(\tB\x03\xe0A\x03R\n" +
	"customerId\x127\n" +
	"\x04type\x18\x03 \x01(\x0e2\x1e.tars.identity.v1.IdentityTypeB\x03\xe0A\x02R\x04type\x12:\n" +
	"\x05state\x18\x04 \x01(\x0e2\x1f.tars.identity.v1.IdentityStateB\x03\xe0A\x03R\x05state\x123\n" +
	"\x04user\x18\n" +
	" \x01(\v2\x1d.tars.identity.v1.UserDetailsH\x00R\x04user\x12R\n" +
	"\x0fservice_account\x18\v \x01(\v2'.tars.identity.v1.ServiceAccountDetailsH\x00R\x0eserviceAccount\x129\n" +
	"\x06client\x18\f \x01(\v2\x1f.tars.identity.v1.ClientDetailsH\x00R\x06client\x12\x18\n" +
	"\abundles\x18\x14 \x03(\tR\abundles\x126\n" +
	"\x14customer_memberships\x18\x15 \x03(\tB\x03\xe0A\x03R\x13customerMemberships\x12>\n" +
	"\n" +
	"created_at\x182 \x01(\v2\x1a.google.protobuf.TimestampB\x03\xe0A\x03R\tcreatedAt\x12>\n" +
	"\n" +
	"updated_at\x183 \x01(\v2\x1a.google.protobuf.TimestampB\x03\xe0A\x03R\tupdatedAt\x12\x18\n" +
	"\aversion\x184 \x01(\x03R\aversionB\t\n" +
	"\adetails*\x82\x01\n" +
	"\fIdentityType\x12\x1d\n" +
	"\x19IDENTITY_TYPE_UNSPECIFIED\x10\x00\x12\x16\n" +
	"\x12IDENTITY_TYPE_USER\x10\x01\x12!\n" +
	"\x1dIDENTITY_TYPE_SERVICE_ACCOUNT\x10\x02\x12\x18\n" +
	"\x14IDENTITY_TYPE_CLIENT\x10\x03*\x84\x01\n" +
	"\rIdentityState\x12\x1e\n" +
	"\x1aIDENTITY_STATE_UNSPECIFIED\x10\x00\x12\x19\n" +
	"\x15IDENTITY_STATE_ACTIVE\x10\x01\x12\x1c\n" +
	"\x18IDENTITY_STATE_SUSPENDED\x10\x02\x12\x1a\n" +
	"\x16IDENTITY_STATE_DELETED\x10\x03B\xc4\x01\n" +
	"\x14com.tars.identity.v1B\rIdentityProtoP\x01Z;github.com/tetrateio/fraser/api/tars/identity/v1;identityv1\xa2\x02\x03TIX\xaa\x02\x10Tars.Identity.V1\xca\x02\x10Tars\\Identity\\V1\xe2\x02\x1cTars\\Identity\\V1\\GPBMetadata\xea\x02\x12Tars::Identity::V1b\x06proto3"

var (
	file_tars_identity_v1_identity_proto_rawDescOnce sync.Once
	file_tars_identity_v1_identity_proto_rawDescData []byte
)

func file_tars_identity_v1_identity_proto_rawDescGZIP() []byte {
	file_tars_identity_v1_identity_proto_rawDescOnce.Do(func() {
		file_tars_identity_v1_identity_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_tars_identity_v1_identity_proto_rawDesc), len(file_tars_identity_v1_identity_proto_rawDesc)))
	})
	return file_tars_identity_v1_identity_proto_rawDescData
}

var file_tars_identity_v1_identity_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
var file_tars_identity_v1_identity_proto_msgTypes = make([]protoimpl.MessageInfo, 4)
var file_tars_identity_v1_identity_proto_goTypes = []any{
	(IdentityType)(0),             // 0: tars.identity.v1.IdentityType
	(IdentityState)(0),            // 1: tars.identity.v1.IdentityState
	(*UserDetails)(nil),           // 2: tars.identity.v1.UserDetails
	(*ServiceAccountDetails)(nil), // 3: tars.identity.v1.ServiceAccountDetails
	(*ClientDetails)(nil),         // 4: tars.identity.v1.ClientDetails
	(*Identity)(nil),              // 5: tars.identity.v1.Identity
	(*timestamppb.Timestamp)(nil), // 6: google.protobuf.Timestamp
}
var file_tars_identity_v1_identity_proto_depIdxs = []int32{
	0, // 0: tars.identity.v1.Identity.type:type_name -> tars.identity.v1.IdentityType
	1, // 1: tars.identity.v1.Identity.state:type_name -> tars.identity.v1.IdentityState
	2, // 2: tars.identity.v1.Identity.user:type_name -> tars.identity.v1.UserDetails
	3, // 3: tars.identity.v1.Identity.service_account:type_name -> tars.identity.v1.ServiceAccountDetails
	4, // 4: tars.identity.v1.Identity.client:type_name -> tars.identity.v1.ClientDetails
	6, // 5: tars.identity.v1.Identity.created_at:type_name -> google.protobuf.Timestamp
	6, // 6: tars.identity.v1.Identity.updated_at:type_name -> google.protobuf.Timestamp
	7, // [7:7] is the sub-list for method output_type
	7, // [7:7] is the sub-list for method input_type
	7, // [7:7] is the sub-list for extension type_name
	7, // [7:7] is the sub-list for extension extendee
	0, // [0:7] is the sub-list for field type_name
}

func init() { file_tars_identity_v1_identity_proto_init() }
func file_tars_identity_v1_identity_proto_init() {
	if File_tars_identity_v1_identity_proto != nil {
		return
	}
	file_tars_identity_v1_identity_proto_msgTypes[3].OneofWrappers = []any{
		(*Identity_User)(nil),
		(*Identity_ServiceAccount)(nil),
		(*Identity_Client)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: unsafe.Slice(unsafe.StringData(file_tars_identity_v1_identity_proto_rawDesc), len(file_tars_identity_v1_identity_proto_rawDesc)),
			NumEnums:      2,
			NumMessages:   4,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_tars_identity_v1_identity_proto_goTypes,
		DependencyIndexes: file_tars_identity_v1_identity_proto_depIdxs,
		EnumInfos:         file_tars_identity_v1_identity_proto_enumTypes,
		MessageInfos:      file_tars_identity_v1_identity_proto_msgTypes,
	}.Build()
	File_tars_identity_v1_identity_proto = out.File
	file_tars_identity_v1_identity_proto_goTypes = nil
	file_tars_identity_v1_identity_proto_depIdxs = nil
}
