Service_Contracts_1 - COS301-SE-2025/Hands-Up GitHub Wiki

Service Contracts

Service Name Operations Inputs Outputs PreConditions PostConditions Errors
UserSignUp signup(name, surname, username, email, password) User details object( name (String, required), surname (String, required), username (String, required), email (String, required)) Successful creation response Email must not already exist New user must be added to the system 409 If email already exists, 500 internal server error
UserLogin login(email,password) User details object( email (String, required), password (String, required) ) Successful login response Email must already exist and password must match stored hash User marked as logged in 401 Invalid email or password, 404 if email not registered, 500 Internal server error
UserDetails uniqueUsername(username) username (String, required) Object (exists: Boolean) A non-empty username must be provided Returns true if the username exists, otherwise false 500 Internal server error
uniqueEmail(email) email (String, required) Object (exists: Boolean ) A valid email must be provided Returns true if the email exists, otherwise false 500 Internal server error
UserProfile getUserData(userID) userID (Number, required) User object (userID, username, name, surname, email) userID must correspond to an existing user in the database Returns user details if found 404 If userID not found, 500 internal server error
updateUserDetails(userID, name, surname, username, email) userID (Number, required), name (String, required), surname (String, required), username (String, required), email (String, required) Successful update response and updated user object (userID, username, name, surname, email) userID must exist and input fields must be valid User information is updated in the database 404 If userID not found, 500 internal server error
updateUserPassword(id, name, surname, username, email, password) userID (Number, required), name (String, required), surname (String, required), username (String, required), email (String, required), password (String, required) Successful update response and updated user object (userID, username, name, surname, email) userID must exist and input fields must be valid User info and hashed password are updated 404 If userID not found, 500 internal server error
UserProgress learningProgress(username) username (String, required) Learning progress object (lessonsCompleted(Number), streak(Number), signsLearned(Number), currentLevel(String)) Username must exist in the system Returns the correct user's learning progress 404 If username not found, 400 if username not provided , 500 internal server error
learningProgress(username, learnig progress object) username (String, required) and Learning progress object (lessonsCompleted(Number, required), streak(Number, required), signsLearned(Number, required), currentLevel(String, required)) Successful update response Username must exist in the system The users learning stats are updated 404 If username not found, 400 if username and Learning stats object not provided, 500 internal server error