syntax = "proto3"; option go_package = ".;proto"; package proto; service Auth { rpc Authenticate(AuthRequest) returns (AuthReply) {} rpc EnsurePermGranted(CheckPermRequest) returns (CheckPermResponse) {} rpc EnsureUserPermGranted(CheckUserPermRequest) returns (CheckUserPermResponse) {} rpc ListUserFriends(ListUserRelativeRequest) returns (ListUserRelativeResponse) {} rpc ListUserBlocklist(ListUserRelativeRequest) returns (ListUserRelativeResponse) {} } message UserInfo { uint64 id = 1; string name = 2; string nick = 3; string email = 4; string avatar = 5; string banner = 6; optional string description = 7; } message AuthInfo { UserInfo info = 1; bytes permissions = 2; uint64 ticket_id = 3; optional string new_access_token = 4; optional string new_refresh_token = 5; } message AuthRequest { string access_token = 1; optional string refresh_token = 2; } message AuthReply { bool is_valid = 1; optional AuthInfo info = 2; } message CheckPermRequest { string token = 1; string key = 2; bytes value = 3; } message CheckPermResponse { bool is_valid = 1; } message CheckUserPermRequest { uint64 user_id = 1; uint64 other_id = 2; string key = 3; bytes value = 4; } message CheckUserPermResponse { bool is_valid = 1; } message SimpleUserInfo { uint64 id = 1; string name = 2; string nick = 3; } message ListUserRelativeRequest { uint64 user_id = 1; bool is_related = 2; } message ListUserRelativeResponse { repeated SimpleUserInfo data = 1; }