Files
knl_meowscendence/doc/user/user.md
Tzvetan Trave 62d4c7df6e added doc
2025-09-29 19:43:13 +02:00

7.0 KiB

User

Available endpoints:

  • POST /users/:userId
  • POST /users/:userId/friends
  • POST /users/:userId/matchHistory
  • GET /users
  • GET /users/:userId
  • GET /users/:userId/friends
  • GET /users/:userId/matchHistory
  • 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
{
	"error": "Internal server error"
}

POST /users/:userId

Used to create an user

Input needed :

{
	"displayName": "<the display name>"
}

Can return:

  • 200 with response
{
	"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)
{
	"error": "<corresponding error>"
}
  • 401 with response (if user specified in header is not admin)
{
	"error": "<corresponding error>"
}

POST /users/:userId/friends

Used to add a friend

Input needed :

{
	"friend": "<the friend's username>"
}

Can return:

  • 200 with response
{
	"msg": "Friend added successfully"
}
  • 400 with response (if no user is specified in header, or friend is the user specified in header, or no friend is specified in body)
{
	"error": "<corresponding error>"
}
  • 404 with response (if user does not exist, or friend does not exist)
{
	"error": "<corresponding error>"
}
  • 401 with response (if user specified in header is neither admin nor user)
{
	"error": "<corresponding error>"
}

POST /users/:userId/matchHistory

Used to add a match result

Input needed :

{
	"opponent": "<the opponent's username>",
	"p1Score": <player 1's score>,
	"p2Score": <player 2's score>
}

Can return:

  • 200 with response
{
	"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)
{
	"error": "<corresponding error>"
}
  • 404 with response (if user does not exist, or opponent does not exist)
{
	"error": "<corresponding error>"
}
  • 401 with response (if user specified in header is neither admin nor user)
{
	"error": "<corresponding error>"
}

GET /users

Used to get the user list

Always returns:

  • 200 with response (list of user objects)
[
	{
		"username": "<the username>",
		"displayName": "<the display name>",
		"wins": <the number of matches won>,
		"losses": <the number of matches lost>
	},
	...
]

GET /users/:userId

Used to get an user

Can return:

  • 200 with response (an user object)
{
	"username": "<the username>",
	"displayName": "<the display name>",
	"wins": <the number of matches won>,
	"losses": <the number of matches lost>
}
  • 404 with response (if user does not exist)
{
	"error": "<corresponding error>"
}

GET /users/:userId/friends

Used to the friends of a user

Can return:

  • 200 with response (list of friend objects)
[
	{
		"friendName": "<the friend's username>"
	},
	...
]
  • 404 with response (if user does not exist, or user does not have friends)
{
	"error": "<corresponding error>"
}

GET /users/:userId/matchHistory

Used to the match history of a user

Input needed :

{
	"iStart": <the index of the first match>,
	"iEnd": <the id of the last match>
}

Can return:

  • 200 with response (list of matches results (between iStart and iEnd))
[
	{
		"score":
		{
			"p1": "<the name of the p1>",
			"p2": "<the name of the p2>",
			"p1Score": "<the score of the p1>",
			"p2Score": "<the score of the p2>"
		},
		"tx": "<the transcaction hash>"
	},
	...
]
  • 400 with response (if iStart/iEnd does not exist, or iEnd < iStart)
{
	"error": "<corresponding error>"
}
  • 404 with response (if user does not exist, or user did not play any matches)
{
	"error": "<corresponding error>"
}

PATCH /users/:userId/:member

Used to modify the member of a user (only displayName can be modified)

Input needed :

{
	"<the member to modify (must be identical to :member)>": "<the member's new value>"
}

Can return:

  • 200 with response
{
	"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)
{
	"error": "<corresponding error>"
}
  • 404 with response (if user does not exist)
{
	"error": "<corresponding error>"
}
  • 401 with response (if user specified in header is not admin)
{
	"error": "<corresponding error>"
}

DELETE /users/:userId

Used to delete a user

Can return:

  • 200 with response
{
	"msg": "User deleted successfully"
}
  • 404 with response (user does not exist)
{
	"error": "<corresponding error>"
}

DELETE /users/:userId/:member

Used to delete a member (only displayName can be deleted)

Can return:

  • 200 with response
{
	"msg": "<:member> deleted successfully"
}
  • 401 with response (if user specified in header is neither admin nor user)
{
	"error": "<corresponding error>"
}
  • 400 with response (if no user is specified in header, or member to delete does not exist)
{
	"error": "<corresponding error>"
}
  • 404 with response (if user does not exist)
{
	"error": "<corresponding error>"
}

DELETE /users/:userId/friends

Used to delete friends

Can return:

  • 200 with response
{
	"msg": "Friends deleted successfully"
}
  • 400 with response (if user specified in header is neither admin nor user)
{
	"error": "<corresponding error>"
}
  • 401 with response (if user specified in header is neither admin nor user)
{
	"error": "<corresponding error>"
}
  • 404 with response (if user does not exist)
{
	"error": "<corresponding error>"
}

DELETE /users/:userId/friends/:friendId

Used to delete a friend

Can return:

  • 200 with response
{
	"msg": "Friend deleted successfully"
}
  • 400 with response (if user specified in header is neither admin nor user)
{
	"error": "<corresponding error>"
}
  • 401 with response (if user specified in header is neither admin nor user)
{
	"error": "<corresponding error>"
}
  • 404 with response (if user does not exist, or friend does not exist)
{
	"error": "<corresponding error>"
}

DELETE /users/:userId/matchHistory

Used to delete the match history

Can return:

  • 200 with response
{
	"msg": "Match history deleted successfully"
}
  • 400 with response (if user specified in header is neither admin nor user)
{
	"error": "<corresponding error>"
}
  • 401 with response (if user specified in header is neither admin nor user)
{
	"error": "<corresponding error>"
}
  • 404 with response (if user does not exist)
{
	"error": "<corresponding error>"
}