2026-05-02 13:02:38 +08:00

91 lines
2.3 KiB
Protocol Buffer

syntax = "proto3";
package hyapp.user.v1;
import "proto/user/v1/user.proto";
option go_package = "hyapp.local/api/proto/user/v1;userv1";
// LoginPasswordRequest 使用当前 display_user_id 和已设置密码登录。
message LoginPasswordRequest {
RequestMeta meta = 1;
string display_user_id = 2;
string password = 3;
}
// LoginThirdPartyRequest 使用三方凭证登录或注册。
message LoginThirdPartyRequest {
RequestMeta meta = 1;
string provider = 2;
string credential = 3;
string username = 4;
string gender = 5;
string country = 6;
string invite_code = 7;
string device_id = 8;
string device = 9;
string avatar = 10;
string birth = 11;
string app_version = 12;
string source = 13;
string platform = 14;
string language = 15;
string os_version = 16;
string build_number = 17;
string timezone = 18;
string install_channel = 19;
string campaign = 20;
}
// AuthResponse 返回标准认证令牌。
message AuthResponse {
AuthToken token = 1;
bool is_new_user = 2;
bool profile_completed = 3;
string onboarding_status = 4;
}
// SetPasswordRequest 为已经三方登录的用户首次设置密码。
message SetPasswordRequest {
RequestMeta meta = 1;
int64 user_id = 2;
string password = 3;
}
// SetPasswordResponse 返回密码是否已经成功设置。
message SetPasswordResponse {
bool password_set = 1;
}
// RefreshTokenRequest 使用 refresh token 换取新 token。
message RefreshTokenRequest {
RequestMeta meta = 1;
string refresh_token = 2;
}
// RefreshTokenResponse 返回轮换后的令牌。
message RefreshTokenResponse {
AuthToken token = 1;
}
// LogoutRequest 失效指定会话或 refresh token。
message LogoutRequest {
RequestMeta meta = 1;
string session_id = 2;
string refresh_token = 3;
}
// LogoutResponse 返回会话是否被失效。
message LogoutResponse {
bool revoked = 1;
}
// AuthService 承载登录注册和 token 生命周期能力。
service AuthService {
rpc LoginPassword(LoginPasswordRequest) returns (AuthResponse);
rpc LoginThirdParty(LoginThirdPartyRequest) returns (AuthResponse);
rpc SetPassword(SetPasswordRequest) returns (SetPasswordResponse);
rpc RefreshToken(RefreshTokenRequest) returns (RefreshTokenResponse);
rpc Logout(LogoutRequest) returns (LogoutResponse);
}