{
'id': string,
'username': string,
'first_name': string,
'last_name': string,
'email': string,
'phone': number,
'yoe': number,
'company': string,
'designation': string,
'img': string,
'github_id': string,
'github_user_id': string,
'linkedin_id': string,
'twitter_id': string,
'instagram_id': string,
'website': string,
'role': string,
'github_display_name': string,
'isMember': boolean,
'userType': string,
'discordId': string,
'tokens': {},
'badges': []
'disabled_roles':[]
}
Note:: Only the GET users/self route will return phone and email if
private query is passed as true. This way we are not exposing users' phone
numbers and email addresses to everyone. Users can only see their own phone
number and email address.
| Route | Description |
|---|---|
| GET /users | Returns all users in the system |
| GET /users/self | Returns the logged in user's details |
| GET /users/userId/:userId | Returns user with given userId |
| GET /users/:username | Returns user with given username |
| GET /users/:userId/badges | Returns badges assigned to the user |
| GET /users/search | Returns users based on specified filters |
| POST /users | Creates a new User |
| PATCH /users/self | Updates data of the User |
| PATCH /users/:id/temporary/data | Updates user roles |
| PATCH /users | Archive users if not in discord |
| PATCH /users/:userId | Allow users to update profile data and supers users to approve profile diff |
Returns all users in the system.
-
Params None
-
Query
- Optional:
profile=["true"](if profile is set to true, it will return currently logged-in users data.) - Optional:
size=[integer](sizeis the number of users requested per page, value ranges between 1-100, and the default value is 100) - Optional:
page=[integer](pagecan either be 0 or a positive number, and the default value is 0) - Optional:
search=[string](searchis a string value for username prefix) - Optional:
next=[string](nextis the id of the DB document to get the next batch/page of results after that document.) - Optional:
prev=[string](previs the id of the DB document to get the previous batch/page of results before that document.) - Optional:
query=[string](querycan be used to filter and/or sort users based on their PR and Issue status within a given date range. Learn more ) - Optional:
departed=[boolean]( if departed is set to true with dev feature flag as true, it will return all the users who have departed the discord server with pending tasks assigned to them. )
- Optional:
-
Body None
-
Headers Content-Type: application/json
-
Cookie rds-session:
<JWT> -
Success Response:
-
Code: 200
- Content:
{ "message": "Users returned successfully!", "users": [ { <user_object> } ], "links": { "next": '/users?next={<DB document id>}&size={number}&search={string}', "prev": '/users?prev={<DB document id>}&size={number}&search={string}' } }
If
/users?profile=true-
Code: 200
- Content:
{ <user_object> }
If
/users?departed=true&dev=true-
Code: 204 (for
departed=truewhen no abandoned tasks exist)- Content:
{}
- Content:
-
-
Error Response:
- Code: 401
- Content:
{ 'statusCode': 401, 'error': 'Unauthorized', 'message': 'Unauthenticated User' }
- Content:
- Code: 404 (for
departed=truewithoutdev=true)- Content: `{ 'message': 'Route not found' }
- Code: 401
Returns the details of logged in user.
- Params None
- Query private=[boolean] private=[boolean]
- Body None
- Headers Content-Type: application/json
- Cookie
rds-session:
<JWT> - Success Response:
- Code: 200
- Content:
{ <user_object> }Note: The user object will include
phoneandemailonly when the queryprivateis passed astruefor this route. No other route will returnphoneandemail.
- Content:
- Code: 200
- Error Response:
- Code: 401
- Content:
{ 'statusCode': 401, 'error': 'Unauthorized', 'message': 'Unauthenticated User' }
- Content:
- Code: 404
- Content:
{ 'statusCode': 404, 'error': 'Not Found', 'message': 'User doesn't exist' }
- Content:
- Code: 500
- Content:
{ 'statusCode': 500, 'error': 'Internal Server Error', 'message': 'An internal server error occurred' }
- Content:
- Code: 401
Returns the specified user.
- Params
Required:
userId=[string] - Body None
- Headers Content-Type: application/json
- Cookie None
- Success Response:
- Code: 200
- Content:
{ 'message': 'User returned successfully!', 'user': <user_object> }
- Content:
- Error Response:
- Code: 404
- Content:
{ error: 'Not Found', message: 'User doesn't exist' }
- Content:
- Code: 500
- Content:
{ 'statusCode': 500, 'error': 'Internal Server Error', 'message': 'Error while formatting phone and email' }
- Content:
- Code: 503
- Content:
{ 'statusCode': 503, 'error': 'Service Unavailable', 'message': 'Something went wrong please contact admin' }
- Content:
- Code: 404
Returns the specified user.
- Params
Required:
username=[string] - Body None
- Headers Content-Type: application/json
- Cookie None
- Success Response:
- Code: 200
- Content:
{ 'message': 'User returned successfully!', 'user': <user_object> }
- Content:
- Error Response:
- Code: 404
- Content:
{ error: 'Not Found', message: 'User doesn't exist' }
- Content:
- Code: 503
- Content:
{ 'statusCode': 503, 'error': 'Service Unavailable', 'message': 'Something went wrong please contact admin"' }
- Content:
- Code: 404
Returns the availability of username.
- Params
Required:
username=[string] - Body None
- Headers Content-Type: application/json
- Cookie
rds-session:
<JWT> - Success Response:
- Code: 200
- Content:
{ 'isUsernameAvailable': <boolean> }
- Content:
- Code: 200
- Error Response:
- Code: 401
- Content:
{ 'statusCode': 401, 'error': 'Unauthorized', 'message': 'Unauthenticated User' }
- Content:
- Code: 500
- Content:
{ 'statusCode': 500, 'error': 'Internal Server Error', 'message': 'An internal server error occurred' }
- Content:
- Code: 401
Returns badges assigned to the user
- Params
Required:
id=[string] - Query None
- Body None
- Headers Content-Type: application/json
- Cookie None
- Success Response:
- Code: 200
- Content:
{ 'message': 'Badges returned succesfully', 'badges': Array<badge_object> }
- Content:
- Error Response:
- Code: 400
- Content:
{ 'statusCode': 400, 'error': 'Bad Request', 'message': 'Failed to get user badges.' }
- Content:
- Code: 400
Returns users based on the specified filters.
-
Params: None
-
Query Parameters:
- Optional:
levelId=[string](Specifies the level ID) - Optional:
levelName=[string](Specifies the level name) - Optional:
levelValue=[number](Specifies the level value) - Optional:
tagId=[string](Specifies the tag ID) - Optional:
state=[string](Specifies the user state. Possible values: "ACTIVE", "OOO", "IDLE", "ONBOARDING", "ONBOARDING31DAYS". This parameter can be repeated for multiple states.) - Optional:
role=[string](Specifies the user role, valid values are "MEMBER", "INDISCORD", "ARCHIVED") - Optional:
verified=[string](Specifies if the user is verified. Possible values: "true", "false") - Optional:
time=[string](Specifies the time filter, e.g., "31d")
- Optional:
-
Body: None
-
Headers: Content-Type: application/json rds-session:
<JWT> -
Success Response:
-
Code: 200
- Content:
{ "message": "Users found successfully!", "users": [ { <user_object> } ], "links": { "next": "/users/search?next={<DB document id>}&page={number}&size={number}&dev={boolean}&state=ACTIVE&state=OOO&state=IDLE&state=ONBOARDING&time=31d", "prev": "/users/search?prev={<DB document id>}&page={number}&size={number}&dev={boolean}&state=ACTIVE&state=OOO&state=IDLE&state=ONBOARDING&time=31d" }, "count": Number }
-
-
Error Response:
-
Code: 400
- Content:
{ 'statusCode': 400, 'error': 'Bad Request', 'message': 'Filter for item not provided' }
- Content:
-
Code: 401
- Content:
{ 'statusCode': 401, 'error': 'Unauthorized', 'message': 'Unauthenticated User' }
- Content:
-
Code: 503
- Content:
{ 'statusCode': 503, 'error': 'Service Unavailable', 'message': 'Something went wrong, please contact admin' }
- Content:
-
Creates a new User.
- Params None
- Query None
- Headers Content-Type: application/json
- Cookie
rds-session:
<JWT> - Body
{ <user_object> } - Success Response:
- Code: 200
- Content:
{ <user_object> }
- Content:
- Code: 200
- Error Response:
- Code: 409
- Content:
{ "statusCode": 409, "error": "Conflict", "message": "User already exists" }
- Content:
- Code: 401
- Content:
{ 'statusCode': 401, 'error': 'Unauthorized', 'message': 'Unauthenticated User' }
- Content:
- Code: 409
⚠️ Deprecation NoticeThis endpoint is scheduled for deprecation. A new endpoint will be announced in the future to replace this functionality. Please prepare to update your integrations accordingly.
Updates data of the User. Doesn't update if user is (in_discord && !userDetailsIncomplete), Except for disabled_roles property.
- Params None
- Query None
- Headers Content-Type: application/json
- Cookie
rds-session:
<JWT> - Body
{ <user_object> } - Success Response:
- Code: 204
- Content:
{ 'message': 'User updated successfully!'}
- Content:
- Code: 200
- Content
{ message: "Privilege modified successfully!", disabled_roles: string[] }
- Content
- Code: 204
- Error Response:
- Code: 404
- Content:
{ 'statusCode': 404, 'error': 'Not Found', 'message': 'User not found' }
- Content:
- Code: 401
- Content:
{ 'statusCode': 401, 'error': 'Unauthorized', 'message': 'Unauthenticated User' }
- Content:
- Code: 403
- Content:
{ 'statusCode': 403, 'error': 'Forbidden', 'message': 'Cannot update username again'}{ 'statusCode': 403, 'error': 'Forbidden', 'message': 'Developers can only update disabled_roles. Use profile service for updating other attributes.'}
- Content:
- Code: 503
- Content:
{ 'statusCode': 503, 'error': 'Service Unavailable', 'message': 'Something went wrong please contact admin' }
- Content:
- Code: 404
Updates roles for the User.
- Params
Required:
userId=[string] - Query None
- Headers Content-Type: application/json
- Cookie
rds-session:
<JWT> - Body
{ member?: <boolean> archived?: <boolean> } - Success Response:
- Code: 200
- Content:
{ 'message': 'role updated successfully!'}
- Content:
- Code: 200
- Error Response:
- Code: 409
- Content:
{ 'statusCode': 409, 'error': 'Not Found', 'message': 'role already exist!' }
- Content:
- Code: 404
- Content:
{ 'statusCode': 404, 'error': 'Not Found', 'message': 'User not found' }
- Content:
- Code: 400
- Content:
{ 'statusCode': 400, 'error': 'Invalid Request', 'message': 'Invalid role' }
- Content:
- Code: 401
- Content:
{ 'statusCode': 401, 'error': 'Unauthorized', 'message': 'Unauthenticated User' }
- Content:
- Code: 500
- Content:
{ 'statusCode': 500, 'error': 'Internal Server Error', 'message': 'An internal server error occurred' }
- Content:
- Code: 409
Archive users if not in Discord.
-
Params None
-
Query
- Optional:
debug=[boolean](debugwhen set to true returns additional result in response to help debugging)
- Optional:
-
Headers Content-Type: application/json
-
Cookie rds-session:
<SUPERUSER JWT> -
Body
{ "action": "nonVerifiedDiscordUsers | archiveUsers" } -
Success Response:
- Code: 200
- Content:
- Code: 200
{
"message": "Successfully updated users archived role to true if in_discord role is false | Couldn't find any users currently inactive in Discord but not archived.",
"data": {
"totalUsers": "number",
"totalUsersArchived": "number",
"totalOperationsFailed": "number"
}
}Addition info if debug query is set to true
{
"message": "Successfully updated users archived role to true if in_discord role is false | Couldn't find any users currently inactive in Discord but not archived.",
"data": {
"totalUsers": "number",
"totalUsersArchived": "number",
"totalOperationsFailed": "number",
"updatedUserDetails": "array",
"failedUserDetails": "array"
}
}-
Error Response:
-
Code: 401
- Content:
-
{
"statusCode": 401,
"error": "Unauthorized",
"message": "Unauthenticated User"
}-
Code: 400
- Content:
{
"statusCode": 400,
"error": "Bad Request",
"message": "Invalid payload"
}-
Code: 500
- Content:
{
"statusCode": 500,
"error": "Internal Server Error",
"message": "An internal server error occurred"
}Creating a User Intro in DB if not available
-
Params None
-
Query None
-
Headers Content-Type: application/json
-
Cookie rds-session:
<JWT> -
Body
{ "firstName": string, "lastName": string, "college": string, "skills": string, "city": string, "state": string, "country": string, "foundFrom": string, "introduction": string, "funFact": string, "whyRds": string, "flowState": string, "numberOfHours": number } -
Success Response:
- Code: 201
- Content:
- Code: 201
{
"message": "User join data and newstatus data added and updated successfully"
}-
Error Response:
-
Code: 400
- Content:
{
"statusCode": 400,
"error": "Bad Request",
"message": "{key} is required"
}- Code: 401
- Content:
{
"statusCode": 401,
"error": "Unauthorized",
"message": "Unauthenticated User"
}- Code: 403
- Content:
{
"statusCode": 403,
"error": "Forbidden",
"message": "Forbidden access"
}- Code: 409
- Content:
{
"statusCode": 409,
"error": "Conflict",
"message": "User data is already present!"
}- Code: 500
- Content:
{
"statusCode": 500,
"error": "Internal Server Error",
"message": "An internal server error occurred"
}Allows SuperUser to approve the profilediff and any Authenticated user to update their own profile data.
-
Params
- Optional:
userId=<userId>
- Optional:
-
Query
- Optional:
profile=["true"](if profile is set to true, it will allow Authenticated user to update their own profile data.) - Optional:
dev=["true"](dev feature flag)
- Optional:
-
Headers Content-Type: application/json
-
Cookie
- rds-session:
<JWT> - rds-session:
<SUPERUSER JWT>
- rds-session:
-
Body
- request body for updating self profile data (all fields are optional)
{ username: string, phone: string, email: string, first_name: string, last_name: string, yoe: number, company: string, designation: string, linkedin_id: string, twitter_id: string, instagram_id: string, website: string, discordId: string, disabledRole: [string], status: string, img: string, role: string, } - request body for profilediff
{ id: `<profileDiffsId>, message: string }
- request body for updating self profile data (all fields are optional)
-
Success Response:
- Code: 204
- Content:
{ 'message': 'User updated successfully!'}
- Content:
- Code: 200
- Content
{ message: "Privilege modified successfully!" , disabled_roles: string[] } - Content
{ message: "Updated user's data successfully!" }
- Content
- Code: 204
-
Error Response:
-
Code: 404
- Content:
{ 'statusCode': 404, 'error': 'Not Found', 'message': 'User not found' }
- Content:
-
Code: 400
- Content:
{ 'statusCode': 400, 'error': 'Bad Request', 'message': 'Invalid Request.'}
- Content:
-
Code: 401
- Content:
{ 'statusCode': 401, 'error': 'Unauthorized', 'message': 'Unauthenticated User'}
- Content:
-
Code: 403
- Content:
{ 'statusCode': 403, 'error': 'Forbidden', 'message': 'Cannot update username again'}{ 'statusCode': 403, 'error': 'Forbidden', 'message': 'Developers can only update disabled_roles. Use profile service for updating other attributes.'}{ 'statusCode': 403, 'error': 'Forbidden', 'message': 'Cannot update role again'}
- Content:
-
Code: 503
- Content:
{ 'statusCode': 503, 'error': 'Service Unavailable', 'message': 'Something went wrong please contact admin' }
- Content:
-
Note:
- When incompleteUserDetails field is true in userData, if dev="true" we need to send role field also along with firstName and lastName [updated flow]
- role and username fields can only be set once
-