{"info":{"_postman_id":"6c14d01b-0c41-4d04-ab80-9ea6f92de313","name":"Simple Store API","description":"<html><head></head><body><p>This is the API documentation for <strong>Simple Store</strong>, an application with multiple products. The API features include managing products and their categories, performing CRUD operations on reviews and shopping carts, and handling review-related operations.</p>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"owner":"39993165","collectionId":"6c14d01b-0c41-4d04-ab80-9ea6f92de313","publishedId":"2sB3WyJw94","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"publishDate":"2025-11-19T22:21:07.000Z"},"item":[{"name":"Product","item":[{"name":"Get product by ID","id":"46ee37a1-eec0-42d3-ac3c-147d3d6a410d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:8080/api/products/:productId/product","description":"<p>Endpoint that return information about specific product passed by ID.</p>\n","urlObject":{"protocol":"http","port":"8080","path":["api","products",":productId","product"],"host":["localhost"],"query":[],"variable":[{"description":{"content":"<p>ID of product from database</p>\n","type":"text/plain"},"type":"any","value":"a","key":"productId"}]}},"response":[{"id":"3fded87f-4786-4ca2-ab46-cd40605d4f72","name":"200 (Ok)","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:8080/api/products/:productId/product","protocol":"http","host":["localhost"],"port":"8080","path":["api","products",":productId","product"],"variable":[{"key":"productId","value":"2","description":"ID of product form database"}]}},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Date","value":"Tue, 18 Nov 2025 23:09:56 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": 2,\n    \"name\": \"Mens Casual Premium Slim Fit T-Shirts \",\n    \"price\": 2230,\n    \"description\": \"Slim-fitting style, contrast raglan long sleeve, three-button henley placket, light weight & soft fabric for breathable and comfortable wearing. And Solid stitched shirts with round neck made for durability and a great fit for casual fashion wear and diehard baseball fans. The Henley style round neckline includes a three-button placket.\",\n    \"categoryId\": 3,\n    \"grade\": 0,\n    \"reviewAmount\": 0,\n    \"image\": \"https://fakestoreapi.com/img/71-3HjGNDUL._AC_SY879._SX._UX._SY._UY_t.png\",\n    \"amount\": 67,\n    \"availability\": true\n}"},{"id":"c7d6612b-0286-447d-b89a-5b00783b1c14","name":"404 (Not Found)","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:8080/api/products/:productId/product","protocol":"http","host":["localhost"],"port":"8080","path":["api","products",":productId","product"],"variable":[{"key":"productId","value":"a","description":"ID of product form database"}]}},"status":"Not Found","code":404,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Type","value":"text/plain;charset=UTF-8"},{"key":"Content-Length","value":"33"},{"key":"Date","value":"Tue, 18 Nov 2025 23:12:31 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"Could not find product with ID: a"}],"_postman_id":"46ee37a1-eec0-42d3-ac3c-147d3d6a410d"},{"name":"All Products","id":"e4bab11a-83b1-412e-ba89-f20db5c764c5","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:8080/api/products?side=2","description":"<p>Endpoint that returns 20 products per page (default value that can't be changed). The default page number is 1, and if an invalid page number is provided, the value will fall back to 1.</p>\n","urlObject":{"protocol":"http","port":"8080","path":["api","products"],"host":["localhost"],"query":[{"description":{"content":"<p>Number of pages from which products should be returned</p>\n","type":"text/plain"},"key":"side","value":"2"}],"variable":[]}},"response":[{"id":"5551a321-b712-4626-bc1f-831d5d7bd5cf","name":"Correct side value","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:8080/api/products?side=1","protocol":"http","host":["localhost"],"port":"8080","path":["api","products"],"query":[{"key":"side","value":"1","description":"Number of pages from which products should be returned"}]}},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Date","value":"Tue, 18 Nov 2025 23:17:54 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"[\n    {\n        \"id\": 1,\n        \"name\": \"Fjallraven - Foldsack No. 1 Backpack, Fits 15 Laptops\",\n        \"price\": 10995,\n        \"description\": \"Your perfect pack for everyday use and walks in the forest. Stash your laptop (up to 15 inches) in the padded sleeve, your everyday\",\n        \"categoryId\": 3,\n        \"grade\": 0,\n        \"reviewAmount\": 0,\n        \"image\": \"https://fakestoreapi.com/img/81fPKd-2AYL._AC_SL1500_t.png\",\n        \"amount\": 56,\n        \"availability\": true\n    },\n    {\n        \"id\": 2,\n        \"name\": \"Mens Casual Premium Slim Fit T-Shirts \",\n        \"price\": 2230,\n        \"description\": \"Slim-fitting style, contrast raglan long sleeve, three-button henley placket, light weight & soft fabric for breathable and comfortable wearing. And Solid stitched shirts with round neck made for durability and a great fit for casual fashion wear and diehard baseball fans. The Henley style round neckline includes a three-button placket.\",\n        \"categoryId\": 3,\n        \"grade\": 0,\n        \"reviewAmount\": 0,\n        \"image\": \"https://fakestoreapi.com/img/71-3HjGNDUL._AC_SY879._SX._UX._SY._UY_t.png\",\n        \"amount\": 67,\n        \"availability\": true\n    },\n    {\n        \"id\": 3,\n        \"name\": \"Mens Cotton Jacket\",\n        \"price\": 5599,\n        \"description\": \"great outerwear jackets for Spring/Autumn/Winter, suitable for many occasions, such as working, hiking, camping, mountain/rock climbing, cycling, traveling or other outdoors. Good gift choice for you or your family member. A warm hearted love to Father, husband or son in this thanksgiving or Christmas Day.\",\n        \"categoryId\": 3,\n        \"grade\": 0,\n        \"reviewAmount\": 0,\n        \"image\": \"https://fakestoreapi.com/img/71li-ujtlUL._AC_UX679_t.png\",\n        \"amount\": 91,\n        \"availability\": true\n    },\n    {\n        \"id\": 4,\n        \"name\": \"Mens Casual Slim Fit\",\n        \"price\": 1599,\n        \"description\": \"The color could be slightly different between on the screen and in practice. / Please note that body builds vary by person, therefore, detailed size information should be reviewed below on the product description.\",\n        \"categoryId\": 3,\n        \"grade\": 0,\n        \"reviewAmount\": 0,\n        \"image\": \"https://fakestoreapi.com/img/71YXzeOuslL._AC_UY879_t.png\",\n        \"amount\": 106,\n        \"availability\": true\n    },\n    {\n        \"id\": 5,\n        \"name\": \"test\",\n        \"price\": 150,\n        \"description\": \"test\",\n        \"categoryId\": 1,\n        \"grade\": 0,\n        \"reviewAmount\": 0,\n        \"image\": \"test\",\n        \"amount\": 5,\n        \"availability\": true\n    },\n    {\n        \"id\": 6,\n        \"name\": \"Solid Gold Petite Micropave \",\n        \"price\": 16800,\n        \"description\": \"Satisfaction Guaranteed. Return or exchange any order within 30 days.Designed and sold by Hafeez Center in the United States. Satisfaction Guaranteed. Return or exchange any order within 30 days.\",\n        \"categoryId\": 4,\n        \"grade\": 0,\n        \"reviewAmount\": 0,\n        \"image\": \"https://fakestoreapi.com/img/61sbMiUnoGL._AC_UL640_QL65_ML3_t.png\",\n        \"amount\": 70,\n        \"availability\": true\n    },\n    {\n        \"id\": 7,\n        \"name\": \"White Gold Plated Princess\",\n        \"price\": 999,\n        \"description\": \"Classic Created Wedding Engagement Solitaire Diamond Promise Ring for Her. Gifts to spoil your love more for Engagement, Wedding, Anniversary, Valentine's Day...\",\n        \"categoryId\": 4,\n        \"grade\": 0,\n        \"reviewAmount\": 0,\n        \"image\": \"https://fakestoreapi.com/img/71YAIFU48IL._AC_UL640_QL65_ML3_t.png\",\n        \"amount\": 62,\n        \"availability\": true\n    },\n    {\n        \"id\": 8,\n        \"name\": \"Pierced Owl Rose Gold Plated Stainless Steel Double\",\n        \"price\": 1099,\n        \"description\": \"Rose Gold Plated Double Flared Tunnel Plug Earrings. Made of 316L Stainless Steel\",\n        \"categoryId\": 4,\n        \"grade\": 0,\n        \"reviewAmount\": 0,\n        \"image\": \"https://fakestoreapi.com/img/51UDEzMJVpL._AC_UL640_QL65_ML3_t.png\",\n        \"amount\": 54,\n        \"availability\": true\n    },\n    {\n        \"id\": 9,\n        \"name\": \"WD 2TB Elements Portable External Hard Drive - USB 3.0 \",\n        \"price\": 6400,\n        \"description\": \"USB 3.0 and USB 2.0 Compatibility Fast data transfers Improve PC Performance High Capacity; Compatibility Formatted NTFS for Windows 10, Windows 8.1, Windows 7; Reformatting may be required for other operating systems; Compatibility may vary depending on user’s hardware configuration and operating system\",\n        \"categoryId\": 1,\n        \"grade\": 0,\n        \"reviewAmount\": 0,\n        \"image\": \"https://fakestoreapi.com/img/61IBBVJvSDL._AC_SY879_t.png\",\n        \"amount\": 72,\n        \"availability\": true\n    },\n    {\n        \"id\": 10,\n        \"name\": \"SanDisk SSD PLUS 1TB Internal SSD - SATA III 6 Gb/s\",\n        \"price\": 10900,\n        \"description\": \"Easy upgrade for faster boot up, shutdown, application load and response (As compared to 5400 RPM SATA 2.5” hard drive; Based on published specifications and internal benchmarking tests using PCMark vantage scores) Boosts burst write performance, making it ideal for typical PC workloads The perfect balance of performance and reliability Read/write speeds of up to 535MB/s/450MB/s (Based on internal testing; Performance may vary depending upon drive capacity, host device, OS and application.)\",\n        \"categoryId\": 1,\n        \"grade\": 0,\n        \"reviewAmount\": 0,\n        \"image\": \"https://fakestoreapi.com/img/61U7T1koQqL._AC_SX679_t.png\",\n        \"amount\": 12,\n        \"availability\": true\n    },\n    {\n        \"id\": 11,\n        \"name\": \"Silicon Power 256GB SSD 3D NAND A55 SLC Cache Performance Boost SATA III 2.5\",\n        \"price\": 10900,\n        \"description\": \"3D NAND flash are applied to deliver high transfer speeds Remarkable transfer speeds that enable faster bootup and improved overall system performance. The advanced SLC Cache Technology allows performance boost and longer lifespan 7mm slim design suitable for Ultrabooks and Ultra-slim notebooks. Supports TRIM command, Garbage Collection technology, RAID, and ECC (Error Checking & Correction) to provide the optimized performance and enhanced reliability.\",\n        \"categoryId\": 1,\n        \"grade\": 0,\n        \"reviewAmount\": 0,\n        \"image\": \"https://fakestoreapi.com/img/71kWymZ+c+L._AC_SX679_t.png\",\n        \"amount\": 81,\n        \"availability\": true\n    },\n    {\n        \"id\": 12,\n        \"name\": \"WD 4TB Gaming Drive Works with Playstation 4 Portable External Hard Drive\",\n        \"price\": 11400,\n        \"description\": \"Expand your PS4 gaming experience, Play anywhere Fast and easy, setup Sleek design with high capacity, 3-year manufacturer's limited warranty\",\n        \"categoryId\": 1,\n        \"grade\": 0,\n        \"reviewAmount\": 0,\n        \"image\": \"https://fakestoreapi.com/img/61mtL65D4cL._AC_SX679_t.png\",\n        \"amount\": 59,\n        \"availability\": true\n    },\n    {\n        \"id\": 13,\n        \"name\": \"Acer SB220Q bi 21.5 inches Full HD (1920 x 1080) IPS Ultra-Thin\",\n        \"price\": 59900,\n        \"description\": \"21. 5 inches Full HD (1920 x 1080) widescreen IPS display And Radeon free Sync technology. No compatibility for VESA Mount Refresh Rate: 75Hz - Using HDMI port Zero-frame design | ultra-thin | 4ms response time | IPS panel Aspect ratio - 16: 9. Color Supported - 16. 7 million colors. Brightness - 250 nit Tilt angle -5 degree to 15 degree. Horizontal viewing angle-178 degree. Vertical viewing angle-178 degree 75 hertz\",\n        \"categoryId\": 1,\n        \"grade\": 0,\n        \"reviewAmount\": 0,\n        \"image\": \"https://fakestoreapi.com/img/81QpkIctqPL._AC_SX679_t.png\",\n        \"amount\": 42,\n        \"availability\": true\n    },\n    {\n        \"id\": 14,\n        \"name\": \"Samsung 49-Inch CHG90 144Hz Curved Gaming Monitor (LC49HG90DMNXZA) – Super Ultrawide Screen QLED \",\n        \"price\": 99999,\n        \"description\": \"49 INCH SUPER ULTRAWIDE 32:9 CURVED GAMING MONITOR with dual 27 inch screen side by side QUANTUM DOT (QLED) TECHNOLOGY, HDR support and factory calibration provides stunningly realistic and accurate color and contrast 144HZ HIGH REFRESH RATE and 1ms ultra fast response time work to eliminate motion blur, ghosting, and reduce input lag\",\n        \"categoryId\": 1,\n        \"grade\": 0,\n        \"reviewAmount\": 0,\n        \"image\": \"https://fakestoreapi.com/img/81Zt42ioCgL._AC_SX679_t.png\",\n        \"amount\": 61,\n        \"availability\": true\n    },\n    {\n        \"id\": 15,\n        \"name\": \"BIYLACLESEN Women's 3-in-1 Snowboard Jacket Winter Coats\",\n        \"price\": 5699,\n        \"description\": \"Note:The Jackets is US standard size, Please choose size as your usual wear Material: 100% Polyester; Detachable Liner Fabric: Warm Fleece. Detachable Functional Liner: Skin Friendly, Lightweigt and Warm.Stand Collar Liner jacket, keep you warm in cold weather. Zippered Pockets: 2 Zippered Hand Pockets, 2 Zippered Pockets on Chest (enough to keep cards or keys)and 1 Hidden Pocket Inside.Zippered Hand Pockets and Hidden Pocket keep your things secure. Humanized Design: Adjustable and Detachable Hood and Adjustable cuff to prevent the wind and water,for a comfortable fit. 3 in 1 Detachable Design provide more convenience, you can separate the coat and inner as needed, or wear it together. It is suitable for different season and help you adapt to different climates\",\n        \"categoryId\": 2,\n        \"grade\": 0,\n        \"reviewAmount\": 0,\n        \"image\": \"https://fakestoreapi.com/img/51Y5NI-I5jL._AC_UX679_t.png\",\n        \"amount\": 96,\n        \"availability\": true\n    },\n    {\n        \"id\": 16,\n        \"name\": \"Lock and Love Women's Removable Hooded Faux Leather Moto Biker Jacket\",\n        \"price\": 2995,\n        \"description\": \"100% POLYURETHANE(shell) 100% POLYESTER(lining) 75% POLYESTER 25% COTTON (SWEATER), Faux leather material for style and comfort / 2 pockets of front, 2-For-One Hooded denim style faux leather jacket, Button detail on waist / Detail stitching at sides, HAND WASH ONLY / DO NOT BLEACH / LINE DRY / DO NOT IRON\",\n        \"categoryId\": 2,\n        \"grade\": 0,\n        \"reviewAmount\": 0,\n        \"image\": \"https://fakestoreapi.com/img/81XH0e8fefL._AC_UY879_t.png\",\n        \"amount\": 98,\n        \"availability\": true\n    },\n    {\n        \"id\": 17,\n        \"name\": \"Rain Jacket Women Windbreaker Striped Climbing Raincoats\",\n        \"price\": 3999,\n        \"description\": \"Lightweight perfet for trip or casual wear---Long sleeve with hooded, adjustable drawstring waist design. Button and zipper front closure raincoat, fully stripes Lined and The Raincoat has 2 side pockets are a good size to hold all kinds of things, it covers the hips, and the hood is generous but doesn't overdo it.Attached Cotton Lined Hood with Adjustable Drawstrings give it a real styled look.\",\n        \"categoryId\": 2,\n        \"grade\": 0,\n        \"reviewAmount\": 0,\n        \"image\": \"https://fakestoreapi.com/img/71HblAHs5xL._AC_UY879_-2t.png\",\n        \"amount\": 42,\n        \"availability\": true\n    },\n    {\n        \"id\": 18,\n        \"name\": \"MBJ Women's Solid Short Sleeve Boat Neck V \",\n        \"price\": 985,\n        \"description\": \"95% RAYON 5% SPANDEX, Made in USA or Imported, Do Not Bleach, Lightweight fabric with great stretch for comfort, Ribbed on sleeves and neckline / Double stitching on bottom hem\",\n        \"categoryId\": 2,\n        \"grade\": 0,\n        \"reviewAmount\": 0,\n        \"image\": \"https://fakestoreapi.com/img/71z3kpMAYsL._AC_UY879_t.png\",\n        \"amount\": 66,\n        \"availability\": true\n    },\n    {\n        \"id\": 19,\n        \"name\": \"Opna Women's Short Sleeve Moisture\",\n        \"price\": 795,\n        \"description\": \"100% Polyester, Machine wash, 100% cationic polyester interlock, Machine Wash & Pre Shrunk for a Great Fit, Lightweight, roomy and highly breathable with moisture wicking fabric which helps to keep moisture away, Soft Lightweight Fabric with comfortable V-neck collar and a slimmer fit, delivers a sleek, more feminine silhouette and Added Comfort\",\n        \"categoryId\": 2,\n        \"grade\": 0,\n        \"reviewAmount\": 0,\n        \"image\": \"https://fakestoreapi.com/img/51eg55uWmdL._AC_UX679_t.png\",\n        \"amount\": 76,\n        \"availability\": true\n    },\n    {\n        \"id\": 20,\n        \"name\": \"DANVOUY Womens T Shirt Casual Cotton Short\",\n        \"price\": 1299,\n        \"description\": \"95%Cotton,5%Spandex, Features: Casual, Short Sleeve, Letter Print,V-Neck,Fashion Tees, The fabric is soft and has some stretch., Occasion: Casual/Office/Beach/School/Home/Street. Season: Spring,Summer,Autumn,Winter.\",\n        \"categoryId\": 2,\n        \"grade\": 0,\n        \"reviewAmount\": 0,\n        \"image\": \"https://fakestoreapi.com/img/61pHAEJ4NML._AC_UX679_t.png\",\n        \"amount\": 13,\n        \"availability\": true\n    }\n]"},{"id":"1150827b-6a41-4604-9fb7-17f81e72f06c","name":"Invalid side value","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:8080/api/products?side=a","protocol":"http","host":["localhost"],"port":"8080","path":["api","products"],"query":[{"key":"side","value":"a","description":"Number of pages from which products should be returned"}]}},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Date","value":"Tue, 18 Nov 2025 23:18:17 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"[\n    {\n        \"id\": 1,\n        \"name\": \"Fjallraven - Foldsack No. 1 Backpack, Fits 15 Laptops\",\n        \"price\": 10995,\n        \"description\": \"Your perfect pack for everyday use and walks in the forest. Stash your laptop (up to 15 inches) in the padded sleeve, your everyday\",\n        \"categoryId\": 3,\n        \"grade\": 0,\n        \"reviewAmount\": 0,\n        \"image\": \"https://fakestoreapi.com/img/81fPKd-2AYL._AC_SL1500_t.png\",\n        \"amount\": 56,\n        \"availability\": true\n    },\n    {\n        \"id\": 2,\n        \"name\": \"Mens Casual Premium Slim Fit T-Shirts \",\n        \"price\": 2230,\n        \"description\": \"Slim-fitting style, contrast raglan long sleeve, three-button henley placket, light weight & soft fabric for breathable and comfortable wearing. And Solid stitched shirts with round neck made for durability and a great fit for casual fashion wear and diehard baseball fans. The Henley style round neckline includes a three-button placket.\",\n        \"categoryId\": 3,\n        \"grade\": 0,\n        \"reviewAmount\": 0,\n        \"image\": \"https://fakestoreapi.com/img/71-3HjGNDUL._AC_SY879._SX._UX._SY._UY_t.png\",\n        \"amount\": 67,\n        \"availability\": true\n    },\n    {\n        \"id\": 3,\n        \"name\": \"Mens Cotton Jacket\",\n        \"price\": 5599,\n        \"description\": \"great outerwear jackets for Spring/Autumn/Winter, suitable for many occasions, such as working, hiking, camping, mountain/rock climbing, cycling, traveling or other outdoors. Good gift choice for you or your family member. A warm hearted love to Father, husband or son in this thanksgiving or Christmas Day.\",\n        \"categoryId\": 3,\n        \"grade\": 0,\n        \"reviewAmount\": 0,\n        \"image\": \"https://fakestoreapi.com/img/71li-ujtlUL._AC_UX679_t.png\",\n        \"amount\": 91,\n        \"availability\": true\n    },\n    {\n        \"id\": 4,\n        \"name\": \"Mens Casual Slim Fit\",\n        \"price\": 1599,\n        \"description\": \"The color could be slightly different between on the screen and in practice. / Please note that body builds vary by person, therefore, detailed size information should be reviewed below on the product description.\",\n        \"categoryId\": 3,\n        \"grade\": 0,\n        \"reviewAmount\": 0,\n        \"image\": \"https://fakestoreapi.com/img/71YXzeOuslL._AC_UY879_t.png\",\n        \"amount\": 106,\n        \"availability\": true\n    },\n    {\n        \"id\": 5,\n        \"name\": \"test\",\n        \"price\": 150,\n        \"description\": \"test\",\n        \"categoryId\": 1,\n        \"grade\": 0,\n        \"reviewAmount\": 0,\n        \"image\": \"test\",\n        \"amount\": 5,\n        \"availability\": true\n    },\n    {\n        \"id\": 6,\n        \"name\": \"Solid Gold Petite Micropave \",\n        \"price\": 16800,\n        \"description\": \"Satisfaction Guaranteed. Return or exchange any order within 30 days.Designed and sold by Hafeez Center in the United States. Satisfaction Guaranteed. Return or exchange any order within 30 days.\",\n        \"categoryId\": 4,\n        \"grade\": 0,\n        \"reviewAmount\": 0,\n        \"image\": \"https://fakestoreapi.com/img/61sbMiUnoGL._AC_UL640_QL65_ML3_t.png\",\n        \"amount\": 70,\n        \"availability\": true\n    },\n    {\n        \"id\": 7,\n        \"name\": \"White Gold Plated Princess\",\n        \"price\": 999,\n        \"description\": \"Classic Created Wedding Engagement Solitaire Diamond Promise Ring for Her. Gifts to spoil your love more for Engagement, Wedding, Anniversary, Valentine's Day...\",\n        \"categoryId\": 4,\n        \"grade\": 0,\n        \"reviewAmount\": 0,\n        \"image\": \"https://fakestoreapi.com/img/71YAIFU48IL._AC_UL640_QL65_ML3_t.png\",\n        \"amount\": 62,\n        \"availability\": true\n    },\n    {\n        \"id\": 8,\n        \"name\": \"Pierced Owl Rose Gold Plated Stainless Steel Double\",\n        \"price\": 1099,\n        \"description\": \"Rose Gold Plated Double Flared Tunnel Plug Earrings. Made of 316L Stainless Steel\",\n        \"categoryId\": 4,\n        \"grade\": 0,\n        \"reviewAmount\": 0,\n        \"image\": \"https://fakestoreapi.com/img/51UDEzMJVpL._AC_UL640_QL65_ML3_t.png\",\n        \"amount\": 54,\n        \"availability\": true\n    },\n    {\n        \"id\": 9,\n        \"name\": \"WD 2TB Elements Portable External Hard Drive - USB 3.0 \",\n        \"price\": 6400,\n        \"description\": \"USB 3.0 and USB 2.0 Compatibility Fast data transfers Improve PC Performance High Capacity; Compatibility Formatted NTFS for Windows 10, Windows 8.1, Windows 7; Reformatting may be required for other operating systems; Compatibility may vary depending on user’s hardware configuration and operating system\",\n        \"categoryId\": 1,\n        \"grade\": 0,\n        \"reviewAmount\": 0,\n        \"image\": \"https://fakestoreapi.com/img/61IBBVJvSDL._AC_SY879_t.png\",\n        \"amount\": 72,\n        \"availability\": true\n    },\n    {\n        \"id\": 10,\n        \"name\": \"SanDisk SSD PLUS 1TB Internal SSD - SATA III 6 Gb/s\",\n        \"price\": 10900,\n        \"description\": \"Easy upgrade for faster boot up, shutdown, application load and response (As compared to 5400 RPM SATA 2.5” hard drive; Based on published specifications and internal benchmarking tests using PCMark vantage scores) Boosts burst write performance, making it ideal for typical PC workloads The perfect balance of performance and reliability Read/write speeds of up to 535MB/s/450MB/s (Based on internal testing; Performance may vary depending upon drive capacity, host device, OS and application.)\",\n        \"categoryId\": 1,\n        \"grade\": 0,\n        \"reviewAmount\": 0,\n        \"image\": \"https://fakestoreapi.com/img/61U7T1koQqL._AC_SX679_t.png\",\n        \"amount\": 12,\n        \"availability\": true\n    },\n    {\n        \"id\": 11,\n        \"name\": \"Silicon Power 256GB SSD 3D NAND A55 SLC Cache Performance Boost SATA III 2.5\",\n        \"price\": 10900,\n        \"description\": \"3D NAND flash are applied to deliver high transfer speeds Remarkable transfer speeds that enable faster bootup and improved overall system performance. The advanced SLC Cache Technology allows performance boost and longer lifespan 7mm slim design suitable for Ultrabooks and Ultra-slim notebooks. Supports TRIM command, Garbage Collection technology, RAID, and ECC (Error Checking & Correction) to provide the optimized performance and enhanced reliability.\",\n        \"categoryId\": 1,\n        \"grade\": 0,\n        \"reviewAmount\": 0,\n        \"image\": \"https://fakestoreapi.com/img/71kWymZ+c+L._AC_SX679_t.png\",\n        \"amount\": 81,\n        \"availability\": true\n    },\n    {\n        \"id\": 12,\n        \"name\": \"WD 4TB Gaming Drive Works with Playstation 4 Portable External Hard Drive\",\n        \"price\": 11400,\n        \"description\": \"Expand your PS4 gaming experience, Play anywhere Fast and easy, setup Sleek design with high capacity, 3-year manufacturer's limited warranty\",\n        \"categoryId\": 1,\n        \"grade\": 0,\n        \"reviewAmount\": 0,\n        \"image\": \"https://fakestoreapi.com/img/61mtL65D4cL._AC_SX679_t.png\",\n        \"amount\": 59,\n        \"availability\": true\n    },\n    {\n        \"id\": 13,\n        \"name\": \"Acer SB220Q bi 21.5 inches Full HD (1920 x 1080) IPS Ultra-Thin\",\n        \"price\": 59900,\n        \"description\": \"21. 5 inches Full HD (1920 x 1080) widescreen IPS display And Radeon free Sync technology. No compatibility for VESA Mount Refresh Rate: 75Hz - Using HDMI port Zero-frame design | ultra-thin | 4ms response time | IPS panel Aspect ratio - 16: 9. Color Supported - 16. 7 million colors. Brightness - 250 nit Tilt angle -5 degree to 15 degree. Horizontal viewing angle-178 degree. Vertical viewing angle-178 degree 75 hertz\",\n        \"categoryId\": 1,\n        \"grade\": 0,\n        \"reviewAmount\": 0,\n        \"image\": \"https://fakestoreapi.com/img/81QpkIctqPL._AC_SX679_t.png\",\n        \"amount\": 42,\n        \"availability\": true\n    },\n    {\n        \"id\": 14,\n        \"name\": \"Samsung 49-Inch CHG90 144Hz Curved Gaming Monitor (LC49HG90DMNXZA) – Super Ultrawide Screen QLED \",\n        \"price\": 99999,\n        \"description\": \"49 INCH SUPER ULTRAWIDE 32:9 CURVED GAMING MONITOR with dual 27 inch screen side by side QUANTUM DOT (QLED) TECHNOLOGY, HDR support and factory calibration provides stunningly realistic and accurate color and contrast 144HZ HIGH REFRESH RATE and 1ms ultra fast response time work to eliminate motion blur, ghosting, and reduce input lag\",\n        \"categoryId\": 1,\n        \"grade\": 0,\n        \"reviewAmount\": 0,\n        \"image\": \"https://fakestoreapi.com/img/81Zt42ioCgL._AC_SX679_t.png\",\n        \"amount\": 61,\n        \"availability\": true\n    },\n    {\n        \"id\": 15,\n        \"name\": \"BIYLACLESEN Women's 3-in-1 Snowboard Jacket Winter Coats\",\n        \"price\": 5699,\n        \"description\": \"Note:The Jackets is US standard size, Please choose size as your usual wear Material: 100% Polyester; Detachable Liner Fabric: Warm Fleece. Detachable Functional Liner: Skin Friendly, Lightweigt and Warm.Stand Collar Liner jacket, keep you warm in cold weather. Zippered Pockets: 2 Zippered Hand Pockets, 2 Zippered Pockets on Chest (enough to keep cards or keys)and 1 Hidden Pocket Inside.Zippered Hand Pockets and Hidden Pocket keep your things secure. Humanized Design: Adjustable and Detachable Hood and Adjustable cuff to prevent the wind and water,for a comfortable fit. 3 in 1 Detachable Design provide more convenience, you can separate the coat and inner as needed, or wear it together. It is suitable for different season and help you adapt to different climates\",\n        \"categoryId\": 2,\n        \"grade\": 0,\n        \"reviewAmount\": 0,\n        \"image\": \"https://fakestoreapi.com/img/51Y5NI-I5jL._AC_UX679_t.png\",\n        \"amount\": 96,\n        \"availability\": true\n    },\n    {\n        \"id\": 16,\n        \"name\": \"Lock and Love Women's Removable Hooded Faux Leather Moto Biker Jacket\",\n        \"price\": 2995,\n        \"description\": \"100% POLYURETHANE(shell) 100% POLYESTER(lining) 75% POLYESTER 25% COTTON (SWEATER), Faux leather material for style and comfort / 2 pockets of front, 2-For-One Hooded denim style faux leather jacket, Button detail on waist / Detail stitching at sides, HAND WASH ONLY / DO NOT BLEACH / LINE DRY / DO NOT IRON\",\n        \"categoryId\": 2,\n        \"grade\": 0,\n        \"reviewAmount\": 0,\n        \"image\": \"https://fakestoreapi.com/img/81XH0e8fefL._AC_UY879_t.png\",\n        \"amount\": 98,\n        \"availability\": true\n    },\n    {\n        \"id\": 17,\n        \"name\": \"Rain Jacket Women Windbreaker Striped Climbing Raincoats\",\n        \"price\": 3999,\n        \"description\": \"Lightweight perfet for trip or casual wear---Long sleeve with hooded, adjustable drawstring waist design. Button and zipper front closure raincoat, fully stripes Lined and The Raincoat has 2 side pockets are a good size to hold all kinds of things, it covers the hips, and the hood is generous but doesn't overdo it.Attached Cotton Lined Hood with Adjustable Drawstrings give it a real styled look.\",\n        \"categoryId\": 2,\n        \"grade\": 0,\n        \"reviewAmount\": 0,\n        \"image\": \"https://fakestoreapi.com/img/71HblAHs5xL._AC_UY879_-2t.png\",\n        \"amount\": 42,\n        \"availability\": true\n    },\n    {\n        \"id\": 18,\n        \"name\": \"MBJ Women's Solid Short Sleeve Boat Neck V \",\n        \"price\": 985,\n        \"description\": \"95% RAYON 5% SPANDEX, Made in USA or Imported, Do Not Bleach, Lightweight fabric with great stretch for comfort, Ribbed on sleeves and neckline / Double stitching on bottom hem\",\n        \"categoryId\": 2,\n        \"grade\": 0,\n        \"reviewAmount\": 0,\n        \"image\": \"https://fakestoreapi.com/img/71z3kpMAYsL._AC_UY879_t.png\",\n        \"amount\": 66,\n        \"availability\": true\n    },\n    {\n        \"id\": 19,\n        \"name\": \"Opna Women's Short Sleeve Moisture\",\n        \"price\": 795,\n        \"description\": \"100% Polyester, Machine wash, 100% cationic polyester interlock, Machine Wash & Pre Shrunk for a Great Fit, Lightweight, roomy and highly breathable with moisture wicking fabric which helps to keep moisture away, Soft Lightweight Fabric with comfortable V-neck collar and a slimmer fit, delivers a sleek, more feminine silhouette and Added Comfort\",\n        \"categoryId\": 2,\n        \"grade\": 0,\n        \"reviewAmount\": 0,\n        \"image\": \"https://fakestoreapi.com/img/51eg55uWmdL._AC_UX679_t.png\",\n        \"amount\": 76,\n        \"availability\": true\n    },\n    {\n        \"id\": 20,\n        \"name\": \"DANVOUY Womens T Shirt Casual Cotton Short\",\n        \"price\": 1299,\n        \"description\": \"95%Cotton,5%Spandex, Features: Casual, Short Sleeve, Letter Print,V-Neck,Fashion Tees, The fabric is soft and has some stretch., Occasion: Casual/Office/Beach/School/Home/Street. Season: Spring,Summer,Autumn,Winter.\",\n        \"categoryId\": 2,\n        \"grade\": 0,\n        \"reviewAmount\": 0,\n        \"image\": \"https://fakestoreapi.com/img/61pHAEJ4NML._AC_UX679_t.png\",\n        \"amount\": 13,\n        \"availability\": true\n    }\n]"}],"_postman_id":"e4bab11a-83b1-412e-ba89-f20db5c764c5"},{"name":"Add product","id":"ffbdc179-11dd-4638-b8fc-18eda087e645","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"name\": \"Cookies\",\n    \"price\": 500,\n    \"description\": \"Chocolate cookies\",\n    \"categoryId\": 2,\n    \"image\": \"imageOfCookies.png\",\n    \"amount\": 0,\n    \"availability\": true\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/api/products","description":"<p>Endpoint for adding a new product. This endpoint required ADMIN access, so valid JWT token has to be provided. All fields in an example request body is mandatory. Validation rules:</p>\n<ul>\n<li><p><strong>name</strong> – must not be blank; maximum length: 100 characters</p>\n</li>\n<li><p><strong>price</strong> – must not be null; must be positive</p>\n</li>\n<li><p><strong>description</strong> – must not be blank; maximum length: 1000 characters</p>\n</li>\n<li><p><strong>categoryId</strong> – must not be null; must be a positive number</p>\n</li>\n<li><p><strong>grade</strong> – must be in the range <strong>0.0 to 5.0</strong></p>\n</li>\n<li><p><strong>reviewAmount</strong> – must be <strong>zero or a positive integer</strong></p>\n</li>\n<li><p><strong>image</strong> – must not be blank</p>\n</li>\n<li><p><strong>amount</strong> (available quantity) – must not be null; minimum value: <strong>0</strong></p>\n</li>\n<li><p><strong>availability</strong> – must be a valid boolean value (true or false)</p>\n</li>\n</ul>\n","urlObject":{"protocol":"http","port":"8080","path":["api","products"],"host":["localhost"],"query":[],"variable":[]}},"response":[{"id":"2d79c2a6-9d70-4279-b708-48fb3bc86867","name":"200 (Ok)","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"name\": \"Cookies\",\n    \"price\": 500,\n    \"description\": \"Chocolate cookies\",\n    \"categoryId\": 2,\n    \"image\": \"imageOfCookies.png\",\n    \"amount\": 0,\n    \"availability\": true\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/api/products"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Type","value":"text/plain;charset=UTF-8"},{"key":"Content-Length","value":"28"},{"key":"Date","value":"Tue, 18 Nov 2025 23:20:35 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"Product was added correctly!"},{"id":"3c977d29-1bec-49eb-9912-bbdcdff97b88","name":"Validation error","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"name\": \"Cookies\",\n    \"price\": 500,\n    \"description\": \"Chocolate cookies\",\n    \"categoryId\": 2,\n    \"image\": \"imageOfCookies.png\",\n    \"availability\": true\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/api/products"},"status":"Bad Request","code":400,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Date","value":"Tue, 18 Nov 2025 23:21:43 GMT"},{"key":"Connection","value":"close"}],"cookie":[],"responseTime":null,"body":"{\n    \"amount\": \"Field 'amount' is mandatory!\"\n}"}],"_postman_id":"ffbdc179-11dd-4638-b8fc-18eda087e645"},{"name":"Update product","id":"18eeb82b-80d5-428f-b782-d38b26680f93","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":false},"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n        \"productId\": 2,\n        \"name\": \"Mens Casual Premium Slim Fit T-Shirts \",\n        \"price\": 2500,\n        \"description\": \"Slim-fitting style, contrast raglan long sleeve, three-button henley placket, light weight & soft fabric for breathable and comfortable wearing. And Solid stitched shirts with round neck made for durability and a great fit for casual fashion wear and diehard baseball fans. The Henley style round neckline includes a three-button placket.\",\n        \"categoryId\": 3,\n        \"image\": \"https://fakestoreapi.com/img/71-3HjGNDUL._AC_SY879._SX._UX._SY._UY_t.png\",\n        \"availability\": true\n    }","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/api/products","description":"<p>Endpoint for updating a product. This endpoint required ADMIN access, so valid JWT token has to be provided. All fields in an example request body is mandatory. Validation rules:</p>\n<ul>\n<li><p><strong>productId</strong> (product id) - msut be positive</p>\n</li>\n<li><p><strong>name</strong> – must not be blank; maximum length: 100 characters</p>\n</li>\n<li><p><strong>price</strong> – must not be null; must be positive</p>\n</li>\n<li><p><strong>description</strong> – must not be blank; maximum length: 1000 characters</p>\n</li>\n<li><p><strong>categoryId</strong> – must not be null; must be a positive number</p>\n</li>\n<li><p><strong>grade</strong> – must be in the range <strong>0.0 to 5.0</strong></p>\n</li>\n<li><p><strong>reviewAmount</strong> – must be <strong>zero or a positive integer</strong></p>\n</li>\n<li><p><strong>image</strong> – must not be blank</p>\n</li>\n<li><p><strong>amount</strong> (available quantity) – must not be null; minimum value: <strong>0</strong></p>\n</li>\n<li><p><strong>availability</strong> – must be a valid boolean value (true or false)</p>\n</li>\n</ul>\n","urlObject":{"protocol":"http","port":"8080","path":["api","products"],"host":["localhost"],"query":[],"variable":[]}},"response":[{"id":"374a708a-c5bb-4b18-9cc1-9bcf9a0f65ec","name":"200 (Ok)","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n        \"productId\": 2,\n        \"name\": \"Mens Casual Premium Slim Fit T-Shirts \",\n        \"price\": 2500,\n        \"description\": \"Slim-fitting style, contrast raglan long sleeve, three-button henley placket, light weight & soft fabric for breathable and comfortable wearing. And Solid stitched shirts with round neck made for durability and a great fit for casual fashion wear and diehard baseball fans. The Henley style round neckline includes a three-button placket.\",\n        \"categoryId\": 3,\n        \"image\": \"https://fakestoreapi.com/img/71-3HjGNDUL._AC_SY879._SX._UX._SY._UY_t.png\",\n        \"amount\": 58,\n        \"availability\": true\n    }","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/api/products"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Type","value":"text/plain;charset=UTF-8"},{"key":"Content-Length","value":"30"},{"key":"Date","value":"Tue, 18 Nov 2025 23:29:50 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"Product was updated correctly!"},{"id":"39de6a6d-2fbf-4c9c-8c95-916d7ce6631b","name":"Product not found","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n        \"productId\": 99,\n        \"name\": \"Mens Casual Premium Slim Fit T-Shirts \",\n        \"price\": 2500,\n        \"description\": \"Slim-fitting style, contrast raglan long sleeve, three-button henley placket, light weight & soft fabric for breathable and comfortable wearing. And Solid stitched shirts with round neck made for durability and a great fit for casual fashion wear and diehard baseball fans. The Henley style round neckline includes a three-button placket.\",\n        \"categoryId\": 3,\n        \"image\": \"https://fakestoreapi.com/img/71-3HjGNDUL._AC_SY879._SX._UX._SY._UY_t.png\",\n        \"amount\": 58,\n        \"availability\": true\n    }","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/api/products"},"status":"Not Found","code":404,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Type","value":"text/plain;charset=UTF-8"},{"key":"Content-Length","value":"83"},{"key":"Date","value":"Tue, 18 Nov 2025 23:30:03 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"Product passed for update doesn't exist (or ID of product wasn't passed correctly)!"},{"id":"3ad394a0-0b22-47ef-9f08-b4ec0a2be3d2","name":"Validation error","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n        \"productId\": 2,\n        \"name\": \"Mens Casual Premium Slim Fit T-Shirts \",\n        \"price\": 2500,\n        \"description\": \"Slim-fitting style, contrast raglan long sleeve, three-button henley placket, light weight & soft fabric for breathable and comfortable wearing. And Solid stitched shirts with round neck made for durability and a great fit for casual fashion wear and diehard baseball fans. The Henley style round neckline includes a three-button placket.\",\n        \"categoryId\": 3,\n        \"image\": \"https://fakestoreapi.com/img/71-3HjGNDUL._AC_SY879._SX._UX._SY._UY_t.png\",\n        \"availability\": true\n    }","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/api/products"},"status":"Bad Request","code":400,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Date","value":"Wed, 19 Nov 2025 17:50:20 GMT"},{"key":"Connection","value":"close"}],"cookie":[],"responseTime":null,"body":"{\n    \"amount\": \"Field 'amount' is mandatory!\"\n}"}],"_postman_id":"18eeb82b-80d5-428f-b782-d38b26680f93"},{"name":"Get amount of sides for products","id":"2c5f8626-d68d-4244-ac18-906aec62451d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:8080/api/productsSideAmount","description":"<p>Endpoint to get number of pages base on amount of products in database.</p>\n","urlObject":{"protocol":"http","port":"8080","path":["api","productsSideAmount"],"host":["localhost"],"query":[],"variable":[]}},"response":[{"id":"332616e4-4add-47c5-9d66-4ba3fcb6e54b","name":"200 (Ok)","originalRequest":{"method":"GET","header":[],"url":"http://localhost:8080/api/productsSideAmount"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Date","value":"Tue, 18 Nov 2025 23:30:54 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"2"}],"_postman_id":"2c5f8626-d68d-4244-ac18-906aec62451d"},{"name":"Change 'availability' of product","id":"1272d1e1-212e-4637-8579-3739a1bc5513","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":false},"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n        \"productId\": 2\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/api/products/availability","description":"<p>Endpoint to change 'availability' value of product in database. This endpoint required ADMIN access, so valid JWT token has to be provided. Validation rules for request body:</p>\n<ul>\n<li><p><strong>productId</strong> - must be positive</p>\n</li>\n<li><p><strong>availability</strong> - must be a valid boolean value (true or false)</p>\n</li>\n</ul>\n","urlObject":{"protocol":"http","port":"8080","path":["api","products","availability"],"host":["localhost"],"query":[],"variable":[]}},"response":[{"id":"ea684f57-6fca-434b-a266-d1490d1ed288","name":"200 (Ok)","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n        \"productId\": 2,\n        \"availability\": false\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/api/products/availability"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Type","value":"text/plain;charset=UTF-8"},{"key":"Content-Length","value":"51"},{"key":"Date","value":"Tue, 18 Nov 2025 23:33:10 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"Availability of product has been changed correctly!"},{"id":"016c2145-518b-4bd8-88ad-2108780229c6","name":"Product not found","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n        \"productId\": 99,\n        \"availability\": false\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/api/products/availability"},"status":"Not Found","code":404,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Type","value":"text/plain;charset=UTF-8"},{"key":"Content-Length","value":"62"},{"key":"Date","value":"Tue, 18 Nov 2025 23:33:30 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"Product passed for update 'availability' status doesn't exist!"},{"id":"f92ee870-b9f8-444b-bca4-fbb591f24762","name":"Validation error","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n        \"productId\": 2\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/api/products/availability"},"status":"Bad Request","code":400,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Date","value":"Wed, 19 Nov 2025 17:51:05 GMT"},{"key":"Connection","value":"close"}],"cookie":[],"responseTime":null,"body":"{\n    \"availability\": \"Field 'availability' is mandatory!\"\n}"}],"_postman_id":"1272d1e1-212e-4637-8579-3739a1bc5513"}],"id":"0111b9c0-61a6-4508-825a-df15850a586c","description":"<p>This is a collection of endpoints for performing operations on products in the database.</p>\n","_postman_id":"0111b9c0-61a6-4508-825a-df15850a586c"},{"name":"Category","item":[{"name":"Get all categories","id":"f42c8b1f-2807-4f57-9bf2-c7ccf04a6fd5","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:8080/api/categories","description":"<p>Endpoint to get information about all saved categories.</p>\n","urlObject":{"protocol":"http","port":"8080","path":["api","categories"],"host":["localhost"],"query":[],"variable":[]}},"response":[{"id":"47f4cc3b-afce-41c9-a442-432a4bf85d08","name":"200 (Ok)","originalRequest":{"method":"GET","header":[],"url":"http://localhost:8080/api/categories"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Date","value":"Wed, 19 Nov 2025 17:52:45 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"[\n    {\n        \"id\": 1,\n        \"name\": \"electronics\"\n    },\n    {\n        \"id\": 2,\n        \"name\": \"b\"\n    },\n    {\n        \"id\": 3,\n        \"name\": \"men's clothing\"\n    },\n    {\n        \"id\": 4,\n        \"name\": \"jewelery\"\n    },\n    {\n        \"id\": 5,\n        \"name\": \"test\"\n    },\n    {\n        \"id\": 6,\n        \"name\": \"-50\"\n    },\n    {\n        \"id\": 7,\n        \"name\": \"true\"\n    }\n]"}],"_postman_id":"f42c8b1f-2807-4f57-9bf2-c7ccf04a6fd5"},{"name":"Get category by ID","id":"2201efab-17e2-4e1c-ae03-7bb8fbf17207","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:8080/api/categories/:categoryId/category","description":"<p>Endpoint to get information about category with passed ID.</p>\n","urlObject":{"protocol":"http","port":"8080","path":["api","categories",":categoryId","category"],"host":["localhost"],"query":[],"variable":[{"description":{"content":"<p>ID of category from database</p>\n","type":"text/plain"},"type":"any","value":"2","key":"categoryId"}]}},"response":[{"id":"865e8e7b-e468-44eb-8a97-1cd0da3f5d88","name":"200 (Ok)","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:8080/api/categories/:categoryId/category","protocol":"http","host":["localhost"],"port":"8080","path":["api","categories",":categoryId","category"],"variable":[{"key":"categoryId","value":"2","description":"ID of category from database"}]}},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Date","value":"Wed, 19 Nov 2025 17:53:27 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": 2,\n    \"name\": \"b\"\n}"},{"id":"c1e9c5b1-114f-4d98-83f2-135c18385dc0","name":"Category not found","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:8080/api/categories/:categoryId/category","protocol":"http","host":["localhost"],"port":"8080","path":["api","categories",":categoryId","category"],"variable":[{"key":"categoryId","value":"99","description":"ID of category from database"}]}},"status":"Not Found","code":404,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Type","value":"text/plain;charset=UTF-8"},{"key":"Content-Length","value":"35"},{"key":"Date","value":"Wed, 19 Nov 2025 17:53:39 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"Could not find category with ID: 99"}],"_postman_id":"2201efab-17e2-4e1c-ae03-7bb8fbf17207"},{"name":"Add category","id":"494a9758-cf95-43c7-8a91-53d7ed77a05b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"name\": \"Food\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/api/category","description":"<p>Endpoint to add new category to database. This endpoint required ADMIN access, so valid JWT token has to be provided. All fields in an example request body is mandatory. Validation rules:</p>\n<ul>\n<li><strong>name</strong> - must be not blank ; must be unique</li>\n</ul>\n","urlObject":{"protocol":"http","port":"8080","path":["api","category"],"host":["localhost"],"query":[],"variable":[]}},"response":[{"id":"f5970dae-defe-408e-8aed-ba246f87f165","name":"200 (Ok)","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"name\": \"Cars\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/api/category"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Type","value":"text/plain;charset=UTF-8"},{"key":"Content-Length","value":"29"},{"key":"Date","value":"Wed, 19 Nov 2025 17:55:38 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"Category was added correctly!"},{"id":"5ad784bc-caf4-43a0-82ee-efbc7b1b88a6","name":"Category already exist","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"name\": \"Food\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/api/category"},"status":"Bad Request","code":400,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Type","value":"text/plain;charset=UTF-8"},{"key":"Content-Length","value":"42"},{"key":"Date","value":"Wed, 19 Nov 2025 17:56:13 GMT"},{"key":"Connection","value":"close"}],"cookie":[],"responseTime":null,"body":"Category with name - Food - already exist!"}],"_postman_id":"494a9758-cf95-43c7-8a91-53d7ed77a05b"},{"name":"Update category","id":"23f3c32a-58f6-495e-a4d7-858b663aaf59","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":false},"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n    \"id\": 9,\n    \"name\": \"Houses\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/api/category","description":"<p>Endpoint to update existing category in database. This endpoint required ADMIN access, so valid JWT token has to be provided. All fields in an example request body is mandatory. Validation rules:</p>\n<ul>\n<li><p><strong>id</strong> - must be positive</p>\n</li>\n<li><p><strong>name</strong> - must be not blank ; must be unique</p>\n</li>\n</ul>\n","urlObject":{"protocol":"http","port":"8080","path":["api","category"],"host":["localhost"],"query":[],"variable":[]}},"response":[{"id":"d96d3ed3-c371-45c9-a321-cbe23f5a478a","name":"200 (Ok)","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n    \"id\": 2,\n    \"name\": \"Drinks\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/api/category"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Type","value":"text/plain;charset=UTF-8"},{"key":"Content-Length","value":"31"},{"key":"Date","value":"Wed, 19 Nov 2025 17:58:34 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"Category was updated correctly!"},{"id":"5018323b-9e74-4f0f-a007-1dcff7fcd34c","name":"Category not found","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n    \"id\": 99,\n    \"name\": \"Garages\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/api/category"},"status":"Not Found","code":404,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Type","value":"text/plain;charset=UTF-8"},{"key":"Content-Length","value":"49"},{"key":"Date","value":"Wed, 19 Nov 2025 17:59:04 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"Category that was passed to update doesn't exist!"},{"id":"a21ccb83-275d-4f89-9967-cf1d0389481d","name":"Category already exist","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n    \"id\": 9,\n    \"name\": \"Houses\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/api/category"},"status":"Bad Request","code":400,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Type","value":"text/plain;charset=UTF-8"},{"key":"Content-Length","value":"59"},{"key":"Date","value":"Wed, 19 Nov 2025 17:59:22 GMT"},{"key":"Connection","value":"close"}],"cookie":[],"responseTime":null,"body":"Couldn't update category name, because it is already exist!"}],"_postman_id":"23f3c32a-58f6-495e-a4d7-858b663aaf59"},{"name":"Delete category","id":"bf2910bd-635c-465f-b41d-a566bfb6cbc0","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":false},"method":"DELETE","header":[],"body":{"mode":"raw","raw":"{\n    \"categoryIdToDelete\": 1,\n    \"categoryIdToSwap\": 9\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/api/category","description":"<p>Endpoint to delete existing category in database. This endpoint requires ADMIN access, so valid JWT token has to be provided. All fields in an example request body are mandatory. Validation rules:</p>\n<ul>\n<li><p><strong>categoryIdToDelete</strong> - ID of category that will be deleted ; must be a positive number</p>\n</li>\n<li><p><strong>categoryIdToSwap</strong> - ID of category that will replace the deleted one ; must be a positive number</p>\n</li>\n</ul>\n","urlObject":{"protocol":"http","port":"8080","path":["api","category"],"host":["localhost"],"query":[],"variable":[]}},"response":[{"id":"ffb0640f-b9f6-4dc8-be72-215ab61d3368","name":"200 (Ok)","originalRequest":{"method":"DELETE","header":[],"body":{"mode":"raw","raw":"{\n    \"categoryIdToDelete\": 4,\n    \"categoryIdToSwap\": 9\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/api/category"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Type","value":"text/plain;charset=UTF-8"},{"key":"Content-Length","value":"31"},{"key":"Date","value":"Wed, 19 Nov 2025 18:05:32 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"Category was deleted correctly!"},{"id":"4fada1b4-ddee-4c62-9aee-43f590365a3c","name":"Category not found","originalRequest":{"method":"DELETE","header":[],"body":{"mode":"raw","raw":"{\n    \"categoryIdToDelete\": 99,\n    \"categoryIdToSwap\": 9\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/api/category"},"status":"Not Found","code":404,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Type","value":"text/plain;charset=UTF-8"},{"key":"Content-Length","value":"49"},{"key":"Date","value":"Wed, 19 Nov 2025 18:05:46 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"Category that was passed to delete doesn't exist!"}],"_postman_id":"bf2910bd-635c-465f-b41d-a566bfb6cbc0"}],"id":"6b728039-293e-4f32-9b76-af37045b892d","description":"<p>This is a collection of endpoints for managing product categories.</p>\n","_postman_id":"6b728039-293e-4f32-9b76-af37045b892d"},{"name":"Review","item":[{"name":"Get product reviews","id":"3d6e21ea-af0d-4627-8a59-13d109b23fc9","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:8080/api/reviews/:productId/product","description":"<p>Endpot to get all reviews about passed product (by ID).</p>\n","urlObject":{"protocol":"http","port":"8080","path":["api","reviews",":productId","product"],"host":["localhost"],"query":[],"variable":[{"description":{"content":"<p>ID of product</p>\n","type":"text/plain"},"type":"any","value":"4","key":"productId"}]}},"response":[{"id":"43a650b9-8db2-4def-9169-df6b51dbc04b","name":"200 (Ok)","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:8080/api/reviews/:productId/product","protocol":"http","host":["localhost"],"port":"8080","path":["api","reviews",":productId","product"],"variable":[{"key":"productId","value":"4","description":"ID of product"}]}},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Date","value":"Wed, 19 Nov 2025 18:09:45 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"[\n    {\n        \"id\": 1,\n        \"productId\": 4,\n        \"userId\": 1,\n        \"reviewText\": \"Average\",\n        \"grade\": 300,\n        \"releaseDate\": \"2025-11-19\"\n    }\n]"},{"id":"5b6afbb2-3128-436e-aa87-073df863feff","name":"Product not found","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:8080/api/reviews/:productId/product","protocol":"http","host":["localhost"],"port":"8080","path":["api","reviews",":productId","product"],"variable":[{"key":"productId","value":"99","description":"ID of product"}]}},"status":"Not Found","code":404,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Type","value":"text/plain;charset=UTF-8"},{"key":"Content-Length","value":"35"},{"key":"Date","value":"Wed, 19 Nov 2025 18:10:11 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"Couldn't find product with ID: 99 !"}],"_postman_id":"3d6e21ea-af0d-4627-8a59-13d109b23fc9"},{"name":"Get all user reviews","id":"2447a392-4be2-4403-95a3-bd68cbe15bcf","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":false},"method":"GET","header":[],"url":"http://localhost:8080/api/reviews/:userId/user","description":"<p>Endpoint for retriving all reviews authored by given user (by ID). Access is restricted to the user themselves or an ADMIN.</p>\n","urlObject":{"protocol":"http","port":"8080","path":["api","reviews",":userId","user"],"host":["localhost"],"query":[],"variable":[{"description":{"content":"<p>ID of user</p>\n","type":"text/plain"},"type":"any","value":"1","key":"userId"}]}},"response":[{"id":"c4ffae67-78fe-4a97-955a-d94b46ef39e3","name":"200 (Ok)","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:8080/api/reviews/:userId/user","protocol":"http","host":["localhost"],"port":"8080","path":["api","reviews",":userId","user"],"variable":[{"key":"userId","value":"1","description":"ID of user"}]}},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Date","value":"Wed, 19 Nov 2025 18:12:47 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"[\n    {\n        \"id\": 1,\n        \"productId\": 4,\n        \"userId\": 1,\n        \"reviewText\": \"Average\",\n        \"grade\": 300,\n        \"releaseDate\": \"2025-11-19\"\n    }\n]"},{"id":"a7758807-660d-4438-84bb-b810373560d6","name":"Unauthorized access to other reviews","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:8080/api/reviews/:userId/user","protocol":"http","host":["localhost"],"port":"8080","path":["api","reviews",":userId","user"],"variable":[{"key":"userId","value":"1","description":"ID of user"}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Length","value":"0"},{"key":"Date","value":"Wed, 19 Nov 2025 18:14:09 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":null}],"_postman_id":"2447a392-4be2-4403-95a3-bd68cbe15bcf"},{"name":"Add review","id":"21e512d1-8338-4c3b-b32f-acca78a0fff1","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"productId\": 5,\n    \"reviewText\": \"Brilliant\",\n    \"grade\": 5.0\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/api/reviews/:userId/user","description":"<p>Endpoint to add new review. Only authorized user can add reviews, and each user can submit only one review per prduct. The userId of the reviewer is provided as a path parameter in the URL. All fields in body are mandatory. Validation rules:</p>\n<ul>\n<li><p><strong>productId</strong> - must be a positive number</p>\n</li>\n<li><p><strong>reviewText</strong> - max number of characters is 1000</p>\n</li>\n<li><p><strong>grade</strong> - must be number in range of 0.0 to 5.0</p>\n</li>\n</ul>\n","urlObject":{"protocol":"http","port":"8080","path":["api","reviews",":userId","user"],"host":["localhost"],"query":[],"variable":[{"description":{"content":"<p>ID of user</p>\n","type":"text/plain"},"type":"any","value":"3","key":"userId"}]}},"response":[{"id":"fa5bab4e-74dd-44e1-b0e7-4cfb050148cd","name":"200 (Ok)","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"productId\": 5,\n    \"reviewText\": \"Brilliant\",\n    \"grade\": 5.0\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"http://localhost:8080/api/reviews/:userId/user","protocol":"http","host":["localhost"],"port":"8080","path":["api","reviews",":userId","user"],"variable":[{"key":"userId","value":"3","description":"ID of user"}]}},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Type","value":"text/plain;charset=UTF-8"},{"key":"Content-Length","value":"27"},{"key":"Date","value":"Wed, 19 Nov 2025 18:19:41 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"Review was added correctly!"},{"id":"73d04d6a-3d30-4ef4-ac8b-aa64397480d4","name":"Wrong userId","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"productId\": 5,\n    \"reviewText\": \"Brilliant\",\n    \"grade\": 5.0\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"http://localhost:8080/api/reviews/:userId/user","protocol":"http","host":["localhost"],"port":"8080","path":["api","reviews",":userId","user"],"variable":[{"key":"userId","value":"4","description":"ID of user"}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Length","value":"0"},{"key":"Date","value":"Wed, 19 Nov 2025 18:19:58 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":null},{"id":"a0ece6da-c7e9-4dcf-9fea-7e6e34191d01","name":"Review already exist","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"productId\": 5,\n    \"reviewText\": \"Average\",\n    \"grade\": 3.0\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"http://localhost:8080/api/reviews/:userId/user","protocol":"http","host":["localhost"],"port":"8080","path":["api","reviews",":userId","user"],"variable":[{"key":"userId","value":"3","description":"ID of user"}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Type","value":"text/plain;charset=UTF-8"},{"key":"Content-Length","value":"59"},{"key":"Date","value":"Wed, 19 Nov 2025 18:20:32 GMT"},{"key":"Connection","value":"close"}],"cookie":[],"responseTime":null,"body":"User already reviewed this product, can't add more reviews!"},{"id":"f90610b2-fd90-4111-840f-76f070189cbd","name":"Validation error","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"productId\": 5,\n    \"reviewText\": \"Average\",\n    \"grade\": 5.5\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"http://localhost:8080/api/reviews/:userId/user","protocol":"http","host":["localhost"],"port":"8080","path":["api","reviews",":userId","user"],"variable":[{"key":"userId","value":"3","description":"ID of user"}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Date","value":"Wed, 19 Nov 2025 18:20:46 GMT"},{"key":"Connection","value":"close"}],"cookie":[],"responseTime":null,"body":"{\n    \"grade\": \"Field 'grade' must be lower or equal 5!\"\n}"}],"_postman_id":"21e512d1-8338-4c3b-b32f-acca78a0fff1"},{"name":"Update review","id":"53dba6fa-978d-45e3-bf8f-6448ce27d232","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":false},"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n    \"reviewId\": 2,\n    \"reviewText\": \"Average\",\n    \"grade\": 3.0\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/api/reviews/:userId/user","description":"<p>Endpoint to update existing review. Only authorized users can upgrade their own reviews. The userId of the reviewer is provided as a path parameter in the URL. All fields in body are mandatory. Validation ruels:</p>\n<ul>\n<li><p><strong>reviewId</strong> - must be a positive number</p>\n</li>\n<li><p><strong>reviewText</strong> - max number of characters is 1000</p>\n</li>\n<li><p><strong>grade</strong> - must be number in range of 0.0 to 5.0</p>\n</li>\n</ul>\n","urlObject":{"protocol":"http","port":"8080","path":["api","reviews",":userId","user"],"host":["localhost"],"query":[],"variable":[{"description":{"content":"<p>ID of user</p>\n","type":"text/plain"},"type":"any","value":"3","key":"userId"}]}},"response":[{"id":"9f6bf920-49c2-4dc3-9c5e-227614d866fb","name":"Unauthorized review update","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n    \"reviewId\": 1,\n    \"reviewText\": \"Average\",\n    \"grade\": 3.0\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"http://localhost:8080/api/reviews/:userId/user","protocol":"http","host":["localhost"],"port":"8080","path":["api","reviews",":userId","user"],"variable":[{"key":"userId","value":"3","description":"ID of user"}]}},"status":"Not Found","code":404,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Type","value":"text/plain;charset=UTF-8"},{"key":"Content-Length","value":"37"},{"key":"Date","value":"Wed, 19 Nov 2025 18:25:20 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"Passed review belong to another user!"},{"id":"e67a288f-1152-4d87-8b5d-7a8b1468c42a","name":"200 (Ok)","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n    \"reviewId\": 2,\n    \"reviewText\": \"Fatal\",\n    \"grade\": 1.5\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"http://localhost:8080/api/reviews/:userId/user","protocol":"http","host":["localhost"],"port":"8080","path":["api","reviews",":userId","user"],"variable":[{"key":"userId","value":"3","description":"ID of user"}]}},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Type","value":"text/plain;charset=UTF-8"},{"key":"Content-Length","value":"29"},{"key":"Date","value":"Wed, 19 Nov 2025 18:25:57 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"Review was updated correctly!"},{"id":"b001d268-40e8-40c9-8d02-e25c004cc28e","name":"Review not found","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n    \"reviewId\": 9,\n    \"reviewText\": \"Fatal\",\n    \"grade\": 1.5\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"http://localhost:8080/api/reviews/:userId/user","protocol":"http","host":["localhost"],"port":"8080","path":["api","reviews",":userId","user"],"variable":[{"key":"userId","value":"3","description":"ID of user"}]}},"status":"Not Found","code":404,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Type","value":"text/plain;charset=UTF-8"},{"key":"Content-Length","value":"47"},{"key":"Date","value":"Wed, 19 Nov 2025 18:26:12 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"Review that was passed to update doesn't exist!"},{"id":"db035669-a2eb-46e0-83f0-f6ff5dbd7ed5","name":"Validation error","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n    \"reviewId\": 9,\n    \"reviewText\": \"Fatal\",\n    \"grade\": -2\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"http://localhost:8080/api/reviews/:userId/user","protocol":"http","host":["localhost"],"port":"8080","path":["api","reviews",":userId","user"],"variable":[{"key":"userId","value":"3","description":"ID of user"}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Date","value":"Wed, 19 Nov 2025 18:26:29 GMT"},{"key":"Connection","value":"close"}],"cookie":[],"responseTime":null,"body":"{\n    \"grade\": \"Field 'grade' must be greater or equal 0!\"\n}"}],"_postman_id":"53dba6fa-978d-45e3-bf8f-6448ce27d232"},{"name":"Delete review","id":"0942a340-4984-4d58-82ca-5e219d73976d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":false},"method":"DELETE","header":[],"url":"http://localhost:8080/api/review/:userId/user/:reviewID/review","description":"<p>Endpoint to delete existing review. Onlu authorized suer can delete their own reviews.</p>\n","urlObject":{"protocol":"http","port":"8080","path":["api","review",":userId","user",":reviewID","review"],"host":["localhost"],"query":[],"variable":[{"description":{"content":"<p>ID of user who deletes the review</p>\n","type":"text/plain"},"type":"any","value":"2","key":"userId"},{"description":{"content":"<p>ID of review to delete</p>\n","type":"text/plain"},"type":"any","value":"1","key":"reviewID"}]}},"response":[{"id":"2a8c9ab4-ad4f-4c02-bc52-b93acdade118","name":"200 (Ok)","originalRequest":{"method":"DELETE","header":[],"url":{"raw":"http://localhost:8080/api/review/:userId/user/:reviewID/review","protocol":"http","host":["localhost"],"port":"8080","path":["api","review",":userId","user",":reviewID","review"],"variable":[{"key":"userId","value":"3","description":"ID of user who deletes the review"},{"key":"reviewID","value":"2","description":"ID of review to delete"}]}},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Type","value":"text/plain;charset=UTF-8"},{"key":"Content-Length","value":"29"},{"key":"Date","value":"Wed, 19 Nov 2025 18:30:10 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"Review was deleted correctly!"},{"id":"8bba4ad8-1e57-485f-80ea-7ff766cfffd8","name":"Unauthorized review delete","originalRequest":{"method":"DELETE","header":[],"url":{"raw":"http://localhost:8080/api/review/:userId/user/:reviewID/review","protocol":"http","host":["localhost"],"port":"8080","path":["api","review",":userId","user",":reviewID","review"],"variable":[{"key":"userId","value":"3","description":"ID of user who deletes the review"},{"key":"reviewID","value":"1","description":"ID of review to delete"}]}},"status":"Not Found","code":404,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Type","value":"text/plain;charset=UTF-8"},{"key":"Content-Length","value":"74"},{"key":"Date","value":"Wed, 19 Nov 2025 18:30:25 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"Passed review ID doesn't match with ID connect to passed user in database!"},{"id":"7fc49a3f-ee38-4577-b365-74e31e854778","name":"Review not found","originalRequest":{"method":"DELETE","header":[],"url":{"raw":"http://localhost:8080/api/review/:userId/user/:reviewID/review","protocol":"http","host":["localhost"],"port":"8080","path":["api","review",":userId","user",":reviewID","review"],"variable":[{"key":"userId","value":"3","description":"ID of user who deletes the review"},{"key":"reviewID","value":"99","description":"ID of review to delete"}]}},"status":"Not Found","code":404,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Type","value":"text/plain;charset=UTF-8"},{"key":"Content-Length","value":"47"},{"key":"Date","value":"Wed, 19 Nov 2025 18:30:49 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"Review that was passed to delete doesn't exist!"},{"id":"7ff49d02-cd19-4cd3-a9e0-f6c2fbf4b97b","name":"Wrong user","originalRequest":{"method":"DELETE","header":[],"url":{"raw":"http://localhost:8080/api/review/:userId/user/:reviewID/review","protocol":"http","host":["localhost"],"port":"8080","path":["api","review",":userId","user",":reviewID","review"],"variable":[{"key":"userId","value":"2","description":"ID of user who deletes the review"},{"key":"reviewID","value":"1","description":"ID of review to delete"}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Type","value":"text/plain;charset=UTF-8"},{"key":"Content-Length","value":"63"},{"key":"Date","value":"Wed, 19 Nov 2025 18:31:01 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"User that sent request is not the same in delete review object!"}],"_postman_id":"0942a340-4984-4d58-82ca-5e219d73976d"}],"id":"d79f0010-c784-4e41-80f8-82d08d9b74f5","description":"<p>This is a collection of enpoints for retrieving, adding and updating reviews.</p>\n","_postman_id":"d79f0010-c784-4e41-80f8-82d08d9b74f5"},{"name":"Auth","item":[{"name":"Register user","id":"6789117b-0247-4275-a418-07447d05d561","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"firstName\": \"Paul\",\n    \"lastName\": \"Saulo\",\n    \"email\": \"paul@example.com\",\n    \"phoneNumber\": \"555 666 999\",\n    \"password\": \"paulSaulo\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/api/auth/register","description":"<p>Endpoint to register new user in database. All fields in example body is mandatory. Validation rules:</p>\n<ul>\n<li><p><strong>firstName</strong> - must be not blank ; max 50 caracters</p>\n</li>\n<li><p><strong>lastName</strong> - must be not blank ; max 100 characters</p>\n</li>\n<li><p><strong>email</strong> - must be not blank ; max 100 caracters</p>\n</li>\n<li><p><strong>phoneNumber</strong> - must be not blank ; in format \"XXX XXX XXX\" where X is a single number</p>\n</li>\n<li><p><strong>password</strong> - must be not blank ; min 8 characters</p>\n</li>\n</ul>\n","urlObject":{"protocol":"http","port":"8080","path":["api","auth","register"],"host":["localhost"],"query":[],"variable":[]}},"response":[{"id":"bf21cd71-d33c-416b-8c91-638e04fa3a2c","name":"200 (Ok)","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"firstName\": \"Paul\",\n    \"lastName\": \"Saulo\",\n    \"email\": \"paul@example.com\",\n    \"phoneNumber\": \"555 666 999\",\n    \"password\": \"paulSaulo\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/api/auth/register"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Type","value":"text/plain;charset=UTF-8"},{"key":"Content-Length","value":"26"},{"key":"Date","value":"Wed, 19 Nov 2025 18:33:47 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"User registered correctly!"},{"id":"1068098d-94f6-4ec4-826b-5af91ca3a07c","name":"User already exist","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"firstName\": \"Paul\",\n    \"lastName\": \"Saulo\",\n    \"email\": \"paul@example.com\",\n    \"phoneNumber\": \"555 666 999\",\n    \"password\": \"paulSaulo\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/api/auth/register"},"status":"Bad Request","code":400,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Type","value":"text/plain;charset=UTF-8"},{"key":"Content-Length","value":"48"},{"key":"Date","value":"Wed, 19 Nov 2025 18:36:58 GMT"},{"key":"Connection","value":"close"}],"cookie":[],"responseTime":null,"body":"User with email: paul@example.com already exist!"},{"id":"8418ca4a-f442-47c3-8637-000e2f7b1768","name":"Validation error","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"firstName\": \"Paul\",\n    \"lastName\": \"Saulo\",\n    \"email\": \"paul@example.com\",\n    \"phoneNumber\": \"555 666 99a\",\n    \"password\": \"paulSaulo\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/api/auth/register"},"status":"Bad Request","code":400,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Date","value":"Wed, 19 Nov 2025 18:37:12 GMT"},{"key":"Connection","value":"close"}],"cookie":[],"responseTime":null,"body":"{\n    \"phoneNumber\": \"Field 'phoneNumber' must be in format: XXX XXX XXX\"\n}"}],"_postman_id":"6789117b-0247-4275-a418-07447d05d561"},{"name":"Login user","id":"2b5865da-628a-4d1a-bafd-d13aa2d68b65","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"email\": \"paul@example.com\",\n    \"password\": \"paulSaulo\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/api/auth/login","description":"<p>Endpoint to log in a user. All fields in example body is mandatory. Validation rules:</p>\n<ul>\n<li><p><strong>email</strong> - must be not blank ; max 100 characters</p>\n</li>\n<li><p><strong>password</strong> - must be not blank ; min 8 characters</p>\n</li>\n</ul>\n","urlObject":{"protocol":"http","port":"8080","path":["api","auth","login"],"host":["localhost"],"query":[],"variable":[]}},"response":[{"id":"d88b0bff-64f6-4bbc-9320-f4e845ac5f56","name":"200 (Ok)","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"email\": \"paul@example.com\",\n    \"password\": \"paulSaulo\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/api/auth/login"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Date","value":"Wed, 19 Nov 2025 18:39:25 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"token\": \"eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJwYXVsQGV4YW1wbGUuY29tIiwiaWF0IjoxNzYzNTc3NTY1LCJleHAiOjE3NjM1ODExNjV9.Mj8oqua6XafQOKMDNQGHwweUp8UCfhyBSxF7XAiroSU\"\n}"},{"id":"79ece4b7-490f-495c-b445-50a267218a22","name":"User not found","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"email\": \"paul@email.com\",\n    \"password\": \"paulSaulo\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/api/auth/login"},"status":"Bad Request","code":400,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Type","value":"text/plain;charset=UTF-8"},{"key":"Content-Length","value":"28"},{"key":"Date","value":"Wed, 19 Nov 2025 18:39:47 GMT"},{"key":"Connection","value":"close"}],"cookie":[],"responseTime":null,"body":"Incorrect email or password!"}],"_postman_id":"2b5865da-628a-4d1a-bafd-d13aa2d68b65"},{"name":"Get information about user","id":"baef8987-16ff-474f-b0c4-e2831b2afc10","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":false},"method":"GET","header":[],"url":"http://localhost:8080/api/auth/me","description":"<p>Endpoint for retrieving information about logged-in user. The suer must be logged in before making this request.</p>\n","urlObject":{"protocol":"http","port":"8080","path":["api","auth","me"],"host":["localhost"],"query":[],"variable":[]}},"response":[{"id":"974e06fc-24be-41bc-b621-de23d58c8415","name":"200 (Ok)","originalRequest":{"method":"GET","header":[],"url":"http://localhost:8080/api/auth/me"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Date","value":"Wed, 19 Nov 2025 18:41:05 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": 3,\n    \"firstName\": \"Paul\",\n    \"lastName\": \"Saulo\",\n    \"email\": \"paul@example.com\",\n    \"phoneNumber\": \"555 666 999\"\n}"},{"id":"a43f0b08-bc26-42cd-b48a-597c26d8e3fa","name":"Not logged in user","originalRequest":{"method":"GET","header":[],"url":"http://localhost:8080/api/auth/me"},"status":"Forbidden","code":403,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Length","value":"0"},{"key":"Date","value":"Wed, 19 Nov 2025 18:42:09 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":null}],"_postman_id":"baef8987-16ff-474f-b0c4-e2831b2afc10"}],"id":"73486baa-c04b-4cef-95f7-110e5e3ca59d","description":"<p>The collection of endpoints for authentication and authorization operations.</p>\n","_postman_id":"73486baa-c04b-4cef-95f7-110e5e3ca59d"},{"name":"Cart","item":[{"name":"Get user cart","id":"09bd46ac-841c-4a64-9887-4e2c61a32737","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":false},"method":"GET","header":[],"url":"http://localhost:8080/api/cart/:userId/user","description":"<p>Endpoint for retrieving basic information about user cart like total quantity and value.</p>\n","urlObject":{"protocol":"http","port":"8080","path":["api","cart",":userId","user"],"host":["localhost"],"query":[],"variable":[{"description":{"content":"<p>ID of user</p>\n","type":"text/plain"},"type":"any","value":"3","key":"userId"}]}},"response":[{"id":"565f1b83-883e-4938-9b4e-ce2f77028d4b","name":"200 (Ok)","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:8080/api/cart/:userId/user","protocol":"http","host":["localhost"],"port":"8080","path":["api","cart",":userId","user"],"variable":[{"key":"userId","value":"3"}]}},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Date","value":"Wed, 19 Nov 2025 18:50:01 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": 3,\n    \"userId\": 3,\n    \"value\": 54975,\n    \"itemAmount\": 5\n}"},{"id":"343298b0-b004-4472-a9e4-ee468b65c177","name":"Unauthorized access to other cart","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:8080/api/cart/:userId/user","protocol":"http","host":["localhost"],"port":"8080","path":["api","cart",":userId","user"],"variable":[{"key":"userId","value":"2"}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Length","value":"0"},{"key":"Date","value":"Wed, 19 Nov 2025 18:50:19 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":null}],"_postman_id":"09bd46ac-841c-4a64-9887-4e2c61a32737"},{"name":"Get products from cart","id":"efe2dc09-be7c-48dd-a25b-c67d20ebc307","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":false},"method":"GET","header":[],"url":"http://localhost:8080/api/cartDetails/:userId/user","description":"<p>Endpoint for retrieving information about products added to the cart.</p>\n","urlObject":{"protocol":"http","port":"8080","path":["api","cartDetails",":userId","user"],"host":["localhost"],"query":[],"variable":[{"description":{"content":"<p>ID of user</p>\n","type":"text/plain"},"type":"any","value":"3","key":"userId"}]}},"response":[{"id":"2a373fcd-3a4a-4349-91c4-d326aa730f59","name":"200 (Ok)","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:8080/api/cartDetails/:userId/user","protocol":"http","host":["localhost"],"port":"8080","path":["api","cartDetails",":userId","user"],"variable":[{"key":"userId","value":"3","description":"ID of user"}]}},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Date","value":"Wed, 19 Nov 2025 18:52:16 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"[\n    {\n        \"id\": 1,\n        \"cartId\": 3,\n        \"productId\": 1,\n        \"price\": 10995,\n        \"quantity\": 5\n    }\n]"},{"id":"bf0225ad-a134-498b-bcb2-d32a3a954e86","name":"Unauthorized access to other cart","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:8080/api/cartDetails/:userId/user","protocol":"http","host":["localhost"],"port":"8080","path":["api","cartDetails",":userId","user"],"variable":[{"key":"userId","value":"2","description":"ID of user"}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Length","value":"0"},{"key":"Date","value":"Wed, 19 Nov 2025 18:52:28 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":null}],"_postman_id":"efe2dc09-be7c-48dd-a25b-c67d20ebc307"},{"name":"Add product to cart","id":"38305a57-cfb0-4224-b9e5-fcebbfc8b5a6","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"productId\": 3,\n    \"quantity\": 5\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/api/cart/:userId/user","description":"<p>Endpoint to add product to cart. All fields in example body is mandatory. Validation rules:</p>\n<ul>\n<li><p><strong>productId</strong> - must be a positive number</p>\n</li>\n<li><p><strong>quantity</strong> - must be a positive number</p>\n</li>\n</ul>\n","urlObject":{"protocol":"http","port":"8080","path":["api","cart",":userId","user"],"host":["localhost"],"query":[],"variable":[{"description":{"content":"<p>ID of user</p>\n","type":"text/plain"},"type":"any","value":"3","key":"userId"}]}},"response":[{"id":"de2e16f3-8297-492c-966b-0e583c11f5f1","name":"200 (Ok)","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"productId\": 1,\n    \"quantity\": 5\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"http://localhost:8080/api/cart/:userId/user","protocol":"http","host":["localhost"],"port":"8080","path":["api","cart",":userId","user"],"variable":[{"key":"userId","value":"3","description":"ID of user"}]}},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Type","value":"text/plain;charset=UTF-8"},{"key":"Content-Length","value":"36"},{"key":"Date","value":"Wed, 19 Nov 2025 18:54:35 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"Product was added correctly to cart!"},{"id":"d96cd5c0-d1ca-474e-b037-6fffd48f0fe5","name":"Product not found","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"productId\": 99,\n    \"quantity\": 5\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"http://localhost:8080/api/cart/:userId/user","protocol":"http","host":["localhost"],"port":"8080","path":["api","cart",":userId","user"],"variable":[{"key":"userId","value":"3","description":"ID of user"}]}},"status":"Not Found","code":404,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Type","value":"text/plain;charset=UTF-8"},{"key":"Content-Length","value":"34"},{"key":"Date","value":"Wed, 19 Nov 2025 18:56:19 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"Couldn't find product in database!"},{"id":"ac2c8550-0615-46e2-92c9-435f70e9f8d8","name":"Bad request","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"productId\": 2,\n    \"quantity\": 5\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"http://localhost:8080/api/cart/:userId/user","protocol":"http","host":["localhost"],"port":"8080","path":["api","cart",":userId","user"],"variable":[{"key":"userId","value":"3","description":"ID of user"}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Date","value":"Wed, 19 Nov 2025 18:56:32 GMT"},{"key":"Connection","value":"close"}],"cookie":[],"responseTime":null,"body":"{\n    \"error\": \"The amount of product is higher than available amount or product isn't available!\"\n}"}],"_postman_id":"38305a57-cfb0-4224-b9e5-fcebbfc8b5a6"},{"name":"Update product in cart","id":"b21c3bea-2bfa-442e-b362-0d426b4aad15","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":false},"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n    \"productId\": 1,\n    \"quantity\": 3\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/api/cart/:userId/user","description":"<p>Endpoint to update the quantity of a product in cart. The product must be already added to cart. Setting the quantity to 0 will remove the product from the cart. All fields from example body are mandatory. Validation rules:</p>\n<ul>\n<li><p><strong>productId</strong> - must be a positive number</p>\n</li>\n<li><p><strong>quantity</strong> - must be a positive number or zero</p>\n</li>\n</ul>\n","urlObject":{"protocol":"http","port":"8080","path":["api","cart",":userId","user"],"host":["localhost"],"query":[],"variable":[{"description":{"content":"<p>ID of user</p>\n","type":"text/plain"},"type":"any","value":"3","key":"userId"}]}},"response":[{"id":"55daaefe-5d0c-4d0e-93d2-f70c5ccaa824","name":"Product not found in cart","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n    \"productId\": 3,\n    \"quantity\": 3\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"http://localhost:8080/api/cart/:userId/user","protocol":"http","host":["localhost"],"port":"8080","path":["api","cart",":userId","user"],"variable":[{"key":"userId","value":"3","description":"ID of user"}]}},"status":"Not Found","code":404,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Type","value":"text/plain;charset=UTF-8"},{"key":"Content-Length","value":"29"},{"key":"Date","value":"Wed, 19 Nov 2025 21:43:42 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"Passed product isn't in cart!"},{"id":"abf6ad01-1be6-4d2f-ae58-fc9e88b3118f","name":"200 (Ok)","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n    \"productId\": 1,\n    \"quantity\": 3\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"http://localhost:8080/api/cart/:userId/user","protocol":"http","host":["localhost"],"port":"8080","path":["api","cart",":userId","user"],"variable":[{"key":"userId","value":"3","description":"ID of user"}]}},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Type","value":"text/plain;charset=UTF-8"},{"key":"Content-Length","value":"43"},{"key":"Date","value":"Wed, 19 Nov 2025 21:43:55 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"Product in user cart was updated correctly!"}],"_postman_id":"b21c3bea-2bfa-442e-b362-0d426b4aad15"},{"name":"Delete product from cart","id":"da80f35b-949b-41b3-b214-fce5e618c4ba","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":false},"method":"DELETE","header":[],"url":"http://localhost:8080/api/cart/:userId/user/:productId/product","description":"<p>Endpoint to delete product from cart. This endpoint will always return HTTP status 200 (Ok) ,even if the product was not present in the user's cart.</p>\n","urlObject":{"protocol":"http","port":"8080","path":["api","cart",":userId","user",":productId","product"],"host":["localhost"],"query":[],"variable":[{"description":{"content":"<p>ID of user</p>\n","type":"text/plain"},"type":"any","value":"3","key":"userId"},{"description":{"content":"<p>ID of product to delete</p>\n","type":"text/plain"},"type":"any","value":"1","key":"productId"}]}},"response":[{"id":"a37bb721-61ca-4197-887e-719a24a36830","name":"200 (Ok)","originalRequest":{"method":"DELETE","header":[],"url":{"raw":"http://localhost:8080/api/cart/:userId/user/:productId/product","protocol":"http","host":["localhost"],"port":"8080","path":["api","cart",":userId","user",":productId","product"],"variable":[{"key":"userId","value":"3","description":"ID of user"},{"key":"productId","value":"1","description":"ID of product to delete"}]}},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Type","value":"text/plain;charset=UTF-8"},{"key":"Content-Length","value":"40"},{"key":"Date","value":"Wed, 19 Nov 2025 21:45:13 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"Product was deleted correctly from cart!"}],"_postman_id":"da80f35b-949b-41b3-b214-fce5e618c4ba"}],"id":"d9ea0460-4fda-4c3c-a47d-2d19ca1f4ff3","description":"<p>The collection of endpoint for managing operatiosn on user's carts.</p>\n","_postman_id":"d9ea0460-4fda-4c3c-a47d-2d19ca1f4ff3"},{"name":"Order","item":[{"name":"Get all user orders","id":"9a4d980b-6300-4c63-a6e5-5701e5b3c01c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":false},"method":"GET","header":[],"url":"http://localhost:8080/api/orders/:userId/user","description":"<p>Endpoint for retreiving all orders of the specified user without details. The ADMIN user has access to all orders.</p>\n","urlObject":{"protocol":"http","port":"8080","path":["api","orders",":userId","user"],"host":["localhost"],"query":[],"variable":[{"description":{"content":"<p>ID of user</p>\n","type":"text/plain"},"type":"any","value":"3","key":"userId"}]}},"response":[{"id":"cc8a9e67-a7f4-4749-ac6e-056d53298680","name":"200 (Ok)","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:8080/api/orders/:userId/user","protocol":"http","host":["localhost"],"port":"8080","path":["api","orders",":userId","user"],"variable":[{"key":"userId","value":"3","description":"ID of user"}]}},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Date","value":"Wed, 19 Nov 2025 21:49:38 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"[\n    {\n        \"id\": 1,\n        \"userId\": 3,\n        \"value\": 54975,\n        \"itemAmount\": 5,\n        \"street\": \"street\",\n        \"streetNumber\": \"5\",\n        \"houseNumber\": \"4\",\n        \"postalCode\": \"12-345\",\n        \"city\": \"city\"\n    }\n]"}],"_postman_id":"9a4d980b-6300-4c63-a6e5-5701e5b3c01c"},{"name":"Get user order details","id":"03a87812-a9a3-482b-bee0-e2f3c5e1f1b0","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":false},"method":"GET","header":[],"url":"http://localhost:8080/api/orders/:userId/user/:orderId/order","description":"<p>Endpoint for retreiving all order details of the specific order for a given user. User has only access to their own orders, but ADMIN users have access to all orders with their details.</p>\n","urlObject":{"protocol":"http","port":"8080","path":["api","orders",":userId","user",":orderId","order"],"host":["localhost"],"query":[],"variable":[{"description":{"content":"<p>ID of user</p>\n","type":"text/plain"},"type":"any","value":"3","key":"userId"},{"description":{"content":"<p>ID of order</p>\n","type":"text/plain"},"type":"any","value":"1","key":"orderId"}]}},"response":[{"id":"f3e64df8-6952-4fd3-ac72-07ff7e25e45f","name":"200 (Ok)","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:8080/api/orders/:userId/user/:orderId/order","protocol":"http","host":["localhost"],"port":"8080","path":["api","orders",":userId","user",":orderId","order"],"variable":[{"key":"userId","value":"3","description":"ID of user"},{"key":"orderId","value":"1","description":"ID of order"}]}},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Date","value":"Wed, 19 Nov 2025 21:52:08 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"[\n    {\n        \"id\": 1,\n        \"orderId\": 1,\n        \"productId\": 1,\n        \"price\": 10995,\n        \"quantity\": 5\n    }\n]"},{"id":"f4656be7-7493-4dd2-8800-8d6558201e3d","name":"Order not found","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:8080/api/orders/:userId/user/:orderId/order","protocol":"http","host":["localhost"],"port":"8080","path":["api","orders",":userId","user",":orderId","order"],"variable":[{"key":"userId","value":"3","description":"ID of user"},{"key":"orderId","value":"2","description":"ID of order"}]}},"status":"Not Found","code":404,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Type","value":"text/plain;charset=UTF-8"},{"key":"Content-Length","value":"39"},{"key":"Date","value":"Wed, 19 Nov 2025 21:52:22 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"Couldn't find passed order in database!"},{"id":"64f6e338-ede2-445f-b416-6d79a44a2133","name":"Unauthorized access to other user order","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:8080/api/orders/:userId/user/:orderId/order","protocol":"http","host":["localhost"],"port":"8080","path":["api","orders",":userId","user",":orderId","order"],"variable":[{"key":"userId","value":"3","description":"ID of user"},{"key":"orderId","value":"2","description":"ID of order"}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Type","value":"text/plain;charset=UTF-8"},{"key":"Content-Length","value":"22"},{"key":"Date","value":"Wed, 19 Nov 2025 21:54:24 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"This isn't your order!"}],"_postman_id":"03a87812-a9a3-482b-bee0-e2f3c5e1f1b0"},{"name":"Add order","id":"6bcf1417-0b83-4588-a19f-129b053cb43f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"street\": \"street\",\n    \"streetNumber\": \"5\",\n    \"houseNumber\": \"4\",\n    \"postalCode\": \"12-345\",\n    \"city\": \"city\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/api/orders/:userId/user","description":"<p>Endpoint to add new order base on products in the cart. If the request completes successfully, the user's cart will be cleared. All fields from example body are mandatory. Validation rules:</p>\n<ul>\n<li><p><strong>street</strong> - must not be blank</p>\n</li>\n<li><p><strong>streetNumber</strong> - must not be blank</p>\n</li>\n<li><p><strong>houseNumber</strong> - must not be blank</p>\n</li>\n<li><p><strong>postalCode</strong> - must not be blank ; must be in format: XX-XXX, where X is a positive number</p>\n</li>\n<li><p><strong>city</strong> - must not be blank</p>\n</li>\n</ul>\n","urlObject":{"protocol":"http","port":"8080","path":["api","orders",":userId","user"],"host":["localhost"],"query":[],"variable":[{"description":{"content":"<p>ID of user</p>\n","type":"text/plain"},"type":"any","value":"3","key":"userId"}]}},"response":[{"id":"e600c594-db98-4a3d-8d59-e9e1e5b406a3","name":"Empty cart","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"street\": \"street\",\n    \"streetNumber\": \"5\",\n    \"houseNumber\": \"4\",\n    \"postalCode\": \"12-345\",\n    \"city\": \"city\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"http://localhost:8080/api/orders/:userId/user","protocol":"http","host":["localhost"],"port":"8080","path":["api","orders",":userId","user"],"variable":[{"key":"userId","value":"3","description":"ID of user"}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Type","value":"text/plain;charset=UTF-8"},{"key":"Content-Length","value":"42"},{"key":"Date","value":"Wed, 19 Nov 2025 21:58:59 GMT"},{"key":"Connection","value":"close"}],"cookie":[],"responseTime":null,"body":"Can't create order, because cart is empty!"},{"id":"2b2bd946-8f66-4ab8-b833-b78f38e14ec6","name":"200 (Ok)","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"street\": \"street\",\n    \"streetNumber\": \"5\",\n    \"houseNumber\": \"4\",\n    \"postalCode\": \"12-345\",\n    \"city\": \"city\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"http://localhost:8080/api/orders/:userId/user","protocol":"http","host":["localhost"],"port":"8080","path":["api","orders",":userId","user"],"variable":[{"key":"userId","value":"3","description":"ID of user"}]}},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Type","value":"text/plain;charset=UTF-8"},{"key":"Content-Length","value":"25"},{"key":"Date","value":"Wed, 19 Nov 2025 21:59:25 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"Order was added correctly"},{"id":"1b937bf5-34e8-4ed9-900d-7fa0d9d60767","name":"Unauthorized try adding order to other user","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"street\": \"street\",\n    \"streetNumber\": \"5\",\n    \"houseNumber\": \"4\",\n    \"postalCode\": \"12-345\",\n    \"city\": \"city\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"http://localhost:8080/api/orders/:userId/user","protocol":"http","host":["localhost"],"port":"8080","path":["api","orders",":userId","user"],"variable":[{"key":"userId","value":"1","description":"ID of user"}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Length","value":"0"},{"key":"Date","value":"Wed, 19 Nov 2025 22:02:11 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":null}],"_postman_id":"6bcf1417-0b83-4588-a19f-129b053cb43f"}],"id":"3fef6558-1819-4144-b5d1-f734e2d0cf29","description":"<p>The collection of endpoints for creating and managing orders.</p>\n","_postman_id":"3fef6558-1819-4144-b5d1-f734e2d0cf29"},{"name":"ShippingAddress","item":[{"name":"Get all user shipping addresses","id":"ba48dba9-547c-4a34-bf59-f62bc96e6da8","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":false},"method":"GET","header":[],"url":"http://localhost:8080/api/shippingAddress/:userId/user","description":"<p>Endpoint for retrieving all user's shipping addresses.</p>\n","urlObject":{"protocol":"http","port":"8080","path":["api","shippingAddress",":userId","user"],"host":["localhost"],"query":[],"variable":[{"description":{"content":"<p>ID of user</p>\n","type":"text/plain"},"type":"any","value":"3","key":"userId"}]}},"response":[{"id":"6dacfa86-3883-403b-a579-9937fb733025","name":"200 (Ok)","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:8080/api/shippingAddress/:userId/user","protocol":"http","host":["localhost"],"port":"8080","path":["api","shippingAddress",":userId","user"],"variable":[{"key":"userId","value":"3","description":"ID of user"}]}},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Date","value":"Wed, 19 Nov 2025 22:05:55 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"[\n    {\n        \"id\": 1,\n        \"userId\": 3,\n        \"name\": \"Main house\",\n        \"street\": \"St. Street\",\n        \"streetNumber\": \"5\",\n        \"houseNumber\": \"4\",\n        \"postalCode\": \"56-789\",\n        \"city\": \"city\"\n    }\n]"},{"id":"b173cdb5-5311-4edc-bfee-1e0e3312b440","name":"Unauthorized access to other user addresses","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:8080/api/shippingAddress/:userId/user","protocol":"http","host":["localhost"],"port":"8080","path":["api","shippingAddress",":userId","user"],"variable":[{"key":"userId","value":"2","description":"ID of user"}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Length","value":"0"},{"key":"Date","value":"Wed, 19 Nov 2025 22:06:07 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":null}],"_postman_id":"ba48dba9-547c-4a34-bf59-f62bc96e6da8"},{"name":"Get user shipping address by ID","id":"1f3d4d63-1526-458d-a356-b3392f91b2ee","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":false},"method":"GET","header":[],"url":"http://localhost:8080/api/shippingAddress/:userId/user/:addressId/address","description":"<p>Ednpoint for retrieving a single user 's shipping address by ID.</p>\n","urlObject":{"protocol":"http","port":"8080","path":["api","shippingAddress",":userId","user",":addressId","address"],"host":["localhost"],"query":[],"variable":[{"description":{"content":"<p>ID of user</p>\n","type":"text/plain"},"type":"any","value":"3","key":"userId"},{"description":{"content":"<p>ID of shipping address</p>\n","type":"text/plain"},"type":"any","value":"2","key":"addressId"}]}},"response":[{"id":"aa090c80-24f9-4be8-bb17-61ca8f2700ce","name":"200 (Ok)","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:8080/api/shippingAddress/:userId/user/:addressId/address","protocol":"http","host":["localhost"],"port":"8080","path":["api","shippingAddress",":userId","user",":addressId","address"],"variable":[{"key":"userId","value":"3","description":"ID of user"},{"key":"addressId","value":"1","description":"ID of shipping address"}]}},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Date","value":"Wed, 19 Nov 2025 22:08:18 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": 1,\n    \"userId\": 3,\n    \"name\": \"Main house\",\n    \"street\": \"St. Street\",\n    \"streetNumber\": \"5\",\n    \"houseNumber\": \"4\",\n    \"postalCode\": \"56-789\",\n    \"city\": \"city\"\n}"},{"id":"3a33c9cd-6ccf-4744-a1c6-482c0bd8a1a7","name":"Address not found","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:8080/api/shippingAddress/:userId/user/:addressId/address","protocol":"http","host":["localhost"],"port":"8080","path":["api","shippingAddress",":userId","user",":addressId","address"],"variable":[{"key":"userId","value":"3","description":"ID of user"},{"key":"addressId","value":"2","description":"ID of shipping address"}]}},"status":"Not Found","code":404,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Type","value":"text/plain;charset=UTF-8"},{"key":"Content-Length","value":"35"},{"key":"Date","value":"Wed, 19 Nov 2025 22:08:36 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"Couldn't find address by passed ID!"},{"id":"a3f21fde-9e9a-4093-9ffd-b68d9c4209af","name":"Unauthorized access to other user address","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:8080/api/shippingAddress/:userId/user/:addressId/address","protocol":"http","host":["localhost"],"port":"8080","path":["api","shippingAddress",":userId","user",":addressId","address"],"variable":[{"key":"userId","value":"3","description":"ID of user"},{"key":"addressId","value":"2","description":"ID of shipping address"}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Type","value":"text/plain;charset=UTF-8"},{"key":"Content-Length","value":"43"},{"key":"Date","value":"Wed, 19 Nov 2025 22:09:19 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"You don't have permission for this address!"}],"_postman_id":"1f3d4d63-1526-458d-a356-b3392f91b2ee"},{"name":"Add shipping address","id":"2e1014a1-6068-41b0-b126-0621e4f27878","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"name\": \"Main house\",\n    \"street\": \"St. Street\",\n    \"streetNumber\": 5,\n    \"houseNumber\": 4,\n    \"postalCode\": \"56-789\",\n    \"city\": \"city\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/api/shippingAddress/:userId/user","description":"<p>Ednpoint to add new user shipping address. All fields in example body are mandatory. Validation rules:</p>\n<ul>\n<li><p><strong>name</strong> - must not be blank ; doesn't have to be unique</p>\n</li>\n<li><p><strong>street</strong> - must not be blank</p>\n</li>\n<li><p><strong>streetNumber</strong> - must not be blank</p>\n</li>\n<li><p><strong>houseNumber</strong> - must not be blank</p>\n</li>\n<li><p><strong>postalCode</strong> - must not be blank ; must be in format: XX-XXX, where X is a positive number</p>\n</li>\n<li><p><strong>city</strong> - must not be blank</p>\n</li>\n</ul>\n","urlObject":{"protocol":"http","port":"8080","path":["api","shippingAddress",":userId","user"],"host":["localhost"],"query":[],"variable":[{"description":{"content":"<p>ID of user</p>\n","type":"text/plain"},"type":"any","value":"3","key":"userId"}]}},"response":[{"id":"7f6eea6e-b13f-4972-a681-1af1178b6520","name":"200 (Ok)","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"name\": \"Main house\",\n    \"street\": \"St. Street\",\n    \"streetNumber\": 5,\n    \"houseNumber\": 4,\n    \"postalCode\": \"56-789\",\n    \"city\": \"city\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"http://localhost:8080/api/shippingAddress/:userId/user","protocol":"http","host":["localhost"],"port":"8080","path":["api","shippingAddress",":userId","user"],"variable":[{"key":"userId","value":"3","description":"ID of user"}]}},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Type","value":"text/plain;charset=UTF-8"},{"key":"Content-Length","value":"37"},{"key":"Date","value":"Wed, 19 Nov 2025 22:13:49 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"Shipping address was added correctly!"},{"id":"a6d49901-89a3-489d-a14c-848adb75d058","name":"Unauthorized access to add address to other user","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"name\": \"Main house\",\n    \"street\": \"St. Street\",\n    \"streetNumber\": 5,\n    \"houseNumber\": 4,\n    \"postalCode\": \"56-789\",\n    \"city\": \"city\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"http://localhost:8080/api/shippingAddress/:userId/user","protocol":"http","host":["localhost"],"port":"8080","path":["api","shippingAddress",":userId","user"],"variable":[{"key":"userId","value":"2","description":"ID of user"}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Length","value":"0"},{"key":"Date","value":"Wed, 19 Nov 2025 22:14:00 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":null}],"_postman_id":"2e1014a1-6068-41b0-b126-0621e4f27878"},{"name":"Update address","id":"1cb3b946-ac7a-4ab9-99f5-ddf76e75dc8b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":false},"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n    \"addressId\": 1,\n    \"name\": \"Home v2\",\n    \"street\": \"updated street\",\n    \"streetNumber\": 1,\n    \"houseNumber\": 2,\n    \"postalCode\": \"12-345\",\n    \"city\": \"updated city\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/api/shippingAddress/:userId/user","description":"<p>Endpoint to update user shipping address. All fields in example body are mandatory:</p>\n<ul>\n<li><p><strong>addressId</strong> - must be a positive number</p>\n</li>\n<li><p><strong>name</strong> - must not be blank ; doesn't have to be unique</p>\n</li>\n<li><p><strong>street</strong> - must not be blank</p>\n</li>\n<li><p><strong>streetNumber</strong> - must not be blank</p>\n</li>\n<li><p><strong>houseNumber</strong> - must not be blank</p>\n</li>\n<li><p><strong>postalCode</strong> - must not be blank ; must be in format: XX-XXX, where X is a positive number</p>\n</li>\n<li><p><strong>city</strong> - must not be blank</p>\n</li>\n</ul>\n","urlObject":{"protocol":"http","port":"8080","path":["api","shippingAddress",":userId","user"],"host":["localhost"],"query":[],"variable":[{"description":{"content":"<p>ID of user</p>\n","type":"text/plain"},"type":"any","value":"3","key":"userId"}]}},"response":[{"id":"7a55df33-fdd8-46f8-85ac-4f94e617780a","name":"200 (Ok)","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n    \"addressId\": 1,\n    \"name\": \"Home v2\",\n    \"street\": \"updated street\",\n    \"streetNumber\": 1,\n    \"houseNumber\": 2,\n    \"postalCode\": \"12-345\",\n    \"city\": \"updated city\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"http://localhost:8080/api/shippingAddress/:userId/user","protocol":"http","host":["localhost"],"port":"8080","path":["api","shippingAddress",":userId","user"],"variable":[{"key":"userId","value":"3","description":"ID of user"}]}},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Type","value":"text/plain;charset=UTF-8"},{"key":"Content-Length","value":"37"},{"key":"Date","value":"Wed, 19 Nov 2025 22:16:10 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"Shipping updated was added correctly!"},{"id":"054ae509-54bf-4a57-a847-35a6d97c1004","name":"Unauthorized update other user address","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n    \"addressId\": 2,\n    \"name\": \"Home v2\",\n    \"street\": \"updated street\",\n    \"streetNumber\": 1,\n    \"houseNumber\": 2,\n    \"postalCode\": \"12-345\",\n    \"city\": \"updated city\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"http://localhost:8080/api/shippingAddress/:userId/user","protocol":"http","host":["localhost"],"port":"8080","path":["api","shippingAddress",":userId","user"],"variable":[{"key":"userId","value":"3","description":"ID of user"}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Type","value":"text/plain;charset=UTF-8"},{"key":"Content-Length","value":"49"},{"key":"Date","value":"Wed, 19 Nov 2025 22:15:48 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"You don't have permission to update this address!"},{"id":"a776a73d-7f28-4579-9aad-285bd71510bc","name":"Address not found","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n    \"addressId\": 9,\n    \"name\": \"Home v2\",\n    \"street\": \"updated street\",\n    \"streetNumber\": 1,\n    \"houseNumber\": 2,\n    \"postalCode\": \"12-345\",\n    \"city\": \"updated city\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"http://localhost:8080/api/shippingAddress/:userId/user","protocol":"http","host":["localhost"],"port":"8080","path":["api","shippingAddress",":userId","user"],"variable":[{"key":"userId","value":"3","description":"ID of user"}]}},"status":"Not Found","code":404,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Type","value":"text/plain;charset=UTF-8"},{"key":"Content-Length","value":"34"},{"key":"Date","value":"Wed, 19 Nov 2025 22:16:24 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"Couldn't find address in database!"}],"_postman_id":"1cb3b946-ac7a-4ab9-99f5-ddf76e75dc8b"},{"name":"Delete shipping address","id":"a6195688-daeb-497a-9836-8397cafbd8d5","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":false},"method":"DELETE","header":[],"url":"http://localhost:8080/api/shippingAddress/:userId/user/:addressId/address","description":"<p>Endpoint to delete address from database. This endpoint will always return HTTP status 200 (Ok) ,even if the address was not present in the database.</p>\n","urlObject":{"protocol":"http","port":"8080","path":["api","shippingAddress",":userId","user",":addressId","address"],"host":["localhost"],"query":[],"variable":[{"description":{"content":"<p>ID of user</p>\n","type":"text/plain"},"type":"any","value":"3","key":"userId"},{"description":{"content":"<p>ID of address</p>\n","type":"text/plain"},"type":"any","value":"1","key":"addressId"}]}},"response":[{"id":"432caa6c-ded5-4c1a-8c7d-c34af36a0788","name":"200 (Ok)","originalRequest":{"method":"DELETE","header":[],"url":{"raw":"http://localhost:8080/api/shippingAddress/:userId/user/:addressId/address","protocol":"http","host":["localhost"],"port":"8080","path":["api","shippingAddress",":userId","user",":addressId","address"],"variable":[{"key":"userId","value":"3","description":"ID of user"},{"key":"addressId","value":"1","description":"ID of address"}]}},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-XSS-Protection","value":"0"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"Pragma","value":"no-cache"},{"key":"Expires","value":"0"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Type","value":"text/plain;charset=UTF-8"},{"key":"Content-Length","value":"37"},{"key":"Date","value":"Wed, 19 Nov 2025 22:17:17 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"Shipping deleted was added correctly!"}],"_postman_id":"a6195688-daeb-497a-9836-8397cafbd8d5"}],"id":"950e1f37-7f68-4432-a52a-ce5b7c1e5886","description":"<p>The collection of endpoints for managing user's shipping addresses.</p>\n","_postman_id":"950e1f37-7f68-4432-a52a-ce5b7c1e5886"}],"variable":[{"key":"AccessToken","value":"","type":"default"}]}