# User Available endpoints: - POST `/users/:userId` - POST `/users/:userId/friends` - POST `/users/:userId/matchHistory` - GET `/users` - GET `/users/count` - GET `/users/:userId` - GET `/users/:userId/friends` - GET `/users/:userId/friends/count` - GET `/users/:userId/matchHistory` - GET `/users/:userId/matchHistory/count` - PATCH `/users/:userId/:member` - DELETE `/users/:userId` - DELETE `/users/:userId/:member` - DELETE `/users/:userId/friends` - DELETE `/users/:userId/friends/:friendId` - DELETE `/users/:userId/matchHistory` Common return: - 500 with response ```json { "error": "Internal server error" } ``` ## POST `/users/:userId` Used to create an user Input needed : ```json { "displayName": "" } ``` Can return: - 200 with response ```json { "msg": "User created successfully" } ``` - 400 with response (if no user is specified in header, or user already exists, or no display name is specified in body) ```json { "error": "" } ``` - 401 with response (if user specified in header is not admin) ```json { "error": "" } ``` ## POST `/users/:userId/friends/:friendId` Used to add a friend to an user Can return: - 200 with response ```json { "msg": "Friend added successfully" } ``` - 400 with response (if no user is specified in header, or friend is the user specified in header, or friend is already added) ```json { "error": "" } ``` - 404 with response (if user does not exist, or friend does not exist) ```json { "error": "" } ``` - 401 with response (if user specified in header is neither admin nor user) ```json { "error": "" } ``` ## POST `/users/:userId/matchHistory` Used to add a match result to an user Input needed : ```json { "opponent": "", "myScore": , "opponentScore": } ``` Can return: - 200 with response ```json { "msg": "Match successfully saved to the blockchain" } ``` - 400 with response (if no user is specified in header, or no opponent/p1Score/p2Score is specified in body, or opponent is the user specified in header, or a score is negative) ```json { "error": "" } ``` - 404 with response (if user does not exist, or opponent does not exist) ```json { "error": "" } ``` - 401 with response (if user specified in header is neither admin nor user) ```json { "error": "" } ``` ## GET `/users?iStart=&iEnd=` Used to get the list of users Can return: - 200 with response (list of user objects (between iStart and iEnd)) ```json { "users": [ { "username": "", "displayName": "", "wins": , "losses": }, ... ] } ``` - 400 with response (if iStart/iEnd is missing, or iEnd < iStart) ```json { "error": "" } ``` - 404 with response (if no users exist in the selected range) ```json { "error": "" } ``` ## GET `/users/count` Used to get the number of users Always returns: - 200 with response ```json { "n_": } ``` ## GET `/users/:userId` Used to get an user Can return: - 200 with response (an user object) ```json { "username": "", "displayName": "", "wins": , "losses": } ``` - 404 with response (if user does not exist) ```json { "error": "" } ``` ## GET `/users/:userId/friends?iStart=&iEnd=` Used to get the friends of an user Can return: - 200 with response (list of friend objects (between iStart and iEnd)) ```json { "friends": [ { "friendName": "" }, ... ] } ``` - 400 with response (if iStart/iEnd is missing, or iEnd < iStart) ```json { "error": "" } ``` - 404 with response (if user does not exist, or no friends exist in the selected range) ```json { "error": "" } ``` ## GET `/users/:userId/friends/count` Used to get the number of friends of an user Can return: - 200 with response ```json { "n_": } ``` - 404 with response (if user does not exist) ```json { "error": "" } ``` ## GET `/users/:userId/matchHistory?iStart=&iEnd=` Used to get the match history of an user Can return: - 200 with response (list of matches results (between iStart and iEnd)) ```json { "matchHistory": [ { "score": { "p1": "", "p2": "", "p1Score": "", "p2Score": "" }, "tx": "" }, ... ] } ``` - 400 with response (if iStart/iEnd does not exist, or iEnd < iStart) ```json { "error": "" } ``` - 404 with response (if user does not exist, or no matches exist in the selected range) ```json { "error": "" } ``` ## GET `/users/:userId/matchHistory/count` Used to get the number of matches an user played Can return: - 200 with response ```json { "n_": } ``` - 404 with response (if user does not exist) ```json { "error": "" } ``` ## PATCH `/users/:userId/:member` Used to modify a member of an user (only displayName can be modified) Input needed : ```json { "": "" } ``` Can return: - 200 with response ```json { "msg": "<:member> modified sucessfully" } ``` - 400 with response (if no user is specified in header, or new value of member to modify is not provided in the body, or member does not exist) ```json { "error": "" } ``` - 404 with response (if user does not exist) ```json { "error": "" } ``` - 401 with response (if user specified in header is not admin) ```json { "error": "" } ``` ## DELETE `/users/:userId` Used to delete an user Can return: - 200 with response ```json { "msg": "User deleted successfully" } ``` - 404 with response (user does not exist) ```json { "error": "" } ``` ## DELETE `/users/:userId/:member` Used to delete a member of an user (only displayName can be deleted) Can return: - 200 with response ```json { "msg": "<:member> deleted successfully" } ``` - 401 with response (if user specified in header is neither admin nor user) ```json { "error": "" } ``` - 400 with response (if no user is specified in header, or member to delete does not exist) ```json { "error": "" } ``` - 404 with response (if user does not exist) ```json { "error": "" } ``` ## DELETE `/users/:userId/friends` Used to delete the friends of an user Can return: - 200 with response ```json { "msg": "Friends deleted successfully" } ``` - 400 with response (if user specified in header is neither admin nor user) ```json { "error": "" } ``` - 401 with response (if user specified in header is neither admin nor user) ```json { "error": "" } ``` - 404 with response (if user does not exist) ```json { "error": "" } ``` ## DELETE `/users/:userId/friends/:friendId` Used to delete a friend of an user Can return: - 200 with response ```json { "msg": "Friend deleted successfully" } ``` - 400 with response (if user specified in header is neither admin nor user) ```json { "error": "" } ``` - 401 with response (if user specified in header is neither admin nor user) ```json { "error": "" } ``` - 404 with response (if user does not exist, or friend does not exist) ```json { "error": "" } ``` ## DELETE `/users/:userId/matchHistory` Used to delete the match history of an user Can return: - 200 with response ```json { "msg": "Match history deleted successfully" } ``` - 400 with response (if user specified in header is neither admin nor user) ```json { "error": "" } ``` - 401 with response (if user specified in header is neither admin nor user) ```json { "error": "" } ``` - 404 with response (if user does not exist) ```json { "error": "" } ```