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