Files
IdP/shared/proto/auth.proto
2026-06-25 07:23:34 +03:00

205 lines
4.8 KiB
Protocol Buffer

syntax = "proto3";
package auth;
service AuthService {
rpc Register (RegisterRequest) returns (PublicUser);
rpc Login (LoginRequest) returns (AuthTokens);
rpc Identify (IdentifyRequest) returns (IdentifyResponse);
rpc SendOtp (PasswordlessOtpRequest) returns (PasswordlessOtpResponse);
rpc VerifyOtp (PasswordlessVerifyRequest) returns (PasswordlessAuthResponse);
rpc LoginWithPassword (PasswordLoginRequest) returns (AuthTokens);
rpc LoginWithLdap (LdapLoginRequest) returns (AuthTokens);
rpc VerifyTotpLogin (VerifyTotpLoginRequest) returns (AuthTokens);
rpc BeginTotpLogin (BeginTotpLoginRequest) returns (BeginTotpLoginResponse);
rpc VerifyPin (VerifyPinRequest) returns (PinVerificationResponse);
rpc GetMe (GetMeRequest) returns (PublicUser);
rpc RefreshSession (RefreshSessionRequest) returns (RefreshSessionResponse);
rpc ValidateSession (ValidateSessionRequest) returns (ValidateSessionResponse);
}
message RegisterRequest {
optional string email = 1;
optional string phone = 2;
string password = 3;
string displayName = 4;
optional string username = 5;
}
message LoginRequest {
string login = 1;
string password = 2;
optional string deviceName = 3;
optional string deviceType = 4;
string fingerprint = 5;
optional string ipAddress = 6;
optional string userAgent = 7;
}
message IdentifyRequest {
string login = 1;
}
message IdentifyResponse {
bool exists = 1;
bool hasPassword = 2;
bool isPinEnabled = 3;
repeated LoginMethod methods = 4;
bool isTotpEnabled = 5;
repeated OtpChannel otpChannels = 6;
}
message OtpChannel {
string channel = 1;
string masked = 2;
}
message LoginMethod {
string kind = 1;
string channel = 2;
string masked = 3;
}
message PasswordlessOtpRequest {
string recipient = 1;
optional string channel = 2;
optional string ipAddress = 3;
}
message PasswordlessOtpResponse {
bool sent = 1;
string expiresAt = 2;
string maskedTarget = 3;
}
message PasswordlessVerifyRequest {
string recipient = 1;
string code = 2;
string fingerprint = 3;
optional string deviceName = 4;
optional string deviceType = 5;
optional string ipAddress = 6;
optional string userAgent = 7;
}
message PasswordlessAuthResponse {
bool requiresPassword = 1;
optional string tempAuthToken = 2;
optional AuthTokens auth = 3;
bool requiresTotp = 4;
optional string totpChallengeToken = 5;
}
message PasswordLoginRequest {
optional string tempAuthToken = 1;
string password = 2;
string fingerprint = 3;
optional string deviceName = 4;
optional string deviceType = 5;
optional string ipAddress = 6;
optional string userAgent = 7;
optional string login = 8;
}
message LdapLoginRequest {
string username = 1;
string password = 2;
string fingerprint = 3;
optional string deviceName = 4;
optional string deviceType = 5;
optional string ipAddress = 6;
optional string userAgent = 7;
}
message VerifyTotpLoginRequest {
string totpChallengeToken = 1;
string code = 2;
}
message BeginTotpLoginRequest {
string recipient = 1;
string fingerprint = 2;
optional string deviceName = 3;
optional string deviceType = 4;
optional string ipAddress = 5;
optional string userAgent = 6;
}
message BeginTotpLoginResponse {
string totpChallengeToken = 1;
}
message VerifyPinRequest {
string sessionId = 1;
string pin = 2;
}
message GetMeRequest {
string userId = 1;
}
message RefreshSessionRequest {
string refreshToken = 1;
optional string sessionId = 2;
}
message RefreshSessionResponse {
bool requiresPin = 1;
optional string accessToken = 2;
optional string sessionId = 3;
bool pinVerified = 4;
optional PublicUser user = 5;
}
message ValidateSessionRequest {
string userId = 1;
string sessionId = 2;
bool touchActivity = 3;
}
message ValidateSessionResponse {
bool requiresPin = 1;
string sessionId = 2;
bool pinVerified = 3;
}
message PublicUser {
string id = 1;
optional string email = 2;
optional string phone = 3;
optional string backupEmail = 4;
optional string backupPhone = 5;
string displayName = 6;
optional string username = 7;
optional string avatarUrl = 8;
optional bool hasAvatar = 11;
bool isSuperAdmin = 9;
string status = 10;
repeated string roles = 12;
repeated string permissions = 13;
bool canAccessAdmin = 14;
bool canManageRoles = 15;
bool canManageOAuth = 16;
bool canManageUsers = 17;
bool canManageSettings = 18;
bool canViewUsers = 19;
bool canViewUserDocuments = 20;
bool hasPassword = 21;
}
message AuthTokens {
string accessToken = 1;
string refreshToken = 2;
string expiresAt = 3;
bool pinVerified = 4;
PublicUser user = 5;
string sessionId = 6;
bool requiresTotp = 7;
optional string totpChallengeToken = 8;
}
message PinVerificationResponse {
string accessToken = 1;
bool pinVerified = 2;
}