// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.36.6
// 	protoc        v3.21.12
// source: yandex/cloud/oauth/claims.proto

package oauth

import (
	_ "github.com/yandex-cloud/go-genproto/yandex/cloud"
	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)
)

type SubjectType int32

const (
	SubjectType_SUBJECT_TYPE_UNSPECIFIED SubjectType = 0
	SubjectType_USER_ACCOUNT             SubjectType = 1
	SubjectType_SERVICE_ACCOUNT          SubjectType = 2
	SubjectType_GROUP                    SubjectType = 3
	SubjectType_INVITEE                  SubjectType = 4
)

// Enum value maps for SubjectType.
var (
	SubjectType_name = map[int32]string{
		0: "SUBJECT_TYPE_UNSPECIFIED",
		1: "USER_ACCOUNT",
		2: "SERVICE_ACCOUNT",
		3: "GROUP",
		4: "INVITEE",
	}
	SubjectType_value = map[string]int32{
		"SUBJECT_TYPE_UNSPECIFIED": 0,
		"USER_ACCOUNT":             1,
		"SERVICE_ACCOUNT":          2,
		"GROUP":                    3,
		"INVITEE":                  4,
	}
)

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

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

func (SubjectType) Descriptor() protoreflect.EnumDescriptor {
	return file_yandex_cloud_oauth_claims_proto_enumTypes[0].Descriptor()
}

func (SubjectType) Type() protoreflect.EnumType {
	return &file_yandex_cloud_oauth_claims_proto_enumTypes[0]
}

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

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

// Claims representation, see https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims for details.
type SubjectClaims struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Subject - Identifier for the End-User at the Issuer.
	Sub string `protobuf:"bytes,1,opt,name=sub,proto3" json:"sub,omitempty"`
	// End-User's full name in displayable form including all name parts, possibly including titles and suffixes, ordered according to the End-User's locale and preferences.
	Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
	// Given name(s) or first name(s) of the End-User. Note that in some cultures, people can have multiple given names; all can be present, with the names being separated by space characters.
	GivenName string `protobuf:"bytes,3,opt,name=given_name,json=givenName,proto3" json:"given_name,omitempty"`
	// Surname(s) or last name(s) of the End-User. Note that in some cultures, people can have multiple family names or no family name; all can be present, with the names being separated by space characters.
	FamilyName string `protobuf:"bytes,4,opt,name=family_name,json=familyName,proto3" json:"family_name,omitempty"`
	// Shorthand name by which the End-User wishes to be referred to at the RP, such as janedoe or j.doe.
	// This value MAY be any valid JSON string including special characters such as @, /, or whitespace. The RP MUST NOT rely upon this value being unique, as discussed in Section 5.7.
	PreferredUsername string `protobuf:"bytes,7,opt,name=preferred_username,json=preferredUsername,proto3" json:"preferred_username,omitempty"`
	// URL of the End-User's profile picture. This URL MUST refer to an image file (for example, a PNG, JPEG, or GIF image file),
	// rather than to a Web page containing an image. Note that this URL SHOULD specifically reference a profile photo of the End-User suitable for displaying when describing the End-User, rather than an arbitrary photo taken by the End-User.
	Picture string `protobuf:"bytes,9,opt,name=picture,proto3" json:"picture,omitempty"`
	// End-User's preferred e-mail address. Its value MUST conform to the RFC 5322 [RFC5322] addr-spec syntax.
	// The RP MUST NOT rely upon this value being unique, as discussed in Section 5.7.
	Email string `protobuf:"bytes,11,opt,name=email,proto3" json:"email,omitempty"`
	// String from zoneinfo [zoneinfo] time zone database representing the End-User's time zone. For example, Europe/Paris or America/Los_Angeles.
	Zoneinfo string `protobuf:"bytes,15,opt,name=zoneinfo,proto3" json:"zoneinfo,omitempty"`
	// End-User's locale, represented as a BCP47 [RFC5646] language tag. This is typically an ISO 639-1 Alpha-2 [ISO639-1] language code in lowercase and an ISO 3166-1 Alpha-2 [ISO3166-1] country code in uppercase, separated by a dash.
	// For example, en-US or fr-CA. As a compatibility note, some implementations have used an underscore as the separator rather than a dash, for example, en_US; Relying Parties MAY choose to accept this locale syntax as well.
	Locale string `protobuf:"bytes,16,opt,name=locale,proto3" json:"locale,omitempty"`
	// End-User's preferred telephone number. E.164 [E.164] is RECOMMENDED as the format of this Claim, for example, +1 (425) 555-1212 or +56 (2) 687 2400.
	// If the phone number contains an extension, it is RECOMMENDED that the extension be represented using the RFC 3966 [RFC3966] extension syntax, for example, +1 (604) 555-1234;ext=5678.
	PhoneNumber string `protobuf:"bytes,17,opt,name=phone_number,json=phoneNumber,proto3" json:"phone_number,omitempty"`
	// Subject type.
	SubType SubjectType `protobuf:"varint,99,opt,name=sub_type,json=subType,proto3,enum=yandex.cloud.oauth.SubjectType" json:"sub_type,omitempty"`
	// User federation, non-empty only for federated users.
	Federation *Federation `protobuf:"bytes,100,opt,name=federation,proto3" json:"federation,omitempty"`
	// Last time the access token was created. Filled only for federated users (not for global users).
	LastAuthenticatedAt *timestamppb.Timestamp `protobuf:"bytes,105,opt,name=last_authenticated_at,json=lastAuthenticatedAt,proto3" json:"last_authenticated_at,omitempty"`
	unknownFields       protoimpl.UnknownFields
	sizeCache           protoimpl.SizeCache
}

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

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

func (*SubjectClaims) ProtoMessage() {}

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

func (x *SubjectClaims) GetSub() string {
	if x != nil {
		return x.Sub
	}
	return ""
}

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

func (x *SubjectClaims) GetGivenName() string {
	if x != nil {
		return x.GivenName
	}
	return ""
}

func (x *SubjectClaims) GetFamilyName() string {
	if x != nil {
		return x.FamilyName
	}
	return ""
}

func (x *SubjectClaims) GetPreferredUsername() string {
	if x != nil {
		return x.PreferredUsername
	}
	return ""
}

func (x *SubjectClaims) GetPicture() string {
	if x != nil {
		return x.Picture
	}
	return ""
}

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

func (x *SubjectClaims) GetZoneinfo() string {
	if x != nil {
		return x.Zoneinfo
	}
	return ""
}

func (x *SubjectClaims) GetLocale() string {
	if x != nil {
		return x.Locale
	}
	return ""
}

func (x *SubjectClaims) GetPhoneNumber() string {
	if x != nil {
		return x.PhoneNumber
	}
	return ""
}

func (x *SubjectClaims) GetSubType() SubjectType {
	if x != nil {
		return x.SubType
	}
	return SubjectType_SUBJECT_TYPE_UNSPECIFIED
}

func (x *SubjectClaims) GetFederation() *Federation {
	if x != nil {
		return x.Federation
	}
	return nil
}

func (x *SubjectClaims) GetLastAuthenticatedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.LastAuthenticatedAt
	}
	return nil
}

// Minimalistic analog of yandex.cloud.organizationmanager.v1.saml.Federation
type Federation struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// ID of the federation.
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// Name of the federation. The name is unique within the cloud or organization
	Name          string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*Federation) ProtoMessage() {}

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

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

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

var File_yandex_cloud_oauth_claims_proto protoreflect.FileDescriptor

const file_yandex_cloud_oauth_claims_proto_rawDesc = "" +
	"\n" +
	"\x1fyandex/cloud/oauth/claims.proto\x12\x12yandex.cloud.oauth\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1dyandex/cloud/validation.proto\"\xbb\x04\n" +
	"\rSubjectClaims\x12\x1e\n" +
	"\x03sub\x18\x01 \x01(\tB\f\xe8\xc71\x01\x8a\xc81\x04<=50R\x03sub\x12\x12\n" +
	"\x04name\x18\x02 \x01(\tR\x04name\x12\x1d\n" +
	"\n" +
	"given_name\x18\x03 \x01(\tR\tgivenName\x12\x1f\n" +
	"\vfamily_name\x18\x04 \x01(\tR\n" +
	"familyName\x12-\n" +
	"\x12preferred_username\x18\a \x01(\tR\x11preferredUsername\x12\x18\n" +
	"\apicture\x18\t \x01(\tR\apicture\x12\x14\n" +
	"\x05email\x18\v \x01(\tR\x05email\x12\x1a\n" +
	"\bzoneinfo\x18\x0f \x01(\tR\bzoneinfo\x12\x16\n" +
	"\x06locale\x18\x10 \x01(\tR\x06locale\x12!\n" +
	"\fphone_number\x18\x11 \x01(\tR\vphoneNumber\x12:\n" +
	"\bsub_type\x18c \x01(\x0e2\x1f.yandex.cloud.oauth.SubjectTypeR\asubType\x12>\n" +
	"\n" +
	"federation\x18d \x01(\v2\x1e.yandex.cloud.oauth.FederationR\n" +
	"federation\x12N\n" +
	"\x15last_authenticated_at\x18i \x01(\v2\x1a.google.protobuf.TimestampR\x13lastAuthenticatedAtJ\x04\b\b\x10\tJ\x04\b\n" +
	"\x10\vJ\x04\b\f\x10\x0fJ\x04\b\x12\x10cJ\x04\b\x05\x10\aJ\x04\be\x10fJ\x04\bf\x10gJ\x04\bg\x10hJ\x04\bh\x10i\"D\n" +
	"\n" +
	"Federation\x12\x1c\n" +
	"\x02id\x18\x01 \x01(\tB\f\xe8\xc71\x01\x8a\xc81\x04<=50R\x02id\x12\x12\n" +
	"\x04name\x18\x03 \x01(\tR\x04nameJ\x04\b\x02\x10\x03*j\n" +
	"\vSubjectType\x12\x1c\n" +
	"\x18SUBJECT_TYPE_UNSPECIFIED\x10\x00\x12\x10\n" +
	"\fUSER_ACCOUNT\x10\x01\x12\x13\n" +
	"\x0fSERVICE_ACCOUNT\x10\x02\x12\t\n" +
	"\x05GROUP\x10\x03\x12\v\n" +
	"\aINVITEE\x10\x04BY\n" +
	"\x19yandex.cloud.api.oauth.v1Z<github.com/yandex-cloud/go-genproto/yandex/cloud/oauth;oauthb\x06proto3"

var (
	file_yandex_cloud_oauth_claims_proto_rawDescOnce sync.Once
	file_yandex_cloud_oauth_claims_proto_rawDescData []byte
)

func file_yandex_cloud_oauth_claims_proto_rawDescGZIP() []byte {
	file_yandex_cloud_oauth_claims_proto_rawDescOnce.Do(func() {
		file_yandex_cloud_oauth_claims_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_yandex_cloud_oauth_claims_proto_rawDesc), len(file_yandex_cloud_oauth_claims_proto_rawDesc)))
	})
	return file_yandex_cloud_oauth_claims_proto_rawDescData
}

var file_yandex_cloud_oauth_claims_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
var file_yandex_cloud_oauth_claims_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
var file_yandex_cloud_oauth_claims_proto_goTypes = []any{
	(SubjectType)(0),              // 0: yandex.cloud.oauth.SubjectType
	(*SubjectClaims)(nil),         // 1: yandex.cloud.oauth.SubjectClaims
	(*Federation)(nil),            // 2: yandex.cloud.oauth.Federation
	(*timestamppb.Timestamp)(nil), // 3: google.protobuf.Timestamp
}
var file_yandex_cloud_oauth_claims_proto_depIdxs = []int32{
	0, // 0: yandex.cloud.oauth.SubjectClaims.sub_type:type_name -> yandex.cloud.oauth.SubjectType
	2, // 1: yandex.cloud.oauth.SubjectClaims.federation:type_name -> yandex.cloud.oauth.Federation
	3, // 2: yandex.cloud.oauth.SubjectClaims.last_authenticated_at:type_name -> google.protobuf.Timestamp
	3, // [3:3] is the sub-list for method output_type
	3, // [3:3] is the sub-list for method input_type
	3, // [3:3] is the sub-list for extension type_name
	3, // [3:3] is the sub-list for extension extendee
	0, // [0:3] is the sub-list for field type_name
}

func init() { file_yandex_cloud_oauth_claims_proto_init() }
func file_yandex_cloud_oauth_claims_proto_init() {
	if File_yandex_cloud_oauth_claims_proto != nil {
		return
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: unsafe.Slice(unsafe.StringData(file_yandex_cloud_oauth_claims_proto_rawDesc), len(file_yandex_cloud_oauth_claims_proto_rawDesc)),
			NumEnums:      1,
			NumMessages:   2,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_yandex_cloud_oauth_claims_proto_goTypes,
		DependencyIndexes: file_yandex_cloud_oauth_claims_proto_depIdxs,
		EnumInfos:         file_yandex_cloud_oauth_claims_proto_enumTypes,
		MessageInfos:      file_yandex_cloud_oauth_claims_proto_msgTypes,
	}.Build()
	File_yandex_cloud_oauth_claims_proto = out.File
	file_yandex_cloud_oauth_claims_proto_goTypes = nil
	file_yandex_cloud_oauth_claims_proto_depIdxs = nil
}
