/server

Primary LanguageJavaScriptMIT LicenseMIT

BeFit Build Status

API documentation

Rest API

Endpoint Documentation

  • Resource description

Information

  • Resource url
  • Methods
  • Parameters
  • Request example
  • Response examples
  • Status and error codes
  • Code sample

Keys to authorize the calls

Make requests via postman to test endpoints

NOTE : When you are adding anything to this document you can always use your favourite text editor but save the file with the same format as this document and also as a docx. . When all is ready to be uploaded you can use any doc.x to markdown convertors then copy the syntax in the markdown and paste it on to here Thank You

SUMMARY TABLE OF API ENDPOINTS

Table Method Endpoint Description
users POST /api/auth/register Creates a new user profile using the information sent inside the body of the request and returns a message along with the new user and a JSON Web Token in the body of the response.
users POST /api/auth/login Uses the credentials sent inside the body to authenticate the user. On successful login, returns a message with the user profile and a JSON Web Token token in the body of the response.

AUTH ROUTES

REGISTER

Registers a user

Method Url: /api/auth/register

HTTP method:[POST]

Headers

name type required description
Content-Type String Yes Must be application/json

Body

name type required description
username string Yes Username unique
email String Yes Must be unique
password String Yes Must be unique
password string yes Must be the same with Password

example:

{

"Username":"bigmuscle467"

"email": "email@gmail.com"

"password": "password123",

}

Response

201 (Created)

( If you successfully register a user the endpoint will return an HTTP response with a status code 201 and a body as below.)

example:

{

"token": "eyJhbGciOiJIUzI1NiIsInR5cCI3IkpXVCJ9.eyJpZCI6MSwiaWF0IjoxNTQ0MzM1NjUxLCJleHAiOjE1NzU4OTMyNTF9.uqd2OHBYkGQpwjLTPPiPWYkYOKlG7whQDFkk46xFXoX"

}

400 (Bad Request)

( If you are missing an email or password for registration, the endpoint will return an HTTP response with a status code 400 and a body as below. )

example:

{

"message": "Oops, looks like this email already exists"

}

500 (Internal Server Error)

( If there is a server or database error, the endpoint will return an HTTP response with a status code 500 and a body as below. )

example:

{

"message": "Oops, something went wrong while registering"

}

LOGIN

Logs a user in

Method Url: /api/auth/login

HTTP method:[POST]

Headers

name type required description
Content-Type String Yes Must be application/json

Body

name type required description
email String Yes Must match an email in the database
password String Yes Must match a password in the database corresponding to email above

example:

{

"email": "email@gmail.com"

"password": "password123",

}

Response

200 (OK)

( If you successfully login, the endpoint will return an HTTP response with a status code 200 and a body as below.)

example:

{

"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MDwiaWF0IjoxNTQ0MzM1NjUxLCJleHAuOjE1NzU4OTMyNTF9.uqd2OHBYkGQpwjLTPPiPWYkYOKlG7whQDFkk46xGXnE",

}

401 (Unauthorized)

( If you fail to login, the endpoint will return an HTTP response with a status code 401 which indicates the email and or password entered is not valid. )

example:

{

message: "Oops, username or password is incorrect"

}

500 (Bad Request)

( If there is a server or database error, the endpoint will return an HTTP response with a status code 500 and a body as below. )

example:

{

"message": "Oops, something went wrong while logging in"

}

GET USER

Get user profile by user id

Method Url: /api/user/:id

HTTP method:[GET]

Headers

name type required description
Content-Type String Yes Must be application/json
Authorization String Yes JSON Web Token
name type required description
id Integer Yes ID of a specific applicant

Response

200 (OK)

( If the user profile is found in the database, the endpoint will return an HTTP response with a status code 200 and a body as below.)

example:

{

"Id":"25",

"username":"BigMuscle456",

"Password":" TokenEncrypted:"J67cvcjcbchcj74kF-hash12-hyJR578iKxI",

"email":"bigmuscles@befit.com",

"gender":"M",

"weight":"100lbs",

"Height":"30cm",

"User_level": "Intermediate",

"Created_at": "2019/08/18",

"Updated_at": "2019/08/19"

}

404 (Not Found)

( If the provided userId doesn't have a profile, the endpoint will return an HTTP response with a status code 404 and a body as below. )

example:

{

"message": "Sorry, but that profile doesn't exist"

}

500 (Internal Server Error)

( If there is a server or database error, the endpoint will return an HTTP response with a status code 500 and a body as below.)

example:

{

"message": "Sorry, but something went wrong while getting that profile"

}

ADD USER / CREATE

Method Url: /api/user

HTTP method:[POST]

Headers

name type required description
Content-Type String Yes Must be application/json
Authorization String Yes JSON Web Token

Body

name type required description
username String Yes Cannot be an empty field
password String Yes Cannot be an empty field
email String Yes Cannot be an empty field
gender String Yes Cannot be an empty field
weight Integer Yes Cannot be an empty field
height Integer Yes Cannot be an empty field
user_level integer Yes Cannot be an empty field
created_at timestamp
updated_at timestamp

example:

{

"Id":"25",

"username":"BigMuscle456",

"Password":" TokenEncrypted:"J67cvcjcbchcj74kF-hash12-hyJR578iKxI",

"email":"bigmuscles@befit.com",

"gender":"M",

"weight":"100lbs",

"Height":"30cm",

"User_level": "Intermediate",

"Created_at": "2019/08/18",

"Updated_at": "2019/08/19"

}

Response

201 (Created)

( If you successfully create a user profile, the endpoint will return an HTTP response with a status code 201 and a body as below. )

example:

{

"Id":"25",

"username":"BigMuscle456",

"Password":" TokenEncrypted:"J67cvcjcbchcj74kF-hash12-hyJR578iKxI",

"email":"bigmuscles@befit.com",

"gender":"M",

"weight":"100lbs",

"Height":"30cm",

"User_level": "Intermediate",

"Created_at": "2019/08/18",

"Updated_at": "2019/08/19"

}

500 (Internal Server Error)

( If there is a server or database error, the endpoint will return an HTTP response with a status code 500 and a body as below. )

example:

{

"message": "Oops, something went wrong while creating your profile"

}

UPDATE USER

Update user by user id

Method Url: /api/user/:id

HTTP method:[PUT]

Headers

name type required description
Content-Type String Yes Must be application/json
Authorization String Yes JSON Web Token

Parameters

name type required description
id Integer Yes ID of a specific applicant

Body

name type required description
Id Integer Yes Cannot be an empty field
username String Yes Cannot be an empty field
password String Yes Cannot be an empty field
email String Yes Cannot be an empty field
gender String Yes Cannot be an empty field
weight Integer Yes Cannot be an empty field
height Integer Yes Cannot be an empty field
user_level integer Yes Cannot be an empty field
created_at timestamp
updated_at timestamp

example:

{

"Id":"25",

"username":"BigMuscle456",

"Password":" TokenEncrypted:"J67cvcjcbchcj74kF-hash12-hyJR578iKxI",

"email":"bigmuscles@befit.com",

"gender":"M",

"weight":"100lbs",

"Height":"30cm",

"User_level": "Intermediate",

"Created_at": "2019/08/18",

"Updated_at": "2019/08/19"

}

Response

200 (OK)

( If user with the specified ID in the URL parameters is updated successfully in the database, the endpoint will return an HTTP response with a status code 200 and a body as below. )

example:

{

"Id":"25",

"username":"BigMuscle456",

"Password":" TokenEncrypted:"J67cvcjcbchcj74kF-hash12-hyJR578iKxI",

"email":"bigmuscles@befit.com",

"gender":"M",

"weight":"105lbs",

"Height":"30cm",

"User_level": "Advanced",

"Created_at": "2019/08/18",

"Updated_at": "2019/08/15"

}

404 (Not Found)

( If the applicant profile for the specified id can't be found in the database, the endpoint will return an HTTP response with a status code 404 and a body as below. )

example:

{

"message": "Oops, doesn't look like that profile exists"

}

500 (Internal Server Error)

( If there is a server or database error, the endpoint will return an HTTP response with a status code 500 and a body as below. )

example:

{

"message": "Oops, something went wrong while updating this profile"

}

DELETE USER / ACCOUNT

Delete user by user id

Method Url: /api/user/:id

HTTP method:[DELETE]

Headers

name type required description
Content-Type String Yes Must be application/json
Authorization String Yes JSON Web Token

Parameters

name type required description
id Integer Yes ID of a specific applicant

Response

200 (OK)

( If user with the specified ID in the URL parameters is deleted successfully in the database, the endpoint will return an HTTP response with a status code 200 and a body as below. )

example:

{

"message": "User successfully deleted"

}

404 (Not Found)

( If the applicant profile for the specified id can't be found in the database, the endpoint will return an HTTP response with a status code 404 and a body as below.)

example:

{

"message": "Oops, doesn't look like that profile exists"

}

500 (Bad Request)

( If you send in invalid fields, the endpoint will return an HTTP response with a status code 500 and a body as below. )

example:

{

"message": "Oops, something went wrong while deleting this profile }

GET WORKOUTS

Get workout by user id

Method Url: /api/user/workouts/:id

HTTP method:[GET]

Headers

name type required description
Content-Type String Yes Must be application/json
Authorization String Yes JSON Web Token

Response

200 (OK)

( If workout is found in the database, the endpoint will return an HTTP response with a status code 200 and a body as below. )

example:

[

{

"Id": "1"

"workout_name":"Abs",

"workout_description": "These proven exercises, demonstrated by a certified personal trainer, target all major abdominal muscles. Spending just minutes a day can strengthen your core and tone your abs. The routine's simple interface, complete with video and timer, allows you to easily follow along and understand each exercise",

"Image_url": "https//something.abs/muscle.png" ,

"created_at": "2019/08/22" ,

"updated_at": "2019/08/24",

},

]

404 (Not Found)

( A 404 (Not Found) response has two possible outcomes one if the user doesn't have any workouts or if the provided user doesn't have a profile, the endpoint will return an HTTP response with a status code 404 and a body as below. )

example:

{

"message": "Oops, this user doesn't have workout yet"

}

or

{

"message": "Oops, doesn't look like that workout exists"

}

500 (Internal Server Error)

( If there is a server or database error, the endpoint will return an HTTP response with a status code 500 and a body as below. )

example:

{

"message": "Oops, something went wrong while fetching this workout"

}

ADD WORKOUTS

Add workout

Method Url: /api/user/workout

HTTP method:[POST]

Headers

name type required description
Content-Type String Yes Must be application/json
Authorization String Yes JSON Web Token

Body

name type required description
workoukID Integer Yes Must match a user's id in the database
workout_name String Yes Cannot be an empty field
workout_description String Yes Cannot be an empty field
image_url String Yes Cannot be an empty field
created _at timestamps Yes Cannot be an empty field
updated_at timestamps Yes Cannot be an empty field

example:

{

"userId": 1,

"UserWorkout": [

{

"workout_name":"Abs",

"workout_description": "These proven exercises, demonstrated by a certified personal trainer, target all major abdominal muscles. Spending just minutes a day can strengthen your core and tone your abs. The routine's simple interface, complete with video and timer, allows you to easily follow along and understand each exercise",

"Image_url": "https//something.abs/muscle.png" ,

"created_at": "2019/08/22" ,

"updated_at": "2019/08/24" },

]

}

Response

201 (Created)

( If you successfully create applicant workout, the endpoint will return an HTTP response with a status code 201 and a body as below. )

example:

[

{

"Id": "1"

"workout_name":"Abs",

"workout_description": "These proven exercises, demonstrated by a certified personal trainer, target all major abdominal muscles. Spending just minutes a day can strengthen your core and tone your abs. The routine's simple interface, complete with video and timer, allows you to easily follow along and understand each exercise",

"Image_url": "https//something.abs/muscle.png" ,

"created_at": "2019/08/22" ,

"updated_at": "2019/08/24",

},

]

404 (Not Found)

( If we can't manage to add the work out to the database or to our list, the endpoint will return an HTTP response with a status code 404 and a body as below. )

example:

{

"message": "Oops, could not add workout"

}

400 (Bad Request)

( If you are missing any of the required field(s), the endpoint will return an HTTP response with a status code 400 and a body as below relating to the missing field(s). )

example:

{

"message": "Please provide a workout_name"

}

500 (Internal Server Error)

( If there is a server or database error, the endpoint will return an HTTP response with a status code 500 and a body as below. )

example:

{

"message": "Sorry, but something went wrong while trying to add abs"

}

UPDATE WORKOUT

Update individual workout using workout by id

Method Url: /api/user/workout/:id

HTTP method:[PUT]

Headers

name type required description
Content-Type String Yes Must be application/json
Authorization String Yes JSON Web Token

Parameters

name type required description
id Integer Yes ID of a specific education object

Body

name type required description
workoukID Integer Yes Must match a user's id in the database
workout_name String Yes Cannot be an empty field
workout_description String Yes Cannot be an empty field
image_url String Yes Cannot be an empty field
created _at timestamps Yes Cannot be an empty field
updated_at timestamps Yes Cannot be an empty field

example:

[

{

"Id": "1"

"workout_name":"Arms",

"workout_description": "Lorem ipsum arms instead of Abs a certified personal trainer, target all major abdominal muscles. Spending just minutes a day can strengthen your core and tone your abs. The routine's simple interface, complete with video and timer, allows you to easily follow along and understand each exercise",

"Image_url": "https//something.abs/muscle.png" ,

"created_at": "2019/08/22" ,

"updated_at": "2019/08/24",

},

]

Response

200 (OK)

( If the workout object with the specified ID in the URL parameters is updated successfully in the database, the endpoint will return an HTTP response with a status code 200 and a body as below.)

example:

{

[

{

"Id": "23"

"workout_name":"Arms",

"workout_description": "Lorem ipsum arms instead of Abs a certified personal trainer, target all major abdominal muscles. Spending just minutes a day can strengthen your core and tone your abs. The routine's simple interface, complete with video and timer, allows you to easily follow along and understand each exercise",

"Image_url": "https//something.abs/muscle.png" ,

"created_at": "2019/08/22" ,

"updated_at": "2019/08/24",

},

]

}

404 (Not Found)

( If the workout object for the specified id can't be found in the database, the endpoint will return an HTTP response with a status code 404 and a body as below.)

example:

{

"message": "Oops, doesn't look like that workout doesnt exists"

}

400 (Bad Request)

( If you are missing any of the required field(s), the endpoint will return an HTTP response with a status code 400 and a body as below relating to the missing field(s).)

example:

{

"message": "Please provide a workou_name"

}

500 (Internal Server Error)

( If there is a server or database error, the endpoint will return an HTTP response with a status code 500 and a body as below.)

example:

{

"message": "Oops, something went wrong while updating this workout"

}

DELETE WORKOUT

Delete workout by id

Method Url: /api/user/workout/:id

HTTP method:[DELETE]

Headers

name type required description
Content-Type String Yes Must be application/json
Authorization String Yes JSON Web Token

Parameters

name type required description
id Integer Yes ID of workout

Response

200 (OK)

( If the workout object specified ID in the URL parameters is deleted successfully in the database, the endpoint will return an HTTP response with a status code 200 and a body as below. )

example:

{

"message": "Workout successfully deleted"

}

404 (Not Found)

( If the Workout object specified ID in the URL parameters is deleted successfully in the database, the endpoint will return an HTTP response with a status code 404 and a body as below.)

example:

{

"message": "Oops, doesn't look like this workout exists"

}

500 (Bad Request)

( If you send in invalid fields, the endpoint will return an HTTP response with a status code 500 and a body as below.)

example:

{

"message": "Oops, something went wrong while deleting this workout"

}