diff --git a/proto/decentraland/social/friendships/friendships-v2.proto b/proto/decentraland/social/friendships/friendships-v2.proto new file mode 100644 index 00000000..a4675889 --- /dev/null +++ b/proto/decentraland/social/friendships/friendships-v2.proto @@ -0,0 +1,222 @@ +syntax = "proto3"; +package decentraland.social.friendships; + +// *** +// Domain messages +// *** + +message Position { + optional string realm = 1; + optional string x = 2; + optional string y = 3; +} +message Positions { + repeated Position positions = 1; +} + +message User { string address = 1; } +message Users { repeated User users = 1; } + +message RejectResponse { User user = 1; } +message DeleteResponse { User user = 1; } +message AcceptResponse { User user = 1; } +message CancelResponse { User user = 1; } + +message RequestResponse { + User user = 1; + int64 created_at = 2; + optional string message = 3; +} + +message Requests { + int64 total = 1; // Total amount of friendship requests + repeated RequestResponse items = 2; +} +message RequestEvents { + Requests outgoing = 1; // Requests the authed user have sent to users + Requests incoming = 2; // Requests the authed user have received from users +} + +// *** +// Payload +// *** + +message RequestPayload { + User user = 1; + optional string message = 3; +} +message AcceptPayload { User user = 1; } +message RejectPayload { User user = 1; } +message DeletePayload { User user = 1; } +message CancelPayload { User user = 1; } + +message FriendshipEventPayload { + oneof body { + RequestPayload request = 1; + AcceptPayload accept = 2; + RejectPayload reject = 4; + DeletePayload delete = 5; + CancelPayload cancel = 6; + } +} + +message UpdateFriendshipPayload { + FriendshipEventPayload event = 1; +} + +message MutualFriendsPayload { + User user = 1; +} + +message PositionPayload { + optional Position position = 1; +} + +// *** +// Response +// *** + +message BadRequestError { + string message = 1; +} +message UnauthorizedError { + string message = 1; +} +message ForbiddenError { + string message = 1; +} +message TooManyRequestsError { + string message = 1; +} +message InternalServerError { + string message = 1; +} + +// This message is a response that is sent from the server to the client +message FriendshipEventResponse { + oneof body { + RequestResponse request = 1; + AcceptResponse accept = 2; + RejectResponse reject = 4; + DeleteResponse delete = 5; + CancelResponse cancel = 6; + } +} + +message FriendshipEventResponses { + repeated FriendshipEventResponse responses = 1; +} + +message UsersResponse { + oneof response { + Users users = 1; + InternalServerError internal_server_error = 2; + UnauthorizedError unauthorized_error = 3; + ForbiddenError forbidden_error = 4; + TooManyRequestsError too_many_requests_error = 5; + BadRequestError bad_request_error = 6; + } +} + +message PositionResponse { + oneof response { + Position position = 1; + InternalServerError internal_server_error = 2; + UnauthorizedError unauthorized_error = 3; + ForbiddenError forbidden_error = 4; + TooManyRequestsError too_many_requests_error = 5; + BadRequestError bad_request_error = 6; + } +} + +message RequestEventsResponse { + oneof response { + RequestEvents events = 1; + InternalServerError internal_server_error = 2; + UnauthorizedError unauthorized_error = 3; + ForbiddenError forbidden_error = 4; + TooManyRequestsError too_many_requests_error = 5; + } +} + +message UpdateFriendshipResponse { + oneof response { + FriendshipEventResponse event = 1; + InternalServerError internal_server_error = 2; + UnauthorizedError unauthorized_error = 3; + ForbiddenError forbidden_error = 4; + TooManyRequestsError too_many_requests_error = 5; + BadRequestError bad_request_error = 6; + } +} + +message SubscribeFriendshipPresenceUpdatesResponse { + oneof response { + Positions updates = 1; + InternalServerError internal_server_error = 2; + UnauthorizedError unauthorized_error = 3; + ForbiddenError forbidden_error = 4; + TooManyRequestsError too_many_requests_error = 5; + } +} + +message SubscribeFriendshipEventsUpdatesResponse { + oneof response { + FriendshipEventResponses events = 1; + InternalServerError internal_server_error = 2; + UnauthorizedError unauthorized_error = 3; + ForbiddenError forbidden_error = 4; + TooManyRequestsError too_many_requests_error = 5; + } +} + +message LoginPayload { + string auth_chain = 1; + string address = 2; + string timestamp = 3; +} + +message WelcomeMessage { +} + +message LoginResponse { + oneof response { + UnauthorizedError unauthorized_error = 1; + WelcomeMessage welcome_message = 2; + } +} + +message Empty {} + +service FriendshipsService { + + // Login the connection, this message needs to be the first one to send so the conection can be authenticated + rpc Login(LoginPayload) returns (LoginResponse) {} + + // Message to set your position + rpc PositionHeartbeat(PositionPayload) returns (PositionResponse) {} + + // Get the list of friends for the authenticated user + rpc GetFriends(Empty) returns (stream UsersResponse) {} + + // Get the list of online presence friends for the authenticated user + rpc GetOnlineFriends(Empty) returns (stream UsersResponse) {} + + // Get the list of mutual friends between the authenticated user and the one in the parameter + rpc GetMutualFriends(MutualFriendsPayload) returns (stream UsersResponse) {} + + // Get the list of request events for the authenticated user + rpc GetRequestEvents(Empty) returns (RequestEventsResponse) {} + + // Update friendship status: REQUEST, ACCEPT, REJECT, CANCEL, DELETE + rpc UpdateFriendshipEvent(UpdateFriendshipPayload) + returns (UpdateFriendshipResponse) {} + + // Subscribe to updates of friendship status: REQUEST, ACCEPT, REJECT, CANCEL, DELETE + rpc SubscribeFriendshipEventsUpdates(Empty) + returns (stream SubscribeFriendshipEventsUpdatesResponse) {} + + // Subscribe to presence status updates of friends + rpc SubscribeFriendshipPresenceUpdates(Empty) + returns (stream SubscribeFriendshipPresenceUpdatesResponse) {} +} diff --git a/proto/decentraland/social/friendships/friendships.proto b/proto/decentraland/social/friendships/friendships.proto index 2ac72e49..a405f14f 100644 --- a/proto/decentraland/social/friendships/friendships.proto +++ b/proto/decentraland/social/friendships/friendships.proto @@ -6,26 +6,34 @@ syntax = "proto3"; package decentraland.social.friendships; -// *** -// Domain messages -// *** +// This message is a response that is sent from the server to the client +message FriendshipEventResponse { + oneof body { + RequestResponse request = 1; + AcceptResponse accept = 2; + RejectResponse reject = 4; + DeleteResponse delete = 5; + CancelResponse cancel = 6; + } +} -message Position { - optional string realm = 1; - optional string x = 2; - optional string y = 3; +message FriendshipEventResponses { + repeated FriendshipEventResponse responses = 1; } -message Positions { - repeated Position positions = 1; + +message FriendshipEventPayload { + oneof body { + RequestPayload request = 1; + AcceptPayload accept = 2; + RejectPayload reject = 4; + DeletePayload delete = 5; + CancelPayload cancel = 6; + } } message User { string address = 1; } -message Users { repeated User users = 1; } -message RejectResponse { User user = 1; } -message DeleteResponse { User user = 1; } -message AcceptResponse { User user = 1; } -message CancelResponse { User user = 1; } +message Users { repeated User users = 1; } message RequestResponse { User user = 1; @@ -33,37 +41,36 @@ message RequestResponse { optional string message = 3; } +message RequestPayload { + User user = 1; + optional string message = 3; +} + message Requests { int64 total = 1; // Total amount of friendship requests repeated RequestResponse items = 2; } + message RequestEvents { Requests outgoing = 1; // Requests the authed user have sent to users Requests incoming = 2; // Requests the authed user have received from users } -// *** -// Payload -// *** +message AcceptResponse { User user = 1; } -message RequestPayload { - User user = 1; - optional string message = 3; -} message AcceptPayload { User user = 1; } + +message RejectResponse { User user = 1; } + message RejectPayload { User user = 1; } + +message DeleteResponse { User user = 1; } + message DeletePayload { User user = 1; } -message CancelPayload { User user = 1; } -message FriendshipEventPayload { - oneof body { - RequestPayload request = 1; - AcceptPayload accept = 2; - RejectPayload reject = 4; - DeletePayload delete = 5; - CancelPayload cancel = 6; - } -} +message CancelResponse { User user = 1; } + +message CancelPayload { User user = 1; } message UpdateFriendshipPayload { FriendshipEventPayload event = 1; @@ -77,23 +84,11 @@ message MutualFriendsPayload { optional Payload auth_token = 2; } -// For internal use only, subject to change. -message PositionPayload { - // For internal use only, subject to change. - optional Position position = 1; - // For internal use only, subject to change. - optional Payload auth_token = 2; -} - message Payload { // For internal use only, subject to change. optional string synapse_token = 1; } -// *** -// Response -// *** - message BadRequestError { string message = 1; } @@ -110,21 +105,6 @@ message InternalServerError { string message = 1; } -// This message is a response that is sent from the server to the client -message FriendshipEventResponse { - oneof body { - RequestResponse request = 1; - AcceptResponse accept = 2; - RejectResponse reject = 4; - DeleteResponse delete = 5; - CancelResponse cancel = 6; - } -} - -message FriendshipEventResponses { - repeated FriendshipEventResponse responses = 1; -} - message UsersResponse { oneof response { Users users = 1; @@ -136,17 +116,6 @@ message UsersResponse { } } -message PositionResponse { - oneof response { - Position position = 1; - InternalServerError internal_server_error = 2; - UnauthorizedError unauthorized_error = 3; - ForbiddenError forbidden_error = 4; - TooManyRequestsError too_many_requests_error = 5; - BadRequestError bad_request_error = 6; - } -} - message RequestEventsResponse { oneof response { RequestEvents events = 1; @@ -168,16 +137,6 @@ message UpdateFriendshipResponse { } } -message SubscribeFriendshipPresenceUpdatesResponse { - oneof response { - Positions updates = 1; - InternalServerError internal_server_error = 2; - UnauthorizedError unauthorized_error = 3; - ForbiddenError forbidden_error = 4; - TooManyRequestsError too_many_requests_error = 5; - } -} - message SubscribeFriendshipEventsUpdatesResponse { oneof response { FriendshipEventResponses events = 1; @@ -189,16 +148,9 @@ message SubscribeFriendshipEventsUpdatesResponse { } service FriendshipsService { - - // Message to set your position - rpc PositionHeartbeat(PositionPayload) returns (PositionResponse) {} - // Get the list of friends for the authenticated user rpc GetFriends(Payload) returns (stream UsersResponse) {} - // Get the list of online presence friends for the authenticated user - rpc GetOnlineFriends(Payload) returns (stream UsersResponse) {} - // Get the list of mutual friends between the authenticated user and the one in the parameter rpc GetMutualFriends(MutualFriendsPayload) returns (stream UsersResponse) {} @@ -212,8 +164,4 @@ service FriendshipsService { // Subscribe to updates of friendship status: REQUEST, ACCEPT, REJECT, CANCEL, DELETE rpc SubscribeFriendshipEventsUpdates(Payload) returns (stream SubscribeFriendshipEventsUpdatesResponse) {} - - // Subscribe to presence status updates of friends - rpc SubscribeFriendshipPresenceUpdates(Payload) - returns (stream SubscribeFriendshipPresenceUpdatesResponse) {} }