Authenticates users, signup, signin This is the only endpoint that doesn't pass through the validation filter.
path : <HOST URL>/wePlay/v1/auth/*
info: signs up a user
method: POST
accepts: JSON
- object compliant with the User model - {name: <name>, email: <email> , password: <password>}
returns: JSON
- a user object holding a new clientId
example: /wePlay/v1/auth/signup/
info: signs up a user using a facebook oauth token
method: POST
accepts: JSON
- {access_token: <token>}
returns: JSON
- {'client_id' : clientId}
example: /wePlay/v1/auth/facebook/
info: signs up a user using a google oauth token
method: POST
accepts: JSON
- {access_token: <token>}
returns: JSON
- {'client_id' : clientId}
example: /wePlay/v1/auth/google/
info: signs in an existing user
method : POST
accepts: JSON
- {email: <email>, password: <password}
returns: JSON
- a user object
example: /wePlay/v1/auth/signin/
info: returns a user object holding the password, this is currently
under construction because we will in reality send an email not return the object
method : GET
accepts: String
- email
returns: JSON
- a user object with the email
example:/wePlay/v1/auth/forgotpassword/ore@gmail.com
All user related requests
path: <HOST URL>/wePlay/v1/users/*
info: gets a user by id
method: GET
accepts: String
- clientId
returns: JSON
- a user object
example: /wePlay/v1/users/getUser/43524261
info: gets a user by his user name (not email!)
method: GET
accepts: String
- userName
returns: JSON
- a user object
example: /wePlay/v1/users/getUserByName/Moshiko
info: updates a user's parameters
method: PUT
accepts: JSON
- an object that holds parameters from the user object with updated values
returns: JSON
- a user object with the new values
example: /wePlay/v1/users/updateUser/
info: gets a list of user objects
method: POST
accepts: JSON
- an array of clientIds {users: ["1234", "5436"...]}
returns: JSON
- an array of JSONs - user objects
example: /wePlay/v1/users/getUsersListById/
info: gets all the user objects that contain this word, including E-mail and user name, for example calling this method with the keyword : 'over' will find the user 'over' , 'overflow' and the user 'stack overflow'
method: GET
accepts: String
- user name keyword, email or username
returns: JSON
- {users : <an array of userObject JSONs>}
example: /wePlay/v1/users/getUsersByKeyword/myUs
All league related requests, a league is always created by a user, and this user becomes the admin, a user can have multiple leagues, and these leagues produce games
path: /wePlay/v1/leagues/*
info: creates a new league and makes this user the admin
method: POST
accepts: JSON
- object compliant with the League model - { name: <String - league name>, numOfPlayersPerTeam: <Number> , admin: <String - this client id>, weekDay: <Int, 0-6>, gameTime: <String in the form of HH:MM>, makeTeamsAtNum: <Int - number to make teams at>}
returns: JSON
- an array of JSONs - user objects
example: /wePlay/v1/leagues/addLeague/
info: gets the league object by league Id
method: GET
accepts: String
- leagueId
returns: JSON
- a league object
example: /wePlay/v1/leagues/getLeague/4524262
info: gets the league object by league Id
method: GET
accepts: String
- leagueId
returns: JSON
- a league object
example: /wePlay/v1/leagues/getLeagueByName/4524262
info: gets all the leagues objects that contain this word, for example calling this method with the keyword : 'over' will find the league 'over' , 'overflow' and the league 'stack overflow'
method: GET
accepts: String
- league name keyword
returns: JSON
- {leagues : <an array of leagueObject JSONs>}
example: /wePlay/v1/leagues/getLeagueByKeyword/mylea
info: admin only, pushes a user to a league, the clientId in the body is an optional param
method: PUT
accepts: Query parameter - String
- leagueId , Body parameter - JSON
- {clientId : <string>, isInvite : <boolean>}
returns: JSON
- a league object
example: /wePlay/v1/leagues/addUserToLeague/4524262
info: removes this user from a league, the client is taken from the header
method: GET
accepts: String
- leagueId
returns: JSON
- a league object without the user in it
example: /wePlay/v1/leagues/removeUserFromLeague/4524262
info: gets a list of league objects
method: POST
accepts: JSON
- an array of leagueIds {leagues: ["1234", "5436"...]}
returns: JSON
- an array of JSONs - league objects
example: /wePlay/v1/leagues/getLeaguesListById/
info: updates league parameters i.e name or frequency
method: PUT
accepts: JSON
- an object with League model parameters i.e { name: <new name>, frequency : <new frequency>}
, the query parameter holds the relevant leagueId
returns: JSON
- league object with new parameters
example: /wePlay/v1/leagues/updateLeague/1312315
info: Makes this client an admin in a league, can only be done by an admin
method: PUT
accepts: JSON
- {admin : <clientId>}
, the query parameter holds the relevant leagueId
returns: JSON
- league object updated
example: /wePlay/v1/leagues/addAdmin/123554
All game related requests, a game is always part of a league, that is why a league must always have a league-id header appended
to every request. The only time you don't need a leagueID is calling the '/getGame/{gameId}' method
path : /wePlay/v1/games/*
required header : client-id
info: creates a new game
method: POST
accepts: JSON
- {matchDay : <date object>}
, a date object in Date() format
returns: JSON
- game object
example: /wePlay/v1/games/addGame
info: changes the attending status for this user between -1 (not attending), 0 (undecided) and 1 (attending)
method: GET
accepts: String/String
- GameId to toggle attending for, followed by '/', followed by attending status (-1,0,1)
returns: JSON
- The updated GameUserObject (see below)
example: /wePlay/v1/games/toggleAttending/1234/1
info: gets the game object
method: GET
accepts: String
- gameId
returns: JSON
- The game object
example: /wePlay/v1/games/getGame/1234
info: returns a list of game objects
method: POST
accepts: JSON
- a JSON with an array value in the format {games : <array of gameIds>}
returns: JSON
- A JSON with an array value in the format {games : <array of game objects>}
example: /wePlay/v1/games/getGamesListById/
info: gets the game object
method: PUT
accepts: String
- gameId as query parameter, JSON
- a json which holds an array of arrays, each array is a team, and each team is a list of all the gameUserObjects NOTE - not IDs, a game user object, in the format {teams : [[{gameUserObj, gameUserObj}],[gameUserObj, gameUserObj],[...],[...]]}
returns : JSON
- the Game object
example: /wePlay/v1/games/buildTeams/1234
Endpoint for reading and marking notifications, each user has a notifications array in his user object, this array is
an array of notification id's which can be gotten via this endpoint
path : /wePlay/v1/notifications/*
required header : client-id
info: returns a list of notification objects, a notification object schema:
sender : {type : String}, receiver : {type : String}, message : {type : String}, read: {type : Boolean, default : false}, dateCreated: { type: Date}
method: POST
accepts: JSON
- a JSON with an array value in the format {notifications : <array of notification IDs>}
returns: JSON
- A JSON with an array value in the format {notifications : <array of game objects>}
example: /wePlay/v1/notifications/getNotifications/
info: Marks this notification as "read" in the server, so that the next time this user logs in, all his old notifications
are ordered. It is recommended to mark every notification as read.
method: GET
accepts: String
- notificationId
returns: Boolean
- The success field is the only interesting field in this return value
example: /wePlay/v1/notifications/markAsRead/1234
info: A GameUserObject is a JSON object that has details about a user, that are relevant only to a game, since we are not interested in the user's activeGames, leagues etc. In addition, more fields are added.
-team
field (0,1,2...), the current team the player is in
-form
field ([-1,0,0,0,1,1,-1]), the attending form in the last X games
-attending
field (true/false), the current attending status
-isInvite
field (true/false) if the player is a bench player or not
{_id : <id>, form : [], isInvite : <bool>, date: <Date()>, team : <int>, attending : <int>}