{"info":{"_postman_id":"86a136d2-77e9-416f-b284-40c160bfa21b","name":"Primtrade assignment","description":"<html><head></head><body><p>REST API with JWT Auth and Role-Based Access Control</p>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"owner":"38451635","collectionId":"86a136d2-77e9-416f-b284-40c160bfa21b","publishedId":"2sBXigLstN","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"publishDate":"2026-03-13T18:27:07.000Z"},"item":[{"name":"Auth","item":[{"name":"Register","event":[{"listen":"test","script":{"id":"1133028d-1b75-4bd7-9ec1-80224c35fb58","exec":["const json = pm.response.json();\r","if (json.token) {\r","    pm.collectionVariables.set(\"token\", json.token);\r","    console.log(\"Token saved:\", json.token);\r","}"],"type":"text/javascript","packages":{},"requests":{}}}],"id":"01b1d1cd-4e2d-471a-9483-bb706bdc359c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"name\": \"Gaurang Pandey\",\r\n    \"email\": \"gaurangpandey@gmail.com\",\r\n    \"password\": \"Gaurang1234\"\r\n}","options":{"raw":{"language":"json"}}},"url":"/auth/register","description":"<p>Register a new user. Returns JWT token and user object.</p>\n","urlObject":{"path":["auth","register"],"host":[""],"query":[],"variable":[]}},"response":[{"id":"a6fdb8e6-2a78-4eaf-9ef7-b809eeddb122","name":"Register","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"name\": \"Gaurang Pandey\",\r\n    \"email\": \"gaurangpandey@gmail.com\",\r\n    \"password\": \"Gaurang1234\"\r\n}","options":{"raw":{"language":"json"}}},"url":"/auth/register"},"status":"Created","code":201,"_postman_previewlanguage":null,"header":[{"key":"X-Powered-By","value":"Express"},{"key":"Access-Control-Allow-Origin","value":"http://localhost:3000"},{"key":"Vary","value":"Origin"},{"key":"Access-Control-Allow-Credentials","value":"true"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"370"},{"key":"ETag","value":"W/\"172-A9NEY9PIxID5ImzHUPhl9P1rldg\""},{"key":"Date","value":"Fri, 13 Mar 2026 18:20:20 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": true,\n    \"message\": \"User registered successfully\",\n    \"token\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjY5YjQ1NTY0ZDgwZTQ0NDg4NGQ5YmU4MiIsInJvbGUiOiJ1c2VyIiwiaWF0IjoxNzczNDI2MDIwLCJleHAiOjE3NzM1MTI0MjB9.LyD7L7fQJjx8ToAvpPFc8R_nguNsZwO0Grf_7szd3Uo\",\n    \"user\": {\n        \"id\": \"69b45564d80e444884d9be82\",\n        \"name\": \"Gaurang Pandey\",\n        \"email\": \"gaurangpandey@gmail.com\",\n        \"role\": \"user\"\n    }\n}"}],"_postman_id":"01b1d1cd-4e2d-471a-9483-bb706bdc359c"},{"name":"Login","event":[{"listen":"test","script":{"id":"4f6dc8c1-b3e9-4521-8ae9-12061503c486","exec":["const json = pm.response.json();\r","if (json.token) {\r","    pm.collectionVariables.set(\"token\", json.token);\r","    console.log(\"Token saved:\", json.token);\r","}"],"type":"text/javascript","packages":{},"requests":{}}}],"id":"84041ab1-cd60-49b0-9ce8-edc9580a033b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n  \"email\": \"gaurangpandey@gmail.com\",\r\n  \"password\": \"Gaurang1234\"\r\n}","options":{"raw":{"language":"json"}}},"url":"/auth/login","description":"<p>Login with email and password. Returns JWT token.</p>\n","urlObject":{"path":["auth","login"],"host":[""],"query":[],"variable":[]}},"response":[{"id":"8810282b-a9f4-44ac-b2ef-e090e1548077","name":"Login","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n  \"email\": \"gaurangpandey@gmail.com\",\r\n  \"password\": \"Gaurang1234\"\r\n}","options":{"raw":{"language":"json"}}},"url":"/auth/login"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"X-Powered-By","value":"Express"},{"key":"Access-Control-Allow-Origin","value":"http://localhost:3000"},{"key":"Vary","value":"Origin"},{"key":"Access-Control-Allow-Credentials","value":"true"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"329"},{"key":"ETag","value":"W/\"149-zJuMLi+AMWv1Ls7izD2u4YmKiuI\""},{"key":"Date","value":"Fri, 13 Mar 2026 18:21:26 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": true,\n    \"token\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjY5YjQ1NTY0ZDgwZTQ0NDg4NGQ5YmU4MiIsInJvbGUiOiJ1c2VyIiwiaWF0IjoxNzczNDI2MDg2LCJleHAiOjE3NzM1MTI0ODZ9.o1oVah0SYbvljF5BIoA4HfWKUIXZWwXpi6ua1vfDkGo\",\n    \"user\": {\n        \"id\": \"69b45564d80e444884d9be82\",\n        \"name\": \"Gaurang Pandey\",\n        \"email\": \"gaurangpandey@gmail.com\",\n        \"role\": \"user\"\n    }\n}"}],"_postman_id":"84041ab1-cd60-49b0-9ce8-edc9580a033b"},{"name":"Get Current User","id":"81b48b0e-4960-4267-9ca4-f88bb5b49a8d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":false},"method":"GET","header":[],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":"/auth/me","description":"<p>Returns the currently logged-in user's profile.</p>\n","urlObject":{"path":["auth","me"],"host":[""],"query":[],"variable":[]}},"response":[{"id":"a25e2927-137f-4d42-939b-3ca02c735827","name":"Get Current User","originalRequest":{"method":"GET","header":[],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":"/auth/me"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"X-Powered-By","value":"Express"},{"key":"Access-Control-Allow-Origin","value":"http://localhost:3000"},{"key":"Vary","value":"Origin"},{"key":"Access-Control-Allow-Credentials","value":"true"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"216"},{"key":"ETag","value":"W/\"d8-tTSnlhIJ+pqBMlgcasI4ypT+hc8\""},{"key":"Date","value":"Fri, 13 Mar 2026 18:21:40 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": true,\n    \"user\": {\n        \"_id\": \"69b45564d80e444884d9be82\",\n        \"name\": \"Gaurang Pandey\",\n        \"email\": \"gaurangpandey@gmail.com\",\n        \"role\": \"user\",\n        \"createdAt\": \"2026-03-13T18:20:20.037Z\",\n        \"updatedAt\": \"2026-03-13T18:20:20.037Z\",\n        \"__v\": 0\n    }\n}"}],"_postman_id":"81b48b0e-4960-4267-9ca4-f88bb5b49a8d"}],"id":"5b7b3d5c-2922-47ab-912a-19ef20047a95","_postman_id":"5b7b3d5c-2922-47ab-912a-19ef20047a95","description":""},{"name":"Tasks","item":[{"name":"Get All Tasks","id":"f6f96fb5-baba-4f32-9877-629a267b0fb8","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":false},"method":"GET","header":[],"url":"/tasks","description":"<p>Returns own tasks for regular users. Returns all tasks for admin.</p>\n","urlObject":{"path":["tasks"],"host":[""],"query":[],"variable":[]}},"response":[{"id":"1d0a4c03-c823-43e3-863f-e47dadd5f91f","name":"Get All Tasks","originalRequest":{"method":"GET","header":[],"url":"/tasks"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"X-Powered-By","value":"Express"},{"key":"Access-Control-Allow-Origin","value":"http://localhost:3000"},{"key":"Vary","value":"Origin"},{"key":"Access-Control-Allow-Credentials","value":"true"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"342"},{"key":"ETag","value":"W/\"156-tqT4kuXMpjpl3ugT2AN4shtC8GU\""},{"key":"Date","value":"Fri, 13 Mar 2026 18:22:18 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": true,\n    \"count\": 1,\n    \"tasks\": [\n        {\n            \"_id\": \"69b455c7d80e444884d9be89\",\n            \"title\": \"Fix login bug\",\n            \"desc\": \"The login form crashes on submit\",\n            \"status\": \"pending\",\n            \"user\": {\n                \"_id\": \"69b45564d80e444884d9be82\",\n                \"name\": \"Gaurang Pandey\",\n                \"email\": \"gaurangpandey@gmail.com\"\n            },\n            \"createdAt\": \"2026-03-13T18:21:59.956Z\",\n            \"updatedAt\": \"2026-03-13T18:21:59.956Z\",\n            \"__v\": 0\n        }\n    ]\n}"}],"_postman_id":"f6f96fb5-baba-4f32-9877-629a267b0fb8"},{"name":"Create Task","id":"0ba8063d-ad9d-41b6-b6cc-046d92865f4f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n  \"title\": \"Fix login bug\",\r\n  \"desc\": \"The login form crashes on submit\",\r\n  \"status\": \"pending\"\r\n}","options":{"raw":{"language":"json"}}},"url":"/tasks","description":"<p>Creates a new task. Status options: pending, in-progress, done</p>\n","urlObject":{"path":["tasks"],"host":[""],"query":[],"variable":[]}},"response":[{"id":"39cda49e-8fb2-42f0-a8f8-59727b674d61","name":"Create Task","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n  \"title\": \"Fix login bug\",\r\n  \"desc\": \"The login form crashes on submit\",\r\n  \"status\": \"pending\"\r\n}","options":{"raw":{"language":"json"}}},"url":"/tasks"},"status":"Created","code":201,"_postman_previewlanguage":null,"header":[{"key":"X-Powered-By","value":"Express"},{"key":"Access-Control-Allow-Origin","value":"http://localhost:3000"},{"key":"Vary","value":"Origin"},{"key":"Access-Control-Allow-Credentials","value":"true"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"263"},{"key":"ETag","value":"W/\"107-5Mg/NCB8IeFN+62ortDT9NiN2kU\""},{"key":"Date","value":"Fri, 13 Mar 2026 18:22:00 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": true,\n    \"task\": {\n        \"title\": \"Fix login bug\",\n        \"desc\": \"The login form crashes on submit\",\n        \"status\": \"pending\",\n        \"user\": \"69b45564d80e444884d9be82\",\n        \"_id\": \"69b455c7d80e444884d9be89\",\n        \"createdAt\": \"2026-03-13T18:21:59.956Z\",\n        \"updatedAt\": \"2026-03-13T18:21:59.956Z\",\n        \"__v\": 0\n    }\n}"}],"_postman_id":"0ba8063d-ad9d-41b6-b6cc-046d92865f4f"},{"name":"Update Task","id":"3502f032-1c6c-4571-8094-509133a4f09c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":false},"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\r\n  \"title\": \"Updated title\",\r\n  \"status\": \"in-progress\"\r\n}","options":{"raw":{"language":"json"}}},"url":"/tasks/:id","description":"<p>Update a task. Only the owner or admin can update.</p>\n","urlObject":{"path":["tasks",":id"],"host":[""],"query":[],"variable":[{"type":"any","value":"69b455c7d80e444884d9be89","key":"id"}]}},"response":[{"id":"2aecc32d-c87b-41d3-9346-d405a43253fd","name":"Update Task","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\r\n  \"title\": \"Updated title\",\r\n  \"status\": \"in-progress\"\r\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"/tasks/:id","host":[""],"path":["tasks",":id"],"variable":[{"key":"id","value":"69b455c7d80e444884d9be89"}]}},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"X-Powered-By","value":"Express"},{"key":"Access-Control-Allow-Origin","value":"http://localhost:3000"},{"key":"Vary","value":"Origin"},{"key":"Access-Control-Allow-Credentials","value":"true"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"267"},{"key":"ETag","value":"W/\"10b-0D9/wEL+z27C05DRnYrzchWrnVM\""},{"key":"Date","value":"Fri, 13 Mar 2026 18:22:49 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": true,\n    \"task\": {\n        \"_id\": \"69b455c7d80e444884d9be89\",\n        \"title\": \"Updated title\",\n        \"desc\": \"The login form crashes on submit\",\n        \"status\": \"in-progress\",\n        \"user\": \"69b45564d80e444884d9be82\",\n        \"createdAt\": \"2026-03-13T18:21:59.956Z\",\n        \"updatedAt\": \"2026-03-13T18:22:49.559Z\",\n        \"__v\": 0\n    }\n}"}],"_postman_id":"3502f032-1c6c-4571-8094-509133a4f09c"},{"name":"Get Task By ID","id":"d95030b0-fdfe-493b-ba16-4f6aa3fc849b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":false},"method":"GET","header":[],"url":"/tasks/:id","description":"<p>Fetch a single task. Users can only access their own tasks.</p>\n","urlObject":{"path":["tasks",":id"],"host":[""],"query":[],"variable":[{"type":"any","value":"69b455c7d80e444884d9be89","key":"id"}]}},"response":[{"id":"b25e41f3-5406-405e-bd53-953f083e6da4","name":"Get Task By ID","originalRequest":{"method":"GET","header":[],"url":{"raw":"/tasks/:id","host":[""],"path":["tasks",":id"],"variable":[{"key":"id","value":"69b455c7d80e444884d9be89"}]}},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"X-Powered-By","value":"Express"},{"key":"Access-Control-Allow-Origin","value":"http://localhost:3000"},{"key":"Vary","value":"Origin"},{"key":"Access-Control-Allow-Credentials","value":"true"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"267"},{"key":"ETag","value":"W/\"10b-0D9/wEL+z27C05DRnYrzchWrnVM\""},{"key":"Date","value":"Fri, 13 Mar 2026 18:23:10 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": true,\n    \"task\": {\n        \"_id\": \"69b455c7d80e444884d9be89\",\n        \"title\": \"Updated title\",\n        \"desc\": \"The login form crashes on submit\",\n        \"status\": \"in-progress\",\n        \"user\": \"69b45564d80e444884d9be82\",\n        \"createdAt\": \"2026-03-13T18:21:59.956Z\",\n        \"updatedAt\": \"2026-03-13T18:22:49.559Z\",\n        \"__v\": 0\n    }\n}"}],"_postman_id":"d95030b0-fdfe-493b-ba16-4f6aa3fc849b"},{"name":"Delete Task","id":"fb1ab421-166f-46d6-9545-957b19e1c163","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":false},"method":"DELETE","header":[],"url":"/tasks/:id","description":"<p>Delete a task. Only the owner or admin can delete.</p>\n","urlObject":{"path":["tasks",":id"],"host":[""],"query":[],"variable":[{"type":"any","value":"69b455c7d80e444884d9be89","key":"id"}]}},"response":[{"id":"f86206ca-51ac-44b4-84cf-fd7fee1002aa","name":"Delete Task","originalRequest":{"method":"DELETE","header":[],"url":{"raw":"/tasks/:id","host":[""],"path":["tasks",":id"],"variable":[{"key":"id","value":"69b455c7d80e444884d9be89"}]}},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"X-Powered-By","value":"Express"},{"key":"Access-Control-Allow-Origin","value":"http://localhost:3000"},{"key":"Vary","value":"Origin"},{"key":"Access-Control-Allow-Credentials","value":"true"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"41"},{"key":"ETag","value":"W/\"29-ErUvUp5sWewsT+NkxYybQvcwLLQ\""},{"key":"Date","value":"Fri, 13 Mar 2026 18:23:20 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": true,\n    \"message\": \"Task deleted\"\n}"}],"_postman_id":"fb1ab421-166f-46d6-9545-957b19e1c163"}],"id":"acdd2d8c-6d14-41a3-9aa5-009128e003af","_postman_id":"acdd2d8c-6d14-41a3-9aa5-009128e003af","description":""}],"event":[{"listen":"prerequest","script":{"id":"700183b7-7666-42b8-9e7e-4fade9c75c4b","type":"text/javascript","packages":{},"requests":{},"exec":[""]}},{"listen":"test","script":{"id":"f326aaea-bb04-4de0-9d3e-d6b988c7de1d","type":"text/javascript","packages":{},"requests":{},"exec":[""]}}],"variable":[{"key":"base_url","value":""},{"key":"token","value":"","type":"default"}]}