Skip to content
Snippets Groups Projects
Unverified Commit d0f1777c authored by Koen de Laat's avatar Koen de Laat Committed by GitHub
Browse files

Added Discovery to grpc (#3598)

parent 14d31a75
Branches
No related merge requests found
...@@ -1577,6 +1577,205 @@ func (x *VersionResp) GetApi() int32 { ...@@ -1577,6 +1577,205 @@ func (x *VersionResp) GetApi() int32 {
return 0 return 0
} }
// DiscoveryReq is a request to fetch discover information.
type DiscoveryReq struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
}
func (x *DiscoveryReq) Reset() {
*x = DiscoveryReq{}
if protoimpl.UnsafeEnabled {
mi := &file_api_v2_api_proto_msgTypes[29]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *DiscoveryReq) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*DiscoveryReq) ProtoMessage() {}
func (x *DiscoveryReq) ProtoReflect() protoreflect.Message {
mi := &file_api_v2_api_proto_msgTypes[29]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use DiscoveryReq.ProtoReflect.Descriptor instead.
func (*DiscoveryReq) Descriptor() ([]byte, []int) {
return file_api_v2_api_proto_rawDescGZIP(), []int{29}
}
// DiscoverResp holds the version oidc disovery info.
type DiscoveryResp struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Issuer string `protobuf:"bytes,1,opt,name=issuer,proto3" json:"issuer,omitempty"`
AuthorizationEndpoint string `protobuf:"bytes,2,opt,name=authorization_endpoint,json=authorizationEndpoint,proto3" json:"authorization_endpoint,omitempty"`
TokenEndpoint string `protobuf:"bytes,3,opt,name=token_endpoint,json=tokenEndpoint,proto3" json:"token_endpoint,omitempty"`
JwksUri string `protobuf:"bytes,4,opt,name=jwks_uri,json=jwksUri,proto3" json:"jwks_uri,omitempty"`
UserinfoEndpoint string `protobuf:"bytes,5,opt,name=userinfo_endpoint,json=userinfoEndpoint,proto3" json:"userinfo_endpoint,omitempty"`
DeviceAuthorizationEndpoint string `protobuf:"bytes,6,opt,name=device_authorization_endpoint,json=deviceAuthorizationEndpoint,proto3" json:"device_authorization_endpoint,omitempty"`
IntrospectionEndpoint string `protobuf:"bytes,7,opt,name=introspection_endpoint,json=introspectionEndpoint,proto3" json:"introspection_endpoint,omitempty"`
GrantTypesSupported []string `protobuf:"bytes,8,rep,name=grant_types_supported,json=grantTypesSupported,proto3" json:"grant_types_supported,omitempty"`
ResponseTypesSupported []string `protobuf:"bytes,9,rep,name=response_types_supported,json=responseTypesSupported,proto3" json:"response_types_supported,omitempty"`
SubjectTypesSupported []string `protobuf:"bytes,10,rep,name=subject_types_supported,json=subjectTypesSupported,proto3" json:"subject_types_supported,omitempty"`
IdTokenSigningAlgValuesSupported []string `protobuf:"bytes,11,rep,name=id_token_signing_alg_values_supported,json=idTokenSigningAlgValuesSupported,proto3" json:"id_token_signing_alg_values_supported,omitempty"`
CodeChallengeMethodsSupported []string `protobuf:"bytes,12,rep,name=code_challenge_methods_supported,json=codeChallengeMethodsSupported,proto3" json:"code_challenge_methods_supported,omitempty"`
ScopesSupported []string `protobuf:"bytes,13,rep,name=scopes_supported,json=scopesSupported,proto3" json:"scopes_supported,omitempty"`
TokenEndpointAuthMethodsSupported []string `protobuf:"bytes,14,rep,name=token_endpoint_auth_methods_supported,json=tokenEndpointAuthMethodsSupported,proto3" json:"token_endpoint_auth_methods_supported,omitempty"`
ClaimsSupported []string `protobuf:"bytes,15,rep,name=claims_supported,json=claimsSupported,proto3" json:"claims_supported,omitempty"`
}
func (x *DiscoveryResp) Reset() {
*x = DiscoveryResp{}
if protoimpl.UnsafeEnabled {
mi := &file_api_v2_api_proto_msgTypes[30]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *DiscoveryResp) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*DiscoveryResp) ProtoMessage() {}
func (x *DiscoveryResp) ProtoReflect() protoreflect.Message {
mi := &file_api_v2_api_proto_msgTypes[30]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use DiscoveryResp.ProtoReflect.Descriptor instead.
func (*DiscoveryResp) Descriptor() ([]byte, []int) {
return file_api_v2_api_proto_rawDescGZIP(), []int{30}
}
func (x *DiscoveryResp) GetIssuer() string {
if x != nil {
return x.Issuer
}
return ""
}
func (x *DiscoveryResp) GetAuthorizationEndpoint() string {
if x != nil {
return x.AuthorizationEndpoint
}
return ""
}
func (x *DiscoveryResp) GetTokenEndpoint() string {
if x != nil {
return x.TokenEndpoint
}
return ""
}
func (x *DiscoveryResp) GetJwksUri() string {
if x != nil {
return x.JwksUri
}
return ""
}
func (x *DiscoveryResp) GetUserinfoEndpoint() string {
if x != nil {
return x.UserinfoEndpoint
}
return ""
}
func (x *DiscoveryResp) GetDeviceAuthorizationEndpoint() string {
if x != nil {
return x.DeviceAuthorizationEndpoint
}
return ""
}
func (x *DiscoveryResp) GetIntrospectionEndpoint() string {
if x != nil {
return x.IntrospectionEndpoint
}
return ""
}
func (x *DiscoveryResp) GetGrantTypesSupported() []string {
if x != nil {
return x.GrantTypesSupported
}
return nil
}
func (x *DiscoveryResp) GetResponseTypesSupported() []string {
if x != nil {
return x.ResponseTypesSupported
}
return nil
}
func (x *DiscoveryResp) GetSubjectTypesSupported() []string {
if x != nil {
return x.SubjectTypesSupported
}
return nil
}
func (x *DiscoveryResp) GetIdTokenSigningAlgValuesSupported() []string {
if x != nil {
return x.IdTokenSigningAlgValuesSupported
}
return nil
}
func (x *DiscoveryResp) GetCodeChallengeMethodsSupported() []string {
if x != nil {
return x.CodeChallengeMethodsSupported
}
return nil
}
func (x *DiscoveryResp) GetScopesSupported() []string {
if x != nil {
return x.ScopesSupported
}
return nil
}
func (x *DiscoveryResp) GetTokenEndpointAuthMethodsSupported() []string {
if x != nil {
return x.TokenEndpointAuthMethodsSupported
}
return nil
}
func (x *DiscoveryResp) GetClaimsSupported() []string {
if x != nil {
return x.ClaimsSupported
}
return nil
}
// RefreshTokenRef contains the metadata for a refresh token that is managed by the storage. // RefreshTokenRef contains the metadata for a refresh token that is managed by the storage.
type RefreshTokenRef struct { type RefreshTokenRef struct {
state protoimpl.MessageState state protoimpl.MessageState
...@@ -1593,7 +1792,7 @@ type RefreshTokenRef struct { ...@@ -1593,7 +1792,7 @@ type RefreshTokenRef struct {
func (x *RefreshTokenRef) Reset() { func (x *RefreshTokenRef) Reset() {
*x = RefreshTokenRef{} *x = RefreshTokenRef{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_api_v2_api_proto_msgTypes[29] mi := &file_api_v2_api_proto_msgTypes[31]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
...@@ -1606,7 +1805,7 @@ func (x *RefreshTokenRef) String() string { ...@@ -1606,7 +1805,7 @@ func (x *RefreshTokenRef) String() string {
func (*RefreshTokenRef) ProtoMessage() {} func (*RefreshTokenRef) ProtoMessage() {}
func (x *RefreshTokenRef) ProtoReflect() protoreflect.Message { func (x *RefreshTokenRef) ProtoReflect() protoreflect.Message {
mi := &file_api_v2_api_proto_msgTypes[29] mi := &file_api_v2_api_proto_msgTypes[31]
if protoimpl.UnsafeEnabled && x != nil { if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
...@@ -1619,7 +1818,7 @@ func (x *RefreshTokenRef) ProtoReflect() protoreflect.Message { ...@@ -1619,7 +1818,7 @@ func (x *RefreshTokenRef) ProtoReflect() protoreflect.Message {
// Deprecated: Use RefreshTokenRef.ProtoReflect.Descriptor instead. // Deprecated: Use RefreshTokenRef.ProtoReflect.Descriptor instead.
func (*RefreshTokenRef) Descriptor() ([]byte, []int) { func (*RefreshTokenRef) Descriptor() ([]byte, []int) {
return file_api_v2_api_proto_rawDescGZIP(), []int{29} return file_api_v2_api_proto_rawDescGZIP(), []int{31}
} }
func (x *RefreshTokenRef) GetId() string { func (x *RefreshTokenRef) GetId() string {
...@@ -1663,7 +1862,7 @@ type ListRefreshReq struct { ...@@ -1663,7 +1862,7 @@ type ListRefreshReq struct {
func (x *ListRefreshReq) Reset() { func (x *ListRefreshReq) Reset() {
*x = ListRefreshReq{} *x = ListRefreshReq{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_api_v2_api_proto_msgTypes[30] mi := &file_api_v2_api_proto_msgTypes[32]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
...@@ -1676,7 +1875,7 @@ func (x *ListRefreshReq) String() string { ...@@ -1676,7 +1875,7 @@ func (x *ListRefreshReq) String() string {
func (*ListRefreshReq) ProtoMessage() {} func (*ListRefreshReq) ProtoMessage() {}
func (x *ListRefreshReq) ProtoReflect() protoreflect.Message { func (x *ListRefreshReq) ProtoReflect() protoreflect.Message {
mi := &file_api_v2_api_proto_msgTypes[30] mi := &file_api_v2_api_proto_msgTypes[32]
if protoimpl.UnsafeEnabled && x != nil { if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
...@@ -1689,7 +1888,7 @@ func (x *ListRefreshReq) ProtoReflect() protoreflect.Message { ...@@ -1689,7 +1888,7 @@ func (x *ListRefreshReq) ProtoReflect() protoreflect.Message {
// Deprecated: Use ListRefreshReq.ProtoReflect.Descriptor instead. // Deprecated: Use ListRefreshReq.ProtoReflect.Descriptor instead.
func (*ListRefreshReq) Descriptor() ([]byte, []int) { func (*ListRefreshReq) Descriptor() ([]byte, []int) {
return file_api_v2_api_proto_rawDescGZIP(), []int{30} return file_api_v2_api_proto_rawDescGZIP(), []int{32}
} }
func (x *ListRefreshReq) GetUserId() string { func (x *ListRefreshReq) GetUserId() string {
...@@ -1711,7 +1910,7 @@ type ListRefreshResp struct { ...@@ -1711,7 +1910,7 @@ type ListRefreshResp struct {
func (x *ListRefreshResp) Reset() { func (x *ListRefreshResp) Reset() {
*x = ListRefreshResp{} *x = ListRefreshResp{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_api_v2_api_proto_msgTypes[31] mi := &file_api_v2_api_proto_msgTypes[33]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
...@@ -1724,7 +1923,7 @@ func (x *ListRefreshResp) String() string { ...@@ -1724,7 +1923,7 @@ func (x *ListRefreshResp) String() string {
func (*ListRefreshResp) ProtoMessage() {} func (*ListRefreshResp) ProtoMessage() {}
func (x *ListRefreshResp) ProtoReflect() protoreflect.Message { func (x *ListRefreshResp) ProtoReflect() protoreflect.Message {
mi := &file_api_v2_api_proto_msgTypes[31] mi := &file_api_v2_api_proto_msgTypes[33]
if protoimpl.UnsafeEnabled && x != nil { if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
...@@ -1737,7 +1936,7 @@ func (x *ListRefreshResp) ProtoReflect() protoreflect.Message { ...@@ -1737,7 +1936,7 @@ func (x *ListRefreshResp) ProtoReflect() protoreflect.Message {
// Deprecated: Use ListRefreshResp.ProtoReflect.Descriptor instead. // Deprecated: Use ListRefreshResp.ProtoReflect.Descriptor instead.
func (*ListRefreshResp) Descriptor() ([]byte, []int) { func (*ListRefreshResp) Descriptor() ([]byte, []int) {
return file_api_v2_api_proto_rawDescGZIP(), []int{31} return file_api_v2_api_proto_rawDescGZIP(), []int{33}
} }
func (x *ListRefreshResp) GetRefreshTokens() []*RefreshTokenRef { func (x *ListRefreshResp) GetRefreshTokens() []*RefreshTokenRef {
...@@ -1761,7 +1960,7 @@ type RevokeRefreshReq struct { ...@@ -1761,7 +1960,7 @@ type RevokeRefreshReq struct {
func (x *RevokeRefreshReq) Reset() { func (x *RevokeRefreshReq) Reset() {
*x = RevokeRefreshReq{} *x = RevokeRefreshReq{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_api_v2_api_proto_msgTypes[32] mi := &file_api_v2_api_proto_msgTypes[34]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
...@@ -1774,7 +1973,7 @@ func (x *RevokeRefreshReq) String() string { ...@@ -1774,7 +1973,7 @@ func (x *RevokeRefreshReq) String() string {
func (*RevokeRefreshReq) ProtoMessage() {} func (*RevokeRefreshReq) ProtoMessage() {}
func (x *RevokeRefreshReq) ProtoReflect() protoreflect.Message { func (x *RevokeRefreshReq) ProtoReflect() protoreflect.Message {
mi := &file_api_v2_api_proto_msgTypes[32] mi := &file_api_v2_api_proto_msgTypes[34]
if protoimpl.UnsafeEnabled && x != nil { if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
...@@ -1787,7 +1986,7 @@ func (x *RevokeRefreshReq) ProtoReflect() protoreflect.Message { ...@@ -1787,7 +1986,7 @@ func (x *RevokeRefreshReq) ProtoReflect() protoreflect.Message {
// Deprecated: Use RevokeRefreshReq.ProtoReflect.Descriptor instead. // Deprecated: Use RevokeRefreshReq.ProtoReflect.Descriptor instead.
func (*RevokeRefreshReq) Descriptor() ([]byte, []int) { func (*RevokeRefreshReq) Descriptor() ([]byte, []int) {
return file_api_v2_api_proto_rawDescGZIP(), []int{32} return file_api_v2_api_proto_rawDescGZIP(), []int{34}
} }
func (x *RevokeRefreshReq) GetUserId() string { func (x *RevokeRefreshReq) GetUserId() string {
...@@ -1817,7 +2016,7 @@ type RevokeRefreshResp struct { ...@@ -1817,7 +2016,7 @@ type RevokeRefreshResp struct {
func (x *RevokeRefreshResp) Reset() { func (x *RevokeRefreshResp) Reset() {
*x = RevokeRefreshResp{} *x = RevokeRefreshResp{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_api_v2_api_proto_msgTypes[33] mi := &file_api_v2_api_proto_msgTypes[35]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
...@@ -1830,7 +2029,7 @@ func (x *RevokeRefreshResp) String() string { ...@@ -1830,7 +2029,7 @@ func (x *RevokeRefreshResp) String() string {
func (*RevokeRefreshResp) ProtoMessage() {} func (*RevokeRefreshResp) ProtoMessage() {}
func (x *RevokeRefreshResp) ProtoReflect() protoreflect.Message { func (x *RevokeRefreshResp) ProtoReflect() protoreflect.Message {
mi := &file_api_v2_api_proto_msgTypes[33] mi := &file_api_v2_api_proto_msgTypes[35]
if protoimpl.UnsafeEnabled && x != nil { if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
...@@ -1843,7 +2042,7 @@ func (x *RevokeRefreshResp) ProtoReflect() protoreflect.Message { ...@@ -1843,7 +2042,7 @@ func (x *RevokeRefreshResp) ProtoReflect() protoreflect.Message {
// Deprecated: Use RevokeRefreshResp.ProtoReflect.Descriptor instead. // Deprecated: Use RevokeRefreshResp.ProtoReflect.Descriptor instead.
func (*RevokeRefreshResp) Descriptor() ([]byte, []int) { func (*RevokeRefreshResp) Descriptor() ([]byte, []int) {
return file_api_v2_api_proto_rawDescGZIP(), []int{33} return file_api_v2_api_proto_rawDescGZIP(), []int{35}
} }
func (x *RevokeRefreshResp) GetNotFound() bool { func (x *RevokeRefreshResp) GetNotFound() bool {
...@@ -1865,7 +2064,7 @@ type VerifyPasswordReq struct { ...@@ -1865,7 +2064,7 @@ type VerifyPasswordReq struct {
func (x *VerifyPasswordReq) Reset() { func (x *VerifyPasswordReq) Reset() {
*x = VerifyPasswordReq{} *x = VerifyPasswordReq{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_api_v2_api_proto_msgTypes[34] mi := &file_api_v2_api_proto_msgTypes[36]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
...@@ -1878,7 +2077,7 @@ func (x *VerifyPasswordReq) String() string { ...@@ -1878,7 +2077,7 @@ func (x *VerifyPasswordReq) String() string {
func (*VerifyPasswordReq) ProtoMessage() {} func (*VerifyPasswordReq) ProtoMessage() {}
func (x *VerifyPasswordReq) ProtoReflect() protoreflect.Message { func (x *VerifyPasswordReq) ProtoReflect() protoreflect.Message {
mi := &file_api_v2_api_proto_msgTypes[34] mi := &file_api_v2_api_proto_msgTypes[36]
if protoimpl.UnsafeEnabled && x != nil { if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
...@@ -1891,7 +2090,7 @@ func (x *VerifyPasswordReq) ProtoReflect() protoreflect.Message { ...@@ -1891,7 +2090,7 @@ func (x *VerifyPasswordReq) ProtoReflect() protoreflect.Message {
// Deprecated: Use VerifyPasswordReq.ProtoReflect.Descriptor instead. // Deprecated: Use VerifyPasswordReq.ProtoReflect.Descriptor instead.
func (*VerifyPasswordReq) Descriptor() ([]byte, []int) { func (*VerifyPasswordReq) Descriptor() ([]byte, []int) {
return file_api_v2_api_proto_rawDescGZIP(), []int{34} return file_api_v2_api_proto_rawDescGZIP(), []int{36}
} }
func (x *VerifyPasswordReq) GetEmail() string { func (x *VerifyPasswordReq) GetEmail() string {
...@@ -1920,7 +2119,7 @@ type VerifyPasswordResp struct { ...@@ -1920,7 +2119,7 @@ type VerifyPasswordResp struct {
func (x *VerifyPasswordResp) Reset() { func (x *VerifyPasswordResp) Reset() {
*x = VerifyPasswordResp{} *x = VerifyPasswordResp{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_api_v2_api_proto_msgTypes[35] mi := &file_api_v2_api_proto_msgTypes[37]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
...@@ -1933,7 +2132,7 @@ func (x *VerifyPasswordResp) String() string { ...@@ -1933,7 +2132,7 @@ func (x *VerifyPasswordResp) String() string {
func (*VerifyPasswordResp) ProtoMessage() {} func (*VerifyPasswordResp) ProtoMessage() {}
func (x *VerifyPasswordResp) ProtoReflect() protoreflect.Message { func (x *VerifyPasswordResp) ProtoReflect() protoreflect.Message {
mi := &file_api_v2_api_proto_msgTypes[35] mi := &file_api_v2_api_proto_msgTypes[37]
if protoimpl.UnsafeEnabled && x != nil { if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
...@@ -1946,7 +2145,7 @@ func (x *VerifyPasswordResp) ProtoReflect() protoreflect.Message { ...@@ -1946,7 +2145,7 @@ func (x *VerifyPasswordResp) ProtoReflect() protoreflect.Message {
// Deprecated: Use VerifyPasswordResp.ProtoReflect.Descriptor instead. // Deprecated: Use VerifyPasswordResp.ProtoReflect.Descriptor instead.
func (*VerifyPasswordResp) Descriptor() ([]byte, []int) { func (*VerifyPasswordResp) Descriptor() ([]byte, []int) {
return file_api_v2_api_proto_rawDescGZIP(), []int{35} return file_api_v2_api_proto_rawDescGZIP(), []int{37}
} }
func (x *VerifyPasswordResp) GetVerified() bool { func (x *VerifyPasswordResp) GetVerified() bool {
...@@ -2088,109 +2287,165 @@ var file_api_v2_api_proto_rawDesc = []byte{ ...@@ -2088,109 +2287,165 @@ var file_api_v2_api_proto_rawDesc = []byte{
0x22, 0x37, 0x0a, 0x0b, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x22, 0x37, 0x0a, 0x0b, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12,
0x16, 0x0a, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x70, 0x69, 0x18, 0x02, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x70, 0x69, 0x18, 0x02,
0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x61, 0x70, 0x69, 0x22, 0x7a, 0x0a, 0x0f, 0x52, 0x65, 0x66, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x61, 0x70, 0x69, 0x22, 0x0e, 0x0a, 0x0c, 0x44, 0x69, 0x73,
0x72, 0x65, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x66, 0x12, 0x0e, 0x0a, 0x02, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x22, 0xb0, 0x06, 0x0a, 0x0d, 0x44, 0x69,
0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x69,
0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x73, 0x73, 0x75, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x73, 0x73,
0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x75, 0x65, 0x72, 0x12, 0x35, 0x0a, 0x16, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61,
0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x02, 0x20,
0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x61, 0x73, 0x74, 0x01, 0x28, 0x09, 0x52, 0x15, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69,
0x5f, 0x75, 0x73, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6c, 0x61, 0x73, 0x6f, 0x6e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x6f,
0x74, 0x55, 0x73, 0x65, 0x64, 0x22, 0x29, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x66, 0x6b, 0x65, 0x6e, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01,
0x28, 0x09, 0x52, 0x0d, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e,
0x74, 0x12, 0x19, 0x0a, 0x08, 0x6a, 0x77, 0x6b, 0x73, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x04, 0x20,
0x01, 0x28, 0x09, 0x52, 0x07, 0x6a, 0x77, 0x6b, 0x73, 0x55, 0x72, 0x69, 0x12, 0x2b, 0x0a, 0x11,
0x75, 0x73, 0x65, 0x72, 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e,
0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x75, 0x73, 0x65, 0x72, 0x69, 0x6e, 0x66,
0x6f, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x42, 0x0a, 0x1d, 0x64, 0x65, 0x76,
0x69, 0x63, 0x65, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f,
0x6e, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09,
0x52, 0x1b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a,
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x35, 0x0a,
0x16, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65,
0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x69,
0x6e, 0x74, 0x72, 0x6f, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x64, 0x70,
0x6f, 0x69, 0x6e, 0x74, 0x12, 0x32, 0x0a, 0x15, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x5f, 0x74, 0x79,
0x70, 0x65, 0x73, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, 0x08, 0x20,
0x03, 0x28, 0x09, 0x52, 0x13, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x73, 0x53,
0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x12, 0x38, 0x0a, 0x18, 0x72, 0x65, 0x73, 0x70,
0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f,
0x72, 0x74, 0x65, 0x64, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x16, 0x72, 0x65, 0x73, 0x70,
0x6f, 0x6e, 0x73, 0x65, 0x54, 0x79, 0x70, 0x65, 0x73, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74,
0x65, 0x64, 0x12, 0x36, 0x0a, 0x17, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x79,
0x70, 0x65, 0x73, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, 0x0a, 0x20,
0x03, 0x28, 0x09, 0x52, 0x15, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65,
0x73, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x12, 0x4f, 0x0a, 0x25, 0x69, 0x64,
0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x61,
0x6c, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72,
0x74, 0x65, 0x64, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x20, 0x69, 0x64, 0x54, 0x6f, 0x6b,
0x65, 0x6e, 0x53, 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x67, 0x41, 0x6c, 0x67, 0x56, 0x61, 0x6c, 0x75,
0x65, 0x73, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x12, 0x47, 0x0a, 0x20, 0x63,
0x6f, 0x64, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x5f, 0x6d, 0x65,
0x74, 0x68, 0x6f, 0x64, 0x73, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18,
0x0c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x1d, 0x63, 0x6f, 0x64, 0x65, 0x43, 0x68, 0x61, 0x6c, 0x6c,
0x65, 0x6e, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x53, 0x75, 0x70, 0x70, 0x6f,
0x72, 0x74, 0x65, 0x64, 0x12, 0x29, 0x0a, 0x10, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x5f, 0x73,
0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f,
0x73, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x12,
0x50, 0x0a, 0x25, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e,
0x74, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x5f, 0x73,
0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x09, 0x52, 0x21,
0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x41, 0x75, 0x74,
0x68, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65,
0x64, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x5f, 0x73, 0x75, 0x70, 0x70,
0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6c, 0x61,
0x69, 0x6d, 0x73, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x22, 0x7a, 0x0a, 0x0f,
0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x66, 0x12,
0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12,
0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01,
0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a,
0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03,
0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6c,
0x61, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08,
0x6c, 0x61, 0x73, 0x74, 0x55, 0x73, 0x65, 0x64, 0x22, 0x29, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74,
0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, 0x71, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73,
0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65,
0x72, 0x49, 0x64, 0x22, 0x4e, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x66, 0x72, 0x65,
0x73, 0x68, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3b, 0x0a, 0x0e, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73,
0x68, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14,
0x2e, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65,
0x6e, 0x52, 0x65, 0x66, 0x52, 0x0d, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x6f, 0x6b,
0x65, 0x6e, 0x73, 0x22, 0x48, 0x0a, 0x10, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x52, 0x65, 0x66,
0x72, 0x65, 0x73, 0x68, 0x52, 0x65, 0x71, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, 0x71, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f,
0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64,
0x22, 0x4e, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20,
0x65, 0x73, 0x70, 0x12, 0x3b, 0x0a, 0x0e, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, 0x74, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x30, 0x0a,
0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x11, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x65,
0x69, 0x2e, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x6f, 0x74, 0x5f, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x18,
0x66, 0x52, 0x0d, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x6e, 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x22,
0x22, 0x48, 0x0a, 0x10, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x45, 0x0a, 0x11, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72,
0x68, 0x52, 0x65, 0x71, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x64, 0x52, 0x65, 0x71, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20,
0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61,
0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61,
0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x30, 0x0a, 0x11, 0x52, 0x65, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x4d, 0x0a, 0x12, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79,
0x76, 0x6f, 0x6b, 0x65, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, 0x12, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1a, 0x0a, 0x08,
0x1b, 0x0a, 0x09, 0x6e, 0x6f, 0x74, 0x5f, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08,
0x28, 0x08, 0x52, 0x08, 0x6e, 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x22, 0x45, 0x0a, 0x11, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x6f, 0x74, 0x5f,
0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x6e, 0x6f, 0x74,
0x71, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x32, 0xd1, 0x08, 0x0a, 0x03, 0x44, 0x65, 0x78, 0x12, 0x34, 0x0a,
0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x09, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x11, 0x2e, 0x61, 0x70, 0x69,
0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e,
0x6f, 0x72, 0x64, 0x22, 0x4d, 0x0a, 0x12, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x50, 0x61, 0x73, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73,
0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x76, 0x65, 0x72, 0x70, 0x22, 0x00, 0x12, 0x3d, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x69,
0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x76, 0x65, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65,
0x69, 0x66, 0x69, 0x65, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x6f, 0x74, 0x5f, 0x66, 0x6f, 0x75, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e,
0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x6e, 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70,
0x6e, 0x64, 0x32, 0x98, 0x08, 0x0a, 0x03, 0x44, 0x65, 0x78, 0x12, 0x34, 0x0a, 0x09, 0x47, 0x65, 0x22, 0x00, 0x12, 0x3d, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x69, 0x65,
0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x11, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43,
0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x55,
0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22,
0x12, 0x3d, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x00, 0x12, 0x3d, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e,
0x12, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x69, 0x74, 0x12, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c,
0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x69, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x65,
0x61, 0x74, 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00,
0x3d, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x43, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f,
0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x69, 0x65, 0x72, 0x64, 0x12, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50,
0x6e, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x61, 0x70, 0x69,
0x74, 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x3d, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52,
0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x43, 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50,
0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x55, 0x70,
0x74, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x1a,
0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x43, 0x0a, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x73, 0x73,
0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x43, 0x0a, 0x0e, 0x44, 0x65,
0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x61, 0x73, 0x73, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x16, 0x2e, 0x61,
0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x72, 0x70, 0x69, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72,
0x65, 0x61, 0x74, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74,
0x22, 0x00, 0x12, 0x43, 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x73, 0x73, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12,
0x77, 0x6f, 0x72, 0x64, 0x12, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x3e, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x73,
0x65, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x61, 0x12, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77,
0x70, 0x69, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73,
0x64, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x43, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12,
0x65, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x46, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74,
0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x6f, 0x72, 0x12, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43,
0x71, 0x1a, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x61, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x18, 0x2e, 0x61, 0x70,
0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x3e, 0x0a, 0x0d, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f,
0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x14, 0x2e, 0x72, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x46, 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74,
0x61, 0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x17, 0x2e, 0x61, 0x70, 0x69,
0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72,
0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x46, 0x0a, 0x0f, 0x52, 0x65, 0x71, 0x1a, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12,
0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x46, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74,
0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6f, 0x72, 0x12, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43,
0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x18, 0x2e, 0x61, 0x70,
0x73, 0x70, 0x22, 0x00, 0x12, 0x46, 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x69, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f,
0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x55, 0x70, 0x72, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x41, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x43,
0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e,
0x1a, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71,
0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x46, 0x0a, 0x0f, 0x1a, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65,
0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x31, 0x0a, 0x0a, 0x47, 0x65,
0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x0f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x56,
0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x10, 0x2e, 0x61, 0x70, 0x69, 0x2e,
0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x37, 0x0a,
0x73, 0x70, 0x22, 0x00, 0x12, 0x41, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x0c, 0x47, 0x65, 0x74, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x12, 0x11, 0x2e,
0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71,
0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x1a, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79,
0x61, 0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x3a, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65,
0x72, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x31, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x56, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x12, 0x13, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74,
0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x0f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x61, 0x70, 0x69,
0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x10, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x56, 0x65, 0x72, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, 0x73, 0x70,
0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x3a, 0x0a, 0x0b, 0x4c, 0x69, 0x22, 0x00, 0x12, 0x40, 0x0a, 0x0d, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x52, 0x65, 0x66, 0x72,
0x73, 0x74, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x12, 0x13, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x65, 0x73, 0x68, 0x12, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65,
0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, 0x71, 0x1a, 0x14, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x61, 0x70, 0x69,
0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x65,
0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x40, 0x0a, 0x0d, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x43, 0x0a, 0x0e, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x50, 0x61,
0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x12, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x65, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x56, 0x65, 0x72,
0x76, 0x6f, 0x6b, 0x65, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x69, 0x66, 0x79, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x17,
0x2e, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x52, 0x65, 0x66, 0x72, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x50, 0x61, 0x73, 0x73, 0x77,
0x73, 0x68, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x43, 0x0a, 0x0e, 0x56, 0x65, 0x72, 0x69, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x42, 0x36, 0x0a, 0x12, 0x63, 0x6f, 0x6d,
0x66, 0x79, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x6f, 0x73, 0x2e, 0x64, 0x65, 0x78, 0x2e, 0x61, 0x70, 0x69, 0x5a,
0x2e, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x20, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x64, 0x65, 0x78, 0x69,
0x65, 0x71, 0x1a, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x50, 0x64, 0x70, 0x2f, 0x64, 0x65, 0x78, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x32, 0x3b, 0x61, 0x70,
0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x42, 0x36, 0x0a, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x12, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x6f, 0x73, 0x2e, 0x64, 0x65, 0x78, 0x2e,
0x61, 0x70, 0x69, 0x5a, 0x20, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,
0x64, 0x65, 0x78, 0x69, 0x64, 0x70, 0x2f, 0x64, 0x65, 0x78, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76,
0x32, 0x3b, 0x61, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
} }
var ( var (
...@@ -2205,7 +2460,7 @@ func file_api_v2_api_proto_rawDescGZIP() []byte { ...@@ -2205,7 +2460,7 @@ func file_api_v2_api_proto_rawDescGZIP() []byte {
return file_api_v2_api_proto_rawDescData return file_api_v2_api_proto_rawDescData
} }
var file_api_v2_api_proto_msgTypes = make([]protoimpl.MessageInfo, 36) var file_api_v2_api_proto_msgTypes = make([]protoimpl.MessageInfo, 38)
var file_api_v2_api_proto_goTypes = []interface{}{ var file_api_v2_api_proto_goTypes = []interface{}{
(*Client)(nil), // 0: api.Client (*Client)(nil), // 0: api.Client
(*GetClientReq)(nil), // 1: api.GetClientReq (*GetClientReq)(nil), // 1: api.GetClientReq
...@@ -2236,13 +2491,15 @@ var file_api_v2_api_proto_goTypes = []interface{}{ ...@@ -2236,13 +2491,15 @@ var file_api_v2_api_proto_goTypes = []interface{}{
(*ListConnectorResp)(nil), // 26: api.ListConnectorResp (*ListConnectorResp)(nil), // 26: api.ListConnectorResp
(*VersionReq)(nil), // 27: api.VersionReq (*VersionReq)(nil), // 27: api.VersionReq
(*VersionResp)(nil), // 28: api.VersionResp (*VersionResp)(nil), // 28: api.VersionResp
(*RefreshTokenRef)(nil), // 29: api.RefreshTokenRef (*DiscoveryReq)(nil), // 29: api.DiscoveryReq
(*ListRefreshReq)(nil), // 30: api.ListRefreshReq (*DiscoveryResp)(nil), // 30: api.DiscoveryResp
(*ListRefreshResp)(nil), // 31: api.ListRefreshResp (*RefreshTokenRef)(nil), // 31: api.RefreshTokenRef
(*RevokeRefreshReq)(nil), // 32: api.RevokeRefreshReq (*ListRefreshReq)(nil), // 32: api.ListRefreshReq
(*RevokeRefreshResp)(nil), // 33: api.RevokeRefreshResp (*ListRefreshResp)(nil), // 33: api.ListRefreshResp
(*VerifyPasswordReq)(nil), // 34: api.VerifyPasswordReq (*RevokeRefreshReq)(nil), // 34: api.RevokeRefreshReq
(*VerifyPasswordResp)(nil), // 35: api.VerifyPasswordResp (*RevokeRefreshResp)(nil), // 35: api.RevokeRefreshResp
(*VerifyPasswordReq)(nil), // 36: api.VerifyPasswordReq
(*VerifyPasswordResp)(nil), // 37: api.VerifyPasswordResp
} }
var file_api_v2_api_proto_depIdxs = []int32{ var file_api_v2_api_proto_depIdxs = []int32{
0, // 0: api.GetClientResp.client:type_name -> api.Client 0, // 0: api.GetClientResp.client:type_name -> api.Client
...@@ -2252,7 +2509,7 @@ var file_api_v2_api_proto_depIdxs = []int32{ ...@@ -2252,7 +2509,7 @@ var file_api_v2_api_proto_depIdxs = []int32{
9, // 4: api.ListPasswordResp.passwords:type_name -> api.Password 9, // 4: api.ListPasswordResp.passwords:type_name -> api.Password
18, // 5: api.CreateConnectorReq.connector:type_name -> api.Connector 18, // 5: api.CreateConnectorReq.connector:type_name -> api.Connector
18, // 6: api.ListConnectorResp.connectors:type_name -> api.Connector 18, // 6: api.ListConnectorResp.connectors:type_name -> api.Connector
29, // 7: api.ListRefreshResp.refresh_tokens:type_name -> api.RefreshTokenRef 31, // 7: api.ListRefreshResp.refresh_tokens:type_name -> api.RefreshTokenRef
1, // 8: api.Dex.GetClient:input_type -> api.GetClientReq 1, // 8: api.Dex.GetClient:input_type -> api.GetClientReq
3, // 9: api.Dex.CreateClient:input_type -> api.CreateClientReq 3, // 9: api.Dex.CreateClient:input_type -> api.CreateClientReq
7, // 10: api.Dex.UpdateClient:input_type -> api.UpdateClientReq 7, // 10: api.Dex.UpdateClient:input_type -> api.UpdateClientReq
...@@ -2266,27 +2523,29 @@ var file_api_v2_api_proto_depIdxs = []int32{ ...@@ -2266,27 +2523,29 @@ var file_api_v2_api_proto_depIdxs = []int32{
23, // 18: api.Dex.DeleteConnector:input_type -> api.DeleteConnectorReq 23, // 18: api.Dex.DeleteConnector:input_type -> api.DeleteConnectorReq
25, // 19: api.Dex.ListConnectors:input_type -> api.ListConnectorReq 25, // 19: api.Dex.ListConnectors:input_type -> api.ListConnectorReq
27, // 20: api.Dex.GetVersion:input_type -> api.VersionReq 27, // 20: api.Dex.GetVersion:input_type -> api.VersionReq
30, // 21: api.Dex.ListRefresh:input_type -> api.ListRefreshReq 29, // 21: api.Dex.GetDiscovery:input_type -> api.DiscoveryReq
32, // 22: api.Dex.RevokeRefresh:input_type -> api.RevokeRefreshReq 32, // 22: api.Dex.ListRefresh:input_type -> api.ListRefreshReq
34, // 23: api.Dex.VerifyPassword:input_type -> api.VerifyPasswordReq 34, // 23: api.Dex.RevokeRefresh:input_type -> api.RevokeRefreshReq
2, // 24: api.Dex.GetClient:output_type -> api.GetClientResp 36, // 24: api.Dex.VerifyPassword:input_type -> api.VerifyPasswordReq
4, // 25: api.Dex.CreateClient:output_type -> api.CreateClientResp 2, // 25: api.Dex.GetClient:output_type -> api.GetClientResp
8, // 26: api.Dex.UpdateClient:output_type -> api.UpdateClientResp 4, // 26: api.Dex.CreateClient:output_type -> api.CreateClientResp
6, // 27: api.Dex.DeleteClient:output_type -> api.DeleteClientResp 8, // 27: api.Dex.UpdateClient:output_type -> api.UpdateClientResp
11, // 28: api.Dex.CreatePassword:output_type -> api.CreatePasswordResp 6, // 28: api.Dex.DeleteClient:output_type -> api.DeleteClientResp
13, // 29: api.Dex.UpdatePassword:output_type -> api.UpdatePasswordResp 11, // 29: api.Dex.CreatePassword:output_type -> api.CreatePasswordResp
15, // 30: api.Dex.DeletePassword:output_type -> api.DeletePasswordResp 13, // 30: api.Dex.UpdatePassword:output_type -> api.UpdatePasswordResp
17, // 31: api.Dex.ListPasswords:output_type -> api.ListPasswordResp 15, // 31: api.Dex.DeletePassword:output_type -> api.DeletePasswordResp
20, // 32: api.Dex.CreateConnector:output_type -> api.CreateConnectorResp 17, // 32: api.Dex.ListPasswords:output_type -> api.ListPasswordResp
22, // 33: api.Dex.UpdateConnector:output_type -> api.UpdateConnectorResp 20, // 33: api.Dex.CreateConnector:output_type -> api.CreateConnectorResp
24, // 34: api.Dex.DeleteConnector:output_type -> api.DeleteConnectorResp 22, // 34: api.Dex.UpdateConnector:output_type -> api.UpdateConnectorResp
26, // 35: api.Dex.ListConnectors:output_type -> api.ListConnectorResp 24, // 35: api.Dex.DeleteConnector:output_type -> api.DeleteConnectorResp
28, // 36: api.Dex.GetVersion:output_type -> api.VersionResp 26, // 36: api.Dex.ListConnectors:output_type -> api.ListConnectorResp
31, // 37: api.Dex.ListRefresh:output_type -> api.ListRefreshResp 28, // 37: api.Dex.GetVersion:output_type -> api.VersionResp
33, // 38: api.Dex.RevokeRefresh:output_type -> api.RevokeRefreshResp 30, // 38: api.Dex.GetDiscovery:output_type -> api.DiscoveryResp
35, // 39: api.Dex.VerifyPassword:output_type -> api.VerifyPasswordResp 33, // 39: api.Dex.ListRefresh:output_type -> api.ListRefreshResp
24, // [24:40] is the sub-list for method output_type 35, // 40: api.Dex.RevokeRefresh:output_type -> api.RevokeRefreshResp
8, // [8:24] is the sub-list for method input_type 37, // 41: api.Dex.VerifyPassword:output_type -> api.VerifyPasswordResp
25, // [25:42] is the sub-list for method output_type
8, // [8:25] is the sub-list for method input_type
8, // [8:8] is the sub-list for extension type_name 8, // [8:8] is the sub-list for extension type_name
8, // [8:8] is the sub-list for extension extendee 8, // [8:8] is the sub-list for extension extendee
0, // [0:8] is the sub-list for field type_name 0, // [0:8] is the sub-list for field type_name
...@@ -2647,7 +2906,7 @@ func file_api_v2_api_proto_init() { ...@@ -2647,7 +2906,7 @@ func file_api_v2_api_proto_init() {
} }
} }
file_api_v2_api_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { file_api_v2_api_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*RefreshTokenRef); i { switch v := v.(*DiscoveryReq); i {
case 0: case 0:
return &v.state return &v.state
case 1: case 1:
...@@ -2659,7 +2918,7 @@ func file_api_v2_api_proto_init() { ...@@ -2659,7 +2918,7 @@ func file_api_v2_api_proto_init() {
} }
} }
file_api_v2_api_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { file_api_v2_api_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListRefreshReq); i { switch v := v.(*DiscoveryResp); i {
case 0: case 0:
return &v.state return &v.state
case 1: case 1:
...@@ -2671,7 +2930,7 @@ func file_api_v2_api_proto_init() { ...@@ -2671,7 +2930,7 @@ func file_api_v2_api_proto_init() {
} }
} }
file_api_v2_api_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { file_api_v2_api_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListRefreshResp); i { switch v := v.(*RefreshTokenRef); i {
case 0: case 0:
return &v.state return &v.state
case 1: case 1:
...@@ -2683,7 +2942,7 @@ func file_api_v2_api_proto_init() { ...@@ -2683,7 +2942,7 @@ func file_api_v2_api_proto_init() {
} }
} }
file_api_v2_api_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { file_api_v2_api_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*RevokeRefreshReq); i { switch v := v.(*ListRefreshReq); i {
case 0: case 0:
return &v.state return &v.state
case 1: case 1:
...@@ -2695,7 +2954,7 @@ func file_api_v2_api_proto_init() { ...@@ -2695,7 +2954,7 @@ func file_api_v2_api_proto_init() {
} }
} }
file_api_v2_api_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { file_api_v2_api_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*RevokeRefreshResp); i { switch v := v.(*ListRefreshResp); i {
case 0: case 0:
return &v.state return &v.state
case 1: case 1:
...@@ -2707,7 +2966,7 @@ func file_api_v2_api_proto_init() { ...@@ -2707,7 +2966,7 @@ func file_api_v2_api_proto_init() {
} }
} }
file_api_v2_api_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { file_api_v2_api_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*VerifyPasswordReq); i { switch v := v.(*RevokeRefreshReq); i {
case 0: case 0:
return &v.state return &v.state
case 1: case 1:
...@@ -2719,6 +2978,30 @@ func file_api_v2_api_proto_init() { ...@@ -2719,6 +2978,30 @@ func file_api_v2_api_proto_init() {
} }
} }
file_api_v2_api_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { file_api_v2_api_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*RevokeRefreshResp); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_api_v2_api_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*VerifyPasswordReq); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_api_v2_api_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*VerifyPasswordResp); i { switch v := v.(*VerifyPasswordResp); i {
case 0: case 0:
return &v.state return &v.state
...@@ -2737,7 +3020,7 @@ func file_api_v2_api_proto_init() { ...@@ -2737,7 +3020,7 @@ func file_api_v2_api_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(), GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_api_v2_api_proto_rawDesc, RawDescriptor: file_api_v2_api_proto_rawDesc,
NumEnums: 0, NumEnums: 0,
NumMessages: 36, NumMessages: 38,
NumExtensions: 0, NumExtensions: 0,
NumServices: 1, NumServices: 1,
}, },
......
...@@ -178,6 +178,28 @@ message VersionResp { ...@@ -178,6 +178,28 @@ message VersionResp {
int32 api = 2; int32 api = 2;
} }
// DiscoveryReq is a request to fetch discover information.
message DiscoveryReq {}
//DiscoverResp holds the version oidc disovery info.
message DiscoveryResp {
string issuer = 1;
string authorization_endpoint = 2;
string token_endpoint = 3;
string jwks_uri = 4;
string userinfo_endpoint = 5;
string device_authorization_endpoint = 6;
string introspection_endpoint = 7;
repeated string grant_types_supported = 8;
repeated string response_types_supported = 9;
repeated string subject_types_supported = 10;
repeated string id_token_signing_alg_values_supported = 11;
repeated string code_challenge_methods_supported = 12;
repeated string scopes_supported = 13;
repeated string token_endpoint_auth_methods_supported = 14;
repeated string claims_supported = 15;
}
// RefreshTokenRef contains the metadata for a refresh token that is managed by the storage. // RefreshTokenRef contains the metadata for a refresh token that is managed by the storage.
message RefreshTokenRef { message RefreshTokenRef {
// ID of the refresh token. // ID of the refresh token.
...@@ -249,6 +271,8 @@ service Dex { ...@@ -249,6 +271,8 @@ service Dex {
rpc ListConnectors(ListConnectorReq) returns (ListConnectorResp) {}; rpc ListConnectors(ListConnectorReq) returns (ListConnectorResp) {};
// GetVersion returns version information of the server. // GetVersion returns version information of the server.
rpc GetVersion(VersionReq) returns (VersionResp) {}; rpc GetVersion(VersionReq) returns (VersionResp) {};
// GetDiscovery returns discovery information of the server.
rpc GetDiscovery(DiscoveryReq) returns (DiscoveryResp) {};
// ListRefresh lists all the refresh token entries for a particular user. // ListRefresh lists all the refresh token entries for a particular user.
rpc ListRefresh(ListRefreshReq) returns (ListRefreshResp) {}; rpc ListRefresh(ListRefreshReq) returns (ListRefreshResp) {};
// RevokeRefresh revokes the refresh token for the provided user-client pair. // RevokeRefresh revokes the refresh token for the provided user-client pair.
......
...@@ -32,6 +32,7 @@ const ( ...@@ -32,6 +32,7 @@ const (
Dex_DeleteConnector_FullMethodName = "/api.Dex/DeleteConnector" Dex_DeleteConnector_FullMethodName = "/api.Dex/DeleteConnector"
Dex_ListConnectors_FullMethodName = "/api.Dex/ListConnectors" Dex_ListConnectors_FullMethodName = "/api.Dex/ListConnectors"
Dex_GetVersion_FullMethodName = "/api.Dex/GetVersion" Dex_GetVersion_FullMethodName = "/api.Dex/GetVersion"
Dex_GetDiscovery_FullMethodName = "/api.Dex/GetDiscovery"
Dex_ListRefresh_FullMethodName = "/api.Dex/ListRefresh" Dex_ListRefresh_FullMethodName = "/api.Dex/ListRefresh"
Dex_RevokeRefresh_FullMethodName = "/api.Dex/RevokeRefresh" Dex_RevokeRefresh_FullMethodName = "/api.Dex/RevokeRefresh"
Dex_VerifyPassword_FullMethodName = "/api.Dex/VerifyPassword" Dex_VerifyPassword_FullMethodName = "/api.Dex/VerifyPassword"
...@@ -67,6 +68,8 @@ type DexClient interface { ...@@ -67,6 +68,8 @@ type DexClient interface {
ListConnectors(ctx context.Context, in *ListConnectorReq, opts ...grpc.CallOption) (*ListConnectorResp, error) ListConnectors(ctx context.Context, in *ListConnectorReq, opts ...grpc.CallOption) (*ListConnectorResp, error)
// GetVersion returns version information of the server. // GetVersion returns version information of the server.
GetVersion(ctx context.Context, in *VersionReq, opts ...grpc.CallOption) (*VersionResp, error) GetVersion(ctx context.Context, in *VersionReq, opts ...grpc.CallOption) (*VersionResp, error)
// GetDiscovery returns discovery information of the server.
GetDiscovery(ctx context.Context, in *DiscoveryReq, opts ...grpc.CallOption) (*DiscoveryResp, error)
// ListRefresh lists all the refresh token entries for a particular user. // ListRefresh lists all the refresh token entries for a particular user.
ListRefresh(ctx context.Context, in *ListRefreshReq, opts ...grpc.CallOption) (*ListRefreshResp, error) ListRefresh(ctx context.Context, in *ListRefreshReq, opts ...grpc.CallOption) (*ListRefreshResp, error)
// RevokeRefresh revokes the refresh token for the provided user-client pair. // RevokeRefresh revokes the refresh token for the provided user-client pair.
...@@ -202,6 +205,15 @@ func (c *dexClient) GetVersion(ctx context.Context, in *VersionReq, opts ...grpc ...@@ -202,6 +205,15 @@ func (c *dexClient) GetVersion(ctx context.Context, in *VersionReq, opts ...grpc
return out, nil return out, nil
} }
func (c *dexClient) GetDiscovery(ctx context.Context, in *DiscoveryReq, opts ...grpc.CallOption) (*DiscoveryResp, error) {
out := new(DiscoveryResp)
err := c.cc.Invoke(ctx, Dex_GetDiscovery_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *dexClient) ListRefresh(ctx context.Context, in *ListRefreshReq, opts ...grpc.CallOption) (*ListRefreshResp, error) { func (c *dexClient) ListRefresh(ctx context.Context, in *ListRefreshReq, opts ...grpc.CallOption) (*ListRefreshResp, error) {
out := new(ListRefreshResp) out := new(ListRefreshResp)
err := c.cc.Invoke(ctx, Dex_ListRefresh_FullMethodName, in, out, opts...) err := c.cc.Invoke(ctx, Dex_ListRefresh_FullMethodName, in, out, opts...)
...@@ -259,6 +271,8 @@ type DexServer interface { ...@@ -259,6 +271,8 @@ type DexServer interface {
ListConnectors(context.Context, *ListConnectorReq) (*ListConnectorResp, error) ListConnectors(context.Context, *ListConnectorReq) (*ListConnectorResp, error)
// GetVersion returns version information of the server. // GetVersion returns version information of the server.
GetVersion(context.Context, *VersionReq) (*VersionResp, error) GetVersion(context.Context, *VersionReq) (*VersionResp, error)
// GetDiscovery returns discovery information of the server.
GetDiscovery(context.Context, *DiscoveryReq) (*DiscoveryResp, error)
// ListRefresh lists all the refresh token entries for a particular user. // ListRefresh lists all the refresh token entries for a particular user.
ListRefresh(context.Context, *ListRefreshReq) (*ListRefreshResp, error) ListRefresh(context.Context, *ListRefreshReq) (*ListRefreshResp, error)
// RevokeRefresh revokes the refresh token for the provided user-client pair. // RevokeRefresh revokes the refresh token for the provided user-client pair.
...@@ -313,6 +327,9 @@ func (UnimplementedDexServer) ListConnectors(context.Context, *ListConnectorReq) ...@@ -313,6 +327,9 @@ func (UnimplementedDexServer) ListConnectors(context.Context, *ListConnectorReq)
func (UnimplementedDexServer) GetVersion(context.Context, *VersionReq) (*VersionResp, error) { func (UnimplementedDexServer) GetVersion(context.Context, *VersionReq) (*VersionResp, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetVersion not implemented") return nil, status.Errorf(codes.Unimplemented, "method GetVersion not implemented")
} }
func (UnimplementedDexServer) GetDiscovery(context.Context, *DiscoveryReq) (*DiscoveryResp, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetDiscovery not implemented")
}
func (UnimplementedDexServer) ListRefresh(context.Context, *ListRefreshReq) (*ListRefreshResp, error) { func (UnimplementedDexServer) ListRefresh(context.Context, *ListRefreshReq) (*ListRefreshResp, error) {
return nil, status.Errorf(codes.Unimplemented, "method ListRefresh not implemented") return nil, status.Errorf(codes.Unimplemented, "method ListRefresh not implemented")
} }
...@@ -569,6 +586,24 @@ func _Dex_GetVersion_Handler(srv interface{}, ctx context.Context, dec func(inte ...@@ -569,6 +586,24 @@ func _Dex_GetVersion_Handler(srv interface{}, ctx context.Context, dec func(inte
return interceptor(ctx, in, info, handler) return interceptor(ctx, in, info, handler)
} }
func _Dex_GetDiscovery_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(DiscoveryReq)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(DexServer).GetDiscovery(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: Dex_GetDiscovery_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(DexServer).GetDiscovery(ctx, req.(*DiscoveryReq))
}
return interceptor(ctx, in, info, handler)
}
func _Dex_ListRefresh_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { func _Dex_ListRefresh_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ListRefreshReq) in := new(ListRefreshReq)
if err := dec(in); err != nil { if err := dec(in); err != nil {
...@@ -682,6 +717,10 @@ var Dex_ServiceDesc = grpc.ServiceDesc{ ...@@ -682,6 +717,10 @@ var Dex_ServiceDesc = grpc.ServiceDesc{
MethodName: "GetVersion", MethodName: "GetVersion",
Handler: _Dex_GetVersion_Handler, Handler: _Dex_GetVersion_Handler,
}, },
{
MethodName: "GetDiscovery",
Handler: _Dex_GetDiscovery_Handler,
},
{ {
MethodName: "ListRefresh", MethodName: "ListRefresh",
Handler: _Dex_ListRefresh_Handler, Handler: _Dex_ListRefresh_Handler,
......
...@@ -508,7 +508,7 @@ func runServe(options serveOptions) error { ...@@ -508,7 +508,7 @@ func runServe(options serveOptions) error {
} }
grpcSrv := grpc.NewServer(grpcOptions...) grpcSrv := grpc.NewServer(grpcOptions...)
api.RegisterDexServer(grpcSrv, server.NewAPI(serverConfig.Storage, logger, version)) api.RegisterDexServer(grpcSrv, server.NewAPI(serverConfig.Storage, logger, version, serv))
grpcMetrics.InitializeMetrics(grpcSrv) grpcMetrics.InitializeMetrics(grpcSrv)
if c.GRPC.Reflection { if c.GRPC.Reflection {
......
...@@ -31,11 +31,12 @@ const ( ...@@ -31,11 +31,12 @@ const (
) )
// NewAPI returns a server which implements the gRPC API interface. // NewAPI returns a server which implements the gRPC API interface.
func NewAPI(s storage.Storage, logger *slog.Logger, version string) api.DexServer { func NewAPI(s storage.Storage, logger *slog.Logger, version string, server *Server) api.DexServer {
return dexAPI{ return dexAPI{
s: s, s: s,
logger: logger.With("component", "api"), logger: logger.With("component", "api"),
version: version, version: version,
server: server,
} }
} }
...@@ -45,6 +46,7 @@ type dexAPI struct { ...@@ -45,6 +46,7 @@ type dexAPI struct {
s storage.Storage s storage.Storage
logger *slog.Logger logger *slog.Logger
version string version string
server *Server
} }
func (d dexAPI) GetClient(ctx context.Context, req *api.GetClientReq) (*api.GetClientResp, error) { func (d dexAPI) GetClient(ctx context.Context, req *api.GetClientReq) (*api.GetClientResp, error) {
...@@ -250,6 +252,20 @@ func (d dexAPI) GetVersion(ctx context.Context, req *api.VersionReq) (*api.Versi ...@@ -250,6 +252,20 @@ func (d dexAPI) GetVersion(ctx context.Context, req *api.VersionReq) (*api.Versi
}, nil }, nil
} }
func (d dexAPI) GetDiscovery(ctx context.Context, req *api.DiscoveryReq) (*api.DiscoveryResp, error) {
discoveryDoc := d.server.constructDiscovery()
data, err := json.Marshal(discoveryDoc)
if err != nil {
return nil, fmt.Errorf("failed to marshal discovery data: %v", err)
}
resp := api.DiscoveryResp{}
err = json.Unmarshal(data, &resp)
if err != nil {
return nil, fmt.Errorf("failed to unmarshal discovery data: %v", err)
}
return &resp, nil
}
func (d dexAPI) ListPasswords(ctx context.Context, req *api.ListPasswordReq) (*api.ListPasswordResp, error) { func (d dexAPI) ListPasswords(ctx context.Context, req *api.ListPasswordReq) (*api.ListPasswordResp, error) {
passwordList, err := d.s.ListPasswords() passwordList, err := d.s.ListPasswords()
if err != nil { if err != nil {
......
...@@ -38,7 +38,7 @@ func newAPI(s storage.Storage, logger *slog.Logger, t *testing.T) *apiClient { ...@@ -38,7 +38,7 @@ func newAPI(s storage.Storage, logger *slog.Logger, t *testing.T) *apiClient {
} }
serv := grpc.NewServer() serv := grpc.NewServer()
api.RegisterDexServer(serv, NewAPI(s, logger, "test")) api.RegisterDexServer(serv, NewAPI(s, logger, "test", nil))
go serv.Serve(l) go serv.Serve(l)
// NewClient will retry automatically if the serv.Serve() goroutine // NewClient will retry automatically if the serv.Serve() goroutine
......
...@@ -90,6 +90,21 @@ type discovery struct { ...@@ -90,6 +90,21 @@ type discovery struct {
} }
func (s *Server) discoveryHandler() (http.HandlerFunc, error) { func (s *Server) discoveryHandler() (http.HandlerFunc, error) {
d := s.constructDiscovery()
data, err := json.MarshalIndent(d, "", " ")
if err != nil {
return nil, fmt.Errorf("failed to marshal discovery data: %v", err)
}
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
w.Header().Set("Content-Length", strconv.Itoa(len(data)))
w.Write(data)
}), nil
}
func (s *Server) constructDiscovery() discovery {
d := discovery{ d := discovery{
Issuer: s.issuerURL.String(), Issuer: s.issuerURL.String(),
Auth: s.absURL("/auth"), Auth: s.absURL("/auth"),
...@@ -115,17 +130,7 @@ func (s *Server) discoveryHandler() (http.HandlerFunc, error) { ...@@ -115,17 +130,7 @@ func (s *Server) discoveryHandler() (http.HandlerFunc, error) {
sort.Strings(d.ResponseTypes) sort.Strings(d.ResponseTypes)
d.GrantTypes = s.supportedGrantTypes d.GrantTypes = s.supportedGrantTypes
return d
data, err := json.MarshalIndent(d, "", " ")
if err != nil {
return nil, fmt.Errorf("failed to marshal discovery data: %v", err)
}
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
w.Header().Set("Content-Length", strconv.Itoa(len(data)))
w.Write(data)
}), nil
} }
// handleAuthorization handles the OAuth2 auth endpoint. // handleAuthorization handles the OAuth2 auth endpoint.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment