API root route is at host/api
admin, friend, friend2, friend3, friend4
endpoint | remarks | body | response |
---|---|---|---|
post /signup | {username, password, name} | ||
non-200 responses (text in response body): |
"Already logged in” "User exists” "Bad request” "Bad params” | | post /login | log in and set session cookie axios: withCredentials? for all requests
| {username, password} | non-200 responses (text in response body):
"Already logged in” ****”Invalid credentials” "Bad params” | | get /logged-in | check if logged in | | { loggedIn: true } |
endpoint | remarks | body | response |
---|---|---|---|
post /logout | |||
get /user-stats | get user’s results for the past week | {results: [ {numGuesses, timeTaken, date}, … ]} (for the past week) | |
get /leaderboard | get friends’ results for today | {data: [ {name, username, numGuesses, timeTaken}, …] } | |
get /friends | get all friends | {friends: [ {name, username}… ]} | |
get /played-today | {played: true} | ||
post /add-friend | {username} | ||
non-200 responses (text in response body): |
"No such user” "Friend exists” | | post /unfriend | | {username} | non-200 responses (text in response body):
"No such user” "No such friend” |
endpoint | remarks | body | response |
---|---|---|---|
post /guess | after every guess | {guess} | {score: “12021”} |
post /end-game | post game scores after end of game (server will ignore if not logged in) |
”Result exists for today” | {scores : [], timeTaken: int (seconds) } | {word: “apple”} |
endpoint | remarks | body | response |
---|---|---|---|
get /register | get playerId before creating/joining room | {playerId} | |
get /create-room | {roomId} |
Socket: include playerId
Channel: include roomId
event | payload → reply (pushing) | message (receiving) |
---|---|---|
joined | {playerId, playerName, roomId, players: [ {playerId, playerName, state} ], started, round} | |
ready | null → null | {playerId, playerName} |
start_game | ||
start_round | ||
new_guess | {guess} → {result, allFinished, row} | {row, ****playerId, playerName} |
finish | {playerId, playerName, result} | |
end_round | {gameOver, scores: {playerId: score}, word} |