Files
IdP/shared/proto/identity.proto
2026-06-26 23:41:20 +03:00

374 lines
8.5 KiB
Protocol Buffer

syntax = "proto3";
package identity;
service OAuthCoreService {
rpc Authorize (AuthorizeRequest) returns (AuthorizeResponse);
rpc Token (TokenRequest) returns (TokenResponse);
rpc UserInfo (UserInfoRequest) returns (UserInfoResponse);
rpc CheckOAuthConsent (CheckOAuthConsentRequest) returns (CheckOAuthConsentResponse);
rpc GrantOAuthConsent (GrantOAuthConsentRequest) returns (GrantOAuthConsentResponse);
rpc ListUserOAuthConsents (UserIdRequest) returns (ListUserOAuthConsentsResponse);
rpc RevokeOAuthConsent (RevokeOAuthConsentRequest) returns (MutationResponse);
rpc GetOAuthClientPublicInfo (GetOAuthClientPublicInfoRequest) returns (OAuthClientPublicInfo);
}
service OtpService {
rpc SendOtp (SendOtpRequest) returns (OtpResponse);
rpc VerifyOtp (VerifyOtpRequest) returns (OtpVerifyResponse);
}
service AdvancedAuthService {
rpc CreateWebAuthnRegistrationChallenge (WebAuthnRequest) returns (ChallengeResponse);
rpc CreateWebAuthnLoginChallenge (WebAuthnRequest) returns (ChallengeResponse);
rpc CreateQrSession (QrSessionRequest) returns (QrSessionResponse);
rpc PollQrSession (QrPollRequest) returns (QrSessionResponse);
rpc ApproveQrSession (ApproveQrSessionRequest) returns (QrSessionResponse);
}
service FamilyService {
rpc CreateFamilyGroup (CreateFamilyGroupRequest) returns (FamilyGroupResponse);
rpc ListFamilyGroups (UserIdRequest) returns (ListFamilyGroupsResponse);
rpc GetFamilyGroup (GetFamilyGroupRequest) returns (FamilyGroupResponse);
rpc UpdateFamilyGroup (UpdateFamilyGroupRequest) returns (FamilyGroupResponse);
rpc DeleteFamilyGroup (DeleteFamilyGroupRequest) returns (MutationResponse);
rpc AddFamilyMember (FamilyMemberRequest) returns (FamilyMemberResponse);
rpc RemoveFamilyMember (RemoveFamilyMemberRequest) returns (MutationResponse);
rpc LeaveFamilyGroup (LeaveFamilyGroupRequest) returns (LeaveFamilyGroupResponse);
rpc SendFamilyInvite (SendFamilyInviteRequest) returns (FamilyInviteResponse);
rpc SearchFamilyInviteUsers (SearchFamilyInviteUsersRequest) returns (SearchFamilyInviteUsersResponse);
rpc RespondFamilyInvite (RespondFamilyInviteRequest) returns (FamilyInviteResponse);
rpc ListFamilyInvites (ListFamilyInvitesRequest) returns (ListFamilyInvitesResponse);
rpc GetFamilyPresence (GetFamilyGroupRequest) returns (FamilyPresenceResponse);
}
message AuthorizeRequest {
string userId = 1;
string clientId = 2;
string redirectUri = 3;
string scope = 4;
optional string state = 5;
optional string nonce = 6;
optional bool grantConsent = 7;
}
message AuthorizeResponse {
string redirectUrl = 1;
string code = 2;
optional string state = 3;
}
message TokenRequest {
string grantType = 1;
optional string code = 2;
optional string refreshToken = 3;
string clientId = 4;
optional string clientSecret = 5;
optional string redirectUri = 6;
}
message TokenResponse {
string accessToken = 1;
string tokenType = 2;
int32 expiresIn = 3;
string refreshToken = 4;
string idToken = 5;
}
message UserInfoRequest {
string accessToken = 1;
}
message UserInfoResponse {
string sub = 1;
optional string email = 2;
optional string phone = 3;
string name = 4;
optional string picture = 5;
optional bool email_verified = 6;
optional string preferred_username = 7;
optional string phone_number = 8;
optional bool phone_number_verified = 9;
}
message OAuthScopeInfo {
string slug = 1;
string name = 2;
optional string description = 3;
}
message OAuthClientPublicInfo {
string clientId = 1;
string name = 2;
}
message GetOAuthClientPublicInfoRequest {
string clientId = 1;
}
message CheckOAuthConsentRequest {
string userId = 1;
string clientId = 2;
string scope = 3;
}
message CheckOAuthConsentResponse {
bool granted = 1;
OAuthClientPublicInfo client = 2;
repeated OAuthScopeInfo requestedScopes = 3;
}
message GrantOAuthConsentRequest {
string userId = 1;
string clientId = 2;
string scope = 3;
}
message GrantOAuthConsentResponse {
bool granted = 1;
}
message UserOAuthConsentItem {
string id = 1;
string clientId = 2;
string clientName = 3;
repeated OAuthScopeInfo scopes = 4;
string grantedAt = 5;
string updatedAt = 6;
}
message ListUserOAuthConsentsResponse {
repeated UserOAuthConsentItem consents = 1;
}
message RevokeOAuthConsentRequest {
string userId = 1;
string consentId = 2;
}
message SendOtpRequest {
string target = 1;
string channel = 2;
string purpose = 3;
optional string userId = 4;
optional string ipAddress = 5;
}
message VerifyOtpRequest {
string target = 1;
string code = 2;
string purpose = 3;
}
message OtpResponse {
bool sent = 1;
string expiresAt = 2;
}
message OtpVerifyResponse {
bool verified = 1;
}
message WebAuthnRequest {
string userId = 1;
}
message ChallengeResponse {
string challengeId = 1;
string challenge = 2;
string expiresAt = 3;
}
message QrSessionRequest {
string deviceName = 1;
optional string fingerprint = 2;
optional string deviceType = 3;
optional string ipAddress = 4;
optional string userAgent = 5;
}
message QrPollRequest {
string sessionId = 1;
}
message QrSessionResponse {
string sessionId = 1;
string status = 2;
string expiresAt = 3;
optional string qrPayload = 4;
optional QrAuthPayload auth = 5;
}
message ApproveQrSessionRequest {
string sessionId = 1;
string userId = 2;
}
message QrAuthPayload {
string accessToken = 1;
string refreshToken = 2;
string sessionId = 3;
bool pinVerified = 4;
string expiresAt = 5;
}
message UserIdRequest {
string userId = 1;
}
message CreateFamilyGroupRequest {
string ownerId = 1;
string name = 2;
}
message UpdateFamilyGroupRequest {
string requesterId = 1;
string groupId = 2;
string name = 3;
}
message DeleteFamilyGroupRequest {
string requesterId = 1;
string groupId = 2;
}
message GetFamilyGroupRequest {
string requesterId = 1;
string groupId = 2;
}
message RemoveFamilyMemberRequest {
string requesterId = 1;
string memberId = 2;
}
message LeaveFamilyGroupRequest {
string requesterId = 1;
string groupId = 2;
optional string newOwnerUserId = 3;
}
message LeaveFamilyGroupResponse {
int32 count = 1;
bool deleted = 2;
}
message SendFamilyInviteRequest {
string requesterId = 1;
string groupId = 2;
optional string target = 3;
optional string inviteeUserId = 4;
}
message SearchFamilyInviteUsersRequest {
string requesterId = 1;
string groupId = 2;
string query = 3;
}
message FamilyInviteUserCandidate {
string id = 1;
string displayName = 2;
optional string email = 3;
optional string phone = 4;
optional string username = 5;
bool hasAvatar = 6;
bool isBot = 7;
optional string botUsername = 8;
optional string botId = 9;
optional string ownerDisplayName = 10;
}
message SearchFamilyInviteUsersResponse {
repeated FamilyInviteUserCandidate users = 1;
}
message RespondFamilyInviteRequest {
string userId = 1;
string inviteId = 2;
bool accept = 3;
}
message ListFamilyInvitesRequest {
string userId = 1;
optional string groupId = 2;
}
message FamilyInviteResponse {
string id = 1;
string groupId = 2;
string groupName = 3;
string inviterId = 4;
string inviterName = 5;
optional string inviteeUserId = 6;
optional string targetEmail = 7;
optional string targetPhone = 8;
string status = 9;
string expiresAt = 10;
string createdAt = 11;
}
message ListFamilyInvitesResponse {
repeated FamilyInviteResponse invites = 1;
}
message FamilyGroupIdRequest {
string groupId = 1;
}
message FamilyMemberRequest {
string groupId = 1;
string userId = 2;
string role = 3;
}
message FamilyMemberIdRequest {
string memberId = 1;
}
message FamilyMemberResponse {
string id = 1;
string groupId = 2;
string userId = 3;
string role = 4;
string displayName = 5;
bool hasAvatar = 6;
string createdAt = 7;
bool isVerified = 8;
optional string verificationIcon = 9;
bool isBot = 10;
optional string botUsername = 11;
}
message FamilyGroupResponse {
string id = 1;
string ownerId = 2;
string name = 3;
bool hasAvatar = 4;
string createdAt = 5;
string updatedAt = 6;
repeated FamilyMemberResponse members = 7;
bool botFatherAvailable = 8;
bool getMyIdBotAvailable = 9;
}
message ListFamilyGroupsResponse {
repeated FamilyGroupResponse groups = 1;
}
message MutationResponse {
int32 count = 1;
}
message FamilyPresenceMember {
string userId = 1;
string displayName = 2;
bool online = 3;
optional string lastSeenAt = 4;
}
message FamilyPresenceResponse {
repeated FamilyPresenceMember members = 1;
int32 onlineCount = 2;
}