{"info":{"_postman_id":"c02d6b86-d9df-40b3-be4d-66edaf1deabf","name":"E-Commerce API Documentation","description":"<html><head></head><body><h1 id=\"overview\">Overview</h1>\n<p>This backend service is built using <strong>Nest.js</strong> and <strong>Prisma</strong> to handle the core functionalities of an e-commerce platform. It is designed with <strong>authentication</strong>, <strong>scalability</strong>, and <strong>security</strong> in mind. The API is structured into multiple modules, each managing a specific part of the application.</p>\n<h2 id=\"api-modules\"><strong>API Modules</strong></h2>\n<ul>\n<li><p><strong>Admin</strong>: Handles all administrative actions, including user management, product approvals, and system monitoring.</p>\n</li>\n<li><p><strong>User</strong>: Manages user authentication, profile updates, and orders.</p>\n</li>\n<li><p><strong>Product</strong>: Provides endpoints for vewing product details based on queries and ids, updating.</p>\n</li>\n<li><p><strong>Reviews</strong>: Allows users to leave reviews and ratings for products.</p>\n</li>\n<li><p><strong>Categories</strong>: Handles product categorization and filtering.</p>\n</li>\n<li><p><strong>Cart</strong>: Manages shopping cart operations like adding, removing, and updating items.</p>\n</li>\n<li><p><strong>Order</strong>: Handles order placement, tracking, and status updates.</p>\n</li>\n<li><p><strong>Address</strong>: Manages user addresses for shipping and billing purposes.</p>\n</li>\n</ul>\n<p>Each section of this documentation provides detailed information about the available endpoints, request/response formats, and authentication requirements.</p>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[{"content":"Overview","slug":"overview"}],"owner":"32203863","collectionId":"c02d6b86-d9df-40b3-be4d-66edaf1deabf","publishedId":"2sAYdfoqAT","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"publishDate":"2025-02-26T09:48:59.000Z"},"item":[{"name":"Admin Module","item":[{"name":"Create Category","id":"7e561264-5cef-4d25-95fa-07863f07da96","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"name\": \"T-Shirts\",\n    \"description\": \"We offer the best good quality t-shirts for everyday use. We offer t-shirts of all sizes.\",\n    \"totalProducts\": 0\n}","options":{"raw":{"language":"json"}}},"url":"http://admin.localhost:3000/category","description":"<h3 id=\"create-category\">Create Category</h3>\n<p>This endpoint allows the admin to create a Category to map a product to filter and sort by category.</p>\n<h4 id=\"request-body\">Request Body</h4>\n<ul>\n<li><p><code>name</code> (string): The name of the category.</p>\n</li>\n<li><p><code>description</code> (string): The description about the category.</p>\n</li>\n<li><p><code>totalProducts</code> (number): The total numbers of poducts under that category.</p>\n</li>\n</ul>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li><p><strong>Status: 201</strong> = This status indicates that the task of the endpoint was successful and a category has been created.</p>\n</li>\n<li><p><strong>Status: 400</strong> = This status indicates an error about admin's type validation. Error message will contain status and the indicated type error.</p>\n</li>\n<li><p><strong>Status: 401</strong> = This status indicates an error about the admin being unauthenticated.</p>\n</li>\n<li><p><strong>Status: 409</strong> = This status indicates an error about category name already existing. To solve this use another name or delete the previous category.</p>\n</li>\n<li><p><strong>Status: 500</strong> = This status indicates an unexpected error in the server side. This has nothing to do with the user.</p>\n</li>\n</ul>\n","urlObject":{"protocol":"http","port":"3000","path":["category"],"host":["admin","localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"7e561264-5cef-4d25-95fa-07863f07da96"},{"name":"Get Categories","id":"e64a19bb-3468-44fd-9b8a-d4487c2e6ca8","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://admin.localhost:3000/category","description":"<h3 id=\"get-categories\">Get Categories</h3>\n<p>This endpoint allows the admin to get a list Categories to map products to filter and sort by category.</p>\n<h4 id=\"request-body\">Request Body</h4>\n<ul>\n<li><strong>No req data on a get endpoint</strong></li>\n</ul>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li><p><strong>Status: 201</strong> = This status indicates that the endpoint operation was successfull and will return objects categories.</p>\n</li>\n<li><p><strong>Status: 401</strong> = This status indicates an error about the admin being unauthenticated.</p>\n</li>\n<li><p><strong>Status: 500</strong> = This status indicates an unexpected error in the server side. This has nothing to do with the user.</p>\n</li>\n</ul>\n","urlObject":{"protocol":"http","port":"3000","path":["category"],"host":["admin","localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"e64a19bb-3468-44fd-9b8a-d4487c2e6ca8"},{"name":"Update Category","id":"3954d614-2e3f-4436-90a3-550263a8a38a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n    \"name\": \"Shirts\",\n    \"totalProducts\": 56\n}","options":{"raw":{"language":"json"}}},"url":"http://admin.localhost:3000/category/:categoryId","description":"<h3 id=\"update-category\">Update Category</h3>\n<p>This endpoint allows the admin to update a Category to correct data on the server.</p>\n<h4 id=\"request-body\">Request Body</h4>\n<ul>\n<li><p><code>name</code> (string): The name of the category.</p>\n</li>\n<li><p><code>totalProducts</code> (number): The total numbers of poducts under that category.</p>\n</li>\n</ul>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li><p><strong>Status: 200</strong> = This status indicates that the task of the endpoint was successful and a category has been updated.</p>\n</li>\n<li><p><strong>Status: 400</strong> = This status indicates an error about admin's type validation. Error message will contain status and the indicated type error.</p>\n</li>\n<li><p><strong>Status: 401</strong> = This status indicates an error about the admin being unauthenticated.</p>\n</li>\n<li><p><strong>Status: 404</strong> = This status indicates an error about category name not being found through provided id.</p>\n</li>\n<li><p><strong>Status: 409</strong> = This status indicates an error about category name and total products being the same.</p>\n</li>\n<li><p><strong>Status: 500</strong> = This status indicates an unexpected error in the server side. This has nothing to do with the user.</p>\n</li>\n</ul>\n","urlObject":{"protocol":"http","port":"3000","path":["category",":categoryId"],"host":["admin","localhost"],"query":[],"variable":[{"type":"any","value":"","key":"categoryId"}]}},"response":[],"_postman_id":"3954d614-2e3f-4436-90a3-550263a8a38a"},{"name":"Delete Category","id":"dd04e346-eee0-4d69-99e6-c359554502bc","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"url":"http://admin.localhost:3000/category/:categoryId","description":"<h3 id=\"delete-category\">Delete Category</h3>\n<p>This endpoint allows the admin to delete a Category on the server.</p>\n<h4 id=\"request-body\">Request Body</h4>\n<ul>\n<li><strong>No req data on this delete endpoint.</strong></li>\n</ul>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li><p><strong>Status: 200</strong> = This status indicates that the task of the endpoint was successful and a category has been deleted.</p>\n</li>\n<li><p><strong>Status: 401</strong> = This status indicates an error about the admin being unauthenticated.</p>\n</li>\n<li><p><strong>Status: 404</strong> = This status indicates an error about category name not being found through provided id.</p>\n</li>\n<li><p><strong>Status: 500</strong> = This status indicates an unexpected error in the server side. This has nothing to do with the user.</p>\n</li>\n</ul>\n","urlObject":{"protocol":"http","port":"3000","path":["category",":categoryId"],"host":["admin","localhost"],"query":[],"variable":[{"type":"any","value":"","key":"categoryId"}]}},"response":[],"_postman_id":"dd04e346-eee0-4d69-99e6-c359554502bc"},{"name":"Create Product","id":"61fc2749-5f47-4e47-aab4-a03e848fe208","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"formdata","formdata":[{"key":"name","value":"Nike T-Shirt","type":"text"},{"key":"description","value":"Good export quality nike sports shirt. Available at all sizes and 3 colors. Hurry and grab yours today.","type":"text"},{"key":"price","value":"499","type":"text"},{"key":"categoryId","value":"fa3f47eb-bca3-4e43-a2f7-15320648fab6","type":"text"},{"key":"stock","value":"26","type":"text"},{"key":"files","type":"file","fileNotInWorkingDirectoryWarning":"This file isn't in your working directory. Teammates you share this request with won't be able to use this file. To make collaboration easier you can setup your working directory in Settings.","filesNotInWorkingDirectory":["/home/niaz/Pictures/Screenshots/Screenshot from 2025-01-31 18-08-22.png"],"src":"/home/niaz/Pictures/Screenshots/Screenshot from 2025-01-31 18-08-22.png"},{"key":"files","type":"file","fileNotInWorkingDirectoryWarning":"This file isn't in your working directory. Teammates you share this request with won't be able to use this file. To make collaboration easier you can setup your working directory in Settings.","filesNotInWorkingDirectory":["/home/niaz/Pictures/Screenshots/Screenshot from 2025-02-01 12-13-17.png"],"src":"/home/niaz/Pictures/Screenshots/Screenshot from 2025-02-01 12-13-17.png"}]},"url":"http://admin.localhost:3000/product","description":"<h3 id=\"create-product\">Create Product</h3>\n<p>This endpoint allows the admin to create a Product on the server. Products will belong to a category.</p>\n<h4 id=\"request-body\">Request Body</h4>\n<ul>\n<li><p><code>name</code> (string): The name of the product.</p>\n</li>\n<li><p><code>description</code> (string): A short descriptive description about the quality and size of the product.</p>\n</li>\n<li><p><code>price</code> (number): The price of the product that will be added to the server.</p>\n</li>\n<li><p><code>categoryId</code> (string): The category id where the product will belong to for easy filtering and sorting.</p>\n</li>\n<li><p><code>stock</code> (number): The total stock number of the available quantity of product.</p>\n</li>\n<li><p><code>files</code> (img): Images of the product that will be used to display how the product would look like to the public. Min is 1 and at max 4 pictures can be added of the product.</p>\n</li>\n</ul>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li><p><strong>Status: 201</strong> = This status indicates that the task of the endpoint was successful and a product has been created.</p>\n</li>\n<li><p><strong>Status: 400</strong> = This status indicates an error about admin's type validation. Error message will contain status and the indicated type error.</p>\n</li>\n<li><p><strong>Status: 401</strong> = This status indicates an error about the admin being unauthenticated.</p>\n</li>\n<li><p><strong>Status: 404</strong> = This status indicates an error about category name not being found through provided id.</p>\n</li>\n<li><p><strong>Status: 500</strong> = This status indicates an unexpected error in the server side. This has nothing to do with the user.</p>\n</li>\n</ul>\n","urlObject":{"protocol":"http","port":"3000","path":["product"],"host":["admin","localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"61fc2749-5f47-4e47-aab4-a03e848fe208"},{"name":"Update Product","id":"48d7f7d8-608a-4eb5-939a-af711c7ff2c0","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[],"body":{"mode":"formdata","formdata":[{"key":"name","value":"Puma T-Shirts","type":"text"},{"key":"description","value":"Good export quality puma sports shirt. Available at all sizes and 3 colors. Hurry and grab yours today.","type":"text"},{"key":"price","value":"12","type":"text"},{"key":"categoryId","value":"083711ad-7b64-4eaa-862a-c9ece7b24f88","type":"text"},{"key":"stock","value":"44","type":"text"},{"key":"files","type":"file","fileNotInWorkingDirectoryWarning":"This file isn't in your working directory. Teammates you share this request with won't be able to use this file. To make collaboration easier you can setup your working directory in Settings.","filesNotInWorkingDirectory":["/home/niaz/Pictures/Screenshots/Screenshot from 2025-01-31 18-08-22.png"],"src":"/home/niaz/Pictures/Screenshots/Screenshot from 2025-01-31 18-08-22.png"}]},"url":"http://admin.localhost:3000/product/:productId","description":"<h3 id=\"update-product\">Update Product</h3>\n<p>This endpoint allows the admin to update a Product on the server. Products will belong to a category.</p>\n<h4 id=\"request-body\">Request Body</h4>\n<ul>\n<li><p><code>name</code> (string): The updated name for the product.</p>\n</li>\n<li><p><code>description</code> (string): A short descriptive description about the quality and size of the product.</p>\n</li>\n<li><p><code>price</code> (number): The updated price of the product that will be added to the server.</p>\n</li>\n<li><p><code>categoryId</code> (string): The updated category id where the product will belong to for easy filtering and sorting.</p>\n</li>\n<li><p><code>stock</code> (number): The updated total stock number of the available quantity of product.</p>\n</li>\n<li><p><code>files</code> (img): Updated Images of the product that will be used to display how the product would look like to the public. Min is 1 and at max 4 pictures can be added of the product.</p>\n</li>\n</ul>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li><p><strong>Status: 200</strong> = This status indicates that the task of the endpoint was successful and a product has been updated.</p>\n</li>\n<li><p><strong>Status: 400</strong> = This status indicates an error about admin's type validation. Error message will contain status and the indicated type error.</p>\n</li>\n<li><p><strong>Status: 401</strong> = This status indicates an error about the admin being unauthenticated.</p>\n</li>\n<li><p><strong>Status: 404</strong> = This status indicates an error about product or category name not being found through provided id.</p>\n</li>\n<li><p><strong>Status: 409</strong> = This status indicates an error about no changes being found betweent the given data and saved product data.</p>\n</li>\n<li><p><strong>Status: 500</strong> = This status indicates an unexpected error in the server side. This has nothing to do with the user.</p>\n</li>\n</ul>\n","urlObject":{"protocol":"http","port":"3000","path":["product",":productId"],"host":["admin","localhost"],"query":[],"variable":[{"type":"any","value":"","key":"productId"}]}},"response":[],"_postman_id":"48d7f7d8-608a-4eb5-939a-af711c7ff2c0"},{"name":"Delete Product","id":"72a02b1e-2452-421d-b1de-8747e1231952","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"url":"http://admin.localhost:3000/product/:productId","description":"<h3 id=\"delete-product\">Delete Product</h3>\n<p>This endpoint allows the admin to delete a Product on the server.</p>\n<h4 id=\"request-body\">Request Body</h4>\n<ul>\n<li><code>There is no req body on this endpoint.</code></li>\n</ul>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li><p><strong>Status: 200</strong> = This status indicates that the task of the endpoint was successful and a product has been deleted.</p>\n</li>\n<li><p><strong>Status: 401</strong> = This status indicates an error about the admin being unauthenticated.</p>\n</li>\n<li><p><strong>Status: 500</strong> = This status indicates an unexpected error in the server side. This has nothing to do with the user.</p>\n</li>\n</ul>\n","urlObject":{"protocol":"http","port":"3000","path":["product",":productId"],"host":["admin","localhost"],"query":[],"variable":[{"type":"any","value":"","key":"productId"}]}},"response":[],"_postman_id":"72a02b1e-2452-421d-b1de-8747e1231952"},{"name":"Get Products","id":"6452f7d2-475a-4254-bc0f-a4879a860513","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://admin.localhost:3000/products?category=categoryId&limit=0&offset=0&priceMin=0&priceMax=0","description":"<h3 id=\"get-products\">Get Products</h3>\n<p>This endpoint allows the admin to get an array of Products from the server. Products will be filtered and sorted based on price.</p>\n<h4 id=\"request-body\">Request Body</h4>\n<ul>\n<li><code>There is no req body on this endpoint.</code></li>\n</ul>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li><p><strong>Status: 200</strong> = This status indicates that the task of the endpoint was successful and an array of product has been recieved.</p>\n</li>\n<li><p>Status: 400 = This status indicates that there was an error from the client side caused by the queries.</p>\n</li>\n<li><p><strong>Status: 401</strong> = This status indicates an error about the admin being unauthenticated.</p>\n</li>\n<li><p><strong>Status: 500</strong> = This status indicates an unexpected error in the server side. This has nothing to do with the user.</p>\n</li>\n</ul>\n","urlObject":{"protocol":"http","port":"3000","path":["products"],"host":["admin","localhost"],"query":[{"key":"category","value":"categoryId"},{"key":"limit","value":"0"},{"key":"offset","value":"0"},{"key":"priceMin","value":"0"},{"key":"priceMax","value":"0"}],"variable":[]}},"response":[],"_postman_id":"6452f7d2-475a-4254-bc0f-a4879a860513"},{"name":"Get Product","id":"713a49c4-4fd4-493d-bd35-c5fbb1d18cca","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://admin.localhost:3000/product/:productId","description":"<h3 id=\"get-products\">Get Products</h3>\n<p>This endpoint allows the admin to get a Product from the server based on the id provided.</p>\n<h4 id=\"request-body\">Request Body</h4>\n<ul>\n<li><code>There is no req body on this endpoint.</code></li>\n</ul>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li><p><strong>Status: 200</strong> = This status indicates that the task of the endpoint was successful and data of product has been recieved.</p>\n</li>\n<li><p>Status: 404 = This status indicates that there was no data about this post.</p>\n</li>\n<li><p><strong>Status: 401</strong> = This status indicates an error about the admin being unauthenticated.</p>\n</li>\n<li><p><strong>Status: 500</strong> = This status indicates an unexpected error in the server side. This has nothing to do with the user.</p>\n</li>\n</ul>\n","urlObject":{"protocol":"http","port":"3000","path":["product",":productId"],"host":["admin","localhost"],"query":[],"variable":[{"type":"any","value":"","key":"productId"}]}},"response":[],"_postman_id":"713a49c4-4fd4-493d-bd35-c5fbb1d18cca"},{"name":"Get Orders","id":"098ee9d4-39e1-4c69-aa9a-802e80568194","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://admin.localhost:3000/orders?sortByDate=bool","description":"<h3 id=\"get-orders\">Get Orders</h3>\n<p>This endpoint allows the admin to get an array of orders from the server.</p>\n<h4 id=\"request-body\">Request Body</h4>\n<ul>\n<li><code>There is no req body on this endpoint.</code></li>\n</ul>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li><p><strong>Status: 200</strong> = This status indicates that the task of the endpoint was successful and data of orders has been recieved.</p>\n</li>\n<li><p><strong>Status: 401</strong> = This status indicates an error about the admin being unauthenticated.</p>\n</li>\n<li><p><strong>Status: 500</strong> = This status indicates an unexpected error in the server side. This has nothing to do with the user.</p>\n</li>\n</ul>\n","urlObject":{"protocol":"http","port":"3000","path":["orders"],"host":["admin","localhost"],"query":[{"key":"sortByDate","value":"bool"}],"variable":[]}},"response":[],"_postman_id":"098ee9d4-39e1-4c69-aa9a-802e80568194"},{"name":"Get Order","id":"b100c906-5857-4b4e-b027-136c5703a045","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://admin.localhost:3000/order/:orderId","description":"<h3 id=\"get-order\">Get Order</h3>\n<p>This endpoint allows the admin to get data of an order from the server using the id.</p>\n<h4 id=\"request-body\">Request Body</h4>\n<ul>\n<li><code>There is no req body on this endpoint.</code></li>\n</ul>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li><p><strong>Status: 200</strong> = This status indicates that the task of the endpoint was successful and data of the order has been recieved.</p>\n</li>\n<li><p><strong>Status: 401</strong> = This status indicates an error about the admin being unauthenticated.</p>\n</li>\n<li><p><strong>Status: 500</strong> = This status indicates an unexpected error in the server side. This has nothing to do with the user.</p>\n</li>\n</ul>\n","urlObject":{"protocol":"http","port":"3000","path":["order",":orderId"],"host":["admin","localhost"],"query":[],"variable":[{"type":"any","value":"","key":"orderId"}]}},"response":[],"_postman_id":"b100c906-5857-4b4e-b027-136c5703a045"},{"name":"Update Order","id":"ec540ed0-3356-48f5-bc7a-1aa5ce5c82ce","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n    \"status\":\"COMPLETED\"\n}","options":{"raw":{"language":"json"}}},"url":"http://admin.localhost:3000/order/:orderId","description":"<h3 id=\"update-order\">Update Order</h3>\n<p>This endpoint allows the admin to update an order on the server.</p>\n<h4 id=\"request-body\">Request Body</h4>\n<ul>\n<li><code>status</code> (string): The status can be of be either \"COMPLETED\" | \"PENDING\".</li>\n</ul>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li><p><strong>Status: 200</strong> = This status indicates that the task of the endpoint was successful and an order has been updated.</p>\n</li>\n<li><p><strong>Status: 400</strong> = This status indicates an error about admin's type validation. Error message will contain status and the indicated type error.</p>\n</li>\n<li><p><strong>Status: 401</strong> = This status indicates an error about the admin being unauthenticated.</p>\n</li>\n<li><p><strong>Status: 404</strong> = This status indicates an error about the order not being found through provided id.</p>\n</li>\n<li><p><strong>Status: 500</strong> = This status indicates an unexpected error in the server side. This has nothing to do with the user.</p>\n</li>\n</ul>\n","urlObject":{"protocol":"http","port":"3000","path":["order",":orderId"],"host":["admin","localhost"],"query":[],"variable":[{"type":"any","value":"","key":"orderId"}]}},"response":[],"_postman_id":"ec540ed0-3356-48f5-bc7a-1aa5ce5c82ce"}],"id":"9550ecc2-7a37-4fba-bd82-aba2550e31fb","description":"<p>The <strong>Admin Module</strong> provides a set of API endpoints to manage the e-commerce platform. Admins have the authority to oversee users, products, orders, and overall system operations. These endpoints ensure that the platform runs smoothly and securely.</p>\n","_postman_id":"9550ecc2-7a37-4fba-bd82-aba2550e31fb"},{"name":"User Module","item":[{"name":"Create User","id":"65302703-bcde-4588-a36d-5e4e60008f42","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"firstName\": \"Jhon\",\n    \"lastName\": \"Clark\",\n    \"userName\": \"JhonClark\",\n    \"email\": \"jhonclark12@gmail.com\",\n    \"password\": \"password\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3000/user/","description":"<h3 id=\"create-user\">Create User</h3>\n<p>This endpoint allows to create a user in our app and view different products and sort and filter them based on queries.</p>\n<h4 id=\"request-body\">Request Body</h4>\n<ul>\n<li><p><code>firstName</code> (string): The first name of the user.</p>\n</li>\n<li><p><code>lastName?</code> (string): The description about the category. This field is optional.</p>\n</li>\n<li><p><code>userName</code> (number): The username of the user used to display on the profile page.</p>\n</li>\n<li><p><code>email</code> (string): The email of the user. Email will be used to create the order.</p>\n</li>\n<li><p><code>password</code> (string): Password of the user being created.</p>\n</li>\n</ul>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li><p><strong>Status: 201</strong> = This status indicates that the task of the endpoint was successful and an user has been created.</p>\n</li>\n<li><p><strong>Status: 400</strong> = This status indicates an error about client's type validation. Error message will contain status and the indicated type error.</p>\n</li>\n<li><p><strong>Status: 409</strong> = This status indicates an error about credentials already existing. To solve this use other value than provided.</p>\n</li>\n<li><p><strong>Status: 500</strong> = This status indicates an unexpected error in the server side. This has nothing to do with the user.</p>\n</li>\n</ul>\n","urlObject":{"protocol":"http","port":"3000","path":["user",""],"host":["localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"65302703-bcde-4588-a36d-5e4e60008f42"},{"name":"Login User","id":"98ddc245-7444-49a4-be87-6a2ae9d57e47","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"email\": \"jhonclark12@gmail.com\",\n    \"userName\": \"JhonClark\",\n    \"password\": \"password\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3000/user/login","description":"<h3 id=\"login-user\">Login User</h3>\n<p>This endpoint allows the user to log back in into their accounts that they ceated.</p>\n<h4 id=\"request-body\">Request Body</h4>\n<p><strong>User either email or username. If both are provided email will be used.</strong></p>\n<ul>\n<li><p><code>email</code> (string): The email of the already created user.</p>\n</li>\n<li><p><code>userName</code> (number): The username of the already created user.</p>\n</li>\n<li><p><code>password</code> (string): Password of the user.</p>\n</li>\n</ul>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li><p><strong>Status: 200</strong> = This status indicates that the task of the endpoint was successful and will recieve an auth cookie from the server.</p>\n</li>\n<li><p><strong>Status: 400</strong> = This status indicates an error about client's type validation. Error message will contain status and the indicated type error.</p>\n</li>\n<li><p><strong>Status: 404</strong> = This status indicates an error about user not existing to solve this create an user first or use correct credentials</p>\n</li>\n<li><p><strong>Status: 500</strong> = This status indicates an unexpected error in the server side. This has nothing to do with the user.</p>\n</li>\n</ul>\n","urlObject":{"protocol":"http","port":"3000","path":["user","login"],"host":["localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"98ddc245-7444-49a4-be87-6a2ae9d57e47"},{"name":"Logout User","id":"b0133862-9c15-4c35-84b5-2b3b76a15546","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"url":"http://localhost:3000/user/logout","description":"<h3 id=\"logout-user\">Logout User</h3>\n<p>This endpoint allows the user to log out from their accounts that they are logged in through.</p>\n<h4 id=\"request-body\">Request Body</h4>\n<ul>\n<li><code>No req body on this post endpoint.</code></li>\n</ul>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li><p><strong>Status: 200</strong> = This status indicates that the task of the endpoint was successful and you will be logged out of your account.</p>\n</li>\n<li><p><strong>Status: 400</strong> = This status indicates an error about client's type validation. Error message will contain status and the indicated type error.</p>\n</li>\n<li><p><strong>Status: 401</strong> = This status indicates an error about the user being unauthenticated.</p>\n</li>\n<li><p><strong>Status: 500</strong> = This status indicates an unexpected error in the server side. This has nothing to do with the user.</p>\n</li>\n</ul>\n","urlObject":{"protocol":"http","port":"3000","path":["user","logout"],"host":["localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"b0133862-9c15-4c35-84b5-2b3b76a15546"},{"name":"Update Profile Picture","id":"b065fc70-3684-4cfa-be2a-67262bc69db9","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[],"body":{"mode":"formdata","formdata":[{"key":"file","type":"file","fileNotInWorkingDirectoryWarning":"This file isn't in your working directory. Teammates you share this request with won't be able to use this file. To make collaboration easier you can setup your working directory in Settings.","filesNotInWorkingDirectory":["/home/niaz/Pictures/Screenshots/Screenshot from 2025-02-01 12-21-53.png"],"src":"postman-cloud:///1f005c83-cf23-4630-87fb-418e1e541efc"}]},"url":"http://localhost:3000/user/profilepicture","description":"<h3 id=\"update-profile-picture\">Update Profile Picture</h3>\n<p>This endpoint allows the user to update their existing profile picture to something of their choice.</p>\n<h4 id=\"request-body\">Request Body</h4>\n<ul>\n<li><code>file</code> (string): Password of the user being created.</li>\n</ul>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li><p><strong>Status: 201</strong> = This status indicates that the task of the endpoint was successful and an user has been created.</p>\n</li>\n<li><p><strong>Status: 400</strong> = This status indicates an error about client's type validation. Error message will contain status and the indicated type error.</p>\n</li>\n<li><p>Status: 401 = This status indicates an error about the user being unauthenticated.</p>\n</li>\n<li><p><strong>Status: 500</strong> = This status indicates an unexpected error in the server side. This has nothing to do with the user.</p>\n</li>\n</ul>\n","urlObject":{"protocol":"http","port":"3000","path":["user","profilepicture"],"host":["localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"b065fc70-3684-4cfa-be2a-67262bc69db9"},{"name":"Remove Profile Picture","id":"a9fb23d3-2839-46d0-a96e-be0a13ea5ec5","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"url":"http://localhost:3000/user/profilepicture","description":"<h3 id=\"remove-profile-picture\">Remove Profile Picture</h3>\n<p>This endpoint allows the user to update their existing profile picture to something of their choice.</p>\n<h4 id=\"request-body\">Request Body</h4>\n<ul>\n<li><code>No req data on this delete endpoint.</code></li>\n</ul>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li><p><strong>Status: 200</strong> = This status indicates that the task of the endpoint was successful and an user's profile picture has been removed.</p>\n</li>\n<li><p><strong>Status: 400</strong> = This status indicates an error about client's type validation. Error message will contain status and the indicated type error.</p>\n</li>\n<li><p>Status: 401 = This status indicates an error about the user being unauthenticated.</p>\n</li>\n<li><p><strong>Status: 409</strong> = This status indicates that the default profile picture is already being used.</p>\n</li>\n<li><p><strong>Status: 500</strong> = This status indicates an unexpected error in the server side. This has nothing to do with the user.</p>\n</li>\n</ul>\n","urlObject":{"protocol":"http","port":"3000","path":["user","profilepicture"],"host":["localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"a9fb23d3-2839-46d0-a96e-be0a13ea5ec5"},{"name":"Get Profile","id":"1fd262c0-63ac-453e-8cb4-3e688cdf9004","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:3000/user/profile","description":"<h3 id=\"get-picture\">Get Picture</h3>\n<p>This endpoint allows the user to get data of their profile informations.</p>\n<h4 id=\"request-body\">Request Body</h4>\n<ul>\n<li><code>No req data on this get endpoint.</code></li>\n</ul>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li><p><strong>Status: 200</strong> = This status indicates that the task of the endpoint was successful and an user's profile data has been removed.</p>\n</li>\n<li><p><strong>Status: 400</strong> = This status indicates an error about client's type validation. Error message will contain status and the indicated type error.</p>\n</li>\n<li><p>Status: 401 = This status indicates an error about the user being unauthenticated.</p>\n</li>\n<li><p><strong>Status: 500</strong> = This status indicates an unexpected error in the server side. This has nothing to do with the user.</p>\n</li>\n</ul>\n","urlObject":{"protocol":"http","port":"3000","path":["user","profile"],"host":["localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"1fd262c0-63ac-453e-8cb4-3e688cdf9004"}],"id":"1d09d32d-17de-48a4-8685-0ff67a9966ae","description":"<p>These set of API endpoints are client user operations on the application. Here they are minimally documented based on their inputs and outputs.</p>\n","_postman_id":"1d09d32d-17de-48a4-8685-0ff67a9966ae"},{"name":"Product Module","item":[{"name":"Get Products","id":"42b29109-d9f1-4da8-8877-6867f15fc57d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:3000/product/products?category=categoryId&limit=0&offset=0","description":"<h3 id=\"get-products\">Get Products</h3>\n<p>This endpoint allows to get a array of products based on filtering and sorting through queries.</p>\n<h4 id=\"request-body\">Request Body</h4>\n<ul>\n<li><code>No req data found on this get endpoint.</code></li>\n</ul>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li><p><strong>Status: 200</strong> = This status indicates that the task of the endpoint was successful and have recieved an array of objects.</p>\n</li>\n<li><p><strong>Status: 400</strong> = This status indicates an error about client's type validation. Error message will contain status and the indicated type error.</p>\n</li>\n<li><p><strong>Status: 500</strong> = This status indicates an unexpected error in the server side. This has nothing to do with the user.</p>\n</li>\n</ul>\n","urlObject":{"protocol":"http","port":"3000","path":["product","products"],"host":["localhost"],"query":[{"key":"category","value":"categoryId"},{"key":"limit","value":"0"},{"key":"offset","value":"0"}],"variable":[]}},"response":[],"_postman_id":"42b29109-d9f1-4da8-8877-6867f15fc57d"},{"name":"Get Product","id":"500540a3-d7d0-4923-b9a8-7bc71eaf48ca","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:3000/product/:productId","description":"<h3 id=\"get-product\">Get Product</h3>\n<p>This endpoint allows to get data of products based on the provided product id.</p>\n<h4 id=\"request-body\">Request Body</h4>\n<ul>\n<li><code>No req data found on this get endpoint.</code></li>\n</ul>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li><p><strong>Status: 200</strong> = This status indicates that the task of the endpoint was successful and have recieved an object of product data.</p>\n</li>\n<li><p><strong>Status: 400</strong> = This status indicates an error about client's type validation. Error message will contain status and the indicated type error.</p>\n</li>\n<li><p><strong>Status: 404</strong> = This status indicates an error about no product being found with the provided id.</p>\n</li>\n<li><p><strong>Status: 500</strong> = This status indicates an unexpected error in the server side. This has nothing to do with the user.</p>\n</li>\n</ul>\n","urlObject":{"protocol":"http","port":"3000","path":["product",":productId"],"host":["localhost"],"query":[],"variable":[{"type":"any","value":"","key":"productId"}]}},"response":[],"_postman_id":"500540a3-d7d0-4923-b9a8-7bc71eaf48ca"}],"id":"9bf5b0dd-e854-417c-aa43-fa617becdcc6","description":"<p>These set of API endpoints are client get products operations on the application. Here they are minimally documented based on their inputs and outputs.</p>\n","_postman_id":"9bf5b0dd-e854-417c-aa43-fa617becdcc6"},{"name":"Reviews Module","item":[{"name":"Add Review","id":"ccabeb92-9e73-408f-a37b-724244640095","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"formdata","formdata":[{"key":"orderItemId","value":"orderItemId","type":"text"},{"key":"rating","value":"4","type":"text"},{"key":"comment","value":"I bought this product a month ago and I belive the color is not as bright as shown in the website.","type":"text"},{"key":"files","type":"file","fileNotInWorkingDirectoryWarning":"This file isn't in your working directory. Teammates you share this request with won't be able to use this file. To make collaboration easier you can setup your working directory in Settings.","filesNotInWorkingDirectory":["/home/niaz/Pictures/Screenshots/Screenshot from 2025-01-31 18-08-22.png"],"src":"/home/niaz/Pictures/Screenshots/Screenshot from 2025-01-31 18-08-22.png"},{"key":"files","type":"file","fileNotInWorkingDirectoryWarning":"This file isn't in your working directory. Teammates you share this request with won't be able to use this file. To make collaboration easier you can setup your working directory in Settings.","filesNotInWorkingDirectory":["/home/niaz/Pictures/Screenshots/Screenshot from 2025-02-01 12-21-53.png"],"src":"/home/niaz/Pictures/Screenshots/Screenshot from 2025-02-01 12-21-53.png"},{"key":"files","type":"file","fileNotInWorkingDirectoryWarning":"This file isn't in your working directory. Teammates you share this request with won't be able to use this file. To make collaboration easier you can setup your working directory in Settings.","filesNotInWorkingDirectory":["/home/niaz/Pictures/Screenshots/Screenshot from 2025-01-23 20-41-35.png"],"src":"/home/niaz/Pictures/Screenshots/Screenshot from 2025-01-23 20-41-35.png"}]},"url":"http://localhost:3000/review/","description":"<h3 id=\"add-review\">Add Review</h3>\n<p>This endpoint allows an user to add an review only after buying a product. Users can give as many reviews as they want only after buying the product.</p>\n<h4 id=\"request-body\">Request Body</h4>\n<ul>\n<li><p><code>orderItemId</code> (string): Order id of the product that the user has ordered.</p>\n</li>\n<li><p><code>rating</code> (number): Rating of the user on a product they ordered.</p>\n</li>\n<li><p><code>files</code> (images): Images of the product.</p>\n</li>\n</ul>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li><p><strong>Status: 201</strong> = This status indicates that the task of the endpoint was successful and have added an review in product.</p>\n</li>\n<li><p><strong>Status: 400</strong> = This status indicates an error about user's type validation. Error message will contain status and the indicated type error.</p>\n</li>\n<li><p><strong>Status: 401</strong> = This status indicates an error about the user being unauthenticated.</p>\n</li>\n<li><p><strong>Status: 500</strong> = This status indicates an unexpected error in the server side. This has nothing to do with the user.</p>\n</li>\n</ul>\n","urlObject":{"protocol":"http","port":"3000","path":["review",""],"host":["localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"ccabeb92-9e73-408f-a37b-724244640095"},{"name":"Get Review","id":"3594c9c9-5af7-4e27-aa80-d496eaecad14","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:3000/review/:productId","description":"<h3 id=\"get-review\">Get Review</h3>\n<p>This endpoint allows an user to get a list of reviews on a product using the provided id.</p>\n<h4 id=\"request-body\">Request Body</h4>\n<ul>\n<li><code>No req data on this get endpoint.</code></li>\n</ul>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li><p><strong>Status: 200</strong> = This status indicates that the task of the endpoint was successful and have recieved an array of reviews.</p>\n</li>\n<li><p><strong>Status: 400</strong> = This status indicates an error about user's type validation. Error message will contain status and the indicated type error.</p>\n</li>\n<li><p><strong>Status: 401</strong> = This status indicates an error about the user being unauthenticated.</p>\n</li>\n<li><p><strong>Status: 500</strong> = This status indicates an unexpected error in the server side. This has nothing to do with the user.</p>\n</li>\n</ul>\n","urlObject":{"protocol":"http","port":"3000","path":["review",":productId"],"host":["localhost"],"query":[],"variable":[{"type":"any","value":"","key":"productId"}]}},"response":[],"_postman_id":"3594c9c9-5af7-4e27-aa80-d496eaecad14"},{"name":"Delete Review","id":"3e4d0a6d-bb5b-4f50-99f9-c1ca36eb5b8c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"url":"http://localhost:3000/review/:reviewId","description":"<h3 id=\"delete-review\">Delete Review</h3>\n<p>This endpoint allows an user to delete their review on a product using their review id.</p>\n<h4 id=\"request-body\">Request Body</h4>\n<ul>\n<li><code>No req data on this get endpoint.</code></li>\n</ul>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li><p><strong>Status: 200</strong> = This status indicates that the task of the endpoint was successful and have deleted the review they previously added</p>\n</li>\n<li><p><strong>Status: 400</strong> = This status indicates an error about user's type validation. Error message will contain status and the indicated type error.</p>\n</li>\n<li><p><strong>Status: 401</strong> = This status indicates an error about the user being unauthenticated.</p>\n</li>\n<li><p><strong>Status: 404</strong> = This status indicates an error about the review id not being found.</p>\n</li>\n<li><p><strong>Status: 500</strong> = This status indicates an unexpected error in the server side. This has nothing to do with the user.</p>\n</li>\n</ul>\n","urlObject":{"protocol":"http","port":"3000","path":["review",":reviewId"],"host":["localhost"],"query":[],"variable":[{"type":"any","value":"","key":"reviewId"}]}},"response":[],"_postman_id":"3e4d0a6d-bb5b-4f50-99f9-c1ca36eb5b8c"}],"id":"b8d1af09-781f-4915-b4b8-477af9b7bba4","description":"<p>These set of API endpoints are client reviews operations on the application. Here they are minimally documented based on their inputs and outputs.</p>\n","_postman_id":"b8d1af09-781f-4915-b4b8-477af9b7bba4"},{"name":"Categories Module","item":[{"name":"Get Categories","id":"a044e350-af42-4f1b-b8e0-1dc31a361a93","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:3000/category/","description":"<h3 id=\"get-categories\">Get Categories</h3>\n<p>This endpoint allows to get an array of categories.</p>\n<h4 id=\"request-body\">Request Body</h4>\n<ul>\n<li><code>No req data found on this get endpoint.</code></li>\n</ul>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li><p><strong>Status: 200</strong> = This status indicates that the task of the endpoint was successful and have recieved an array of categories.</p>\n</li>\n<li><p><strong>Status: 500</strong> = This status indicates an unexpected error in the server side. This has nothing to do with the user.</p>\n</li>\n</ul>\n","urlObject":{"protocol":"http","port":"3000","path":["category",""],"host":["localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"a044e350-af42-4f1b-b8e0-1dc31a361a93"}],"id":"36b1d33a-742f-4584-98b0-07a0bc111e40","description":"<p>These set of API endpoints are client categories operations on the application. Here they are minimally documented based on their inputs and outputs.</p>\n","_postman_id":"36b1d33a-742f-4584-98b0-07a0bc111e40"},{"name":"Cart Module","item":[{"name":"Add Product to Cart","id":"31fd4965-cdb6-45a0-abf3-69f8d875c265","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"productId\": \"80b20266-69a5-4e0f-bb5b-ff4f6916cc47\",\n    \"quantity\": 20\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3000/cart/","description":"<h3 id=\"add-product-in-cart\">Add Product in Cart</h3>\n<p>This endpoint allows the user to add an existing Product to their cart.</p>\n<h4 id=\"request-body\">Request Body</h4>\n<ul>\n<li><p><code>productId</code> (string): Product id of the product the user wants to add in their cart.</p>\n</li>\n<li><p><code>quantity</code> (number): Quantity of the added products in the cart.</p>\n</li>\n</ul>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li><p><strong>Status: 201</strong> = This status indicates that the task of the endpoint was successful and products has been added to the user's cart.</p>\n</li>\n<li><p><strong>Status: 400</strong> = This status indicates an error about client's type validation. Error message will contain status and the indicated type error.</p>\n</li>\n<li><p><strong>Status: 401</strong> = This status indicates an error about the user being unauthenticated.</p>\n</li>\n<li><p><strong>Status: 404</strong> = This status indicates an error about product not being found through provided id.</p>\n</li>\n<li><p><strong>Status: 500</strong> = This status indicates an unexpected error in the server side. This has nothing to do with the user.</p>\n</li>\n</ul>\n","urlObject":{"protocol":"http","port":"3000","path":["cart",""],"host":["localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"31fd4965-cdb6-45a0-abf3-69f8d875c265"},{"name":"Get Products in Cart","id":"e834da12-f342-46e5-b875-a8ec8785d570","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:3000/cart","description":"<h3 id=\"get-products-in-cart\">Get Products in Cart</h3>\n<p>This endpoint allows the user to get existing Products from their cart.</p>\n<h4 id=\"request-body\">Request Body</h4>\n<ul>\n<li><code>No req data on this get endpoint.</code></li>\n</ul>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li><p><strong>Status: 200</strong> = This status indicates that the task of the endpoint was successful and products has been fetched from the user's cart.</p>\n</li>\n<li><p><strong>Status: 401</strong> = This status indicates an error about the user being unauthenticated.</p>\n</li>\n<li><p><strong>Status: 500</strong> = This status indicates an unexpected error in the server side. This has nothing to do with the user.</p>\n</li>\n</ul>\n","urlObject":{"protocol":"http","port":"3000","path":["cart"],"host":["localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"e834da12-f342-46e5-b875-a8ec8785d570"},{"name":"Update Product in Cart","id":"884765b3-78e0-4131-ab3f-ded4686831b2","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n    \"productInCartId\": \"e80cea92-d073-455b-b252-523b3376afed\",\n    \"quantity\": 3\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3000/cart","description":"<h3 id=\"update-product-in-cart\">Update Product in Cart</h3>\n<p>This endpoint allows the user to update an existing Product to their cart.</p>\n<h4 id=\"request-body\">Request Body</h4>\n<ul>\n<li><p><code>productInCartId</code> (string): Product id that is in the user's cart.</p>\n</li>\n<li><p><code>quantity</code> (number): Quantity of the newly updated products in the cart.</p>\n</li>\n</ul>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li><p><strong>Status: 200</strong> = This status indicates that the task of the endpoint was successful and product has been updated in the user's cart.</p>\n</li>\n<li><p><strong>Status: 400</strong> = This status indicates an error about client's type validation. Error message will contain status and the indicated type error.</p>\n</li>\n<li><p><strong>Status: 401</strong> = This status indicates an error about the user being unauthenticated.</p>\n</li>\n<li><p><strong>Status: 404</strong> = This status indicates an error about product not being found through provided id.</p>\n</li>\n<li><p><strong>Status: 500</strong> = This status indicates an unexpected error in the server side. This has nothing to do with the user.</p>\n</li>\n</ul>\n","urlObject":{"protocol":"http","port":"3000","path":["cart"],"host":["localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"884765b3-78e0-4131-ab3f-ded4686831b2"},{"name":"Remove Product from Cart","id":"8b67cd39-49fd-4066-8511-c6764c63aa8c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"body":{"mode":"raw","raw":"{\n    \"productInCartId\": \"95b8eac4-4262-4a5c-8f55-ae641f37e601\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3000/cart/","description":"<h3 id=\"remove-product-from-cart\">Remove Product from Cart</h3>\n<p>This endpoint allows the user to remove an existing Product from their cart.</p>\n<h4 id=\"request-body\">Request Body</h4>\n<ul>\n<li><code>productInCartId</code> (string): Product id that is to be removed from the user's cart.</li>\n</ul>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li><p><strong>Status: 200</strong> = This status indicates that the task of the endpoint was successful and product has been removed from the user's cart.</p>\n</li>\n<li><p><strong>Status: 400</strong> = This status indicates an error about client's type validation. Error message will contain status and the indicated type error.</p>\n</li>\n<li><p><strong>Status: 401</strong> = This status indicates an error about the user being unauthenticated.</p>\n</li>\n<li><p><strong>Status: 404</strong> = This status indicates an error about product not being found through provided id.</p>\n</li>\n<li><p><strong>Status: 500</strong> = This status indicates an unexpected error in the server side. This has nothing to do with the user.</p>\n</li>\n</ul>\n","urlObject":{"protocol":"http","port":"3000","path":["cart",""],"host":["localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"8b67cd39-49fd-4066-8511-c6764c63aa8c"}],"id":"3d207656-5eb4-4a26-992e-325e70736fca","description":"<p>These set of API endpoints are crud operations on the products in cart. Here they are minimally documented based on their inputs and outputs.</p>\n","_postman_id":"3d207656-5eb4-4a26-992e-325e70736fca"},{"name":"Order Module","item":[{"name":"Place Order","id":"c1c5279a-5834-4a76-a4a9-d4a93a5b198b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"productId\": \"32024e5c-ae41-40ed-a786-ac6b59f85e72\",\n    \"quantity\": 1,\n    \"paymentMethod\": \"ONLINE\"\n}","options":{"raw":{"language":"json"}}},"url":"http://admin.localhost:3000/order","description":"<h3 id=\"place-order\">Place Order</h3>\n<p>This endpoint allows an user to place an order by providing the product id.</p>\n<h4 id=\"request-body\">Request Body</h4>\n<ul>\n<li><p><code>productId</code> (string): Product id of the product that the user has ordered.</p>\n</li>\n<li><p><code>quantity</code> (number): Number of products that the user wants to buy.</p>\n</li>\n<li><p><code>paymentMethod</code> (images): Payment method and be of two types \"COD\" or \"ONLINE\".</p>\n</li>\n</ul>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li><p><strong>Status: 201</strong> = This status indicates that the task of the endpoint was successful and have ordered a product.</p>\n</li>\n<li><p><strong>Status: 400</strong> = This status indicates an error about user's type validation. Error message will contain status and the indicated type error.</p>\n</li>\n<li><p><strong>Status: 401</strong> = This status indicates an error about the user being unauthenticated.</p>\n</li>\n<li><p><strong>Status: 404 =</strong> This status indicates an error about the product or address of the user not being found.</p>\n</li>\n<li><p><strong>Status: 500</strong> = This status indicates an unexpected error in the server side. This has nothing to do with the user.</p>\n</li>\n</ul>\n","urlObject":{"protocol":"http","port":"3000","path":["order"],"host":["admin","localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"c1c5279a-5834-4a76-a4a9-d4a93a5b198b"},{"name":"Cancel Order","id":"e3cd313a-9ddf-4cbd-9b04-8adb4229c42a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"body":{"mode":"raw","raw":"{\n    \"orderId\": \"d175f2f0-f821-40c5-b27d-151ef3c6eee1\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3000/order","description":"<h3 id=\"place-order\">Place Order</h3>\n<p>This endpoint allows an user to place an order by providing the product id.</p>\n<h4 id=\"request-body\">Request Body</h4>\n<ul>\n<li><code>orderId</code> (string): Order id of the product that the user has ordered and now want to be canceld.</li>\n</ul>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li><p><strong>Status: 200</strong> = This status indicates that the task of the endpoint was successful and have caceled an order.</p>\n</li>\n<li><p><strong>Status: 400</strong> = This status indicates an error about user's type validation. Error message will contain status and the indicated type error.</p>\n</li>\n<li><p><strong>Status: 401</strong> = This status indicates an error about the user being unauthenticated.</p>\n</li>\n<li><p><strong>Status: 404 =</strong> This status indicates an error about the order not being found.</p>\n</li>\n<li><p><strong>Status: 500</strong> = This status indicates an unexpected error in the server side. This has nothing to do with the user.</p>\n</li>\n</ul>\n","urlObject":{"protocol":"http","port":"3000","path":["order"],"host":["localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"e3cd313a-9ddf-4cbd-9b04-8adb4229c42a"}],"id":"49deaae6-9a38-4ef5-863a-00dcdadf35ce","description":"<p>These set of API endpoints are client order operations on the application. Here they are minimally documented based on their inputs and outputs.</p>\n","_postman_id":"49deaae6-9a38-4ef5-863a-00dcdadf35ce"},{"name":"Address Module","item":[{"name":"Add Address","id":"d173828b-7b4b-41b9-a206-79c69f524aff","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"street\":\"Golden Street\",\n    \"city\":\"Uttara\",\n    \"state\":\"Dhaka\",\n    \"postalCode\":\"5555\",\n    \"country\":\"Iran\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3000/address/","description":"<h3 id=\"add-address\">Add Address</h3>\n<p>This endpoint allows an user to add their address to place an order.</p>\n<h4 id=\"request-body\">Request Body</h4>\n<ul>\n<li><p><code>street</code> (string): Street name of the address where the user wants their product to be delivered.</p>\n</li>\n<li><p><code>city</code> (string): City where the user wants their product to be delivered.</p>\n</li>\n<li><p><code>state</code> (string):State or division of the address where the user wants their product to be delivered.</p>\n</li>\n<li><p><code>postalCode</code> (string): Postal code of the address where the user wants their product to be delivered.</p>\n</li>\n<li><p><code>country</code> (string): Country name of the address where the user wants their product to be delivered.</p>\n</li>\n</ul>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li><p><strong>Status: 201</strong> = This status indicates that the task of the endpoint was successful and have added an address.</p>\n</li>\n<li><p><strong>Status: 400</strong> = This status indicates an error about user's type validation. Error message will contain status and the indicated type error.</p>\n</li>\n<li><p><strong>Status: 401</strong> = This status indicates an error about the user being unauthenticated.</p>\n</li>\n<li><p><strong>Status: 500</strong> = This status indicates an unexpected error in the server side. This has nothing to do with the user.</p>\n</li>\n</ul>\n","urlObject":{"protocol":"http","port":"3000","path":["address",""],"host":["localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"d173828b-7b4b-41b9-a206-79c69f524aff"},{"name":"Get Address","id":"3dada2b7-a45b-454f-86c6-6932cd494f7f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:3000/address/","description":"<h3 id=\"add-address\">Add Address</h3>\n<p>This endpoint allows an user to get their address.</p>\n<h4 id=\"request-body\">Request Body</h4>\n<ul>\n<li><code>No req data found on this endpoint.</code></li>\n</ul>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li><p><strong>Status: 200</strong> = This status indicates that the task of the endpoint and recieved the address.</p>\n</li>\n<li><p><strong>Status: 401</strong> = This status indicates an error about the user being unauthenticated.</p>\n</li>\n<li><p><strong>Status 404</strong> = This status would indicate an error about the address not being found.</p>\n</li>\n<li><p><strong>Status: 500</strong> = This status indicates an unexpected error in the server side. This has nothing to do with the user.</p>\n</li>\n</ul>\n","urlObject":{"protocol":"http","port":"3000","path":["address",""],"host":["localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"3dada2b7-a45b-454f-86c6-6932cd494f7f"},{"name":"Update Address","id":"d1a532bd-1b44-4a03-9a6c-e90bdba14ee5","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n    \"street\": \"St-Luis\",\n    \"city\": \"Uttara\",\n    \"state\": \"Dhaka\",\n    \"postalCode\": \"1238\",\n    \"country\": \"Iran\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:3000/address/","description":"<h3 id=\"update-address\">Update Address</h3>\n<p>This endpoint allows an user to update their address that is already saved.</p>\n<h4 id=\"request-body\">Request Body</h4>\n<ul>\n<li><p><code>street</code> (string): Street name of the address where the user wants their product to be delivered.</p>\n</li>\n<li><p><code>city</code> (string): City where the user wants their product to be delivered.</p>\n</li>\n<li><p><code>state</code> (string):State or division of the address where the user wants their product to be delivered.</p>\n</li>\n<li><p><code>postalCode</code> (string): Postal code of the address where the user wants their product to be delivered.</p>\n</li>\n<li><p><code>country</code> (string): Country name of the address where the user wants their product to be delivered.</p>\n</li>\n</ul>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li><p><strong>Status: 200</strong> = This status indicates that the task of the endpoint was successful and have updated an address.</p>\n</li>\n<li><p><strong>Status: 400</strong> = This status indicates an error about user's type validation. Error message will contain status and the indicated type error.</p>\n</li>\n<li><p><strong>Status: 401</strong> = This status indicates an error about the user being unauthenticated.</p>\n</li>\n<li><p><strong>Status: 404</strong> = This status indicates that the user have not yet added an address.</p>\n</li>\n<li><p><strong>Status: 500</strong> = This status indicates an unexpected error in the server side. This has nothing to do with the user.</p>\n</li>\n</ul>\n","urlObject":{"protocol":"http","port":"3000","path":["address",""],"host":["localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"d1a532bd-1b44-4a03-9a6c-e90bdba14ee5"},{"name":"Delete Address","id":"e70c88a5-5c43-4b77-a31e-3ecebece15da","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"url":"http://localhost:3000/address/","description":"<h3 id=\"add-address\">Add Address</h3>\n<p>This endpoint allows an user to delete their address.</p>\n<h4 id=\"request-body\">Request Body</h4>\n<ul>\n<li><code>No req data found on this endpoint.</code></li>\n</ul>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li><p><strong>Status: 200</strong> = This status indicates that the task of the endpoint and deleted the address.</p>\n</li>\n<li><p><strong>Status: 401</strong> = This status indicates an error about the user being unauthenticated.</p>\n</li>\n<li><p><strong>Status 404</strong> = This status would indicate an error about the address not being found.</p>\n</li>\n<li><p><strong>Status: 500</strong> = This status indicates an unexpected error in the server side. This has nothing to do with the user.</p>\n</li>\n</ul>\n","urlObject":{"protocol":"http","port":"3000","path":["address",""],"host":["localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"e70c88a5-5c43-4b77-a31e-3ecebece15da"}],"id":"1d00295a-3aaa-4feb-8902-cbe98d8684f9","description":"<p>These set of API endpoints are crud operations on an user's address. Here they are minimally documented based on their inputs and outputs.</p>\n","_postman_id":"1d00295a-3aaa-4feb-8902-cbe98d8684f9"}]}