|
|
|
## E-COMMERCE API DOCUMENTATION
|
|
|
|
|
|
|
|
**_INSTALLATION COMMAND:_**
|
|
|
|
|
|
|
|
`npm install bcrypt cors dotenv express faker jsonwebtoken mongoose nodemon`
|
|
|
|
|
|
|
|
**_Start_**
|
|
|
|
npm start
|
|
|
|
|
|
|
|
**_TEST ACCOUNTS:_**
|
|
|
|
|
|
|
|
- Regular User:
|
|
|
|
- email: user@email.com
|
|
|
|
- pwd: user
|
|
|
|
- Admin User:
|
|
|
|
- email: admin@email.com
|
|
|
|
- pwd: admin
|
|
|
|
|
|
|
|
**_ROUTES:_**
|
|
|
|
|
|
|
|
- User registration (POST)
|
|
|
|
- http://localhost:3000/user/register
|
|
|
|
- auth header required: NO
|
|
|
|
- request body:
|
|
|
|
{
|
|
|
|
"email": "admin@email.com",
|
|
|
|
"password": "admin"
|
|
|
|
}
|
|
|
|
|
|
|
|
- User authentication (POST)
|
|
|
|
- http://localhost:3000/user/login
|
|
|
|
- auth header required: NO
|
|
|
|
- request body:
|
|
|
|
{
|
|
|
|
"email": "admin@email.com",
|
|
|
|
"password": "admin"
|
|
|
|
}
|
|
|
|
|
|
|
|
- Create Product (Admin only) (POST)
|
|
|
|
- http://localhost:4000/product/create
|
|
|
|
- auth header required: YES
|
|
|
|
- request body:
|
|
|
|
{
|
|
|
|
"name": "Poring Card",
|
|
|
|
"description": "Description unknown",
|
|
|
|
"price": 500
|
|
|
|
}
|
|
|
|
|
|
|
|
- Update Profile
|
|
|
|
- http://localhost:3000/user/update
|
|
|
|
- auth header required: YES
|
|
|
|
- request body:
|
|
|
|
{
|
|
|
|
"userId": "",
|
|
|
|
"newEmail": "",
|
|
|
|
"newFirstname": "",
|
|
|
|
"newLastName": "",
|
|
|
|
"newPassword": ""
|
|
|
|
}
|
|
|
|
|
|
|
|
- Retrieve all products (Admin only) (GET)
|
|
|
|
- http://localhost:3000/product/all
|
|
|
|
- auth header required: YES
|
|
|
|
- request body: none
|
|
|
|
|
|
|
|
- Retrieve all active products (GET)
|
|
|
|
- http://localhost:3000/product/active
|
|
|
|
- auth header required: NO
|
|
|
|
- request body: none
|
|
|
|
|
|
|
|
- Get all products (GET)
|
|
|
|
- http://localhost:3000/product/active
|
|
|
|
- auth header required: NO
|
|
|
|
- request body: none
|
|
|
|
|
|
|
|
- Get a product (GET)
|
|
|
|
- http://localhost:3000/product/products/65545a1e6fa9d841e1518d1d
|
|
|
|
- auth header required: YES
|
|
|
|
- request body: none
|
|
|
|
|
|
|
|
- Update Single product (PUT)
|
|
|
|
- http://localhost:3000/product/products/65545a1e6fa9d841e1518d1d
|
|
|
|
- auth header required: YES
|
|
|
|
- request body:
|
|
|
|
{
|
|
|
|
"name": "Christmas Cookie Card",
|
|
|
|
"description": "Updated Product Description",
|
|
|
|
"price": 29.99,
|
|
|
|
"isActive": false
|
|
|
|
}
|
|
|
|
|
|
|
|
- Create Order (POST)
|
|
|
|
- http://localhost:3000/user/order
|
|
|
|
- auth header required: YES
|
|
|
|
- request body:
|
|
|
|
{
|
|
|
|
"userId": "65535cb526b586a3e2fd56cc", // Replace with a valid user ID from your database
|
|
|
|
"products": [
|
|
|
|
{
|
|
|
|
"productId": "6553a4e897ac8ac9462f96c4", // Replace with a valid product ID from your database
|
|
|
|
"productName": "Mastering Card",
|
|
|
|
"quantity": 1
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"totalAmount": 500
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
- Activate / Archive Product (PUT)
|
|
|
|
- auth header required: YES
|
|
|
|
- request body: none
|
|
|
|
- http://localhost:3000/product/products/6554634e5cac4bcd6f2394ed/activate
|
|
|
|
- http://localhost:3000/product/products/6554634e5cac4bcd6f2394ed/archive
|
|
|
|
|
|
|
|
- Set User to Admin (POST) [Admin Only]
|
|
|
|
- hhttp://localhost:3000/user/set-admin/
|
|
|
|
- auth header required: YES
|
|
|
|
- request body:
|
|
|
|
{
|
|
|
|
"userId":
|
|
|
|
}
|
|
|
|
|
|
|
|
- Retrieve All Orders [Admin Only] (GET)
|
|
|
|
- http://localhost:3000/user/orders-all
|
|
|
|
- auth header required: YES
|
|
|
|
- request body: none
|
|
|
|
|
|
|
|
- Add To Cart (POST)
|
|
|
|
- http://localhost:3000/cart/add-to-cart
|
|
|
|
- auth header required: YES
|
|
|
|
- request body:
|
|
|
|
{
|
|
|
|
"userId": "655396dcc8ea29f42422e214",
|
|
|
|
"productId": "6553a54566c4c86c39034b55",
|
|
|
|
"quantity": 5
|
|
|
|
}
|
|
|
|
|
|
|
|
- Delete Item (DELETE)
|
|
|
|
- http://localhost:3000/cart/remove-from-cart
|
|
|
|
- auth header required: YES
|
|
|
|
- request body:
|
|
|
|
{
|
|
|
|
"userId": "655396dcc8ea29f42422e214",
|
|
|
|
"productId": "6553a54566c4c86c39034b55",
|
|
|
|
"quantity": 5
|
|
|
|
}
|
|
|
|
|
|
|
|
- Update Quantity (PUT)
|
|
|
|
- http://localhost:3000/cart//update-quantity
|
|
|
|
- auth header required: YES
|
|
|
|
- request body:
|
|
|
|
{
|
|
|
|
"userId": "655396dcc8ea29f42422e214",
|
|
|
|
"productId": "6553a55666c4c86c39034b59",
|
|
|
|
"quantity": 2000
|
|
|
|
}
|
|
|
|
|
|
|
|
- Cart Total (GET)
|
|
|
|
- http://localhost:3000/cart/cart-details
|
|
|
|
- auth header required: YES
|
|
|
|
- request body:
|
|
|
|
{
|
|
|
|
"userId": "655396dcc8ea29f42422e214"
|
|
|
|
}
|
|
|
|
|
|
|
|
\***\* Stretch Goals \*\***
|
|
|
|
|
|
|
|
- Set user as Admin ( Admin Only )
|
|
|
|
- Retrieve Authenticated User's Orders
|
|
|
|
- Retrieve all orders ( Admin Only )
|
|
|
|
- Add to Cart ( Added Products, Change Product Quantities, Remove Products From Cart, Subtotal for each item, Total price for all items)
|
|
|
|
- Authentication Token with expiration (1hr)
|
|
|
|
- dotenv
|
|
|
|
- faker (Auto Generate Names)
|
|
|
|
- getUserDetails function ( Detects if the user tries to get the details of the other useId's + Token auth)
|
|
|
|
- Middleware Secure verification that match Token and UserId to next()
|