{"info":{"_postman_id":"fe7fd71b-d685-471c-bea3-b53de48740dd","name":"Code A2Z","description":"<html><head></head><body><h3 id=\"code-a2z-api-collection\"><strong>Code A2Z API Collection</strong></h3>\n<p>This collection contains all endpoints for the <strong>Code A2Z platform</strong>, a collaborative blogging and project-sharing platform. It provides APIs to manage users, projects, notifications, likes, comments, collections, and collaborations.</p>\n<p>The APIs are organized into folders based on feature domains:</p>\n<hr>\n<h4 id=\"1-user\"><strong>1. User</strong></h4>\n<p>Endpoints for <strong>user search, profile fetching, and profile updates</strong>.</p>\n<ul>\n<li><p>Search users by username.</p>\n</li>\n<li><p>Fetch a user profile by username.</p>\n</li>\n<li><p>Update authenticated user’s profile details and profile image.</p>\n</li>\n</ul>\n<hr>\n<h4 id=\"2-projects\"><strong>2. Projects</strong></h4>\n<p>Endpoints to <strong>create, fetch, update, delete, and manage projects</strong>.</p>\n<ul>\n<li><p>Create, edit, and delete projects.</p>\n</li>\n<li><p>Fetch all projects, trending projects, search projects, or user-written projects.</p>\n</li>\n<li><p>Paginate and filter projects with counts.</p>\n</li>\n</ul>\n<hr>\n<h4 id=\"3-notifications\"><strong>3. Notifications</strong></h4>\n<p>Endpoints to <strong>handle user notifications</strong>.</p>\n<ul>\n<li><p>Fetch notifications (with pagination and filters).</p>\n</li>\n<li><p>Check if new notifications are available.</p>\n</li>\n<li><p>Get total notifications count.</p>\n</li>\n<li><p>Marks notifications as seen when fetched.</p>\n</li>\n</ul>\n<hr>\n<h4 id=\"4-likes\"><strong>4. Likes</strong></h4>\n<p>Endpoints to <strong>like or unlike a project and check like status</strong>.</p>\n<ul>\n<li><p>Like or unlike a project.</p>\n</li>\n<li><p>Check if a project is liked by the authenticated user.</p>\n</li>\n</ul>\n<hr>\n<h4 id=\"5-comments\"><strong>5. Comments</strong></h4>\n<p>Endpoints to <strong>add, fetch, delete, and reply to comments</strong> on projects.</p>\n<ul>\n<li><p>Add comments or replies.</p>\n</li>\n<li><p>Fetch comments with pagination.</p>\n</li>\n<li><p>Fetch replies of a comment.</p>\n</li>\n<li><p>Delete a comment along with its replies (if authorized).</p>\n</li>\n</ul>\n<hr>\n<h4 id=\"6-collections\"><strong>6. Collections</strong></h4>\n<p>Endpoints to <strong>manage user project collections</strong>.</p>\n<ul>\n<li><p>Create or delete collections.</p>\n</li>\n<li><p>Save projects to a collection or remove them.</p>\n</li>\n<li><p>Fetch projects of a collection and sort them by likes, newest, or oldest.</p>\n</li>\n</ul>\n<hr>\n<h4 id=\"7-collaborators\"><strong>7. Collaborators</strong></h4>\n<p>Endpoints to <strong>manage project collaboration</strong>.</p>\n<ul>\n<li><p>Invite a user to collaborate on a project.</p>\n</li>\n<li><p>Accept or reject collaboration invitations using a secure token.</p>\n</li>\n<li><p>Fetch the list of collaborators for a project (project author only).</p>\n</li>\n</ul>\n<hr>\n<p><strong>Notes:</strong></p>\n<ul>\n<li><p>All endpoints requiring authentication need a valid user token.</p>\n</li>\n<li><p>Endpoints follow <strong>RESTful standards</strong> with proper HTTP methods for GET, POST, PATCH, and DELETE.</p>\n</li>\n<li><p>Responses are standardized with <code>status</code>, <code>message</code>, and <code>data</code>.</p>\n</li>\n<li><p>Sensitive user information (like passwords) is never exposed.</p>\n</li>\n<li><p>Pagination, filtering, and sorting are implemented wherever applicable for efficient data handling.</p>\n</li>\n</ul>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"owner":"46893887","collectionId":"fe7fd71b-d685-471c-bea3-b53de48740dd","publishedId":"2sB3QNp8fM","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"publishDate":"2025-10-15T18:01:40.000Z"},"item":[{"name":"Monitor","item":[{"name":"Health Test","id":"ecbc9774-3ec8-4ac9-9348-7c7dc5fde6d9","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:8000/monitor/health","urlObject":{"path":["monitor","health"],"host":["http://localhost:8000"],"query":[],"variable":[]}},"response":[{"id":"ded49b2c-e5c7-4a33-84f6-a9741dbe582d","name":"200","originalRequest":{"method":"GET","header":[],"url":"http://localhost:8000/monitor/health"},"status":"OK","code":200,"_postman_previewlanguage":"Text","header":[{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Security-Policy","value":"default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"},{"key":"Cross-Origin-Resource-Policy","value":"same-origin"},{"key":"Origin-Agent-Cluster","value":"?1"},{"key":"Referrer-Policy","value":"no-referrer"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-DNS-Prefetch-Control","value":"off"},{"key":"X-Download-Options","value":"noopen"},{"key":"X-Frame-Options","value":"DENY"},{"key":"X-Permitted-Cross-Domain-Policies","value":"none"},{"key":"X-XSS-Protection","value":"0"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"99"},{"key":"ETag","value":"W/\"63-P0nLdKMde5RQrDkNBTEGI5zPbeQ\""},{"key":"Date","value":"Sat, 11 Oct 2025 08:09:48 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"message\": \"Service is healthy\",\n    \"data\": {\n        \"timestamp\": \"2025-10-11T08:09:48.435Z\"\n    }\n}"}],"_postman_id":"ecbc9774-3ec8-4ac9-9348-7c7dc5fde6d9"},{"name":"DB Status Test","id":"4540a22f-9b0b-4ea8-a817-c0757c86a3cf","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:8000/monitor/db-status","urlObject":{"path":["monitor","db-status"],"host":["http://localhost:8000"],"query":[],"variable":[]}},"response":[{"id":"a496c14d-5c39-4888-9369-33b08c420b0c","name":"200","originalRequest":{"method":"GET","header":[],"url":"http://localhost:8000/monitor/db-status"},"status":"OK","code":200,"_postman_previewlanguage":"Text","header":[{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Security-Policy","value":"default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"},{"key":"Cross-Origin-Resource-Policy","value":"same-origin"},{"key":"Origin-Agent-Cluster","value":"?1"},{"key":"Referrer-Policy","value":"no-referrer"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-DNS-Prefetch-Control","value":"off"},{"key":"X-Download-Options","value":"noopen"},{"key":"X-Frame-Options","value":"DENY"},{"key":"X-Permitted-Cross-Domain-Policies","value":"none"},{"key":"X-XSS-Protection","value":"0"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"66"},{"key":"ETag","value":"W/\"42-R8gSYRYmtmQs88WCCj17rRhapYo\""},{"key":"Date","value":"Sat, 11 Oct 2025 08:10:41 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"message\": 1,\n    \"data\": {\n        \"message\": \"DB Connected\"\n    }\n}"}],"_postman_id":"4540a22f-9b0b-4ea8-a817-c0757c86a3cf"}],"id":"d412aff0-9a31-4137-bb8d-69d57f6e431d","description":"<p>This folder contains endpoints used to monitor the overall system health and database connectivity.  </p>\n<p>These APIs help in regularly pinging the server and database to ensure optimal performance and prevent latency issues.</p>\n<p><strong>Endpoints:</strong></p>\n<ul>\n<li><p><strong><code>/monitor/health</code></strong> – Checks the server’s health status and confirms if the API is responsive.</p>\n</li>\n<li><p><strong><code>/monitor/db-status</code></strong> – Verifies the database connection status and ensures it’s active.</p>\n</li>\n</ul>\n","_postman_id":"d412aff0-9a31-4137-bb8d-69d57f6e431d"},{"name":"Auth","item":[{"name":"Sign Up","id":"063ebda2-8226-4134-8740-75d276440f0f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"fullname\": \"Hello World\",\n    \"email\": \"helloworld@gmail.com\",\n    \"password\": \"Hello@World1\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8000/api/auth/signup","urlObject":{"path":["api","auth","signup"],"host":["http://localhost:8000"],"query":[],"variable":[]}},"response":[{"id":"0617bd50-21c6-4f09-9b5c-385d072265b4","name":"201","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"fullname\": \"Hello World\",\n    \"email\": \"helloworld@gmail.com\",\n    \"password\": \"Hello@World1\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8000/api/auth/signup"},"status":"Created","code":201,"_postman_previewlanguage":"Text","header":[{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Security-Policy","value":"default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"},{"key":"Cross-Origin-Resource-Policy","value":"same-origin"},{"key":"Origin-Agent-Cluster","value":"?1"},{"key":"Referrer-Policy","value":"no-referrer"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-DNS-Prefetch-Control","value":"off"},{"key":"X-Download-Options","value":"noopen"},{"key":"X-Frame-Options","value":"DENY"},{"key":"X-Permitted-Cross-Domain-Policies","value":"none"},{"key":"X-XSS-Protection","value":"0"},{"key":"Set-Cookie","value":"access_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiI2OGVhMWQ3MmU1YWNjNGZiNDNiNjE0NDciLCJlbWFpbCI6IjY4ZWExZDcyZTVhY2M0ZmI0M2I2MTQ0NSIsImlhdCI6MTc2MDE3MzQyNiwiZXhwIjoxNzYwMTc0MzI2fQ.sJLE2ceYHgu3b-tQXWqPyClibnvVM0S2zfSIPUPrdps; Max-Age=900; Path=/; Expires=Sat, 11 Oct 2025 09:18:46 GMT; HttpOnly; SameSite=Strict"},{"key":"Set-Cookie","value":"refresh_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiI2OGVhMWQ3MmU1YWNjNGZiNDNiNjE0NDciLCJlbWFpbCI6IjY4ZWExZDcyZTVhY2M0ZmI0M2I2MTQ0NSIsImlhdCI6MTc2MDE3MzQyNiwiZXhwIjoxNzYwNzc4MjI2fQ.sSZfen4ys06aN14BJRa2ol0g3KIJsevSkKgx43wiflo; Max-Age=604800; Path=/; Expires=Sat, 18 Oct 2025 09:03:46 GMT; HttpOnly; SameSite=Strict"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"683"},{"key":"ETag","value":"W/\"2ab-EkQycXdyLXIro4ySqB11aCCPDa0\""},{"key":"Date","value":"Sat, 11 Oct 2025 09:03:46 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"message\": \"User registered successfully\",\n    \"data\": {\n        \"personal_info\": {\n            \"fullname\": \"hello world\",\n            \"email\": \"68ea1d72e5acc4fb43b61445\",\n            \"password\": \"$2b$10$gDTFvAEldJ7cnr5HZZH11eUvUaV8/o0DS3XlslJXrFvN98/Z.sKYm\",\n            \"username\": \"helloworld\",\n            \"bio\": \"\",\n            \"profile_img\": \"https://api.dicebear.com/6.x/notionists-neutral/svg?seed=Jack\"\n        },\n        \"social_links\": {\n            \"youtube\": \"\",\n            \"instagram\": \"\",\n            \"facebook\": \"\",\n            \"twitter\": \"\",\n            \"github\": \"\",\n            \"linkedin\": \"\",\n            \"website\": \"\"\n        },\n        \"account_info\": {\n            \"total_posts\": 0,\n            \"total_reads\": 0\n        },\n        \"role\": \"user\",\n        \"projects\": [],\n        \"collaborated_projects\": [],\n        \"collections\": [],\n        \"_id\": \"68ea1d72e5acc4fb43b61447\",\n        \"joinedAt\": \"2025-10-11T09:03:46.492Z\",\n        \"updatedAt\": \"2025-10-11T09:03:46.492Z\",\n        \"__v\": 0\n    }\n}"},{"id":"28446de7-0928-4ddc-802f-e154c000ac13","name":"400","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"fullname\": \"Hello World\",\n    \"email\": \"helloworld@gmail.com\",\n    \"password\": \"Hello@World1\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8000/api/auth/signup"},"status":"Bad Request","code":400,"_postman_previewlanguage":"Text","header":[{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Security-Policy","value":"default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"},{"key":"Cross-Origin-Resource-Policy","value":"same-origin"},{"key":"Origin-Agent-Cluster","value":"?1"},{"key":"Referrer-Policy","value":"no-referrer"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-DNS-Prefetch-Control","value":"off"},{"key":"X-Download-Options","value":"noopen"},{"key":"X-Frame-Options","value":"DENY"},{"key":"X-Permitted-Cross-Domain-Policies","value":"none"},{"key":"X-XSS-Protection","value":"0"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"58"},{"key":"ETag","value":"W/\"3a-DSQbB6rY0Nnv2JNhDTgiStNQ74E\""},{"key":"Date","value":"Sat, 11 Oct 2025 08:23:03 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"error\",\n    \"message\": \"Email is already registered\"\n}"},{"id":"5f578849-a75b-413f-8735-8d101dc5ac2e","name":"500","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"fullname\": \"Hello World\",\n    \"email\": \"helloworld@gmail.com\",\n    \"password\": \"Hello@World1\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8000/api/auth/signup"},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"Text","header":[{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Security-Policy","value":"default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"},{"key":"Cross-Origin-Resource-Policy","value":"same-origin"},{"key":"Origin-Agent-Cluster","value":"?1"},{"key":"Referrer-Policy","value":"no-referrer"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-DNS-Prefetch-Control","value":"off"},{"key":"X-Download-Options","value":"noopen"},{"key":"X-Frame-Options","value":"DENY"},{"key":"X-Permitted-Cross-Domain-Policies","value":"none"},{"key":"X-XSS-Protection","value":"0"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"108"},{"key":"ETag","value":"W/\"6c-DexOOJuTL1gLjJcNZw1gbBTJMb4\""},{"key":"Date","value":"Sat, 11 Oct 2025 08:20:26 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"error\",\n    \"message\": \"\\\"expiresIn\\\" should be a number of seconds or string representing a timespan\"\n}"}],"_postman_id":"063ebda2-8226-4134-8740-75d276440f0f"},{"name":"Login","id":"e60c47a6-05b8-40c1-b94c-10c7f4adb2eb","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"email\": \"helloworld@gmail.com\",\n    \"password\": \"Hello@World1\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8000/api/auth/login","urlObject":{"path":["api","auth","login"],"host":["http://localhost:8000"],"query":[],"variable":[]}},"response":[{"id":"224fb4d0-c50e-4e46-8900-e50c4b069714","name":"200","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"email\": \"helloworld@gmail.com\",\n    \"password\": \"Hello@World1\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8000/api/auth/login"},"status":"OK","code":200,"_postman_previewlanguage":"Text","header":[{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Security-Policy","value":"default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"},{"key":"Cross-Origin-Resource-Policy","value":"same-origin"},{"key":"Origin-Agent-Cluster","value":"?1"},{"key":"Referrer-Policy","value":"no-referrer"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-DNS-Prefetch-Control","value":"off"},{"key":"X-Download-Options","value":"noopen"},{"key":"X-Frame-Options","value":"DENY"},{"key":"X-Permitted-Cross-Domain-Policies","value":"none"},{"key":"X-XSS-Protection","value":"0"},{"key":"Set-Cookie","value":"access_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiI2OGVhMWQ3MmU1YWNjNGZiNDNiNjE0NDciLCJlbWFpbCI6IjY4ZWExZDcyZTVhY2M0ZmI0M2I2MTQ0NSIsImlhdCI6MTc2MDE3MzQ5NiwiZXhwIjoxNzYwMTc0Mzk2fQ.Wxfknc47n-RVM06faQ2_r2cUdli-sK1rSce_yiIhrms; Max-Age=900; Path=/; Expires=Sat, 11 Oct 2025 09:19:56 GMT; HttpOnly; SameSite=Strict"},{"key":"Set-Cookie","value":"refresh_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiI2OGVhMWQ3MmU1YWNjNGZiNDNiNjE0NDciLCJlbWFpbCI6IjY4ZWExZDcyZTVhY2M0ZmI0M2I2MTQ0NSIsImlhdCI6MTc2MDE3MzQ5NiwiZXhwIjoxNzYwNzc4Mjk2fQ.62xTo1UxPMV_cX5XuhnwWCFTQTwB1An02LYhrs60fWE; Max-Age=604800; Path=/; Expires=Sat, 18 Oct 2025 09:04:56 GMT; HttpOnly; SameSite=Strict"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"671"},{"key":"ETag","value":"W/\"29f-gFWWmNxIvL8LmOFuMMDCMTccm+E\""},{"key":"Date","value":"Sat, 11 Oct 2025 09:04:56 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"message\": \"Login successful\",\n    \"data\": {\n        \"personal_info\": {\n            \"fullname\": \"hello world\",\n            \"email\": \"68ea1d72e5acc4fb43b61445\",\n            \"password\": \"$2b$10$gDTFvAEldJ7cnr5HZZH11eUvUaV8/o0DS3XlslJXrFvN98/Z.sKYm\",\n            \"username\": \"helloworld\",\n            \"bio\": \"\",\n            \"profile_img\": \"https://api.dicebear.com/6.x/notionists-neutral/svg?seed=Jack\"\n        },\n        \"social_links\": {\n            \"youtube\": \"\",\n            \"instagram\": \"\",\n            \"facebook\": \"\",\n            \"twitter\": \"\",\n            \"github\": \"\",\n            \"linkedin\": \"\",\n            \"website\": \"\"\n        },\n        \"account_info\": {\n            \"total_posts\": 0,\n            \"total_reads\": 0\n        },\n        \"_id\": \"68ea1d72e5acc4fb43b61447\",\n        \"role\": \"user\",\n        \"projects\": [],\n        \"collaborated_projects\": [],\n        \"collections\": [],\n        \"joinedAt\": \"2025-10-11T09:03:46.492Z\",\n        \"updatedAt\": \"2025-10-11T09:03:46.492Z\",\n        \"__v\": 0\n    }\n}"}],"_postman_id":"e60c47a6-05b8-40c1-b94c-10c7f4adb2eb"},{"name":"Refresh Token","id":"acbed458-8058-49ea-8c94-29215814eb4a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":""},"url":"http://localhost:8000/api/auth/refresh","urlObject":{"path":["api","auth","refresh"],"host":["http://localhost:8000"],"query":[],"variable":[]}},"response":[{"id":"66d3b26c-1d14-4897-91c7-066932c2aca7","name":"200","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":""},"url":"http://localhost:8000/api/auth/refresh"},"status":"OK","code":200,"_postman_previewlanguage":"Text","header":[{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Security-Policy","value":"default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"},{"key":"Cross-Origin-Resource-Policy","value":"same-origin"},{"key":"Origin-Agent-Cluster","value":"?1"},{"key":"Referrer-Policy","value":"no-referrer"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-DNS-Prefetch-Control","value":"off"},{"key":"X-Download-Options","value":"noopen"},{"key":"X-Frame-Options","value":"DENY"},{"key":"X-Permitted-Cross-Domain-Policies","value":"none"},{"key":"X-XSS-Protection","value":"0"},{"key":"Set-Cookie","value":"access_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiI2OGVhMWQ3MmU1YWNjNGZiNDNiNjE0NDciLCJlbWFpbCI6IjY4ZWExZDcyZTVhY2M0ZmI0M2I2MTQ0NSIsImlhdCI6MTc2MDE3NTAxMywiZXhwIjoxNzYwMTc1OTEzfQ.sXIZahbtSDl4B2zduVDDShOBriF4GCHw3C-S3k0U_J0; Max-Age=900; Path=/; Expires=Sat, 11 Oct 2025 09:45:13 GMT; HttpOnly; SameSite=Strict"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"68"},{"key":"ETag","value":"W/\"44-wNbgxogaTdf2KC1HqCluTJFhWF4\""},{"key":"Date","value":"Sat, 11 Oct 2025 09:30:13 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"message\": \"Access token refreshed successfully\"\n}"},{"id":"94d8e023-43bf-422e-a783-47bd63fe1625","name":"401","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":""},"url":"http://localhost:8000/api/auth/refresh"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"Text","header":[{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Security-Policy","value":"default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"},{"key":"Cross-Origin-Resource-Policy","value":"same-origin"},{"key":"Origin-Agent-Cluster","value":"?1"},{"key":"Referrer-Policy","value":"no-referrer"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-DNS-Prefetch-Control","value":"off"},{"key":"X-Download-Options","value":"noopen"},{"key":"X-Frame-Options","value":"DENY"},{"key":"X-Permitted-Cross-Domain-Policies","value":"none"},{"key":"X-XSS-Protection","value":"0"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"56"},{"key":"ETag","value":"W/\"38-lsgGFPmCFMRAjUrkVCB/0AzMjE4\""},{"key":"Date","value":"Sat, 11 Oct 2025 09:29:55 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"error\",\n    \"message\": \"No refresh token provided\"\n}"}],"_postman_id":"acbed458-8058-49ea-8c94-29215814eb4a"},{"name":"Logout","id":"6c0760e7-1fde-4839-906a-1f68e5593203","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":""},"url":"http://localhost:8000/api/auth/logout","urlObject":{"path":["api","auth","logout"],"host":["http://localhost:8000"],"query":[],"variable":[]}},"response":[{"id":"46180802-3e04-4f03-9b88-5a6cf911f752","name":"200","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":""},"url":"http://localhost:8000/api/auth/logout"},"status":"OK","code":200,"_postman_previewlanguage":"Text","header":[{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Security-Policy","value":"default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"},{"key":"Cross-Origin-Resource-Policy","value":"same-origin"},{"key":"Origin-Agent-Cluster","value":"?1"},{"key":"Referrer-Policy","value":"no-referrer"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-DNS-Prefetch-Control","value":"off"},{"key":"X-Download-Options","value":"noopen"},{"key":"X-Frame-Options","value":"DENY"},{"key":"X-Permitted-Cross-Domain-Policies","value":"none"},{"key":"X-XSS-Protection","value":"0"},{"key":"Set-Cookie","value":"access_token=; Path=/; Expires=Thu, 01 Jan 1970 00:00:00 GMT; HttpOnly; SameSite=Strict"},{"key":"Set-Cookie","value":"refresh_token=; Path=/; Expires=Thu, 01 Jan 1970 00:00:00 GMT; HttpOnly; SameSite=Strict"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"56"},{"key":"ETag","value":"W/\"38-m/mITeO9zyQJZ8vtKvCWsK+B4d4\""},{"key":"Date","value":"Sat, 11 Oct 2025 09:30:58 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"message\": \"Logged out successfully\"\n}"}],"_postman_id":"6c0760e7-1fde-4839-906a-1f68e5593203"},{"name":"Change Password","id":"7a65ff70-e598-4c0c-9478-0f6428b05430","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PATCH","header":[],"body":{"mode":"raw","raw":"{\n    \"currentPassword\": \"Hello@World1\",\n    \"newPassword\": \"Hello@World2\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8000/api/auth/change-password","urlObject":{"path":["api","auth","change-password"],"host":["http://localhost:8000"],"query":[],"variable":[]}},"response":[{"id":"17b1f169-111a-4739-8ffb-be330df02b64","name":"200","originalRequest":{"method":"PATCH","header":[],"body":{"mode":"raw","raw":"{\n    \"currentPassword\": \"Hello@World1\",\n    \"newPassword\": \"Hello@World2\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8000/api/auth/change-password"},"status":"OK","code":200,"_postman_previewlanguage":"Text","header":[{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Security-Policy","value":"default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"},{"key":"Cross-Origin-Resource-Policy","value":"same-origin"},{"key":"Origin-Agent-Cluster","value":"?1"},{"key":"Referrer-Policy","value":"no-referrer"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-DNS-Prefetch-Control","value":"off"},{"key":"X-Download-Options","value":"noopen"},{"key":"X-Frame-Options","value":"DENY"},{"key":"X-Permitted-Cross-Domain-Policies","value":"none"},{"key":"X-XSS-Protection","value":"0"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"62"},{"key":"ETag","value":"W/\"3e-nu6+t+pUzklq9JTLn52UrALeyoU\""},{"key":"Date","value":"Sat, 11 Oct 2025 09:36:07 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"message\": \"Password changed successfully\"\n}"},{"id":"88c9be31-f19f-4a08-831f-f2de466effe1","name":"403","originalRequest":{"method":"PATCH","header":[],"body":{"mode":"raw","raw":"{\n    \"currentPassword\": \"Hello@World1\",\n    \"newPassword\": \"Hello@World2\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8000/api/auth/change-password"},"status":"Forbidden","code":403,"_postman_previewlanguage":"Text","header":[{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Security-Policy","value":"default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"},{"key":"Cross-Origin-Resource-Policy","value":"same-origin"},{"key":"Origin-Agent-Cluster","value":"?1"},{"key":"Referrer-Policy","value":"no-referrer"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-DNS-Prefetch-Control","value":"off"},{"key":"X-Download-Options","value":"noopen"},{"key":"X-Frame-Options","value":"DENY"},{"key":"X-Permitted-Cross-Domain-Policies","value":"none"},{"key":"X-XSS-Protection","value":"0"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"57"},{"key":"ETag","value":"W/\"39-V3nZ5GBMtN68r7O/1NUU98Sx7Qk\""},{"key":"Date","value":"Sat, 11 Oct 2025 09:36:39 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"error\",\n    \"message\": \"Incorrect current password\"\n}"},{"id":"9a2c5365-b589-477f-892e-fa81112b7b62","name":"429","originalRequest":{"method":"PATCH","header":[],"body":{"mode":"raw","raw":"{\n    \"currentPassword\": \"Hello@World1\",\n    \"newPassword\": \"Hello@World2\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8000/api/auth/change-password"},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"Text","header":[{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Security-Policy","value":"default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"},{"key":"Cross-Origin-Resource-Policy","value":"same-origin"},{"key":"Origin-Agent-Cluster","value":"?1"},{"key":"Referrer-Policy","value":"no-referrer"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-DNS-Prefetch-Control","value":"off"},{"key":"X-Download-Options","value":"noopen"},{"key":"X-Frame-Options","value":"DENY"},{"key":"X-Permitted-Cross-Domain-Policies","value":"none"},{"key":"X-XSS-Protection","value":"0"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"57"},{"key":"ETag","value":"W/\"39-A9rd0BidS2AgW0g5dBTkq/K61iI\""},{"key":"Date","value":"Sat, 11 Oct 2025 09:32:08 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"error\",\n    \"message\": \"Too many requests to /auth\"\n}"}],"_postman_id":"7a65ff70-e598-4c0c-9478-0f6428b05430"}],"id":"f10011a6-a6d7-49cc-8b2d-7c8ea69e2a41","description":"<p>This folder contains all endpoints related to <strong>user authentication and account management</strong>.  </p>\n<p>It handles secure user registration, login, token management, password changes, and logout.</p>\n<p><strong>Endpoints:</strong></p>\n<ul>\n<li><p><strong><code>/signup</code></strong> <strong>(POST)</strong> – Register a new user account.</p>\n</li>\n<li><p><strong><code>/login</code></strong> <strong>(POST)</strong> – Authenticate a user and issue access and refresh tokens.</p>\n</li>\n<li><p><strong><code>/refresh</code></strong> <strong>(POST)</strong> – Refresh the access token using a valid refresh token.</p>\n</li>\n<li><p><strong><code>/logout</code></strong> <strong>(POST)</strong> – Log out the user by clearing authentication cookies.</p>\n</li>\n<li><p><strong><code>/change-password</code></strong> <strong>(PATCH)</strong> – Change the user’s password (requires authentication).</p>\n</li>\n</ul>\n<p><strong>Notes:</strong></p>\n<ul>\n<li><p>Tokens are stored in <strong>secure, HTTP-only cookies</strong> to prevent XSS attacks.</p>\n</li>\n<li><p>Access tokens are short-lived (~15 min) for security.</p>\n</li>\n<li><p>Refresh tokens are long-lived (~7 days) and used to obtain new access tokens.</p>\n</li>\n</ul>\n","_postman_id":"f10011a6-a6d7-49cc-8b2d-7c8ea69e2a41"},{"name":"Subscriber","item":[{"name":"Subscribe","id":"8fb6777c-89b5-4ca4-94c4-340491b9b383","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"email\": \"helloworld@gmail.com\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8000/api/subscriber/subscribe","urlObject":{"path":["api","subscriber","subscribe"],"host":["http://localhost:8000"],"query":[],"variable":[]}},"response":[{"id":"f9bd6d28-7a60-4582-84ec-dee5cbc2ddd8","name":"200","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"email\": \"helloworld@gmail.com\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8000/api/subscriber/subscribe"},"status":"OK","code":200,"_postman_previewlanguage":"Text","header":[{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Security-Policy","value":"default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"},{"key":"Cross-Origin-Resource-Policy","value":"same-origin"},{"key":"Origin-Agent-Cluster","value":"?1"},{"key":"Referrer-Policy","value":"no-referrer"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-DNS-Prefetch-Control","value":"off"},{"key":"X-Download-Options","value":"noopen"},{"key":"X-Frame-Options","value":"DENY"},{"key":"X-Permitted-Cross-Domain-Policies","value":"none"},{"key":"X-XSS-Protection","value":"0"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"77"},{"key":"ETag","value":"W/\"4d-pYXClz1t32IcrW/EkaB2T+iw5N8\""},{"key":"Date","value":"Sat, 11 Oct 2025 09:44:55 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"message\": \"You are already subscribed to our newsletter\"\n}"}],"_postman_id":"8fb6777c-89b5-4ca4-94c4-340491b9b383"},{"name":"Unsubscribe","id":"9a259169-2a23-49c2-9a22-96da0204d07f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PATCH","header":[],"body":{"mode":"raw","raw":"{\n    \"email\": \"helloworld@gmail.com\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8000/api/subscriber/unsubscribe","urlObject":{"path":["api","subscriber","unsubscribe"],"host":["http://localhost:8000"],"query":[],"variable":[]}},"response":[{"id":"f9bd885d-5dfe-4722-a8d4-53295dade848","name":"200","originalRequest":{"method":"PATCH","header":[],"body":{"mode":"raw","raw":"{\n    \"email\": \"helloworld@gmail.com\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8000/api/subscriber/unsubscribe"},"status":"OK","code":200,"_postman_previewlanguage":"Text","header":[{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Security-Policy","value":"default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"},{"key":"Cross-Origin-Resource-Policy","value":"same-origin"},{"key":"Origin-Agent-Cluster","value":"?1"},{"key":"Referrer-Policy","value":"no-referrer"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-DNS-Prefetch-Control","value":"off"},{"key":"X-Download-Options","value":"noopen"},{"key":"X-Frame-Options","value":"DENY"},{"key":"X-Permitted-Cross-Domain-Policies","value":"none"},{"key":"X-XSS-Protection","value":"0"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"81"},{"key":"ETag","value":"W/\"51-PY4t3jsMxWwj9yFtRQDVvFNDC6E\""},{"key":"Date","value":"Sat, 11 Oct 2025 10:10:37 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"message\": \"You are already unsubscribed from our newsletter\"\n}"}],"_postman_id":"9a259169-2a23-49c2-9a22-96da0204d07f"},{"name":"All Subscribers","id":"573a34f7-62f6-496b-b1b2-5a8066611388","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"body":{"mode":"raw","raw":""},"url":"http://localhost:8000/api/subscriber/all","urlObject":{"path":["api","subscriber","all"],"host":["http://localhost:8000"],"query":[],"variable":[]}},"response":[{"id":"e59cd24c-e967-40c2-a3da-3579ff6f340a","name":"200","originalRequest":{"method":"GET","header":[],"url":"http://localhost:8000/api/subscriber/all"},"status":"OK","code":200,"_postman_previewlanguage":"Text","header":[{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Security-Policy","value":"default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"},{"key":"Cross-Origin-Resource-Policy","value":"same-origin"},{"key":"Origin-Agent-Cluster","value":"?1"},{"key":"Referrer-Policy","value":"no-referrer"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-DNS-Prefetch-Control","value":"off"},{"key":"X-Download-Options","value":"noopen"},{"key":"X-Frame-Options","value":"DENY"},{"key":"X-Permitted-Cross-Domain-Policies","value":"none"},{"key":"X-XSS-Protection","value":"0"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"173"},{"key":"ETag","value":"W/\"ad-d3gMj2HHuoLAjbf/w8+xFpY4b0E\""},{"key":"Date","value":"Sat, 11 Oct 2025 10:11:30 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"message\": \"Fetched all subscribers\",\n    \"data\": [\n        {\n            \"_id\": \"68ea1d72e5acc4fb43b61445\",\n            \"email\": \"helloworld@gmail.com\",\n            \"subscribedAt\": \"2025-10-11T09:03:46.456Z\"\n        }\n    ]\n}"}],"_postman_id":"573a34f7-62f6-496b-b1b2-5a8066611388"}],"id":"c42c9c48-ff95-45a3-8890-3e75ca8b1f5b","description":"<p>This folder manages newsletter subscriptions and subscriber data.  </p>\n<p>It allows users to subscribe, unsubscribe, and admins to fetch all active subscribers.</p>\n<p><strong>Endpoints:</strong></p>\n<ul>\n<li><p><strong><code>/subscribe</code></strong> <strong>(POST)</strong> – Add a new subscriber to the newsletter.</p>\n</li>\n<li><p><strong><code>/unsubscribe</code></strong> <strong>(PATCH)</strong> – Unsubscribe a logged-in user from the newsletter.</p>\n</li>\n<li><p><strong><code>/all</code></strong> <strong>(GET)</strong> – Retrieve all active subscribers (requires authentication).</p>\n</li>\n</ul>\n<p><strong>Notes:</strong></p>\n<ul>\n<li><p>Only authenticated users can unsubscribe or fetch subscriber lists.</p>\n</li>\n<li><p>Email validation is applied to ensure correct input.</p>\n</li>\n<li><p><code>isSubscribed</code> flag tracks subscription status.</p>\n</li>\n</ul>\n","_postman_id":"c42c9c48-ff95-45a3-8890-3e75ca8b1f5b"},{"name":"Media","item":[{"name":"Upload Image","id":"41dfa8b8-92a9-4476-a0ec-66546874e9cf","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"formdata","formdata":[{"key":"image","type":"file","src":"/Users/asspl/Downloads/img1.jpeg"}]},"url":"http://localhost:8000/api/media/upload-image","urlObject":{"path":["api","media","upload-image"],"host":["http://localhost:8000"],"query":[],"variable":[]}},"response":[{"id":"cdaf81c5-5803-4466-9a5f-8906724c8adf","name":"200","originalRequest":{"method":"POST","header":[],"body":{"mode":"formdata","formdata":[{"key":"image","type":"file","src":["/Users/asspl/Downloads/img1.jpeg"]}]},"url":"http://localhost:8000/api/media/upload-image"},"status":"OK","code":200,"_postman_previewlanguage":"Text","header":[{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Security-Policy","value":"default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"},{"key":"Cross-Origin-Resource-Policy","value":"same-origin"},{"key":"Origin-Agent-Cluster","value":"?1"},{"key":"Referrer-Policy","value":"no-referrer"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-DNS-Prefetch-Control","value":"off"},{"key":"X-Download-Options","value":"noopen"},{"key":"X-Frame-Options","value":"DENY"},{"key":"X-Permitted-Cross-Domain-Policies","value":"none"},{"key":"X-XSS-Protection","value":"0"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"191"},{"key":"ETag","value":"W/\"bf-fjR8HAyYs2gL9rXlIILPwEUn21Q\""},{"key":"Date","value":"Sat, 11 Oct 2025 10:34:48 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"message\": \"File uploaded successfully\",\n    \"data\": {\n        \"uploadURL\": \"https://res.cloudinary.com/avdhesh-varshney/image/upload/v1760178887/uqR446jlv2yGl_QjkrSkD-1760178884256.jpg\"\n    }\n}"},{"id":"34a4c220-e354-4d9c-baf5-b39ea08462d3","name":"401","originalRequest":{"method":"POST","header":[],"body":{"mode":"formdata","formdata":[{"key":"image","type":"file","src":["/Users/asspl/Downloads/img1.jpeg"]}]},"url":"http://localhost:8000/api/media/upload-image"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"Text","header":[{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Security-Policy","value":"default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"},{"key":"Cross-Origin-Resource-Policy","value":"same-origin"},{"key":"Origin-Agent-Cluster","value":"?1"},{"key":"Referrer-Policy","value":"no-referrer"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-DNS-Prefetch-Control","value":"off"},{"key":"X-Download-Options","value":"noopen"},{"key":"X-Frame-Options","value":"DENY"},{"key":"X-Permitted-Cross-Domain-Policies","value":"none"},{"key":"X-XSS-Protection","value":"0"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"70"},{"key":"ETag","value":"W/\"46-Bce/Cva/VB+d+Ty/sMm/VdvRg1M\""},{"key":"Date","value":"Sat, 11 Oct 2025 10:34:21 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"error\",\n    \"message\": \"Access Denied: No access token provided\"\n}"}],"_postman_id":"41dfa8b8-92a9-4476-a0ec-66546874e9cf"}],"id":"9e851932-6ae6-489c-8821-e17c801a36be","description":"<p>This folder contains endpoints related to media uploads.</p>\n<p><strong>Endpoints:</strong></p>\n<ul>\n<li><p><strong><code>/upload-image</code></strong> <strong>(POST)</strong> – Upload an image file to the server.</p>\n<ul>\n<li><p>Requires the user to be <strong>authenticated</strong>.</p>\n</li>\n<li><p>Uses <code>multipart/form-data</code> to send the image.</p>\n</li>\n</ul>\n</li>\n</ul>\n<p><strong>Notes:</strong></p>\n<ul>\n<li><p>Only logged-in users can upload images.</p>\n</li>\n<li><p>File uploads are handled securely with middleware to prevent unauthorized access.</p>\n</li>\n</ul>\n","_postman_id":"9e851932-6ae6-489c-8821-e17c801a36be"},{"name":"User","item":[{"name":"Search User","id":"e41f2296-cf8a-4fa6-83c3-626634eed630","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":"http://localhost:8000/api/user/search?q=hello","urlObject":{"path":["api","user","search"],"host":["http://localhost:8000"],"query":[{"key":"q","value":"hello"}],"variable":[]}},"response":[{"id":"b7367200-d1e9-4376-84de-5dd535921f7d","name":"200","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:8000/api/user/search?q=hello","host":["http://localhost:8000"],"path":["api","user","search"],"query":[{"key":"q","value":"hello"}]}},"status":"OK","code":200,"_postman_previewlanguage":"Text","header":[{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Security-Policy","value":"default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"},{"key":"Cross-Origin-Resource-Policy","value":"same-origin"},{"key":"Origin-Agent-Cluster","value":"?1"},{"key":"Referrer-Policy","value":"no-referrer"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-DNS-Prefetch-Control","value":"off"},{"key":"X-Download-Options","value":"noopen"},{"key":"X-Frame-Options","value":"DENY"},{"key":"X-Permitted-Cross-Domain-Policies","value":"none"},{"key":"X-XSS-Protection","value":"0"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"257"},{"key":"ETag","value":"W/\"101-NUaETEfVTxsCqLGfEDuSx/JPf1g\""},{"key":"Date","value":"Sat, 11 Oct 2025 11:22:07 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"message\": \"Users fetched successfully\",\n    \"data\": [\n        {\n            \"personal_info\": {\n                \"fullname\": \"hello world\",\n                \"username\": \"hello\",\n                \"profile_img\": \"https://res.cloudinary.com/avdhesh-varshney/image/upload/v1760178887/uqR446jlv2yGl_QjkrSkD-1760178884256.jpg\"\n            }\n        }\n    ]\n}"}],"_postman_id":"e41f2296-cf8a-4fa6-83c3-626634eed630"},{"name":"User Profile","id":"1e45ca45-aae4-45ff-b52b-6452af777868","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":"http://localhost:8000/api/user/profile?username=hello","urlObject":{"path":["api","user","profile"],"host":["http://localhost:8000"],"query":[{"key":"username","value":"hello"}],"variable":[]}},"response":[{"id":"303c3f9e-f9b6-4e90-aa44-780828bc5fc4","name":"200","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:8000/api/user/profile?username=hello","host":["http://localhost:8000"],"path":["api","user","profile"],"query":[{"key":"username","value":"hello"}]}},"status":"OK","code":200,"_postman_previewlanguage":"Text","header":[{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Security-Policy","value":"default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"},{"key":"Cross-Origin-Resource-Policy","value":"same-origin"},{"key":"Origin-Agent-Cluster","value":"?1"},{"key":"Referrer-Policy","value":"no-referrer"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-DNS-Prefetch-Control","value":"off"},{"key":"X-Download-Options","value":"noopen"},{"key":"X-Frame-Options","value":"DENY"},{"key":"X-Permitted-Cross-Domain-Policies","value":"none"},{"key":"X-XSS-Protection","value":"0"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"529"},{"key":"ETag","value":"W/\"211-6xC3VETX9pxKRKv3ua/Qns+wn4Y\""},{"key":"Date","value":"Sat, 11 Oct 2025 11:22:44 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"message\": \"User fetched successfully\",\n    \"data\": {\n        \"_id\": \"68ea1d72e5acc4fb43b61447\",\n        \"personal_info\": {\n            \"fullname\": \"hello world\",\n            \"email\": \"helloworld@gmail.com\",\n            \"username\": \"hello\",\n            \"bio\": \"This is me\",\n            \"profile_img\": \"https://res.cloudinary.com/avdhesh-varshney/image/upload/v1760178887/uqR446jlv2yGl_QjkrSkD-1760178884256.jpg\"\n        },\n        \"social_links\": {\n            \"facebook\": \"https://facebook.com\",\n            \"twitter\": \"https://twitter.com\"\n        },\n        \"account_info\": {\n            \"total_posts\": 0,\n            \"total_reads\": 0\n        },\n        \"role\": \"user\",\n        \"joinedAt\": \"2025-10-11T09:03:46.492Z\",\n        \"__v\": 0\n    }\n}"}],"_postman_id":"1e45ca45-aae4-45ff-b52b-6452af777868"},{"name":"Update Profile Image","id":"7608cad0-22e0-4ef7-9f28-9943aaa22d98","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PATCH","header":[],"body":{"mode":"raw","raw":"{\n    \"url\": \"https://res.cloudinary.com/avdhesh-varshney/image/upload/v1760178887/uqR446jlv2yGl_QjkrSkD-1760178884256.jpg\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8000/api/user/update-profile-img","urlObject":{"path":["api","user","update-profile-img"],"host":["http://localhost:8000"],"query":[],"variable":[]}},"response":[{"id":"3aef7564-5456-475b-b0ea-c550ad080d22","name":"200","originalRequest":{"method":"PATCH","header":[],"body":{"mode":"raw","raw":"{\n    \"url\": \"https://res.cloudinary.com/avdhesh-varshney/image/upload/v1760178887/uqR446jlv2yGl_QjkrSkD-1760178884256.jpg\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8000/api/user/update-profile-img"},"status":"OK","code":200,"_postman_previewlanguage":"Text","header":[{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Security-Policy","value":"default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"},{"key":"Cross-Origin-Resource-Policy","value":"same-origin"},{"key":"Origin-Agent-Cluster","value":"?1"},{"key":"Referrer-Policy","value":"no-referrer"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-DNS-Prefetch-Control","value":"off"},{"key":"X-Download-Options","value":"noopen"},{"key":"X-Frame-Options","value":"DENY"},{"key":"X-Permitted-Cross-Domain-Policies","value":"none"},{"key":"X-XSS-Protection","value":"0"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"201"},{"key":"ETag","value":"W/\"c9-2mMC0kImceA4xJW98Ovr+0nAJUI\""},{"key":"Date","value":"Sat, 11 Oct 2025 11:08:33 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"message\": \"Profile image updated successfully\",\n    \"data\": {\n        \"profile_img\": \"https://res.cloudinary.com/avdhesh-varshney/image/upload/v1760178887/uqR446jlv2yGl_QjkrSkD-1760178884256.jpg\"\n    }\n}"},{"id":"1fa2553e-0f53-47a8-9fe5-efbfe9eff7f3","name":"400","originalRequest":{"method":"PATCH","header":[],"body":{"mode":"raw","raw":"{\n    \"url\": \"helloworld\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8000/api/user/update-profile-img"},"status":"Bad Request","code":400,"_postman_previewlanguage":"Text","header":[{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Security-Policy","value":"default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"},{"key":"Cross-Origin-Resource-Policy","value":"same-origin"},{"key":"Origin-Agent-Cluster","value":"?1"},{"key":"Referrer-Policy","value":"no-referrer"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-DNS-Prefetch-Control","value":"off"},{"key":"X-Download-Options","value":"noopen"},{"key":"X-Frame-Options","value":"DENY"},{"key":"X-Permitted-Cross-Domain-Policies","value":"none"},{"key":"X-XSS-Protection","value":"0"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"49"},{"key":"ETag","value":"W/\"31-kI4zKmGy6v/uQKdAVSQ+Hl3ECKg\""},{"key":"Date","value":"Sat, 11 Oct 2025 11:06:33 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"error\",\n    \"message\": \"Invalid URL format\"\n}"},{"id":"8136fcb1-ef7c-46bf-af34-93cfcce4ff78","name":"401","originalRequest":{"method":"PATCH","header":[],"body":{"mode":"raw","raw":"{\n    \"url\": \"helloworld\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8000/api/user/update-profile-img"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"Text","header":[{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Security-Policy","value":"default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"},{"key":"Cross-Origin-Resource-Policy","value":"same-origin"},{"key":"Origin-Agent-Cluster","value":"?1"},{"key":"Referrer-Policy","value":"no-referrer"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-DNS-Prefetch-Control","value":"off"},{"key":"X-Download-Options","value":"noopen"},{"key":"X-Frame-Options","value":"DENY"},{"key":"X-Permitted-Cross-Domain-Policies","value":"none"},{"key":"X-XSS-Protection","value":"0"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"70"},{"key":"ETag","value":"W/\"46-Bce/Cva/VB+d+Ty/sMm/VdvRg1M\""},{"key":"Date","value":"Sat, 11 Oct 2025 11:05:51 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"error\",\n    \"message\": \"Access Denied: No access token provided\"\n}"}],"_postman_id":"7608cad0-22e0-4ef7-9f28-9943aaa22d98"},{"name":"Update Profile","id":"06b0f4a7-4297-469a-a7d9-b9a91e4efd4b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PATCH","header":[],"body":{"mode":"raw","raw":"{\n    \"username\": \"hello\",\n    \"bio\": \"This is me\",\n    \"social_links\": {\n        \"facebook\": \"https://facebook.com\",\n        \"twitter\": \"https://twitter.com\"\n    }\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8000/api/user/update-profile","urlObject":{"path":["api","user","update-profile"],"host":["http://localhost:8000"],"query":[],"variable":[]}},"response":[{"id":"10c69907-7216-4b1a-be57-89cb97bedef0","name":"200","originalRequest":{"method":"PATCH","header":[],"body":{"mode":"raw","raw":"{\n    \"username\": \"hello\",\n    \"bio\": \"This is me\",\n    \"social_links\": {\n        \"facebook\": \"https://facebook.com\",\n        \"twitter\": \"https://twitter.com\"\n    }\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8000/api/user/update-profile"},"status":"OK","code":200,"_postman_previewlanguage":"Text","header":[{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Security-Policy","value":"default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"},{"key":"Cross-Origin-Resource-Policy","value":"same-origin"},{"key":"Origin-Agent-Cluster","value":"?1"},{"key":"Referrer-Policy","value":"no-referrer"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-DNS-Prefetch-Control","value":"off"},{"key":"X-Download-Options","value":"noopen"},{"key":"X-Frame-Options","value":"DENY"},{"key":"X-Permitted-Cross-Domain-Policies","value":"none"},{"key":"X-XSS-Protection","value":"0"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"89"},{"key":"ETag","value":"W/\"59-OnXMc0u5d+dlPswJ/9Q05X9jFzo\""},{"key":"Date","value":"Sat, 11 Oct 2025 11:18:48 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"message\": \"Profile updated successfully\",\n    \"data\": {\n        \"username\": \"hello\"\n    }\n}"}],"_postman_id":"06b0f4a7-4297-469a-a7d9-b9a91e4efd4b"}],"id":"a536401e-c8f0-4412-808b-dacfc8b455fa","description":"<p>This folder contains endpoints related to <strong>user search, profile fetching, and profile updates</strong>.</p>\n<p><strong>Endpoints:</strong></p>\n<ol>\n<li><p><strong><code>/search</code></strong> <strong>(GET)</strong> – Search users by username.</p>\n<ul>\n<li><p>Accepts a query parameter <code>q</code>.</p>\n</li>\n<li><p>Returns a list of up to 50 users with <code>fullname</code>, <code>username</code>, and <code>profile_img</code>.</p>\n</li>\n</ul>\n</li>\n<li><p><strong><code>/profile</code></strong> <strong>(GET)</strong> – Fetch a single user’s profile by username.</p>\n<ul>\n<li><p>Accepts a query parameter <code>username</code>.</p>\n</li>\n<li><p>Returns user details excluding sensitive info like password, projects, or collaborations.</p>\n</li>\n<li><p>The email is returned as a <strong>plain string</strong>, populated from the subscribers collection.</p>\n</li>\n</ul>\n</li>\n<li><p><strong><code>/update-profile-img</code></strong> <strong>(PATCH)</strong> – Update the authenticated user’s profile image.</p>\n<ul>\n<li><p>Requires authentication.</p>\n</li>\n<li><p>Accepts <code>url</code> of the new profile image.</p>\n</li>\n</ul>\n</li>\n<li><p><strong><code>/update-profile</code></strong> <strong>(PATCH)</strong> – Update the authenticated user’s profile details.</p>\n<ul>\n<li><p>Requires authentication.</p>\n</li>\n<li><p>Can update <code>username</code>, <code>bio</code>, and <code>social_links</code>.</p>\n</li>\n<li><p>Validates username length, bio length, and social link formats.</p>\n</li>\n</ul>\n</li>\n</ol>\n<p><strong>Notes:</strong></p>\n<ul>\n<li><p><strong>Authentication</strong> is required for updating profile data.</p>\n</li>\n<li><p>Endpoints are designed to <strong>prevent exposing sensitive information</strong>.</p>\n</li>\n<li><p>All read operations use <strong>GET</strong> with query parameters to follow RESTful standards.</p>\n</li>\n</ul>\n","_postman_id":"a536401e-c8f0-4412-808b-dacfc8b455fa"},{"name":"Project","item":[{"name":"Create Project","id":"b7a43454-d831-4c96-a7e0-77facd955f73","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"title\": \"Jarvis\",\n    \"des\": \"An AI based Assitant\",\n    \"banner\": \"https://res.cloudinary.com/avdhesh-varshney/image/upload/v1760178887/uqR446jlv2yGl_QjkrSkD-1760178884256.jpg\",\n    \"project_url\": \"https://code-a2z.vercel.app\",\n    \"repository\": \"https://github.com/Code-A2Z/code-a2z\",\n    \"tags\": [\n        \"javascript\",\n        \"typescript\",\n        \"mongodb\"\n    ],\n    \"content\": [\n        {\n            \"blocks\": [\n                {\n                    \"type\": \"header\",\n                    \"data\": {\n                        \"text\": \"Overview\",\n                        \"level\": 2\n                    }\n                },\n                {\n                    \"type\": \"paragraph\",\n                    \"data\": {\n                        \"text\": \"Jarvis is an AI-powered Python application that enables users to control their devices and applications using voice commands. The program offers features like task automation, information retrieval, and role-specific services. Users can schedule events, send emails, and manage entertainment and home automation through a user-friendly interface. Jarvis aims to enhance productivity by integrating various functionalities into a single voice-controlled assistant.\"\n                    }\n                }\n            ]\n        }\n    ],\n    \"draft\": false,\n    \"id\": \"\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8000/api/project","urlObject":{"path":["api","project"],"host":["http://localhost:8000"],"query":[],"variable":[]}},"response":[{"id":"09ae655b-b11a-4a86-81d1-a0f1397bb64a","name":"200","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"title\": \"Jarvis\",\n    \"des\": \"An AI based Assitant\",\n    \"banner\": \"https://res.cloudinary.com/avdhesh-varshney/image/upload/v1760178887/uqR446jlv2yGl_QjkrSkD-1760178884256.jpg\",\n    \"project_url\": \"https://code-a2z.vercel.app\",\n    \"repository\": \"https://github.com/Code-A2Z/code-a2z\",\n    \"tags\": [\n        \"javascript\",\n        \"typescript\",\n        \"mongodb\"\n    ],\n    \"content\": [\n        {\n            \"blocks\": [\n                {\n                    \"type\": \"header\",\n                    \"data\": {\n                        \"text\": \"Overview\",\n                        \"level\": 2\n                    }\n                },\n                {\n                    \"type\": \"paragraph\",\n                    \"data\": {\n                        \"text\": \"Jarvis is an AI-powered Python application that enables users to control their devices and applications using voice commands. The program offers features like task automation, information retrieval, and role-specific services. Users can schedule events, send emails, and manage entertainment and home automation through a user-friendly interface. Jarvis aims to enhance productivity by integrating various functionalities into a single voice-controlled assistant.\"\n                    }\n                }\n            ]\n        }\n    ],\n    \"draft\": false,\n    \"id\": \"\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8000/api/project"},"status":"OK","code":200,"_postman_previewlanguage":"Text","header":[{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Security-Policy","value":"default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"},{"key":"Cross-Origin-Resource-Policy","value":"same-origin"},{"key":"Origin-Agent-Cluster","value":"?1"},{"key":"Referrer-Policy","value":"no-referrer"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-DNS-Prefetch-Control","value":"off"},{"key":"X-Download-Options","value":"noopen"},{"key":"X-Frame-Options","value":"DENY"},{"key":"X-Permitted-Cross-Domain-Policies","value":"none"},{"key":"X-XSS-Protection","value":"0"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"105"},{"key":"ETag","value":"W/\"69-9l/igibfEYpA9mVqc9cZzIxcXN4\""},{"key":"Date","value":"Sat, 11 Oct 2025 13:36:11 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"message\": \"Project created successfully\",\n    \"data\": {\n        \"id\": \"JarvisAM7hwB-hp1JUb9CgDcjlz\"\n    }\n}"}],"_postman_id":"b7a43454-d831-4c96-a7e0-77facd955f73"},{"name":"Get All Projects","id":"292eeccc-70a1-4dca-aacd-35b1d2bf0f66","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:8000/api/project?page=1","urlObject":{"path":["api","project"],"host":["http://localhost:8000"],"query":[{"key":"page","value":"1"}],"variable":[]}},"response":[{"id":"b8628220-44bc-4dda-9e75-394ac365ce19","name":"200","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:8000/api/project?page=1","host":["http://localhost:8000"],"path":["api","project"],"query":[{"key":"page","value":"1"}]}},"status":"OK","code":200,"_postman_previewlanguage":"Text","header":[{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Security-Policy","value":"default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"},{"key":"Cross-Origin-Resource-Policy","value":"same-origin"},{"key":"Origin-Agent-Cluster","value":"?1"},{"key":"Referrer-Policy","value":"no-referrer"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-DNS-Prefetch-Control","value":"off"},{"key":"X-Download-Options","value":"noopen"},{"key":"X-Frame-Options","value":"DENY"},{"key":"X-Permitted-Cross-Domain-Policies","value":"none"},{"key":"X-XSS-Protection","value":"0"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"656"},{"key":"ETag","value":"W/\"290-WUsFnd1511zFYKLFNlLz3pO9T18\""},{"key":"Date","value":"Sat, 11 Oct 2025 13:37:04 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"message\": \"Projects fetched successfully\",\n    \"data\": [\n        {\n            \"project_id\": \"JarvisAM7hwB-hp1JUb9CgDcjlz\",\n            \"title\": \"Jarvis\",\n            \"banner\": \"https://res.cloudinary.com/avdhesh-varshney/image/upload/v1760178887/uqR446jlv2yGl_QjkrSkD-1760178884256.jpg\",\n            \"des\": \"An AI based Assitant\",\n            \"tags\": [\n                \"javascript\",\n                \"typescript\",\n                \"mongodb\"\n            ],\n            \"author\": {\n                \"personal_info\": {\n                    \"fullname\": \"hello world\",\n                    \"username\": \"hello\",\n                    \"profile_img\": \"https://res.cloudinary.com/avdhesh-varshney/image/upload/v1760178887/uqR446jlv2yGl_QjkrSkD-1760178884256.jpg\"\n                }\n            },\n            \"activity\": {\n                \"total_likes\": 0,\n                \"total_comments\": 0,\n                \"total_reads\": 0,\n                \"total_parent_comments\": 0\n            },\n            \"publishedAt\": \"2025-10-11T13:36:11.603Z\"\n        }\n    ]\n}"}],"_postman_id":"292eeccc-70a1-4dca-aacd-35b1d2bf0f66"},{"name":"Get Trending Projects","id":"9427a379-a49f-4aea-8a2b-1981b72d29be","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:8000/api/project/trending","urlObject":{"path":["api","project","trending"],"host":["http://localhost:8000"],"query":[],"variable":[]}},"response":[{"id":"344f7aef-8bf6-467a-a433-2c09ee5adeb3","name":"200","originalRequest":{"method":"GET","header":[],"url":"http://localhost:8000/api/project/trending"},"status":"OK","code":200,"_postman_previewlanguage":"Text","header":[{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Security-Policy","value":"default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"},{"key":"Cross-Origin-Resource-Policy","value":"same-origin"},{"key":"Origin-Agent-Cluster","value":"?1"},{"key":"Referrer-Policy","value":"no-referrer"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-DNS-Prefetch-Control","value":"off"},{"key":"X-Download-Options","value":"noopen"},{"key":"X-Frame-Options","value":"DENY"},{"key":"X-Permitted-Cross-Domain-Policies","value":"none"},{"key":"X-XSS-Protection","value":"0"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"381"},{"key":"ETag","value":"W/\"17d-tdqz4vaBw1OIctq0MTlDpz1yzDk\""},{"key":"Date","value":"Sat, 11 Oct 2025 12:37:26 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"message\": \"Trending projects fetched successfully\",\n    \"data\": [\n        {\n            \"project_id\": \"Jarvis6oWZSYEzPaqTQUlCAm0kx\",\n            \"title\": \"Jarvis\",\n            \"author\": {\n                \"personal_info\": {\n                    \"fullname\": \"hello world\",\n                    \"username\": \"hello\",\n                    \"profile_img\": \"https://res.cloudinary.com/avdhesh-varshney/image/upload/v1760178887/uqR446jlv2yGl_QjkrSkD-1760178884256.jpg\"\n                }\n            },\n            \"publishedAt\": \"2025-10-11T12:27:01.384Z\"\n        }\n    ]\n}"}],"_postman_id":"9427a379-a49f-4aea-8a2b-1981b72d29be"},{"name":"Search Projects","id":"357cbe1b-6686-4cf7-809e-ad563799558e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:8000/api/project/search?tag=javascript&query=&author=&page=1&limit=5&elminate_project=123","urlObject":{"path":["api","project","search"],"host":["http://localhost:8000"],"query":[{"key":"tag","value":"javascript"},{"key":"query","value":""},{"key":"author","value":""},{"key":"page","value":"1"},{"key":"limit","value":"5"},{"key":"elminate_project","value":"123"}],"variable":[]}},"response":[{"id":"aec87c62-5f31-4e07-9dbb-0eb635f1e510","name":"200","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:8000/api/project/search?tag=javascript&query=&author=&page=1&limit=5&elminate_project=123","host":["http://localhost:8000"],"path":["api","project","search"],"query":[{"key":"tag","value":"javascript"},{"key":"query","value":""},{"key":"author","value":""},{"key":"page","value":"1"},{"key":"limit","value":"5"},{"key":"elminate_project","value":"123"}]}},"status":"OK","code":200,"_postman_previewlanguage":"Text","header":[{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Security-Policy","value":"default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"},{"key":"Cross-Origin-Resource-Policy","value":"same-origin"},{"key":"Origin-Agent-Cluster","value":"?1"},{"key":"Referrer-Policy","value":"no-referrer"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-DNS-Prefetch-Control","value":"off"},{"key":"X-Download-Options","value":"noopen"},{"key":"X-Frame-Options","value":"DENY"},{"key":"X-Permitted-Cross-Domain-Policies","value":"none"},{"key":"X-XSS-Protection","value":"0"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"656"},{"key":"ETag","value":"W/\"290-ejoLcypHuUZ7kk35wDRuwoEKgB4\""},{"key":"Date","value":"Sat, 11 Oct 2025 12:44:54 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"message\": \"Projects fetched successfully\",\n    \"data\": [\n        {\n            \"project_id\": \"Jarvis6oWZSYEzPaqTQUlCAm0kx\",\n            \"title\": \"Jarvis\",\n            \"banner\": \"https://res.cloudinary.com/avdhesh-varshney/image/upload/v1760178887/uqR446jlv2yGl_QjkrSkD-1760178884256.jpg\",\n            \"des\": \"An AI based Assitant\",\n            \"tags\": [\n                \"javascript\",\n                \"typescript\",\n                \"mongodb\"\n            ],\n            \"author\": {\n                \"personal_info\": {\n                    \"fullname\": \"hello world\",\n                    \"username\": \"hello\",\n                    \"profile_img\": \"https://res.cloudinary.com/avdhesh-varshney/image/upload/v1760178887/uqR446jlv2yGl_QjkrSkD-1760178884256.jpg\"\n                }\n            },\n            \"activity\": {\n                \"total_likes\": 0,\n                \"total_comments\": 0,\n                \"total_reads\": 0,\n                \"total_parent_comments\": 0\n            },\n            \"publishedAt\": \"2025-10-11T12:27:01.384Z\"\n        }\n    ]\n}"}],"_postman_id":"357cbe1b-6686-4cf7-809e-ad563799558e"},{"name":"Total Published Projects Count","id":"d807ce53-87a7-4889-82e0-0f144a05fd9d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:8000/api/project/count","urlObject":{"path":["api","project","count"],"host":["http://localhost:8000"],"query":[],"variable":[]}},"response":[{"id":"f8af2bef-ab37-4b31-83a1-6fad043ada6c","name":"200","originalRequest":{"method":"GET","header":[],"url":"http://localhost:8000/api/project/count"},"status":"OK","code":200,"_postman_previewlanguage":"Text","header":[{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Security-Policy","value":"default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"},{"key":"Cross-Origin-Resource-Policy","value":"same-origin"},{"key":"Origin-Agent-Cluster","value":"?1"},{"key":"Referrer-Policy","value":"no-referrer"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-DNS-Prefetch-Control","value":"off"},{"key":"X-Download-Options","value":"noopen"},{"key":"X-Frame-Options","value":"DENY"},{"key":"X-Permitted-Cross-Domain-Policies","value":"none"},{"key":"X-XSS-Protection","value":"0"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"97"},{"key":"ETag","value":"W/\"61-xYlr0+TKYbdopceVGOoIy/EfCtc\""},{"key":"Date","value":"Sat, 11 Oct 2025 13:37:42 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"message\": \"Total projects count fetched successfully\",\n    \"data\": {\n        \"totalDocs\": 1\n    }\n}"}],"_postman_id":"d807ce53-87a7-4889-82e0-0f144a05fd9d"},{"name":"Search Projects Count","id":"031f5f68-022f-4167-84ed-a90766cd998d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:8000/api/project/search/count?tag=javascript&query=&author=","urlObject":{"path":["api","project","search","count"],"host":["http://localhost:8000"],"query":[{"key":"tag","value":"javascript"},{"key":"query","value":""},{"key":"author","value":""}],"variable":[]}},"response":[{"id":"c291c81c-0a41-4803-b273-d9aa63d38f1c","name":"200","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:8000/api/project/search/count?tag=javascript&query=&author=","host":["http://localhost:8000"],"path":["api","project","search","count"],"query":[{"key":"tag","value":"javascript"},{"key":"query","value":""},{"key":"author","value":""}]}},"status":"OK","code":200,"_postman_previewlanguage":"Text","header":[{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Security-Policy","value":"default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"},{"key":"Cross-Origin-Resource-Policy","value":"same-origin"},{"key":"Origin-Agent-Cluster","value":"?1"},{"key":"Referrer-Policy","value":"no-referrer"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-DNS-Prefetch-Control","value":"off"},{"key":"X-Download-Options","value":"noopen"},{"key":"X-Frame-Options","value":"DENY"},{"key":"X-Permitted-Cross-Domain-Policies","value":"none"},{"key":"X-XSS-Protection","value":"0"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"98"},{"key":"ETag","value":"W/\"62-NgGQWLx7oDkNWZgYR9sTqzGnaLE\""},{"key":"Date","value":"Sat, 11 Oct 2025 13:38:28 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"message\": \"Search projects count fetched successfully\",\n    \"data\": {\n        \"totalDocs\": 1\n    }\n}"}],"_postman_id":"031f5f68-022f-4167-84ed-a90766cd998d"},{"name":"Get A Project","id":"0a07f490-9848-42ab-a06f-2fd2a493bc0d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:8000/api/project/JarvisAM7hwB-hp1JUb9CgDcjlz?mode=edit","urlObject":{"path":["api","project","JarvisAM7hwB-hp1JUb9CgDcjlz"],"host":["http://localhost:8000"],"query":[{"key":"mode","value":"edit"}],"variable":[]}},"response":[{"id":"657b21e8-0017-4722-9f2c-f13f7f478f23","name":"200","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:8000/api/project/JarvisAM7hwB-hp1JUb9CgDcjlz?mode=edit","host":["http://localhost:8000"],"path":["api","project","JarvisAM7hwB-hp1JUb9CgDcjlz"],"query":[{"key":"mode","value":"edit"}]}},"status":"OK","code":200,"_postman_previewlanguage":"Text","header":[{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Security-Policy","value":"default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"},{"key":"Cross-Origin-Resource-Policy","value":"same-origin"},{"key":"Origin-Agent-Cluster","value":"?1"},{"key":"Referrer-Policy","value":"no-referrer"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-DNS-Prefetch-Control","value":"off"},{"key":"X-Download-Options","value":"noopen"},{"key":"X-Frame-Options","value":"DENY"},{"key":"X-Permitted-Cross-Domain-Policies","value":"none"},{"key":"X-XSS-Protection","value":"0"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"1412"},{"key":"ETag","value":"W/\"584-Oe6UxeHOUdWi/QFOjFehrc0iA18\""},{"key":"Date","value":"Sat, 11 Oct 2025 13:42:15 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"message\": \"Project fetched successfully\",\n    \"data\": {\n        \"_id\": \"68ea5d4b01395c672f8572cc\",\n        \"project_id\": \"JarvisAM7hwB-hp1JUb9CgDcjlz\",\n        \"title\": \"Jarvis\",\n        \"banner\": \"https://res.cloudinary.com/avdhesh-varshney/image/upload/v1760178887/uqR446jlv2yGl_QjkrSkD-1760178884256.jpg\",\n        \"des\": \"An AI based Assitant\",\n        \"project_url\": \"https://code-a2z.vercel.app\",\n        \"repository\": \"https://github.com/Code-A2Z/code-a2z\",\n        \"content\": [\n            {\n                \"blocks\": [\n                    {\n                        \"type\": \"header\",\n                        \"data\": {\n                            \"text\": \"Overview\",\n                            \"level\": 2\n                        }\n                    },\n                    {\n                        \"type\": \"paragraph\",\n                        \"data\": {\n                            \"text\": \"Jarvis is an AI-powered Python application that enables users to control their devices and applications using voice commands. The program offers features like task automation, information retrieval, and role-specific services. Users can schedule events, send emails, and manage entertainment and home automation through a user-friendly interface. Jarvis aims to enhance productivity by integrating various functionalities into a single voice-controlled assistant.\"\n                        }\n                    }\n                ]\n            }\n        ],\n        \"tags\": [\n            \"javascript\",\n            \"typescript\",\n            \"mongodb\"\n        ],\n        \"author\": {\n            \"_id\": \"68ea1d72e5acc4fb43b61447\",\n            \"personal_info\": {\n                \"fullname\": \"hello world\",\n                \"username\": \"hello\",\n                \"profile_img\": \"https://res.cloudinary.com/avdhesh-varshney/image/upload/v1760178887/uqR446jlv2yGl_QjkrSkD-1760178884256.jpg\"\n            }\n        },\n        \"activity\": {\n            \"total_likes\": 0,\n            \"total_comments\": 0,\n            \"total_reads\": 1,\n            \"total_parent_comments\": 0\n        },\n        \"draft\": false,\n        \"publishedAt\": \"2025-10-11T13:36:11.603Z\"\n    }\n}"}],"_postman_id":"0a07f490-9848-42ab-a06f-2fd2a493bc0d"},{"name":"User Projects","id":"62416b87-7178-40ce-82f6-d45318cacee0","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:8000/api/project/user?draft=false&page=1&deletedDocCount=","urlObject":{"path":["api","project","user"],"host":["http://localhost:8000"],"query":[{"key":"draft","value":"false"},{"key":"page","value":"1"},{"key":"deletedDocCount","value":""}],"variable":[]}},"response":[{"id":"4075a295-6950-4273-aa43-8e8d68979ca9","name":"200","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:8000/api/project/user?draft=false&page=1&deletedDocCount=","host":["http://localhost:8000"],"path":["api","project","user"],"query":[{"key":"draft","value":"false"},{"key":"page","value":"1"},{"key":"deletedDocCount","value":""}]}},"status":"OK","code":200,"_postman_previewlanguage":"Text","header":[{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Security-Policy","value":"default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"},{"key":"Cross-Origin-Resource-Policy","value":"same-origin"},{"key":"Origin-Agent-Cluster","value":"?1"},{"key":"Referrer-Policy","value":"no-referrer"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-DNS-Prefetch-Control","value":"off"},{"key":"X-Download-Options","value":"noopen"},{"key":"X-Frame-Options","value":"DENY"},{"key":"X-Permitted-Cross-Domain-Policies","value":"none"},{"key":"X-XSS-Protection","value":"0"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"432"},{"key":"ETag","value":"W/\"1b0-7kTWQM1g9VZntu2UegMksnGhBpE\""},{"key":"Date","value":"Sat, 11 Oct 2025 13:52:47 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"message\": \"User projects fetched successfully\",\n    \"data\": [\n        {\n            \"project_id\": \"JarvisAM7hwB-hp1JUb9CgDcjlz\",\n            \"title\": \"Jarvis\",\n            \"banner\": \"https://res.cloudinary.com/avdhesh-varshney/image/upload/v1760178887/uqR446jlv2yGl_QjkrSkD-1760178884256.jpg\",\n            \"des\": \"An AI based Assitant\",\n            \"activity\": {\n                \"total_likes\": 0,\n                \"total_comments\": 0,\n                \"total_reads\": 1,\n                \"total_parent_comments\": 0\n            },\n            \"draft\": false,\n            \"publishedAt\": \"2025-10-11T13:36:11.603Z\"\n        }\n    ]\n}"}],"_postman_id":"62416b87-7178-40ce-82f6-d45318cacee0"},{"name":"User Projects Count","id":"641dfc9a-b32d-4c31-ad4f-0aa9602ca564","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:8000/api/project/user/count?draft=false&query=","urlObject":{"path":["api","project","user","count"],"host":["http://localhost:8000"],"query":[{"key":"draft","value":"false"},{"key":"query","value":""}],"variable":[]}},"response":[{"id":"a37e98dd-aac5-4b43-8b41-4dadef196d1f","name":"200","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:8000/api/project/user/count?draft=false&query=","host":["http://localhost:8000"],"path":["api","project","user","count"],"query":[{"key":"draft","value":"false"},{"key":"query","value":""}]}},"status":"OK","code":200,"_postman_previewlanguage":"Text","header":[{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Security-Policy","value":"default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"},{"key":"Cross-Origin-Resource-Policy","value":"same-origin"},{"key":"Origin-Agent-Cluster","value":"?1"},{"key":"Referrer-Policy","value":"no-referrer"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-DNS-Prefetch-Control","value":"off"},{"key":"X-Download-Options","value":"noopen"},{"key":"X-Frame-Options","value":"DENY"},{"key":"X-Permitted-Cross-Domain-Policies","value":"none"},{"key":"X-XSS-Protection","value":"0"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"96"},{"key":"ETag","value":"W/\"60-gF0Pqm1H+FFpiZRhs7CbSTo0hk0\""},{"key":"Date","value":"Sat, 11 Oct 2025 13:44:23 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"message\": \"User projects count fetched successfully\",\n    \"data\": {\n        \"totalDocs\": 1\n    }\n}"}],"_postman_id":"641dfc9a-b32d-4c31-ad4f-0aa9602ca564"},{"name":"Delete Project","id":"cb916728-4a6b-4a7b-94a3-a699aac8773f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"url":"http://localhost:8000/api/project/JarvisAM7hwB-hp1JUb9CgDcjlz","urlObject":{"path":["api","project","JarvisAM7hwB-hp1JUb9CgDcjlz"],"host":["http://localhost:8000"],"query":[],"variable":[]}},"response":[{"id":"641061eb-d0b8-47ea-8fdd-5dcd432f1827","name":"200","originalRequest":{"method":"DELETE","header":[],"url":"http://localhost:8000/api/project/JarvisAM7hwB-hp1JUb9CgDcjlz"},"status":"OK","code":200,"_postman_previewlanguage":"Text","header":[{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Security-Policy","value":"default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"},{"key":"Cross-Origin-Resource-Policy","value":"same-origin"},{"key":"Origin-Agent-Cluster","value":"?1"},{"key":"Referrer-Policy","value":"no-referrer"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-DNS-Prefetch-Control","value":"off"},{"key":"X-Download-Options","value":"noopen"},{"key":"X-Frame-Options","value":"DENY"},{"key":"X-Permitted-Cross-Domain-Policies","value":"none"},{"key":"X-XSS-Protection","value":"0"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"61"},{"key":"ETag","value":"W/\"3d-JLtTPolNPoIolPVhTFgaCN+N2z4\""},{"key":"Date","value":"Sat, 11 Oct 2025 13:54:44 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"message\": \"Project deleted successfully\"\n}"},{"id":"b9180756-10b5-41f6-ad34-90ca98b07b95","name":"404","originalRequest":{"method":"DELETE","header":[],"url":"http://localhost:8000/api/project/JarvisAM7hwB-hp1JUb9CgDcjlz"},"status":"Not Found","code":404,"_postman_previewlanguage":"Text","header":[{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Security-Policy","value":"default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"},{"key":"Cross-Origin-Resource-Policy","value":"same-origin"},{"key":"Origin-Agent-Cluster","value":"?1"},{"key":"Referrer-Policy","value":"no-referrer"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-DNS-Prefetch-Control","value":"off"},{"key":"X-Download-Options","value":"noopen"},{"key":"X-Frame-Options","value":"DENY"},{"key":"X-Permitted-Cross-Domain-Policies","value":"none"},{"key":"X-XSS-Protection","value":"0"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"48"},{"key":"ETag","value":"W/\"30-aUEuCFnbPA8P3X9PcxI3lCuCcTE\""},{"key":"Date","value":"Sat, 11 Oct 2025 13:54:55 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"error\",\n    \"message\": \"Project not found\"\n}"}],"_postman_id":"cb916728-4a6b-4a7b-94a3-a699aac8773f"}],"id":"e93880a5-920f-4a78-ace4-f9f1ea567d3b","description":"<p>This folder contains endpoints related to <strong>project creation, fetching, searching, and management</strong>.</p>\n<p><strong>Endpoints:</strong></p>\n<ol>\n<li><p><strong><code>/create</code></strong> <strong>(POST)</strong> – Create or update a project (draft or published).</p>\n<ul>\n<li><p>Requires authentication.</p>\n</li>\n<li><p>Validates <code>title</code>, <code>description</code>, <code>banner</code>, <code>repository</code>, <code>tags</code>, and <code>content</code> before publishing.</p>\n</li>\n<li><p>If <code>id</code> is provided, updates the existing project instead of creating a new one.</p>\n</li>\n</ul>\n</li>\n<li><p><strong><code>/all</code></strong> <strong>(GET)</strong> – Fetch all published projects.</p>\n<ul>\n<li><p>Supports pagination using the <code>page</code> query parameter.</p>\n</li>\n<li><p>Returns project details such as <code>title</code>, <code>description</code>, <code>banner</code>, <code>tags</code>, <code>author</code>, and <code>publishedAt</code>.</p>\n</li>\n</ul>\n</li>\n<li><p><strong><code>/trending</code></strong> <strong>(GET)</strong> – Fetch top 5 trending projects.</p>\n<ul>\n<li><p>Sorts projects based on <code>total_reads</code>, <code>total_likes</code>, and <code>publishedAt</code>.</p>\n</li>\n<li><p>Returns limited metadata for better performance.</p>\n</li>\n</ul>\n</li>\n<li><p><strong><code>/search</code></strong> <strong>(GET)</strong> – Search projects by tag, author, or text query.</p>\n<ul>\n<li><p>Accepts query parameters <code>tag</code>, <code>author</code>, <code>q</code>, <code>page</code>, and <code>limit</code>.</p>\n</li>\n<li><p>Excludes drafts and supports pagination for efficient results.</p>\n</li>\n</ul>\n</li>\n<li><p><strong><code>/total-count</code></strong> <strong>(GET)</strong> – Get total count of all published projects.</p>\n<ul>\n<li>Returns the total number of public projects available.</li>\n</ul>\n</li>\n<li><p><strong><code>/search-count</code></strong> <strong>(GET)</strong> – Get total count of projects matching search filters.</p>\n<ul>\n<li><p>Accepts the same query parameters as <code>/search</code>.</p>\n</li>\n<li><p>Useful for pagination in search results.</p>\n</li>\n</ul>\n</li>\n<li><p><strong><code>/:project_id</code></strong> <strong>(GET)</strong> – Fetch a single project by its unique ID.</p>\n<ul>\n<li><p>Public projects are accessible to anyone.</p>\n</li>\n<li><p>Draft projects are only accessible in edit mode by the author.</p>\n</li>\n<li><p>Automatically increments project read count for public views.</p>\n</li>\n</ul>\n</li>\n<li><p><strong><code>/user</code></strong> <strong>(GET)</strong> – Fetch projects authored by the authenticated user.</p>\n<ul>\n<li><p>Requires authentication.</p>\n</li>\n<li><p>Supports pagination and filtering using <code>draft</code> and <code>query</code> parameters.</p>\n</li>\n</ul>\n</li>\n<li><p><strong><code>/user/count</code></strong> <strong>(GET)</strong> – Get total count of projects authored by the authenticated user.</p>\n<ul>\n<li><p>Requires authentication.</p>\n</li>\n<li><p>Supports filtering by <code>draft</code> and <code>query</code> parameters.</p>\n</li>\n</ul>\n</li>\n<li><p><strong><code>/delete</code></strong> <strong>(DELETE)</strong> – Delete a project permanently.</p>\n<ul>\n<li><p>Requires authentication.</p>\n</li>\n<li><p>Deletes the project and all associated notifications and comments.</p>\n</li>\n<li><p>Automatically updates the user’s project count.</p>\n</li>\n</ul>\n</li>\n</ol>\n<p><strong>Notes:</strong></p>\n<ul>\n<li><p><strong>Authentication</strong> is required for creating, updating, and deleting projects.</p>\n</li>\n<li><p>Public endpoints like <code>/all</code>, <code>/trending</code>, and <code>/search</code> are accessible without authentication.</p>\n</li>\n<li><p><strong>Pagination</strong> is implemented to optimize response performance.</p>\n</li>\n<li><p>All read operations use <strong>GET</strong> and follow RESTful standards.</p>\n</li>\n</ul>\n","_postman_id":"e93880a5-920f-4a78-ace4-f9f1ea567d3b"},{"name":"Like","item":[{"name":"Like Project","id":"290b4d0c-524c-44b7-b646-64e400d1bfc8","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PATCH","header":[],"body":{"mode":"raw","raw":"{\n    \"project_id\": \"Jarvisx_STNRkiO18Z1tjqdMfVP\",\n    \"isLikedByUser\": false\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8000/api/like","urlObject":{"path":["api","like"],"host":["http://localhost:8000"],"query":[],"variable":[]}},"response":[{"id":"fef8443b-48d4-4f54-80fd-b51356c3a400","name":"200","originalRequest":{"method":"PATCH","header":[],"body":{"mode":"raw","raw":"{\n    \"project_id\": \"Jarvisx_STNRkiO18Z1tjqdMfVP\",\n    \"isLikedByUser\": false\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8000/api/like"},"status":"OK","code":200,"_postman_previewlanguage":"Text","header":[{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Security-Policy","value":"default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"},{"key":"Cross-Origin-Resource-Policy","value":"same-origin"},{"key":"Origin-Agent-Cluster","value":"?1"},{"key":"Referrer-Policy","value":"no-referrer"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-DNS-Prefetch-Control","value":"off"},{"key":"X-Download-Options","value":"noopen"},{"key":"X-Frame-Options","value":"DENY"},{"key":"X-Permitted-Cross-Domain-Policies","value":"none"},{"key":"X-XSS-Protection","value":"0"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"108"},{"key":"ETag","value":"W/\"6c-r8Z7FkO1y1CSFO4emSWKymDf3zo\""},{"key":"Date","value":"Sat, 11 Oct 2025 15:53:23 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"message\": \"Project unliked successfully\",\n    \"data\": {\n        \"liked_by_user\": false,\n        \"total_likes\": 0\n    }\n}"}],"_postman_id":"290b4d0c-524c-44b7-b646-64e400d1bfc8"},{"name":"Like Status","id":"18f336e4-71d7-4484-9324-b573a25cc557","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:8000/api/like?project_id=Jarvisx_STNRkiO18Z1tjqdMfVP","urlObject":{"path":["api","like"],"host":["http://localhost:8000"],"query":[{"key":"project_id","value":"Jarvisx_STNRkiO18Z1tjqdMfVP"}],"variable":[]}},"response":[{"id":"ab466231-81d1-4b7e-81e1-752ce2dc792d","name":"200","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:8000/api/like?project_id=Jarvisx_STNRkiO18Z1tjqdMfVP","host":["http://localhost:8000"],"path":["api","like"],"query":[{"key":"project_id","value":"Jarvisx_STNRkiO18Z1tjqdMfVP"}]}},"status":"OK","code":200,"_postman_previewlanguage":"Text","header":[{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Security-Policy","value":"default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"},{"key":"Cross-Origin-Resource-Policy","value":"same-origin"},{"key":"Origin-Agent-Cluster","value":"?1"},{"key":"Referrer-Policy","value":"no-referrer"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-DNS-Prefetch-Control","value":"off"},{"key":"X-Download-Options","value":"noopen"},{"key":"X-Frame-Options","value":"DENY"},{"key":"X-Permitted-Cross-Domain-Policies","value":"none"},{"key":"X-XSS-Protection","value":"0"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"89"},{"key":"ETag","value":"W/\"59-jabnKQvCYULlCoVDZgeToMmJ+ik\""},{"key":"Date","value":"Sat, 11 Oct 2025 15:52:41 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"message\": \"Like status fetched successfully\",\n    \"data\": {\n        \"isLiked\": true\n    }\n}"}],"_postman_id":"18f336e4-71d7-4484-9324-b573a25cc557"}],"id":"99eec6aa-315a-4db1-b94d-e363d129137f","description":"<p>This folder contains endpoints related to <strong>liking/unliking projects</strong> and checking the like status for the authenticated user.</p>\n<p><strong>Endpoints:</strong></p>\n<ol>\n<li><p><strong><code>/</code></strong> <strong>(PATCH)</strong> – Like or unlike a project.</p>\n<ul>\n<li><p>Requires authentication.</p>\n</li>\n<li><p>Accepts <code>_id</code> (project ID) and <code>islikedByUser</code> (boolean) in the request body.</p>\n</li>\n<li><p>Toggles the like status for the project.</p>\n</li>\n<li><p>Creates or deletes a corresponding <strong>like notification</strong> for the project author.</p>\n</li>\n<li><p>Returns <code>liked_by_user</code> flag indicating the current like state.</p>\n</li>\n</ul>\n</li>\n<li><p><strong><code>/</code></strong> <strong>(GET)</strong> – Check if the authenticated user has liked a specific project.</p>\n<ul>\n<li><p>Requires authentication.</p>\n</li>\n<li><p>Accepts <code>_id</code> (project ID) as a query parameter.</p>\n</li>\n<li><p>Returns <code>isLiked</code> boolean indicating if the user has liked the project.</p>\n</li>\n</ul>\n</li>\n</ol>\n<p><strong>Notes:</strong></p>\n<ul>\n<li><p><strong>Authentication</strong> is required for both endpoints.</p>\n</li>\n<li><p>Designed to ensure <strong>real-time like toggling</strong> and accurate like status retrieval.</p>\n</li>\n<li><p>Endpoints follow <strong>RESTful standards</strong>, using PATCH for updates and GET for fetching status.</p>\n</li>\n</ul>\n","_postman_id":"99eec6aa-315a-4db1-b94d-e363d129137f"},{"name":"Comment","item":[{"name":"Add Comment","id":"a70a20ad-0893-4dcc-84b2-bfe99916e621","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"_id\": \"68ea699c3f4d73cf4c4bcf2e\",\n    \"comment\": \"Nice Project!\",\n    \"project_author\": \"68ea1d72e5acc4fb43b61447\",\n    \"replying_to\": \"68ea1d72e5acc4fb43b61447\",\n    \"notification_id\": \"68ea6f71c559584e2dd8263a\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8000/api/comment","urlObject":{"path":["api","comment"],"host":["http://localhost:8000"],"query":[],"variable":[]}},"response":[{"id":"90a8ca12-b0f7-4453-971c-39a5a3949a92","name":"200","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"_id\": \"68ea699c3f4d73cf4c4bcf2e\",\n    \"comment\": \"Nice Project!\",\n    \"project_author\": \"68ea1d72e5acc4fb43b61447\",\n    \"replying_to\": \"68ea1d72e5acc4fb43b61447\",\n    \"notification_id\": \"68ea6f71c559584e2dd8263a\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8000/api/comment"},"status":"OK","code":200,"_postman_previewlanguage":"Text","header":[{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Security-Policy","value":"default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"},{"key":"Cross-Origin-Resource-Policy","value":"same-origin"},{"key":"Origin-Agent-Cluster","value":"?1"},{"key":"Referrer-Policy","value":"no-referrer"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-DNS-Prefetch-Control","value":"off"},{"key":"X-Download-Options","value":"noopen"},{"key":"X-Frame-Options","value":"DENY"},{"key":"X-Permitted-Cross-Domain-Policies","value":"none"},{"key":"X-XSS-Protection","value":"0"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"217"},{"key":"ETag","value":"W/\"d9-nWCwuV0zOGClHWJbzRPLyBKL47o\""},{"key":"Date","value":"Sat, 11 Oct 2025 15:54:06 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"message\": \"Comment added successfully\",\n    \"data\": {\n        \"_id\": \"68ea7d9e1c1f31f91891cae8\",\n        \"comment\": \"Nice Project!\",\n        \"createdAt\": \"2025-10-11T15:54:06.094Z\",\n        \"user_id\": \"68ea1d72e5acc4fb43b61447\",\n        \"children\": []\n    }\n}"}],"_postman_id":"a70a20ad-0893-4dcc-84b2-bfe99916e621"},{"name":"Get Comments","id":"0a3a517b-c788-41a5-9030-6956b07acb1d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:8000/api/comment?project_id=68ea699c3f4d73cf4c4bcf2e&skip=","urlObject":{"path":["api","comment"],"host":["http://localhost:8000"],"query":[{"key":"project_id","value":"68ea699c3f4d73cf4c4bcf2e"},{"key":"skip","value":""}],"variable":[]}},"response":[{"id":"c2194475-42a2-453a-8f83-5c505fd6f35d","name":"200","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:8000/api/comment?project_id=68ea699c3f4d73cf4c4bcf2e&skip=","host":["http://localhost:8000"],"path":["api","comment"],"query":[{"key":"project_id","value":"68ea699c3f4d73cf4c4bcf2e"},{"key":"skip","value":""}]}},"status":"OK","code":200,"_postman_previewlanguage":"Text","header":[{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Security-Policy","value":"default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"},{"key":"Cross-Origin-Resource-Policy","value":"same-origin"},{"key":"Origin-Agent-Cluster","value":"?1"},{"key":"Referrer-Policy","value":"no-referrer"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-DNS-Prefetch-Control","value":"off"},{"key":"X-Download-Options","value":"noopen"},{"key":"X-Frame-Options","value":"DENY"},{"key":"X-Permitted-Cross-Domain-Policies","value":"none"},{"key":"X-XSS-Protection","value":"0"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"1029"},{"key":"ETag","value":"W/\"405-FrxUrIl/BSE8H9GA507tt++5KOg\""},{"key":"Date","value":"Sat, 11 Oct 2025 15:54:59 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"message\": \"Comments fetched successfully\",\n    \"data\": [\n        {\n            \"_id\": \"68ea7524b81552b9c1365ca7\",\n            \"project_id\": \"68ea699c3f4d73cf4c4bcf2e\",\n            \"project_author\": \"68ea1d72e5acc4fb43b61447\",\n            \"comment\": \"Nice Project!\",\n            \"children\": [],\n            \"commented_by\": {\n                \"personal_info\": {\n                    \"fullname\": \"hello world\",\n                    \"username\": \"hello\",\n                    \"profile_img\": \"https://res.cloudinary.com/avdhesh-varshney/image/upload/v1760178887/uqR446jlv2yGl_QjkrSkD-1760178884256.jpg\"\n                }\n            },\n            \"isReply\": false,\n            \"parent\": null,\n            \"createdAt\": \"2025-10-11T15:17:56.401Z\",\n            \"updatedAt\": \"2025-10-11T15:17:56.401Z\",\n            \"__v\": 0\n        },\n        {\n            \"_id\": \"68ea758d3ac5ce01d1e05e80\",\n            \"project_id\": \"68ea699c3f4d73cf4c4bcf2e\",\n            \"project_author\": \"68ea1d72e5acc4fb43b61447\",\n            \"comment\": \"Nice Project!\",\n            \"children\": [],\n            \"commented_by\": {\n                \"personal_info\": {\n                    \"fullname\": \"hello world\",\n                    \"username\": \"hello\",\n                    \"profile_img\": \"https://res.cloudinary.com/avdhesh-varshney/image/upload/v1760178887/uqR446jlv2yGl_QjkrSkD-1760178884256.jpg\"\n                }\n            },\n            \"isReply\": false,\n            \"parent\": null,\n            \"createdAt\": \"2025-10-11T15:19:41.360Z\",\n            \"updatedAt\": \"2025-10-11T15:19:41.360Z\",\n            \"__v\": 0\n        }\n    ]\n}"}],"_postman_id":"0a3a517b-c788-41a5-9030-6956b07acb1d"},{"name":"Get Replies","id":"08e51c06-4eea-47b6-9225-8c2e8fffcb6f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:8000/api/comment/replies?comment_id=68ea6fa4c559584e2dd8263f&skip=","urlObject":{"path":["api","comment","replies"],"host":["http://localhost:8000"],"query":[{"key":"comment_id","value":"68ea6fa4c559584e2dd8263f"},{"key":"skip","value":""}],"variable":[]}},"response":[{"id":"cac343d8-9b66-44d9-9f2a-ba1a96b5eca3","name":"200","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:8000/api/comment/replies?comment_id=68ea6fa4c559584e2dd8263f&skip=","host":["http://localhost:8000"],"path":["api","comment","replies"],"query":[{"key":"comment_id","value":"68ea6fa4c559584e2dd8263f"},{"key":"skip","value":""}]}},"status":"OK","code":200,"_postman_previewlanguage":"Text","header":[{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Security-Policy","value":"default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"},{"key":"Cross-Origin-Resource-Policy","value":"same-origin"},{"key":"Origin-Agent-Cluster","value":"?1"},{"key":"Referrer-Policy","value":"no-referrer"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-DNS-Prefetch-Control","value":"off"},{"key":"X-Download-Options","value":"noopen"},{"key":"X-Frame-Options","value":"DENY"},{"key":"X-Permitted-Cross-Domain-Policies","value":"none"},{"key":"X-XSS-Protection","value":"0"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"71"},{"key":"ETag","value":"W/\"47-PLnhb6DlpjDTGWmASe3bT6ikcY0\""},{"key":"Date","value":"Sat, 11 Oct 2025 15:55:31 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"message\": \"Replies fetched successfully\",\n    \"data\": []\n}"}],"_postman_id":"08e51c06-4eea-47b6-9225-8c2e8fffcb6f"},{"name":"Delete Comment","id":"ac9306dd-3efd-4eb2-9704-c2a8448064eb","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"url":"http://localhost:8000/api/comment/68ea7524b81552b9c1365ca7","urlObject":{"path":["api","comment","68ea7524b81552b9c1365ca7"],"host":["http://localhost:8000"],"query":[],"variable":[]}},"response":[{"id":"e81b7a52-479f-4974-8698-fa971e00f656","name":"200","originalRequest":{"method":"DELETE","header":[],"url":"http://localhost:8000/api/comment/68ea7524b81552b9c1365ca7"},"status":"OK","code":200,"_postman_previewlanguage":"Text","header":[{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Security-Policy","value":"default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"},{"key":"Cross-Origin-Resource-Policy","value":"same-origin"},{"key":"Origin-Agent-Cluster","value":"?1"},{"key":"Referrer-Policy","value":"no-referrer"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-DNS-Prefetch-Control","value":"off"},{"key":"X-Download-Options","value":"noopen"},{"key":"X-Frame-Options","value":"DENY"},{"key":"X-Permitted-Cross-Domain-Policies","value":"none"},{"key":"X-XSS-Protection","value":"0"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"61"},{"key":"ETag","value":"W/\"3d-LF1CjlwlfPzM4EoEa+osxXVBxx4\""},{"key":"Date","value":"Sat, 11 Oct 2025 15:56:33 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"message\": \"Comment deleted successfully\"\n}"},{"id":"158807b7-1e68-474c-a342-d1029925a441","name":"404","originalRequest":{"method":"DELETE","header":[],"url":"http://localhost:8000/api/comment/68ea7524b81552b9c1365ca7"},"status":"Not Found","code":404,"_postman_previewlanguage":"Text","header":[{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Security-Policy","value":"default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"},{"key":"Cross-Origin-Resource-Policy","value":"same-origin"},{"key":"Origin-Agent-Cluster","value":"?1"},{"key":"Referrer-Policy","value":"no-referrer"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-DNS-Prefetch-Control","value":"off"},{"key":"X-Download-Options","value":"noopen"},{"key":"X-Frame-Options","value":"DENY"},{"key":"X-Permitted-Cross-Domain-Policies","value":"none"},{"key":"X-XSS-Protection","value":"0"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"48"},{"key":"ETag","value":"W/\"30-m0Cdgl2Bs1NKNXiS/v8bMyHRT4E\""},{"key":"Date","value":"Sat, 11 Oct 2025 15:56:51 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"error\",\n    \"message\": \"Comment not found\"\n}"}],"_postman_id":"ac9306dd-3efd-4eb2-9704-c2a8448064eb"}],"id":"0e93d7f1-1447-437f-ac76-a3856eef16a2","description":"<p>This folder contains endpoints for <strong>adding, fetching, replying, and deleting comments</strong> on projects.</p>\n<p><strong>Endpoints:</strong></p>\n<ol>\n<li><p><strong><code>/</code></strong> <strong>(POST)</strong> – Add a new comment or reply to a project.</p>\n<ul>\n<li><p>Requires authentication.</p>\n</li>\n<li><p>Accepts <code>_id</code> (project ID), <code>comment</code>, and optional <code>replying_to</code> (parent comment ID) in the request body.</p>\n</li>\n<li><p>Creates a new comment or reply and triggers a corresponding notification.</p>\n</li>\n<li><p>Returns the newly created comment data including <code>_id</code>, <code>comment</code>, <code>createdAt</code>, <code>user_id</code>, and <code>children</code>.</p>\n</li>\n</ul>\n</li>\n<li><p><strong><code>/</code></strong> <strong>(GET)</strong> – Fetch comments for a project.</p>\n<ul>\n<li><p>Accepts <code>project_id</code> as a query parameter and optional <code>skip</code> for pagination.</p>\n</li>\n<li><p>Returns a list of parent comments (non-replies) along with commenter details (<code>username</code>, <code>fullname</code>, <code>profile_img</code>).</p>\n</li>\n</ul>\n</li>\n<li><p><strong><code>/replies</code></strong> <strong>(GET)</strong> – Fetch replies for a specific comment.</p>\n<ul>\n<li><p>Accepts <code>_id</code> (comment ID) and optional <code>skip</code> for pagination.</p>\n</li>\n<li><p>Returns a list of replies with commenter details.</p>\n</li>\n</ul>\n</li>\n<li><p><strong><code>/:comment_id</code></strong> <strong>(DELETE)</strong> – Delete a comment or reply.</p>\n<ul>\n<li><p>Requires authentication.</p>\n</li>\n<li><p>Only the <strong>comment author</strong> or the <strong>project author</strong> can delete.</p>\n</li>\n<li><p>Removes the comment/reply, updates parent comment/project counters, and deletes related notifications.</p>\n</li>\n<li><p>Returns a success message upon deletion.</p>\n</li>\n</ul>\n</li>\n</ol>\n<p><strong>Notes:</strong></p>\n<ul>\n<li><p><strong>Authentication</strong> is required for adding and deleting comments.</p>\n</li>\n<li><p>Endpoints are designed to <strong>maintain project activity counts</strong> and <strong>handle nested replies</strong>.</p>\n</li>\n<li><p>GET endpoints follow <strong>RESTful standards</strong> with query parameters for filtering and pagination.</p>\n</li>\n</ul>\n","_postman_id":"0e93d7f1-1447-437f-ac76-a3856eef16a2"},{"name":"Notification","item":[{"name":"Get Notifications","id":"0eb64ef7-b5ef-41e2-9acb-92915380f862","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:8000/api/notification?page=1&filter=all&deletedDocCount=0","urlObject":{"path":["api","notification"],"host":["http://localhost:8000"],"query":[{"key":"page","value":"1"},{"key":"filter","value":"all"},{"key":"deletedDocCount","value":"0"}],"variable":[]}},"response":[{"id":"d48f0399-f0bf-4c29-9ad2-8a242890b9e5","name":"200","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:8000/api/notification?page=1&filter=all&deletedDocCount=0","host":["http://localhost:8000"],"path":["api","notification"],"query":[{"key":"page","value":"1"},{"key":"filter","value":"all"},{"key":"deletedDocCount","value":"0"}]}},"status":"OK","code":200,"_postman_previewlanguage":"Text","header":[{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Security-Policy","value":"default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"},{"key":"Cross-Origin-Resource-Policy","value":"same-origin"},{"key":"Origin-Agent-Cluster","value":"?1"},{"key":"Referrer-Policy","value":"no-referrer"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-DNS-Prefetch-Control","value":"off"},{"key":"X-Download-Options","value":"noopen"},{"key":"X-Frame-Options","value":"DENY"},{"key":"X-Permitted-Cross-Domain-Policies","value":"none"},{"key":"X-XSS-Protection","value":"0"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"77"},{"key":"ETag","value":"W/\"4d-pAJdeQtkU5OUn62JPyba2Vd4Uho\""},{"key":"Date","value":"Sat, 11 Oct 2025 15:58:56 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"message\": \"Notifications fetched successfully\",\n    \"data\": []\n}"}],"_postman_id":"0eb64ef7-b5ef-41e2-9acb-92915380f862"},{"name":"Notification Status","id":"e5af3ce8-061a-4e8b-9f07-d240f2dc1bb3","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:8000/api/notification/status","urlObject":{"path":["api","notification","status"],"host":["http://localhost:8000"],"query":[],"variable":[]}},"response":[{"id":"5bcfa2c6-ed02-4136-8b27-902ba87a1028","name":"200","originalRequest":{"method":"GET","header":[],"url":"http://localhost:8000/api/notification/status"},"status":"OK","code":200,"_postman_previewlanguage":"Text","header":[{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Security-Policy","value":"default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"},{"key":"Cross-Origin-Resource-Policy","value":"same-origin"},{"key":"Origin-Agent-Cluster","value":"?1"},{"key":"Referrer-Policy","value":"no-referrer"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-DNS-Prefetch-Control","value":"off"},{"key":"X-Download-Options","value":"noopen"},{"key":"X-Frame-Options","value":"DENY"},{"key":"X-Permitted-Cross-Domain-Policies","value":"none"},{"key":"X-XSS-Protection","value":"0"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"97"},{"key":"ETag","value":"W/\"61-/61b55Z8V+FtEVwlVl2cE6uuenY\""},{"key":"Date","value":"Sat, 11 Oct 2025 15:57:59 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"message\": \"No new notifications\",\n    \"data\": {\n        \"new_notification_available\": false\n    }\n}"}],"_postman_id":"e5af3ce8-061a-4e8b-9f07-d240f2dc1bb3"},{"name":"All Notifications Count","id":"2989361e-bfbc-4dd3-8511-c093624b869c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:8000/api/notification/count?filter=all","urlObject":{"path":["api","notification","count"],"host":["http://localhost:8000"],"query":[{"key":"filter","value":"all"}],"variable":[]}},"response":[{"id":"fced1646-f8fa-49e1-96f8-d0afe444cc62","name":"200","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:8000/api/notification/count?filter=all","host":["http://localhost:8000"],"path":["api","notification","count"],"query":[{"key":"filter","value":"all"}]}},"status":"OK","code":200,"_postman_previewlanguage":"Text","header":[{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Security-Policy","value":"default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"},{"key":"Cross-Origin-Resource-Policy","value":"same-origin"},{"key":"Origin-Agent-Cluster","value":"?1"},{"key":"Referrer-Policy","value":"no-referrer"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-DNS-Prefetch-Control","value":"off"},{"key":"X-Download-Options","value":"noopen"},{"key":"X-Frame-Options","value":"DENY"},{"key":"X-Permitted-Cross-Domain-Policies","value":"none"},{"key":"X-XSS-Protection","value":"0"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"102"},{"key":"ETag","value":"W/\"66-L8B3JVBmkvgONfNzTy8BYYBsQRU\""},{"key":"Date","value":"Sat, 11 Oct 2025 15:59:17 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"message\": \"Total notifications count fetched successfully\",\n    \"data\": {\n        \"totalDocs\": 0\n    }\n}"}],"_postman_id":"2989361e-bfbc-4dd3-8511-c093624b869c"}],"id":"172c7b38-a8da-47e1-8b86-1da65496b81b","description":"<p>This folder contains endpoints related to <strong>fetching and managing notifications</strong> for the authenticated user.</p>\n<p><strong>Endpoints:</strong></p>\n<ol>\n<li><p><strong><code>/status</code></strong> <strong>(GET)</strong> – Check if there are any new/unseen notifications.</p>\n<ul>\n<li>Returns a boolean flag <code>new_notification_available</code>.</li>\n</ul>\n</li>\n<li><p><strong><code>/</code></strong> <strong>(GET)</strong> – Fetch paginated notifications for the authenticated user.</p>\n<ul>\n<li><p>Accepts query parameters: <code>page</code>, <code>filter</code> (<code>all</code>, <code>like</code>, <code>comment</code>, <code>reply</code>), and <code>deletedDocCount</code>.</p>\n</li>\n<li><p>Populates project, user, comment, reply, and replied_on_comment details.</p>\n</li>\n<li><p>Automatically marks the fetched notifications as <strong>seen</strong>.</p>\n</li>\n<li><p>Returns a list of notifications including type, seen status, and relevant references.</p>\n</li>\n</ul>\n</li>\n<li><p><strong><code>/count</code></strong> <strong>(GET)</strong> – Get the total count of notifications for the authenticated user.</p>\n<ul>\n<li><p>Accepts a query parameter <code>filter</code> to count by type (<code>all</code>, <code>like</code>, <code>comment</code>, <code>reply</code>).</p>\n</li>\n<li><p>Returns <code>totalDocs</code>.</p>\n</li>\n</ul>\n</li>\n</ol>\n<p><strong>Notes:</strong></p>\n<ul>\n<li><p><strong>Authentication</strong> is required for all endpoints.</p>\n</li>\n<li><p>Users do <strong>not</strong> see notifications generated by themselves (<code>user: { $ne: user_id }</code> logic is applied).</p>\n</li>\n<li><p>All endpoints use <strong>GET</strong> with query parameters to follow RESTful standards.</p>\n</li>\n<li><p>Designed to ensure <strong>efficient fetching, pagination, and accurate seen/unseen status</strong>.</p>\n</li>\n</ul>\n","_postman_id":"172c7b38-a8da-47e1-8b86-1da65496b81b"},{"name":"Collection","item":[{"name":"Create Collection","id":"efff9296-9595-446b-95a6-b5aa7d2177cb","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"collection_name\": \"Python Projects\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8000/api/collection","urlObject":{"path":["api","collection"],"host":["http://localhost:8000"],"query":[],"variable":[]}},"response":[{"id":"ff1e0325-a397-4fb3-8f17-46cec04aeb99","name":"201","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"collection_name\": \"Python Projects\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8000/api/collection"},"status":"Created","code":201,"_postman_previewlanguage":"Text","header":[{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Security-Policy","value":"default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"},{"key":"Cross-Origin-Resource-Policy","value":"same-origin"},{"key":"Origin-Agent-Cluster","value":"?1"},{"key":"Referrer-Policy","value":"no-referrer"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-DNS-Prefetch-Control","value":"off"},{"key":"X-Download-Options","value":"noopen"},{"key":"X-Frame-Options","value":"DENY"},{"key":"X-Permitted-Cross-Domain-Policies","value":"none"},{"key":"X-XSS-Protection","value":"0"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"296"},{"key":"ETag","value":"W/\"128-Wf9dwDekWuF1JWj7ED5ydBUN+0w\""},{"key":"Date","value":"Sun, 12 Oct 2025 09:48:40 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"message\": \"Python Projects collection created successfully!\",\n    \"data\": {\n        \"user_id\": \"68eb658a4991390b30477704\",\n        \"collection_name\": \"python projects\",\n        \"projects\": [],\n        \"_id\": \"68eb7978fb415fc747bcbd14\",\n        \"createdAt\": \"2025-10-12T09:48:40.570Z\",\n        \"updatedAt\": \"2025-10-12T09:48:40.570Z\",\n        \"__v\": 0\n    }\n}"},{"id":"7a2cac7c-fdd2-4db4-8c0a-4460d4fc724c","name":"400","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"collection_name\": \"Python Projects\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8000/api/collection"},"status":"Bad Request","code":400,"_postman_previewlanguage":"Text","header":[{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Security-Policy","value":"default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"},{"key":"Cross-Origin-Resource-Policy","value":"same-origin"},{"key":"Origin-Agent-Cluster","value":"?1"},{"key":"Referrer-Policy","value":"no-referrer"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-DNS-Prefetch-Control","value":"off"},{"key":"X-Download-Options","value":"noopen"},{"key":"X-Frame-Options","value":"DENY"},{"key":"X-Permitted-Cross-Domain-Policies","value":"none"},{"key":"X-XSS-Protection","value":"0"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"75"},{"key":"ETag","value":"W/\"4b-Oq1kxBjVrzS87p1r3IDEfFfMfO0\""},{"key":"Date","value":"Sun, 12 Oct 2025 09:50:08 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"error\",\n    \"message\": \"Collection 'Python Projects' already exists.\"\n}"}],"_postman_id":"efff9296-9595-446b-95a6-b5aa7d2177cb"},{"name":"Save Project","id":"5521407f-e482-4c0e-874b-89f03c919531","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"collection_id\": \"68eb65ac4991390b30477709\",\n    \"project_id\": \"68eb65994991390b30477706\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8000/api/collection/save-project","urlObject":{"path":["api","collection","save-project"],"host":["http://localhost:8000"],"query":[],"variable":[]}},"response":[{"id":"770d6eb0-87fc-4ad7-987d-1517d18f1e48","name":"201","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"collection_id\": \"68eb65ac4991390b30477709\",\n    \"project_id\": \"68eb65994991390b30477706\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8000/api/collection/save-project"},"status":"Created","code":201,"_postman_previewlanguage":"Text","header":[{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Security-Policy","value":"default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"},{"key":"Cross-Origin-Resource-Policy","value":"same-origin"},{"key":"Origin-Agent-Cluster","value":"?1"},{"key":"Referrer-Policy","value":"no-referrer"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-DNS-Prefetch-Control","value":"off"},{"key":"X-Download-Options","value":"noopen"},{"key":"X-Frame-Options","value":"DENY"},{"key":"X-Permitted-Cross-Domain-Policies","value":"none"},{"key":"X-XSS-Protection","value":"0"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"60"},{"key":"ETag","value":"W/\"3c-aju+RwqNB0VXWUxheZ+E9tHq5R4\""},{"key":"Date","value":"Sun, 12 Oct 2025 09:13:46 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"message\": \"Project saved successfully!\"\n}"},{"id":"f59db709-6c97-43c9-a377-264c448588d3","name":"200","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"collection_id\": \"68eb65ac4991390b30477709\",\n    \"project_id\": \"68eb65994991390b30477706\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8000/api/collection/save-project"},"status":"OK","code":200,"_postman_previewlanguage":"Text","header":[{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Security-Policy","value":"default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"},{"key":"Cross-Origin-Resource-Policy","value":"same-origin"},{"key":"Origin-Agent-Cluster","value":"?1"},{"key":"Referrer-Policy","value":"no-referrer"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-DNS-Prefetch-Control","value":"off"},{"key":"X-Download-Options","value":"noopen"},{"key":"X-Frame-Options","value":"DENY"},{"key":"X-Permitted-Cross-Domain-Policies","value":"none"},{"key":"X-XSS-Protection","value":"0"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"74"},{"key":"ETag","value":"W/\"4a-GSt/VUrb7NX6YJFz9YiRVXDvkRg\""},{"key":"Date","value":"Sun, 12 Oct 2025 09:14:06 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"message\": \"Project already exists in this collection\"\n}"}],"_postman_id":"5521407f-e482-4c0e-874b-89f03c919531"},{"name":"Sort Projects","id":"2a05e71b-0c1e-42ff-a364-0682be363482","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:8000/api/collection/sort-projects?collection_id=68eb65ac4991390b30477709&sortBy=newest","urlObject":{"path":["api","collection","sort-projects"],"host":["http://localhost:8000"],"query":[{"key":"collection_id","value":"68eb65ac4991390b30477709"},{"key":"sortBy","value":"newest"}],"variable":[]}},"response":[{"id":"33fe6ecf-1cbf-4d05-8e16-cd7649176b67","name":"200","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:8000/api/collection/sort-projects?collection_id=68eb65ac4991390b30477709&sortBy=newest","host":["http://localhost:8000"],"path":["api","collection","sort-projects"],"query":[{"key":"collection_id","value":"68eb65ac4991390b30477709"},{"key":"sortBy","value":"newest"}]}},"status":"OK","code":200,"_postman_previewlanguage":"Text","header":[{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Security-Policy","value":"default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"},{"key":"Cross-Origin-Resource-Policy","value":"same-origin"},{"key":"Origin-Agent-Cluster","value":"?1"},{"key":"Referrer-Policy","value":"no-referrer"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-DNS-Prefetch-Control","value":"off"},{"key":"X-Download-Options","value":"noopen"},{"key":"X-Frame-Options","value":"DENY"},{"key":"X-Permitted-Cross-Domain-Policies","value":"none"},{"key":"X-XSS-Protection","value":"0"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"1453"},{"key":"ETag","value":"W/\"5ad-q8dg9D7d4WdmN1aYY+cM2exQ49A\""},{"key":"Date","value":"Sun, 12 Oct 2025 09:19:44 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"message\": \"Projects fetched successfully\",\n    \"data\": [\n        {\n            \"_id\": \"68eb65994991390b30477706\",\n            \"project_id\": \"JarvisLmNAeql6CKiQ-iFeCCnzZ\",\n            \"title\": \"Jarvis\",\n            \"banner\": \"https://res.cloudinary.com/avdhesh-varshney/image/upload/v1760178887/uqR446jlv2yGl_QjkrSkD-1760178884256.jpg\",\n            \"des\": \"An AI based Assitant\",\n            \"project_url\": \"https://code-a2z.vercel.app\",\n            \"repository\": \"https://github.com/Code-A2Z/code-a2z\",\n            \"content\": [\n                {\n                    \"blocks\": [\n                        {\n                            \"type\": \"header\",\n                            \"data\": {\n                                \"text\": \"Overview\",\n                                \"level\": 2\n                            }\n                        },\n                        {\n                            \"type\": \"paragraph\",\n                            \"data\": {\n                                \"text\": \"Jarvis is an AI-powered Python application that enables users to control their devices and applications using voice commands. The program offers features like task automation, information retrieval, and role-specific services. Users can schedule events, send emails, and manage entertainment and home automation through a user-friendly interface. Jarvis aims to enhance productivity by integrating various functionalities into a single voice-controlled assistant.\"\n                            }\n                        }\n                    ]\n                }\n            ],\n            \"tags\": [\n                \"javascript\",\n                \"typescript\",\n                \"mongodb\"\n            ],\n            \"author\": {\n                \"_id\": \"68eb658a4991390b30477704\",\n                \"personal_info\": {\n                    \"fullname\": \"hello world\",\n                    \"username\": \"helloworld\",\n                    \"profile_img\": \"https://api.dicebear.com/6.x/adventurer-neutral/svg?seed=Luna\"\n                }\n            },\n            \"activity\": {\n                \"total_likes\": 0,\n                \"total_comments\": 0,\n                \"total_reads\": 0,\n                \"total_parent_comments\": 0\n            },\n            \"draft\": false,\n            \"comments\": [],\n            \"collaborators\": [],\n            \"publishedAt\": \"2025-10-12T08:23:53.401Z\",\n            \"updatedAt\": \"2025-10-12T08:23:53.401Z\",\n            \"__v\": 0\n        }\n    ]\n}"}],"_postman_id":"2a05e71b-0c1e-42ff-a364-0682be363482"},{"name":"Remove Project","id":"c017d943-e8ba-4252-8c34-b8aeb50e83e5","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PATCH","header":[],"body":{"mode":"raw","raw":"{\n    \"collection_id\": \"68eb65ac4991390b30477709\",\n    \"project_id\": \"68eb65994991390b30477706\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8000/api/collection/remove-project","urlObject":{"path":["api","collection","remove-project"],"host":["http://localhost:8000"],"query":[],"variable":[]}},"response":[{"id":"ad1dc7ac-40b6-42f8-8a6d-f81eb16c6ac4","name":"200","originalRequest":{"method":"PATCH","header":[],"body":{"mode":"raw","raw":"{\n    \"collection_id\": \"68eb65ac4991390b30477709\",\n    \"project_id\": \"68eb65994991390b30477706\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8000/api/collection/remove-project"},"status":"OK","code":200,"_postman_previewlanguage":"Text","header":[{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Security-Policy","value":"default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"},{"key":"Cross-Origin-Resource-Policy","value":"same-origin"},{"key":"Origin-Agent-Cluster","value":"?1"},{"key":"Referrer-Policy","value":"no-referrer"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-DNS-Prefetch-Control","value":"off"},{"key":"X-Download-Options","value":"noopen"},{"key":"X-Frame-Options","value":"DENY"},{"key":"X-Permitted-Cross-Domain-Policies","value":"none"},{"key":"X-XSS-Protection","value":"0"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"77"},{"key":"ETag","value":"W/\"4d-MztiCwM2OPK7tTjXZUHgt3AgdGE\""},{"key":"Date","value":"Sun, 12 Oct 2025 09:41:12 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"message\": \"Project removed from collection successfully\"\n}"},{"id":"318ecef1-2f3c-4d6d-b1db-fde20bf499e0","name":"404","originalRequest":{"method":"PATCH","header":[],"body":{"mode":"raw","raw":"{\n    \"collection_id\": \"68eb65ac4991390b30477709\",\n    \"project_id\": \"68eb65994991390b30477706\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8000/api/collection/remove-project"},"status":"Not Found","code":404,"_postman_previewlanguage":"Text","header":[{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Security-Policy","value":"default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"},{"key":"Cross-Origin-Resource-Policy","value":"same-origin"},{"key":"Origin-Agent-Cluster","value":"?1"},{"key":"Referrer-Policy","value":"no-referrer"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-DNS-Prefetch-Control","value":"off"},{"key":"X-Download-Options","value":"noopen"},{"key":"X-Frame-Options","value":"DENY"},{"key":"X-Permitted-Cross-Domain-Policies","value":"none"},{"key":"X-XSS-Protection","value":"0"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"67"},{"key":"ETag","value":"W/\"43-pA/NuhuKgBJ8R8IBOg60WaVTORA\""},{"key":"Date","value":"Sun, 12 Oct 2025 09:41:30 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"error\",\n    \"message\": \"Project not found in this collection\"\n}"}],"_postman_id":"c017d943-e8ba-4252-8c34-b8aeb50e83e5"},{"name":"Delete Collection","id":"1b31e0c7-6d02-4f05-90bd-8f0a44f74398","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"body":{"mode":"raw","raw":"{\n    \"collection_id\": \"68eb66df59efc3308166d898\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8000/api/collection","urlObject":{"path":["api","collection"],"host":["http://localhost:8000"],"query":[],"variable":[]}},"response":[{"id":"9612e89b-2458-48e0-99f1-ad7e3a0192ab","name":"200","originalRequest":{"method":"DELETE","header":[],"body":{"mode":"raw","raw":"{\n    \"collection_id\": \"68eb66df59efc3308166d898\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8000/api/collection"},"status":"OK","code":200,"_postman_previewlanguage":"Text","header":[{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Security-Policy","value":"default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"},{"key":"Cross-Origin-Resource-Policy","value":"same-origin"},{"key":"Origin-Agent-Cluster","value":"?1"},{"key":"Referrer-Policy","value":"no-referrer"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-DNS-Prefetch-Control","value":"off"},{"key":"X-Download-Options","value":"noopen"},{"key":"X-Frame-Options","value":"DENY"},{"key":"X-Permitted-Cross-Domain-Policies","value":"none"},{"key":"X-XSS-Protection","value":"0"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"81"},{"key":"ETag","value":"W/\"51-Bn4OLnzUdp4p/GDJqcAwk5giZYo\""},{"key":"Date","value":"Sun, 12 Oct 2025 09:47:54 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"message\": \"python projects collection deleted successfully!\"\n}"},{"id":"4908c635-b93b-4da2-acec-6333c3d40f2e","name":"404","originalRequest":{"method":"DELETE","header":[],"body":{"mode":"raw","raw":"{\n    \"collection_id\": \"68eb66df59efc3308166d898\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8000/api/collection"},"status":"Not Found","code":404,"_postman_previewlanguage":"Text","header":[{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Security-Policy","value":"default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"},{"key":"Cross-Origin-Resource-Policy","value":"same-origin"},{"key":"Origin-Agent-Cluster","value":"?1"},{"key":"Referrer-Policy","value":"no-referrer"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-DNS-Prefetch-Control","value":"off"},{"key":"X-Download-Options","value":"noopen"},{"key":"X-Frame-Options","value":"DENY"},{"key":"X-Permitted-Cross-Domain-Policies","value":"none"},{"key":"X-XSS-Protection","value":"0"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"51"},{"key":"ETag","value":"W/\"33-cpWVmPA9XC1ao1zHf+WdH3KkiQU\""},{"key":"Date","value":"Sun, 12 Oct 2025 09:48:12 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"error\",\n    \"message\": \"Collection not found\"\n}"}],"_postman_id":"1b31e0c7-6d02-4f05-90bd-8f0a44f74398"}],"id":"5f4a445b-f98a-49b5-87c8-445dd0f0d55d","description":"<p>This folder contains endpoints related to <strong>user project collections</strong>, including creating collections, saving/removing projects, sorting projects within a collection, and deleting collections.</p>\n<p><strong>Endpoints:</strong></p>\n<ol>\n<li><p><strong><code>/</code></strong> <strong>(POST)</strong> – Create a new collection for the authenticated user.</p>\n<ul>\n<li><p>Requires authentication.</p>\n</li>\n<li><p>Accepts <code>collection_name</code>.</p>\n</li>\n<li><p>Returns the newly created collection details.</p>\n</li>\n<li><p>Prevents creating collections with duplicate names for the same user.</p>\n</li>\n</ul>\n</li>\n<li><p><strong><code>/save-project</code></strong> <strong>(POST)</strong> – Save a project to a collection.</p>\n<ul>\n<li><p>Requires authentication.</p>\n</li>\n<li><p>Accepts <code>collection_id</code> and <code>project_id</code>.</p>\n</li>\n<li><p>Validates that both the collection and project exist.</p>\n</li>\n<li><p>Prevents duplicate projects within the same collection.</p>\n</li>\n</ul>\n</li>\n<li><p><strong><code>/sort-projects</code></strong> <strong>(GET)</strong> – Fetch projects from a collection sorted by criteria.</p>\n<ul>\n<li><p>Requires authentication.</p>\n</li>\n<li><p>Accepts query parameters <code>collection_id</code> and <code>sortBy</code> (<code>likes</code>, <code>newest</code>, <code>oldest</code>).</p>\n</li>\n<li><p>Returns projects with author details.</p>\n</li>\n<li><p>Returns a message if the collection has no projects.</p>\n</li>\n</ul>\n</li>\n<li><p><strong><code>/remove-project</code></strong> <strong>(PATCH)</strong> – Remove a project from a collection.</p>\n<ul>\n<li><p>Requires authentication.</p>\n</li>\n<li><p>Accepts <code>collection_id</code> and <code>project_id</code>.</p>\n</li>\n<li><p>Returns success if project is removed or error if project not found in the collection.</p>\n</li>\n</ul>\n</li>\n<li><p><strong><code>/</code></strong> <strong>(DELETE)</strong> – Delete an entire collection.</p>\n<ul>\n<li><p>Requires authentication.</p>\n</li>\n<li><p>Accepts <code>collection_name</code>.</p>\n</li>\n<li><p>Deletes the collection for the authenticated user.</p>\n</li>\n<li><p>Returns error if the collection is not found.</p>\n</li>\n</ul>\n</li>\n</ol>\n<p><strong>Notes:</strong></p>\n<ul>\n<li><p>All endpoints require authentication, except GET requests, which require the user ID context from authentication.</p>\n</li>\n<li><p>Projects are referenced via their <code>_id</code> and validated before operations.</p>\n</li>\n<li><p>Collection names are case-insensitive and unique per user.</p>\n</li>\n<li><p>Sorting of projects is supported to facilitate organized display within collections.</p>\n</li>\n</ul>\n","_postman_id":"5f4a445b-f98a-49b5-87c8-445dd0f0d55d"},{"name":"Collab","item":[{"name":"Invite to collaborate","id":"df4fb6ca-0496-4f7a-868b-a768f3bcd5c7","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"project_id\": \"68eb65994991390b30477706\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8000/api/collab/invite","urlObject":{"path":["api","collab","invite"],"host":["http://localhost:8000"],"query":[],"variable":[]}},"response":[{"id":"917acf1a-af76-4134-9d12-fe698f1e2a72","name":"400","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"project_id\": \"68eb65994991390b30477706\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8000/api/collaborate/invite"},"status":"Bad Request","code":400,"_postman_previewlanguage":"Text","header":[{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Security-Policy","value":"default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"},{"key":"Cross-Origin-Resource-Policy","value":"same-origin"},{"key":"Origin-Agent-Cluster","value":"?1"},{"key":"Referrer-Policy","value":"no-referrer"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-DNS-Prefetch-Control","value":"off"},{"key":"X-Download-Options","value":"noopen"},{"key":"X-Frame-Options","value":"DENY"},{"key":"X-Permitted-Cross-Domain-Policies","value":"none"},{"key":"X-XSS-Protection","value":"0"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"92"},{"key":"ETag","value":"W/\"5c-epn/T9q/iD4WPG8qEWCmd1Rf9Ng\""},{"key":"Date","value":"Sun, 12 Oct 2025 10:31:06 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"error\",\n    \"message\": \"You cannot invite yourself to collaborate on your own project\"\n}"},{"id":"b5450a4d-047c-4463-8262-1f797d2caf57","name":"500","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"project_id\": \"68eb65994991390b30477706\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8000/api/collaborate/invite"},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"Text","header":[{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Security-Policy","value":"default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"},{"key":"Cross-Origin-Resource-Policy","value":"same-origin"},{"key":"Origin-Agent-Cluster","value":"?1"},{"key":"Referrer-Policy","value":"no-referrer"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-DNS-Prefetch-Control","value":"off"},{"key":"X-Download-Options","value":"noopen"},{"key":"X-Frame-Options","value":"DENY"},{"key":"X-Permitted-Cross-Domain-Policies","value":"none"},{"key":"X-XSS-Protection","value":"0"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"62"},{"key":"ETag","value":"W/\"3e-e/EwkhclYiSBmQpvJ5xXCLABC5M\""},{"key":"Date","value":"Sun, 12 Oct 2025 10:31:35 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"error\",\n    \"message\": \"Failed to send invitation email\"\n}"}],"_postman_id":"df4fb6ca-0496-4f7a-868b-a768f3bcd5c7"},{"name":"Accept Collaboration","id":"5ab3c202-1970-48a6-b3ac-2cacced8be61","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"url":"http://localhost:8000/api/collab/accept/:token","urlObject":{"path":["api","collab","accept",":token"],"host":["http://localhost:8000"],"query":[],"variable":[{"id":"fa49c9be-8d16-4072-a269-5fdafa65c9a3","type":"any","value":"","key":"token"}]}},"response":[],"_postman_id":"5ab3c202-1970-48a6-b3ac-2cacced8be61"},{"name":"Reject Collaboration","id":"03c50743-c971-42a2-be78-163597ab71b9","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"url":"http://localhost:8000/api/collab/reject/:token","urlObject":{"path":["api","collab","reject",":token"],"host":["http://localhost:8000"],"query":[],"variable":[{"id":"b3dca8e4-fc7f-4b27-bcef-defcf0df4256","type":"any","value":"","key":"token"}]}},"response":[],"_postman_id":"03c50743-c971-42a2-be78-163597ab71b9"},{"name":"Collaborators on a project","id":"1b106a90-5f5a-4ade-bca1-d7575cdbe13f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:8000/api/collab/:project_id","urlObject":{"path":["api","collab",":project_id"],"host":["http://localhost:8000"],"query":[],"variable":[{"id":"a7e61da6-56df-488c-a0c2-5fc3b4d0a645","type":"any","value":"68eb65994991390b30477706","key":"project_id"}]}},"response":[],"_postman_id":"1b106a90-5f5a-4ade-bca1-d7575cdbe13f"}],"id":"f31ebdce-89ff-43b1-8f3e-9cf7120d82a0","description":"<p>This folder contains endpoints related to <strong>project collaboration management</strong>, including sending collaboration invitations, accepting/rejecting invitations, and fetching collaborators for a project.</p>\n<p><strong>Endpoints:</strong></p>\n<ol>\n<li><p><strong><code>/invite</code></strong> <strong>(POST)</strong> – Send a collaboration invitation to a project author.</p>\n<ul>\n<li><p>Requires authentication.</p>\n</li>\n<li><p>Accepts <code>project_id</code> in the request body.</p>\n</li>\n<li><p>Sends an email invitation to the project author and creates a pending collaboration record in the database.</p>\n</li>\n</ul>\n</li>\n<li><p><strong><code>/accept/:token</code></strong> <strong>(POST)</strong> – Accept a collaboration invitation.</p>\n<ul>\n<li><p>Requires authentication.</p>\n</li>\n<li><p>Accepts <code>token</code> as a route parameter.</p>\n</li>\n<li><p>Marks the collaboration request as accepted and invalidates the token.</p>\n</li>\n</ul>\n</li>\n<li><p><strong><code>/reject/:token</code></strong> <strong>(POST)</strong> – Reject a collaboration invitation.</p>\n<ul>\n<li><p>Requires authentication.</p>\n</li>\n<li><p>Accepts <code>token</code> as a route parameter.</p>\n</li>\n<li><p>Marks the collaboration request as rejected and invalidates the token.</p>\n</li>\n</ul>\n</li>\n<li><p><strong><code>/list/:project_id</code></strong> <strong>(GET)</strong> – Fetch the list of collaborators for a project.</p>\n<ul>\n<li><p>Requires authentication.</p>\n</li>\n<li><p>Accepts <code>project_id</code> as a route parameter.</p>\n</li>\n<li><p>Returns all collaborators where the authenticated user is the project author.</p>\n</li>\n</ul>\n</li>\n</ol>\n<p><strong>Notes:</strong></p>\n<ul>\n<li><p>Only authenticated users can send, accept, or reject collaboration invitations.</p>\n</li>\n<li><p>Tokens are invalidated after accepting or rejecting an invitation to prevent reuse.</p>\n</li>\n<li><p>Fetching collaborators is restricted to the project author to ensure privacy.</p>\n</li>\n</ul>\n","_postman_id":"f31ebdce-89ff-43b1-8f3e-9cf7120d82a0"},{"name":"First Route","id":"e82895b2-c6b9-4451-bb91-24af04094812","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"body":{"mode":"raw","raw":""},"url":"http://localhost:8000/","urlObject":{"path":[""],"host":["http://localhost:8000"],"query":[],"variable":[]}},"response":[{"id":"4b9b118a-d886-4a13-a7bf-b4da80a152a9","name":"200","originalRequest":{"method":"GET","header":[],"url":"http://localhost:8000/"},"status":"OK","code":200,"_postman_previewlanguage":"Text","header":[{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Security-Policy","value":"default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"},{"key":"Cross-Origin-Resource-Policy","value":"same-origin"},{"key":"Origin-Agent-Cluster","value":"?1"},{"key":"Referrer-Policy","value":"no-referrer"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-DNS-Prefetch-Control","value":"off"},{"key":"X-Download-Options","value":"noopen"},{"key":"X-Frame-Options","value":"DENY"},{"key":"X-Permitted-Cross-Domain-Policies","value":"none"},{"key":"X-XSS-Protection","value":"0"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"54"},{"key":"ETag","value":"W/\"36-Y5qoJ50s5Nrfx+MB53KOOUp8kjw\""},{"key":"Date","value":"Sat, 11 Oct 2025 09:08:46 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"message\": \"Backend is running...\"\n}"}],"_postman_id":"e82895b2-c6b9-4451-bb91-24af04094812"}],"event":[{"listen":"prerequest","script":{"id":"653b43d3-5da2-4d16-8ae9-09333c7fe495","type":"text/javascript","packages":{},"requests":{},"exec":[""]}},{"listen":"test","script":{"id":"907bee30-a990-4657-a22e-7cd829ba7b17","type":"text/javascript","packages":{},"requests":{},"exec":[""]}}],"variable":[{"key":"baseURL","value":"http://localhost:8000"}]}