You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

177 lines
5.0 KiB
Markdown

## 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()