{"info":{"_postman_id":"1d2e9f31-be6e-4b37-a1c2-90ce3027d44d","name":"📚 Bookstore API 📚","description":"<html><head></head><body><p>The <strong>Bookstore API</strong> collection covers the full set of endpoints for a bookstore application, organized into five functional groups:</p>\n<ul>\n<li><p><strong>User</strong> — handles account registration and authentication, including obtaining tokens for both regular users and admins</p>\n</li>\n<li><p><strong>Book</strong> — provides endpoints to browse, search, create, update and delete books in the catalog</p>\n</li>\n<li><p><strong>Category</strong> — manages book categories, including listing, creating, updating, deleting categories and retrieving books within a specific category</p>\n</li>\n<li><p><strong>Shopping cart</strong> — allows users to view their cart, add books, update item quantities and remove items</p>\n</li>\n<li><p><strong>Order</strong> — supports order management: viewing all orders, placing new ones, updating order status and inspecting individual order items</p>\n</li>\n</ul>\n<p>All requests use the <code></code> variable and rely on <code>admin_token</code> / <code>user_token</code> environment variables for authentication.</p>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"owner":"51183420","collectionId":"1d2e9f31-be6e-4b37-a1c2-90ce3027d44d","publishedId":"2sBXqKqLVH","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"publishDate":"2026-05-04T19:07:23.000Z"},"item":[{"name":"👤 User","item":[{"name":"Registration","id":"10ed4389-3775-4a0c-b71c-c01142af1984","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n  \"email\": \"test@gmail.com\",\r\n  \"password\": \"password\",\r\n  \"repeatPassword\": \"password\",\r\n  \"firstName\": \"Test\",\r\n  \"lastName\": \"Test\",\r\n  \"shippingAddress\": \"Test st., 1\"\r\n}","options":{"raw":{"language":"json"}}},"url":"/auth/registration","description":"<p>Registers a new user account. Accepts a <code>username</code>, <code>email</code> and <code>password</code> in the request body and returns the created user's details on success.</p>\n","urlObject":{"path":["auth","registration"],"host":[""],"query":[],"variable":[]}},"response":[{"id":"4b2363f6-4096-44b0-bd68-cea0248ac0c2","name":"Registration","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n  \"email\": \"test@gmail.com\",\r\n  \"password\": \"password\",\r\n  \"repeatPassword\": \"password\",\r\n  \"firstName\": \"Test\",\r\n  \"lastName\": \"Test\",\r\n  \"shippingAddress\": \"Test st., 1\"\r\n}","options":{"raw":{"language":"json"}}},"url":"/auth/registration"},"status":"Created","code":201,"_postman_previewlanguage":"Text","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":"Mon, 04 May 2026 19:17:09 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": \"5\",\n    \"email\": \"test@gmail.com\",\n    \"firstName\": \"Test\",\n    \"lastName\": \"Test\",\n    \"shippingAddress\": \"Test st., 1\"\n}"}],"_postman_id":"10ed4389-3775-4a0c-b71c-c01142af1984"},{"name":"Get admin token","event":[{"listen":"test","script":{"id":"d3fbffe5-dc6f-41da-978c-67e01932bd00","exec":["const json = pm.response.json();\r","pm.environment.set(\"admin_token\", json.token);"],"type":"text/javascript","packages":{},"requests":{}}}],"id":"fad1ae3c-1263-4b82-9c6a-84bdb0301f11","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n  \"email\": \"admin@example.com\",\r\n  \"password\": \"admin123\"\r\n}","options":{"raw":{"language":"json"}}},"url":"/auth/login","description":"<p>Authenticates with admin credentials and returns a JWT access token. The token must be stored and used to authorize admin-only operations such as creating, updating or deleting books and categories.</p>\n","urlObject":{"path":["auth","login"],"host":[""],"query":[],"variable":[]}},"response":[{"id":"b08aec3f-4058-4dae-b0ea-26b0bba1cc6d","name":"Get admin token","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n  \"email\": \"admin@example.com\",\r\n  \"password\": \"admin123\"\r\n}","options":{"raw":{"language":"json"}}},"url":"/auth/login"},"status":"OK","code":200,"_postman_previewlanguage":"Text","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":"Mon, 04 May 2026 19:30:23 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"token\": \"{{vault:json-web-token}}\"\n}"}],"_postman_id":"fad1ae3c-1263-4b82-9c6a-84bdb0301f11"},{"name":"Get user token","event":[{"listen":"test","script":{"id":"d3fbffe5-dc6f-41da-978c-67e01932bd00","exec":["const json = pm.response.json();\r","pm.environment.set(\"user_token\", json.token);"],"type":"text/javascript","packages":{},"requests":{}}}],"id":"fbdb82a5-2b1c-4690-a3d5-e9be8363f9d5","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n  \"email\": \"ivan@example.com\",\r\n  \"password\": \"user1234\"\r\n}","options":{"raw":{"language":"json"}}},"url":"/auth/login","description":"<p>Authenticates with regular user credentials and returns a JWT access token. The token must be stored and used to authorize user-level operations such as managing the cart and placing orders.</p>\n","urlObject":{"path":["auth","login"],"host":[""],"query":[],"variable":[]}},"response":[{"id":"3cc34587-b349-44fb-9b87-680b08dccf92","name":"Get user token","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n  \"email\": \"ivan@example.com\",\r\n  \"password\": \"user1234\"\r\n}","options":{"raw":{"language":"json"}}},"url":"/auth/login"},"status":"OK","code":200,"_postman_previewlanguage":"Text","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":"Mon, 04 May 2026 19:31:57 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"token\": \"{{vault:json-web-token}}\"\n}"}],"_postman_id":"fbdb82a5-2b1c-4690-a3d5-e9be8363f9d5"}],"id":"9736fb4a-bdf7-4f8f-af55-8e5d81b5c43f","description":"<p>Handles user account management and authentication. Contains endpoints for registering a new user account and obtaining JWT tokens — both for regular users and administrators — via the login endpoint. These tokens are used to authorize requests across the rest of the API.</p>\n","_postman_id":"9736fb4a-bdf7-4f8f-af55-8e5d81b5c43f"},{"name":"📖 Book","item":[{"name":"View all","id":"9a622d8e-32c0-4617-8187-20b8a68d27cf","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{user_token}}"}]},"isInherited":false},"method":"GET","header":[],"url":"/books","description":"<p>Retrieves a paginated list of all books in the catalog. Returns basic details for each book including <code>title</code>, <code>author</code>, <code>price</code> and <code>category</code>.</p>\n","urlObject":{"path":["books"],"host":[""],"query":[],"variable":[]}},"response":[{"id":"8bf156de-1923-4096-ab23-2365fd4a66a7","name":"View all","originalRequest":{"method":"GET","header":[],"url":"/books"},"status":"OK","code":200,"_postman_previewlanguage":"Text","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":"Mon, 04 May 2026 19:24:00 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"content\": [\n        {\n            \"id\": 1,\n            \"title\": \"Clean Code\",\n            \"author\": \"Robert C. Martin\",\n            \"isbn\": \"9780132350884\",\n            \"price\": 35.5,\n            \"description\": \"A Handbook of Agile Software Craftsmanship\",\n            \"coverImage\": \"\",\n            \"categoryIds\": [\n                4\n            ]\n        },\n        {\n            \"id\": 2,\n            \"title\": \"The Clean Coder\",\n            \"author\": \"Robert C. Martin\",\n            \"isbn\": \"9780137081073\",\n            \"price\": 30,\n            \"description\": \"A Code of Conduct for Professional Programmers\",\n            \"coverImage\": \"\",\n            \"categoryIds\": [\n                4\n            ]\n        },\n        {\n            \"id\": 3,\n            \"title\": \"Clean Architecture\",\n            \"author\": \"Robert C. Martin\",\n            \"isbn\": \"9780134494166\",\n            \"price\": 40,\n            \"description\": \"A Craftsman's Guide to Software Structure and Design\",\n            \"coverImage\": \"\",\n            \"categoryIds\": [\n                4\n            ]\n        },\n        {\n            \"id\": 4,\n            \"title\": \"Agile Software Development, Principles, Patterns, and Practices\",\n            \"author\": \"Robert C. Martin\",\n            \"isbn\": \"9780135974445\",\n            \"price\": 45,\n            \"description\": \"Classic book on agile programming and patterns\",\n            \"coverImage\": \"\",\n            \"categoryIds\": [\n                4\n            ]\n        },\n        {\n            \"id\": 5,\n            \"title\": \"UML for Java Programmers\",\n            \"author\": \"Robert C. Martin\",\n            \"isbn\": \"9780131304983\",\n            \"price\": 38,\n            \"description\": \"Guide to using UML in Java development\",\n            \"coverImage\": \"\",\n            \"categoryIds\": [\n                4\n            ]\n        },\n        {\n            \"id\": 6,\n            \"title\": \"1984\",\n            \"author\": \"George Orwell\",\n            \"isbn\": \"9780451524935\",\n            \"price\": 18.99,\n            \"description\": \"Dystopian novel about totalitarian control\",\n            \"coverImage\": \"\",\n            \"categoryIds\": [\n                1\n            ]\n        },\n        {\n            \"id\": 7,\n            \"title\": \"The Hobbit\",\n            \"author\": \"J.R.R. Tolkien\",\n            \"isbn\": \"9780547928227\",\n            \"price\": 22.5,\n            \"description\": \"Fantasy adventure about a hobbit's journey\",\n            \"coverImage\": \"\",\n            \"categoryIds\": [\n                1\n            ]\n        },\n        {\n            \"id\": 8,\n            \"title\": \"The Great Gatsby\",\n            \"author\": \"F. Scott Fitzgerald\",\n            \"isbn\": \"9780743273565\",\n            \"price\": 16,\n            \"description\": \"Novel about the American Dream\",\n            \"coverImage\": \"\",\n            \"categoryIds\": [\n                1\n            ]\n        },\n        {\n            \"id\": 9,\n            \"title\": \"Sapiens: A Brief History of Humankind\",\n            \"author\": \"Yuval Noah Harari\",\n            \"isbn\": \"9780062316097\",\n            \"price\": 25,\n            \"description\": \"History of human evolution and civilization\",\n            \"coverImage\": \"\",\n            \"categoryIds\": [\n                2\n            ]\n        },\n        {\n            \"id\": 10,\n            \"title\": \"Atomic Habits\",\n            \"author\": \"James Clear\",\n            \"isbn\": \"9780735211292\",\n            \"price\": 21,\n            \"description\": \"Guide to building good habits and breaking bad ones\",\n            \"coverImage\": \"\",\n            \"categoryIds\": [\n                2\n            ]\n        },\n        {\n            \"id\": 11,\n            \"title\": \"Harry Potter and the Philosopher's Stone\",\n            \"author\": \"J.K. Rowling\",\n            \"isbn\": \"9780747532699\",\n            \"price\": 19.99,\n            \"description\": \"Fantasy story about a young wizard\",\n            \"coverImage\": \"\",\n            \"categoryIds\": [\n                1,\n                3\n            ]\n        },\n        {\n            \"id\": 12,\n            \"title\": \"Charlotte's Web\",\n            \"author\": \"E.B. White\",\n            \"isbn\": \"9780064400558\",\n            \"price\": 14.5,\n            \"description\": \"Children's story about friendship and kindness\",\n            \"coverImage\": \"\",\n            \"categoryIds\": [\n                3\n            ]\n        },\n        {\n            \"id\": 13,\n            \"title\": \"Matilda\",\n            \"author\": \"Roald Dahl\",\n            \"isbn\": \"9780142410370\",\n            \"price\": 15,\n            \"description\": \"Story about a brilliant girl with special powers\",\n            \"coverImage\": \"\",\n            \"categoryIds\": [\n                3\n            ]\n        },\n        {\n            \"id\": 14,\n            \"title\": \"Hamlet\",\n            \"author\": \"William Shakespeare\",\n            \"isbn\": \"9780743477123\",\n            \"price\": 12.99,\n            \"description\": \"Tragedy about the Prince of Denmark\",\n            \"coverImage\": \"\",\n            \"categoryIds\": [\n                5\n            ]\n        },\n        {\n            \"id\": 15,\n            \"title\": \"Death of a Salesman\",\n            \"author\": \"Arthur Miller\",\n            \"isbn\": \"9780140481341\",\n            \"price\": 14,\n            \"description\": \"Drama about the struggles of an aging salesman\",\n            \"coverImage\": \"\",\n            \"categoryIds\": [\n                5\n            ]\n        },\n        {\n            \"id\": 16,\n            \"title\": \"The Raven and Other Poems\",\n            \"author\": \"Edgar Allan Poe\",\n            \"isbn\": \"9780486266855\",\n            \"price\": 11.5,\n            \"description\": \"Collection of classic narrative poems\",\n            \"coverImage\": \"\",\n            \"categoryIds\": [\n                6\n            ]\n        },\n        {\n            \"id\": 17,\n            \"title\": \"Leaves of Grass\",\n            \"author\": \"Walt Whitman\",\n            \"isbn\": \"9780199535738\",\n            \"price\": 13.99,\n            \"description\": \"Poetry celebrating nature and humanity\",\n            \"coverImage\": \"\",\n            \"categoryIds\": [\n                6\n            ]\n        }\n    ],\n    \"pageable\": {\n        \"pageNumber\": 0,\n        \"pageSize\": 20,\n        \"sort\": {\n            \"sorted\": false,\n            \"unsorted\": true,\n            \"empty\": true\n        },\n        \"offset\": 0,\n        \"unpaged\": false,\n        \"paged\": true\n    },\n    \"totalPages\": 1,\n    \"totalElements\": 17,\n    \"last\": true,\n    \"numberOfElements\": 17,\n    \"size\": 20,\n    \"number\": 0,\n    \"sort\": {\n        \"sorted\": false,\n        \"unsorted\": true,\n        \"empty\": true\n    },\n    \"first\": true,\n    \"empty\": false\n}"}],"_postman_id":"9a622d8e-32c0-4617-8187-20b8a68d27cf"},{"name":"View book","id":"2fa93706-375b-4ef3-9d48-f0b4350bbf7f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{user_token}}"}]},"isInherited":false},"method":"GET","header":[],"url":"/books/1","description":"<p>Retrieves the full details of a single book by its ID. Returns all available fields including <code>title</code>, <code>author</code>, <code>description</code>, <code>price</code> and <code>category</code>.</p>\n","urlObject":{"path":["books","1"],"host":[""],"query":[],"variable":[]}},"response":[{"id":"40af0b51-fdd7-4ba1-aa21-a9a2b8266af3","name":"View book","originalRequest":{"method":"GET","header":[],"url":"/books/1"},"status":"OK","code":200,"_postman_previewlanguage":"Text","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":"Mon, 04 May 2026 19:36:26 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": 1,\n    \"title\": \"Clean Code\",\n    \"author\": \"Robert C. Martin\",\n    \"isbn\": \"9780132350884\",\n    \"price\": 35.5,\n    \"description\": \"A Handbook of Agile Software Craftsmanship\",\n    \"coverImage\": \"\",\n    \"categoryIds\": [\n        4\n    ]\n}"}],"_postman_id":"2fa93706-375b-4ef3-9d48-f0b4350bbf7f"},{"name":"Creation","id":"cb4224cf-5cb9-44c3-bfc6-319ec60929e2","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{admin_token}}"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n  \"title\": \"Test\",\r\n  \"author\": \"Tester\",\r\n  \"isbn\": \"12345678\",\r\n  \"price\": 100,\r\n  \"description\": \"test description\",\r\n  \"coverImage\": \"test-image\",\r\n  \"categoryIds\": [\r\n    1, 2\r\n  ]\r\n}","options":{"raw":{"language":"json"}}},"url":"/books","description":"<p>Creates a new book in the catalog. Accepts book details in the request body. Requires admin authorization.</p>\n","urlObject":{"path":["books"],"host":[""],"query":[],"variable":[]}},"response":[{"id":"ffd5737d-a307-4223-b2e0-c356598f9a8b","name":"Creation","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n  \"title\": \"Test\",\r\n  \"author\": \"Tester\",\r\n  \"isbn\": \"12345678\",\r\n  \"price\": 100,\r\n  \"description\": \"test description\",\r\n  \"coverImage\": \"test-image\",\r\n  \"categoryIds\": [\r\n    1, 2\r\n  ]\r\n}","options":{"raw":{"language":"json"}}},"url":"/books"},"status":"Created","code":201,"_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":"Mon, 04 May 2026 20:19:32 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": 18,\n    \"title\": \"Test\",\n    \"author\": \"Tester\",\n    \"isbn\": \"12345678\",\n    \"price\": 100,\n    \"description\": \"test description\",\n    \"coverImage\": \"test-image\",\n    \"categoryIds\": [\n        2,\n        1\n    ]\n}"}],"_postman_id":"cb4224cf-5cb9-44c3-bfc6-319ec60929e2"},{"name":"Update","id":"112df294-d075-4fdf-9c7f-9bca0b560f7e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{admin_token}}"}]},"isInherited":false},"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\r\n  \"title\": \"Test\",\r\n  \"author\": \"Tester\",\r\n  \"isbn\": \"1234567890\",\r\n  \"price\": 100,\r\n  \"description\": \"test description\",\r\n  \"coverImage\": \"test-image\",\r\n  \"categoryIds\": [\r\n    1, 2\r\n  ]\r\n}","options":{"raw":{"language":"json"}}},"url":"/books/1","description":"<p>Replaces all fields of an existing book by its ID. Accepts the full updated book object in the request body. Requires admin authorization.</p>\n","urlObject":{"path":["books","1"],"host":[""],"query":[],"variable":[]}},"response":[{"id":"6bfd3e37-82b9-4790-a29d-a418d0300ae9","name":"Update","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\r\n  \"title\": \"Test\",\r\n  \"author\": \"Tester\",\r\n  \"isbn\": \"1234567890\",\r\n  \"price\": 100,\r\n  \"description\": \"test description\",\r\n  \"coverImage\": \"test-image\",\r\n  \"categoryIds\": [\r\n    1, 2\r\n  ]\r\n}","options":{"raw":{"language":"json"}}},"url":"/books/1"},"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":"Mon, 04 May 2026 20:19:57 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": 1,\n    \"title\": \"Test\",\n    \"author\": \"Tester\",\n    \"isbn\": \"1234567890\",\n    \"price\": 100,\n    \"description\": \"test description\",\n    \"coverImage\": \"test-image\",\n    \"categoryIds\": [\n        2,\n        1\n    ]\n}"}],"_postman_id":"112df294-d075-4fdf-9c7f-9bca0b560f7e"},{"name":"Deletion","id":"09ea3df1-17ac-44c4-8fdb-2227fe1c2800","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{admin_token}}"}]},"isInherited":false},"method":"DELETE","header":[],"url":"/books/1","description":"<p>Deletes a book from the catalog by its ID (<em>soft deletion</em>). Requires admin authorization.</p>\n","urlObject":{"path":["books","1"],"host":[""],"query":[],"variable":[]}},"response":[{"id":"5467140e-da62-4318-9543-b4834631aafa","name":"Deletion","originalRequest":{"method":"DELETE","header":[],"url":"/books/1"},"status":"No Content","code":204,"_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":"Date","value":"Mon, 04 May 2026 20:20:13 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":null}],"_postman_id":"09ea3df1-17ac-44c4-8fdb-2227fe1c2800"},{"name":"Search","id":"cf61fc11-67da-4113-8c0d-30d341494828","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{user_token}}"}]},"isInherited":false},"method":"GET","header":[],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":"/books/search?titles=The Clean Coder, 1984&authors=Robert C. Martin, George Orwell","description":"<p>Searches for books by title and/or author using query parameters. Supports multiple values per parameter as a comma-separated list. Returns all matching books.</p>\n","urlObject":{"path":["books","search"],"host":[""],"query":[{"key":"titles","value":"The Clean Coder, 1984"},{"key":"authors","value":"Robert C. Martin, George Orwell"}],"variable":[]}},"response":[{"id":"292b7bab-37e4-4a36-92d3-9875a2c7159f","name":"Search","originalRequest":{"method":"GET","header":[],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":{"raw":"/books/search?titles=The Clean Coder, 1984&authors=Robert C. Martin, George Orwell","host":[""],"path":["books","search"],"query":[{"key":"titles","value":"The Clean Coder, 1984"},{"key":"authors","value":"Robert C. Martin, George Orwell"}]}},"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":"Mon, 04 May 2026 20:24:26 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"content\": [\n        {\n            \"id\": 2,\n            \"title\": \"The Clean Coder\",\n            \"author\": \"Robert C. Martin\",\n            \"isbn\": \"9780137081073\",\n            \"price\": 30,\n            \"description\": \"A Code of Conduct for Professional Programmers\",\n            \"coverImage\": \"\",\n            \"categoryIds\": [\n                4\n            ]\n        },\n        {\n            \"id\": 6,\n            \"title\": \"1984\",\n            \"author\": \"George Orwell\",\n            \"isbn\": \"9780451524935\",\n            \"price\": 18.99,\n            \"description\": \"Dystopian novel about totalitarian control\",\n            \"coverImage\": \"\",\n            \"categoryIds\": [\n                1\n            ]\n        }\n    ],\n    \"pageable\": {\n        \"pageNumber\": 0,\n        \"pageSize\": 20,\n        \"sort\": {\n            \"sorted\": false,\n            \"unsorted\": true,\n            \"empty\": true\n        },\n        \"offset\": 0,\n        \"unpaged\": false,\n        \"paged\": true\n    },\n    \"totalPages\": 1,\n    \"totalElements\": 2,\n    \"last\": true,\n    \"numberOfElements\": 2,\n    \"size\": 20,\n    \"number\": 0,\n    \"sort\": {\n        \"sorted\": false,\n        \"unsorted\": true,\n        \"empty\": true\n    },\n    \"first\": true,\n    \"empty\": false\n}"}],"_postman_id":"cf61fc11-67da-4113-8c0d-30d341494828"}],"id":"40947f80-a0b4-484d-ba38-146dd4d15a08","description":"<p>Covers all endpoints for managing the book catalog. Includes operations to browse the full list of books, retrieve a single book by ID, search books by title and author, add new books, update existing entries and delete books from the catalog. Admin authorization is required for write operations (creation, update, deletion).</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"event":[{"listen":"prerequest","script":{"id":"8092c5db-ced8-4173-90a6-81df1c441a28","type":"text/javascript","packages":{},"requests":{},"exec":[""]}},{"listen":"test","script":{"id":"65db5553-4a3d-45a1-9275-88f01bdf5dfd","type":"text/javascript","packages":{},"requests":{},"exec":[""]}}],"_postman_id":"40947f80-a0b4-484d-ba38-146dd4d15a08"},{"name":"⭐ Category","item":[{"name":"Creation","id":"aee16e94-68aa-4450-bcd1-cfc63b32667c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{admin_token}}"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n  \"name\": \"Test\",\r\n  \"description\": \"test category\"\r\n}","options":{"raw":{"language":"json"}}},"url":"/categories","description":"<p>Creates a new book category. Accepts the category name in the request body. Requires admin authorization.</p>\n","urlObject":{"path":["categories"],"host":[""],"query":[],"variable":[]}},"response":[{"id":"e80df9fc-6169-47c8-9e25-51507666c07c","name":"Creation","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n  \"name\": \"Test\",\r\n  \"description\": \"test category\"\r\n}","options":{"raw":{"language":"json"}}},"url":"/categories"},"status":"Created","code":201,"_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":"Mon, 04 May 2026 20:25:50 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"name\": \"Test\",\n    \"description\": \"test category\"\n}"}],"_postman_id":"aee16e94-68aa-4450-bcd1-cfc63b32667c"},{"name":"Update","id":"2ac2c606-3fb2-4e57-809d-27b5bac27c8c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{admin_token}}"}]},"isInherited":false},"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\r\n  \"name\": \"Test Category\",\r\n  \"description\": \"test description\"\r\n}","options":{"raw":{"language":"json"}}},"url":"/categories/1","description":"<p>Replaces the fields of an existing category by its ID. Accepts the updated category data in the request body. Requires admin authorization.</p>\n","urlObject":{"path":["categories","1"],"host":[""],"query":[],"variable":[]}},"response":[{"id":"e71cdb66-76e4-4c27-b711-4e2e3e6d0d92","name":"Update","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\r\n  \"name\": \"Test Category\",\r\n  \"description\": \"test description\"\r\n}","options":{"raw":{"language":"json"}}},"url":"/categories/1"},"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":"Mon, 04 May 2026 20:26:38 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"name\": \"Test Category\",\n    \"description\": \"test description\"\n}"}],"_postman_id":"2ac2c606-3fb2-4e57-809d-27b5bac27c8c"},{"name":"View all","id":"7b3517a3-571b-488d-b2f6-6b02c4f93578","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{user_token}}"}]},"isInherited":false},"method":"GET","header":[],"body":{"mode":"raw","raw":"{\r\n  \"name\": \"Test\",\r\n  \"description\": \"test category\"\r\n}"},"url":"/categories","description":"<p>Retrieves a list of all available book categories.</p>\n","urlObject":{"path":["categories"],"host":[""],"query":[],"variable":[]}},"response":[{"id":"ba9ed13e-4311-4cb7-b6a2-1e8765f0fc0f","name":"View all","originalRequest":{"method":"GET","header":[],"body":{"mode":"raw","raw":"{\r\n  \"name\": \"Test\",\r\n  \"description\": \"test category\"\r\n}"},"url":"/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":"Mon, 04 May 2026 20:15:19 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"content\": [\n        {\n            \"name\": \"Fiction\",\n            \"description\": \"Imaginative stories\"\n        },\n        {\n            \"name\": \"Non-fiction\",\n            \"description\": \"Books based on real facts, people, and events\"\n        },\n        {\n            \"name\": \"Children\",\n            \"description\": \"Books written for children\"\n        },\n        {\n            \"name\": \"Academic\",\n            \"description\": \"Books used for studying, teaching, and research\"\n        },\n        {\n            \"name\": \"Drama\",\n            \"description\": \"Books written in script form for performance\"\n        },\n        {\n            \"name\": \"Poetry\",\n            \"description\": \"Books written in verse form\"\n        }\n    ],\n    \"pageable\": {\n        \"pageNumber\": 0,\n        \"pageSize\": 20,\n        \"sort\": {\n            \"sorted\": false,\n            \"unsorted\": true,\n            \"empty\": true\n        },\n        \"offset\": 0,\n        \"unpaged\": false,\n        \"paged\": true\n    },\n    \"totalPages\": 1,\n    \"totalElements\": 6,\n    \"last\": true,\n    \"numberOfElements\": 6,\n    \"size\": 20,\n    \"number\": 0,\n    \"sort\": {\n        \"sorted\": false,\n        \"unsorted\": true,\n        \"empty\": true\n    },\n    \"first\": true,\n    \"empty\": false\n}"}],"_postman_id":"7b3517a3-571b-488d-b2f6-6b02c4f93578"},{"name":"View category","id":"43d41b81-8c75-4979-a286-c6fdba74652c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{user_token}}"}]},"isInherited":false},"method":"GET","header":[],"url":"/categories/1","description":"<p>Retrieves the details of a single category by its ID.</p>\n","urlObject":{"path":["categories","1"],"host":[""],"query":[],"variable":[]}},"response":[{"id":"f7c55dbf-caf8-446b-959b-fc232e0043e3","name":"View category","originalRequest":{"method":"GET","header":[],"url":"/categories/1"},"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":"Mon, 04 May 2026 20:29:10 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"name\": \"Test Category\",\n    \"description\": \"test description\"\n}"}],"_postman_id":"43d41b81-8c75-4979-a286-c6fdba74652c"},{"name":"Deletion","id":"aee024f4-571f-46a2-8d3e-5e2f03d0aa11","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{user_token}}"}]},"isInherited":false},"method":"DELETE","header":[],"url":"/categories/1","description":"<p>Deletes a category by its ID (<em>soft deletion</em>). Requires admin authorization.</p>\n","urlObject":{"path":["categories","1"],"host":[""],"query":[],"variable":[]}},"response":[{"id":"50a616bc-e9b4-49eb-968b-f5022b2d74d3","name":"Deletion","originalRequest":{"method":"DELETE","header":[],"url":"/categories/1"},"status":"No Content","code":204,"_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":"Date","value":"Mon, 04 May 2026 20:29:36 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":null}],"_postman_id":"aee024f4-571f-46a2-8d3e-5e2f03d0aa11"},{"name":"Books","id":"4dfc0470-e083-47ad-afd7-1cfab0b31ac8","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{user_token}}"}]},"isInherited":false},"method":"GET","header":[],"body":{"mode":"raw","raw":"{\r\n  \"name\": \"Test\",\r\n  \"description\": \"test category\"\r\n}"},"url":"/categories/2/books","description":"<p>Retrieves all books belonging to a specific category, identified by its ID in the path.</p>\n","urlObject":{"path":["categories","2","books"],"host":[""],"query":[],"variable":[]}},"response":[{"id":"fe6676e9-c5f3-42ff-9ae3-1ce886b89f4e","name":"Books","originalRequest":{"method":"GET","header":[],"body":{"mode":"raw","raw":"{\r\n  \"name\": \"Test\",\r\n  \"description\": \"test category\"\r\n}"},"url":"/categories/2/books"},"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":"Mon, 04 May 2026 20:30:26 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"content\": [\n        {\n            \"id\": 9,\n            \"title\": \"Sapiens: A Brief History of Humankind\",\n            \"author\": \"Yuval Noah Harari\",\n            \"isbn\": \"9780062316097\",\n            \"price\": 25,\n            \"description\": \"History of human evolution and civilization\",\n            \"coverImage\": \"\"\n        },\n        {\n            \"id\": 10,\n            \"title\": \"Atomic Habits\",\n            \"author\": \"James Clear\",\n            \"isbn\": \"9780735211292\",\n            \"price\": 21,\n            \"description\": \"Guide to building good habits and breaking bad ones\",\n            \"coverImage\": \"\"\n        },\n        {\n            \"id\": 18,\n            \"title\": \"Test\",\n            \"author\": \"Tester\",\n            \"isbn\": \"12345678\",\n            \"price\": 100,\n            \"description\": \"test description\",\n            \"coverImage\": \"test-image\"\n        }\n    ],\n    \"pageable\": {\n        \"pageNumber\": 0,\n        \"pageSize\": 20,\n        \"sort\": {\n            \"sorted\": false,\n            \"unsorted\": true,\n            \"empty\": true\n        },\n        \"offset\": 0,\n        \"unpaged\": false,\n        \"paged\": true\n    },\n    \"totalPages\": 1,\n    \"totalElements\": 3,\n    \"last\": true,\n    \"numberOfElements\": 3,\n    \"size\": 20,\n    \"number\": 0,\n    \"sort\": {\n        \"sorted\": false,\n        \"unsorted\": true,\n        \"empty\": true\n    },\n    \"first\": true,\n    \"empty\": false\n}"}],"_postman_id":"4dfc0470-e083-47ad-afd7-1cfab0b31ac8"}],"id":"3b6e1692-d7ea-4bc8-95db-3e7d569a5db1","description":"<p>Manages book categories within the bookstore. Includes endpoints to list all categories, retrieve a single category by ID, create new categories, update existing ones and delete them. Also provides an endpoint to fetch all books belonging to a specific category. Admin authorization is required for write operations (creation, update, deletion).</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"event":[{"listen":"prerequest","script":{"id":"c09c9c9c-e640-4f89-8f68-22eaa2339d86","type":"text/javascript","packages":{},"requests":{},"exec":[""]}},{"listen":"test","script":{"id":"f9f9b770-fb67-4d2b-9715-09f6ecae18dc","type":"text/javascript","packages":{},"requests":{},"exec":[""]}}],"_postman_id":"3b6e1692-d7ea-4bc8-95db-3e7d569a5db1"},{"name":"🛒 Shopping cart","item":[{"name":"View cart","id":"54c45164-db95-40a0-b9fb-21d36f96ffdb","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{user_token}}"}]},"isInherited":false},"method":"GET","header":[],"body":{"mode":"raw","raw":"{\r\n  \"shippingAddress\": \"Test shippingAddress\"\r\n}"},"url":"/cart","description":"<p>Retrieves the current contents of the authenticated user's shopping cart, including all added books and their quantities. Requires user authorization.</p>\n","urlObject":{"path":["cart"],"host":[""],"query":[],"variable":[]}},"response":[{"id":"09ad78de-5fc1-4866-aad2-b380de22397a","name":"View cart","originalRequest":{"method":"GET","header":[],"body":{"mode":"raw","raw":"{\r\n  \"shippingAddress\": \"Test shippingAddress\"\r\n}"},"url":"/cart"},"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":"Mon, 04 May 2026 20:42:57 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": 2,\n    \"userId\": 2,\n    \"cartItems\": [\n        {\n            \"id\": 2,\n            \"bookId\": 7,\n            \"bookTitle\": \"The Hobbit\",\n            \"quantity\": 1\n        }\n    ]\n}"}],"_postman_id":"54c45164-db95-40a0-b9fb-21d36f96ffdb"},{"name":"Add book","id":"f784a89c-dbfc-4d4a-b160-35b98530aa47","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{user_token}}"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n  \"bookId\": 2,\r\n  \"quantity\": 10\r\n}","options":{"raw":{"language":"json"}}},"url":"/cart","description":"<p>Adds a book to the authenticated user's shopping cart. Accepts the book ID and desired quantity in the request body. Requires user authorization.</p>\n","urlObject":{"path":["cart"],"host":[""],"query":[],"variable":[]}},"response":[{"id":"63b64fd8-89df-4a76-aac2-4b83c088d1d1","name":"Add book","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n  \"bookId\": 2,\r\n  \"quantity\": 10\r\n}","options":{"raw":{"language":"json"}}},"url":"/cart"},"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":"Mon, 04 May 2026 20:43:16 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": 2,\n    \"userId\": 2,\n    \"cartItems\": [\n        {\n            \"id\": 6,\n            \"bookId\": 2,\n            \"bookTitle\": \"The Clean Coder\",\n            \"quantity\": 10\n        },\n        {\n            \"id\": 2,\n            \"bookId\": 7,\n            \"bookTitle\": \"The Hobbit\",\n            \"quantity\": 1\n        }\n    ]\n}"}],"_postman_id":"f784a89c-dbfc-4d4a-b160-35b98530aa47"},{"name":"Update book quantity","id":"6d9c4e64-84f3-4326-84ab-e67a01397c4f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{user_token}}"}]},"isInherited":false},"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\r\n  \"quantity\": 10\r\n}","options":{"raw":{"language":"json"}}},"url":"/cart/items/2","description":"<p>Updates the quantity of a specific book already in the cart, identified by the cart item ID in the path. Requires user authorization.</p>\n","urlObject":{"path":["cart","items","2"],"host":[""],"query":[],"variable":[]}},"response":[{"id":"7d945f42-27b6-4118-8f74-db0df2adec94","name":"Update book quantity","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\r\n  \"quantity\": 10\r\n}","options":{"raw":{"language":"json"}}},"url":"/cart/items/2"},"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":"Mon, 04 May 2026 20:43:27 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": 2,\n    \"userId\": 2,\n    \"cartItems\": [\n        {\n            \"id\": 6,\n            \"bookId\": 2,\n            \"bookTitle\": \"The Clean Coder\",\n            \"quantity\": 10\n        },\n        {\n            \"id\": 2,\n            \"bookId\": 7,\n            \"bookTitle\": \"The Hobbit\",\n            \"quantity\": 10\n        }\n    ]\n}"}],"_postman_id":"6d9c4e64-84f3-4326-84ab-e67a01397c4f"},{"name":"Delete book","id":"f83a5659-7fd7-4396-a095-b4d41f5e33e2","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{user_token}}"}]},"isInherited":false},"method":"DELETE","header":[],"body":{"mode":"raw","raw":"{\r\n  \"quantity\": 10\r\n}"},"url":"/cart/items/1","description":"<p>Removes a specific book from the cart, identified by the cart item ID in the path. Requires user authorization.</p>\n","urlObject":{"path":["cart","items","1"],"host":[""],"query":[],"variable":[]}},"response":[{"id":"9790d0d8-fb89-4fed-a0e0-2511126c2a45","name":"Delete book","originalRequest":{"method":"DELETE","header":[],"body":{"mode":"raw","raw":"{\r\n  \"quantity\": 10\r\n}"},"url":"/cart/items/1"},"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-Length","value":"0"},{"key":"Date","value":"Mon, 04 May 2026 20:42:39 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":null}],"_postman_id":"f83a5659-7fd7-4396-a095-b4d41f5e33e2"}],"id":"25da9350-2982-49ad-9e57-4a62d524f2e9","description":"<p>Manages the current user's shopping cart. Includes endpoints to view the cart contents, add a book to the cart, update the quantity of an existing cart item and remove a book from the cart. All operations require user authorization.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{user_token}}"}]},"isInherited":false},"event":[{"listen":"prerequest","script":{"id":"98fac844-c979-4bac-ac31-5a7dda8e75f8","type":"text/javascript","packages":{},"requests":{},"exec":[""]}},{"listen":"test","script":{"id":"ad1f49a0-220c-4070-b966-8d5c685c9ef3","type":"text/javascript","packages":{},"requests":{},"exec":[""]}}],"_postman_id":"25da9350-2982-49ad-9e57-4a62d524f2e9"},{"name":"🧾 Order","item":[{"name":"View all","id":"73070267-41b5-405e-bfb3-e3d88204a706","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{user_token}}"}]},"isInherited":false},"method":"GET","header":[],"url":"/orders","description":"<p>Retrieves a list of all orders placed by the authenticated user. Requires user authorization.</p>\n","urlObject":{"path":["orders"],"host":[""],"query":[],"variable":[]}},"response":[{"id":"7420fd13-c9a8-44ec-ba9e-c4e1bc32376a","name":"View all","originalRequest":{"method":"GET","header":[],"url":"/orders"},"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":"Mon, 04 May 2026 20:46:16 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"content\": [\n        {\n            \"id\": 2,\n            \"userId\": 3,\n            \"status\": \"ACTIVE\",\n            \"total\": 22.5,\n            \"orderDate\": \"2025-10-05T10:15:00\",\n            \"orderItems\": [\n                {\n                    \"id\": 3,\n                    \"bookId\": 7,\n                    \"quantity\": 1\n                }\n            ]\n        },\n        {\n            \"id\": 3,\n            \"userId\": 3,\n            \"status\": \"COMPLETED\",\n            \"total\": 232.5,\n            \"orderDate\": \"2025-12-05T10:15:00\",\n            \"orderItems\": [\n                {\n                    \"id\": 5,\n                    \"bookId\": 10,\n                    \"quantity\": 2\n                },\n                {\n                    \"id\": 4,\n                    \"bookId\": 3,\n                    \"quantity\": 3\n                }\n            ]\n        }\n    ],\n    \"pageable\": {\n        \"pageNumber\": 0,\n        \"pageSize\": 20,\n        \"sort\": {\n            \"sorted\": false,\n            \"unsorted\": true,\n            \"empty\": true\n        },\n        \"offset\": 0,\n        \"unpaged\": false,\n        \"paged\": true\n    },\n    \"totalPages\": 1,\n    \"totalElements\": 2,\n    \"last\": true,\n    \"numberOfElements\": 2,\n    \"size\": 20,\n    \"number\": 0,\n    \"sort\": {\n        \"sorted\": false,\n        \"unsorted\": true,\n        \"empty\": true\n    },\n    \"first\": true,\n    \"empty\": false\n}"}],"_postman_id":"73070267-41b5-405e-bfb3-e3d88204a706"},{"name":"Creation","id":"4a82ecdb-dfe2-4dce-b93c-3a02def12970","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{user_token}}"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n  \"shippingAddress\": \"Test shippingAddress\"\r\n}","options":{"raw":{"language":"json"}}},"url":"/orders","description":"<p>Places a new order based on the current contents of the user's shopping cart. Requires user authorization.</p>\n","urlObject":{"path":["orders"],"host":[""],"query":[],"variable":[]}},"response":[{"id":"8ffde2a0-70e3-4d03-8471-953c7d9cafb7","name":"Creation","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n  \"shippingAddress\": \"Test shippingAddress\"\r\n}","options":{"raw":{"language":"json"}}},"url":"/orders"},"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":"Mon, 04 May 2026 20:43:47 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": 7,\n    \"userId\": 2,\n    \"status\": \"PENDING\",\n    \"total\": 525,\n    \"orderDate\": \"2026-05-04T20:43:47.508705156\",\n    \"orderItems\": [\n        {\n            \"id\": 10,\n            \"bookId\": 7,\n            \"quantity\": 10\n        },\n        {\n            \"id\": 11,\n            \"bookId\": 2,\n            \"quantity\": 10\n        }\n    ]\n}"}],"_postman_id":"4a82ecdb-dfe2-4dce-b93c-3a02def12970"},{"name":"Update","id":"5a892308-6be8-46ad-8942-68919ead8b6d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{admin_token}}"}]},"isInherited":false},"method":"PATCH","header":[],"body":{"mode":"raw","raw":"{\r\n  \"status\": \"ACTIVE\"\r\n}","options":{"raw":{"language":"json"}}},"url":"/orders/2","description":"<p>Updates an existing order by its ID by changing its status. Requires admin authorization.</p>\n","urlObject":{"path":["orders","2"],"host":[""],"query":[],"variable":[]}},"response":[{"id":"d094c6d9-ed83-4482-a4b6-cc2de1bf9650","name":"Update","originalRequest":{"method":"PATCH","header":[],"body":{"mode":"raw","raw":"{\r\n  \"status\": \"ACTIVE\"\r\n}","options":{"raw":{"language":"json"}}},"url":"/orders/2"},"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":"Mon, 04 May 2026 20:44:22 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": 2,\n    \"userId\": 3,\n    \"status\": \"ACTIVE\",\n    \"total\": 22.5,\n    \"orderDate\": \"2025-10-05T10:15:00\",\n    \"orderItems\": [\n        {\n            \"id\": 3,\n            \"bookId\": 7,\n            \"quantity\": 1\n        }\n    ]\n}"}],"_postman_id":"5a892308-6be8-46ad-8942-68919ead8b6d"},{"name":"Items","id":"5e15e20a-2e02-4e0b-8d03-8c5d3f7583b3","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{user_token}}"}]},"isInherited":false},"method":"GET","header":[],"body":{"mode":"raw","raw":"{\r\n  \"shippingAddress\": \"Test shippingAddress\"\r\n}"},"url":"/orders/1/items","description":"<p>Retrieves all items included in a specific order, identified by the order ID in the path. Requires user authorization.</p>\n","urlObject":{"path":["orders","1","items"],"host":[""],"query":[],"variable":[]}},"response":[{"id":"a61006c6-76c7-49f7-8007-c7030134f9e8","name":"Items","originalRequest":{"method":"GET","header":[],"body":{"mode":"raw","raw":"{\r\n  \"shippingAddress\": \"Test shippingAddress\"\r\n}"},"url":"/orders/1/items"},"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":"Mon, 04 May 2026 20:37:59 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"content\": [\n        {\n            \"id\": 1,\n            \"bookId\": 1,\n            \"quantity\": 1\n        },\n        {\n            \"id\": 2,\n            \"bookId\": 6,\n            \"quantity\": 2\n        }\n    ],\n    \"pageable\": {\n        \"pageNumber\": 0,\n        \"pageSize\": 20,\n        \"sort\": {\n            \"sorted\": false,\n            \"unsorted\": true,\n            \"empty\": true\n        },\n        \"offset\": 0,\n        \"unpaged\": false,\n        \"paged\": true\n    },\n    \"totalPages\": 1,\n    \"totalElements\": 2,\n    \"last\": true,\n    \"numberOfElements\": 2,\n    \"size\": 20,\n    \"number\": 0,\n    \"sort\": {\n        \"sorted\": false,\n        \"unsorted\": true,\n        \"empty\": true\n    },\n    \"first\": true,\n    \"empty\": false\n}"}],"_postman_id":"5e15e20a-2e02-4e0b-8d03-8c5d3f7583b3"},{"name":"View item","id":"9e9d07ae-6dd3-4446-9aad-354dd9bf9451","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{user_token}}"}]},"isInherited":false},"method":"GET","header":[],"body":{"mode":"raw","raw":"{\r\n  \"shippingAddress\": \"Test shippingAddress\"\r\n}"},"url":"/orders/1/items/1","description":"<p>Retrieves the details of a single item within a specific order, identified by both the order ID and the item ID in the path. Requires user authorization.</p>\n","urlObject":{"path":["orders","1","items","1"],"host":[""],"query":[],"variable":[]}},"response":[{"id":"3b7402d1-97d6-4178-8183-116d5cc582f7","name":"View item","originalRequest":{"method":"GET","header":[],"body":{"mode":"raw","raw":"{\r\n  \"shippingAddress\": \"Test shippingAddress\"\r\n}"},"url":"/orders/1/items/1"},"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":"Mon, 04 May 2026 20:38:26 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": 1,\n    \"bookId\": 1,\n    \"quantity\": 1\n}"}],"_postman_id":"9e9d07ae-6dd3-4446-9aad-354dd9bf9451"}],"id":"1c1e0161-67ad-4e5a-a9bc-dd42410cb262","description":"<p>Covers all endpoints related to order management. Includes operations to retrieve the full list of orders, place a new order, update an existing order's status and view the items within a specific order — both as a full list and individually by item ID. User authorization is required for all operations.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"<token>"}]},"isInherited":false},"event":[{"listen":"prerequest","script":{"id":"9beab67a-d0ab-463e-a5b0-5de0786738b7","type":"text/javascript","packages":{},"requests":{},"exec":[""]}},{"listen":"test","script":{"id":"875aaec6-8bab-441a-9c2f-0c2ea9a779e5","type":"text/javascript","packages":{},"requests":{},"exec":[""]}}],"_postman_id":"1c1e0161-67ad-4e5a-a9bc-dd42410cb262"}],"event":[{"listen":"prerequest","script":{"id":"9567ed6a-2123-4084-ad5b-c8b928eec91c","type":"text/javascript","packages":{},"requests":{},"exec":[""]}},{"listen":"test","script":{"id":"a197d5bd-9396-4fb8-b3cc-120b297524b6","type":"text/javascript","packages":{},"requests":{},"exec":[""]}}],"variable":[{"id":"c73f318f-b0a8-49a9-a72f-db302c34d908","key":"baseUrl","value":""}]}