{"info":{"_postman_id":"732c26cf-6416-47ce-84e0-5bcbd067ce1f","name":"Edtech API","description":"<html><head></head><body><p>This project is the backend for an&nbsp;<strong>EdTech platform</strong>&nbsp;that leverages&nbsp;<strong>AI-based recommendations</strong>&nbsp;to suggest courses to users based on their interests and engagement history. The system manages users, courses, engagement data, and computes AI-powered recommendations for courses using a scoring system that incorporates user interests, course popularity, and engagement history.</p>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"owner":"16411809","collectionId":"732c26cf-6416-47ce-84e0-5bcbd067ce1f","publishedId":"2sB3HqHdU7","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"publishDate":"2025-09-15T14:00:34.000Z"},"item":[{"name":"Course","item":[{"name":"create course","id":"1af8cbdc-9571-4691-8bce-1f5e4fbcf25c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"title\": \"Understanding Christian Theology\",\n    \"description\": \"Dive deep into Christian beliefs and theological concepts including the nature of God, the Trinity, and the role of Jesus Christ.\",\n    \"popularity\": 80,\n    \"category\": \"Religion\",\n    \"link\": \"https://www.youtube.com/watch?v=F-jXDBEJA6w\",\n    \"tags\": [\n      \"Christianity\",\n      \"Theology\",\n      \"Bible\",\n      \"Jesus Christ\"\n    ]\n  }","options":{"raw":{"language":"json"}}},"url":"http://localhost:5001/api/course","description":"<h2 id=\"add-course-api\">Add Course API</h2>\n<p>This endpoint allows users to add a new course to the system.</p>\n<h3 id=\"request-method\">Request Method</h3>\n<p><code>POST</code></p>\n<h3 id=\"endpoint\">Endpoint</h3>\n<p><code>http://localhost:5000/api/course</code></p>\n<h3 id=\"request-parameters\">Request Parameters</h3>\n<p>The request body should be in JSON format and include the following parameters:</p>\n<ul>\n<li><p><strong>title</strong> (string): The title of the course.</p>\n</li>\n<li><p><strong>description</strong> (string): A brief description of the course content.</p>\n</li>\n<li><p><strong>popularity</strong> (integer): A numerical value indicating the popularity of the course.</p>\n</li>\n<li><p><strong>category</strong> (string): The category under which the course falls.</p>\n</li>\n<li><p><strong>tags</strong> (array of strings): An array of tags associated with the course.</p>\n</li>\n</ul>\n<h3 id=\"example-request-body\">Example Request Body</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"title\": \"Introduction to AI\",\n  \"description\": \"Learn the basics of Artificial ...\",\n  \"popularity\": 50,\n  \"category\": \"AI\",\n  \"tags\": [\"AI\"]\n}\n\n</code></pre>\n<h3 id=\"expected-response-format\">Expected Response Format</h3>\n<p>Upon successful creation of the course, the API will return a JSON object containing the following fields:</p>\n<ul>\n<li><p><strong>title</strong> (string): The title of the course.</p>\n</li>\n<li><p><strong>description</strong> (string): The description of the course.</p>\n</li>\n<li><p><strong>popularity</strong> (integer): The popularity score of the course.</p>\n</li>\n<li><p><strong>category</strong> (string): The category of the course.</p>\n</li>\n<li><p><strong>tags</strong> (array of strings): An array of tags associated with the course.</p>\n</li>\n<li><p><strong>_id</strong> (string): The unique identifier for the course.</p>\n</li>\n<li><p><strong>__v</strong> (integer): The version key for the course document.</p>\n</li>\n</ul>\n<h3 id=\"example-response\">Example Response</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"title\": \"\",\n  \"description\": \"\",\n  \"popularity\": 0,\n  \"category\": \"\",\n  \"tags\": [\"\"],\n  \"_id\": \"\",\n  \"__v\": 0\n}\n\n</code></pre>\n<p>This response indicates the successful addition of a course, with the relevant details returned for confirmation.</p>\n","urlObject":{"protocol":"http","port":"5001","path":["api","course"],"host":["localhost"],"query":[],"variable":[]}},"response":[{"id":"35b86472-5804-47c7-9701-6e926b151900","name":"success","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"title\": \"Introduction to AI\",\n    \"description\": \"Learn the basics of Artificial Intelligence, including machine learning and neural networks.\",\n    \"popularity\": 50,\n    \"category\": \"AI\",\n    \"tags\": [\n        \"AI\",\n        \"beginner\",\n        \"machine learning\"\n    ]\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:5001/api/course"},"status":"Created","code":201,"_postman_previewlanguage":null,"header":[{"key":"X-Powered-By","value":"Express"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"255"},{"key":"ETag","value":"W/\"ff-20bveP/MdXIPskKuof9YnnVFHG4\""},{"key":"Date","value":"Mon, 15 Sep 2025 10:27:55 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"title\": \"Introduction to AI\",\n    \"description\": \"Learn the basics of Artificial Intelligence, including machine learning and neural networks.\",\n    \"popularity\": 0,\n    \"category\": \"AI\",\n    \"tags\": [\n        \"AI\",\n        \"beginner\",\n        \"machine learning\"\n    ],\n    \"_id\": \"68c7ea2b69b673e941841e9b\",\n    \"__v\": 0\n}"}],"_postman_id":"1af8cbdc-9571-4691-8bce-1f5e4fbcf25c"},{"name":"get courses","id":"2d32d29d-6871-42b1-8e2e-8247142e0d49","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:5001/api/courses","description":"<h2 id=\"get-courses\">Get Courses</h2>\n<p>This endpoint retrieves a list of courses available in the system. It provides detailed information about each course, including its title, description, popularity, category, and associated tags.</p>\n<h3 id=\"request\">Request</h3>\n<ul>\n<li><p><strong>Method</strong>: GET</p>\n</li>\n<li><p><strong>URL</strong>: <code>http://localhost:5000/api/courses</code></p>\n</li>\n</ul>\n<h3 id=\"response\">Response</h3>\n<p>On a successful request, the server responds with a status code of <strong>200</strong> and a JSON array containing the course objects. Each course object includes the following fields:</p>\n<ul>\n<li><p><strong>_id</strong> (String): The unique identifier for the course.</p>\n</li>\n<li><p><strong>title</strong> (String): The title of the course.</p>\n</li>\n<li><p><strong>description</strong> (String): A brief description of what the course covers.</p>\n</li>\n<li><p><strong>popularity</strong> (Number): A numerical value indicating the popularity of the course.</p>\n</li>\n<li><p><strong>category</strong> (String): The category under which the course is classified.</p>\n</li>\n<li><p><strong>tags</strong> (Array of Strings): An array of tags associated with the course for easier categorization and searchability.</p>\n</li>\n<li><p><strong>__v</strong> (Number): A version key used for internal tracking.</p>\n</li>\n</ul>\n<h3 id=\"example-response\">Example Response</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">[\n    {\n        \"_id\": \"course_id_1\",\n        \"title\": \"Introduction to Programming\",\n        \"description\": \"Learn the basics of programming.\",\n        \"popularity\": 5,\n        \"category\": \"Computer Science\",\n        \"tags\": [\"programming\", \"basics\", \"computer science\"],\n        \"__v\": 0\n    },\n    {\n        \"_id\": \"course_id_2\",\n        \"title\": \"Advanced Web Development\",\n        \"description\": \"Dive deeper into web technologies.\",\n        \"popularity\": 8,\n        \"category\": \"Web Development\",\n        \"tags\": [\"web\", \"advanced\", \"development\"],\n        \"__v\": 0\n    }\n]\n\n</code></pre>\n<p>This structure allows clients to easily access and display course information for users.</p>\n","urlObject":{"protocol":"http","port":"5001","path":["api","courses"],"host":["localhost"],"query":[],"variable":[]}},"response":[{"id":"b4835a04-8820-4e74-a591-ff9ff25e460f","name":"success","originalRequest":{"method":"GET","header":[],"url":"http://localhost:5001/api/courses"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"X-Powered-By","value":"Express"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"257"},{"key":"ETag","value":"W/\"101-sosthYlIBL9yZ4QWdPR/6Egx/QI\""},{"key":"Date","value":"Mon, 15 Sep 2025 10:39:11 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"[\n    {\n        \"_id\": \"68c7ea2b69b673e941841e9b\",\n        \"title\": \"Introduction to AI\",\n        \"description\": \"Learn the basics of Artificial Intelligence, including machine learning and neural networks.\",\n        \"popularity\": 0,\n        \"category\": \"AI\",\n        \"tags\": [\n            \"AI\",\n            \"beginner\",\n            \"machine learning\"\n        ],\n        \"__v\": 0\n    }\n]"}],"_postman_id":"2d32d29d-6871-42b1-8e2e-8247142e0d49"},{"name":"get courses paginated","id":"e0d49fce-082a-44e2-ac47-5ae4a09bacd5","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:5001/api/courses/paginated?page=1&limit=20","description":"<h2 id=\"get-courses\">Get Courses</h2>\n<p>This endpoint retrieves a list of courses available in the system. It provides detailed information about each course, including its title, description, popularity, category, and associated tags.</p>\n<h3 id=\"request\">Request</h3>\n<ul>\n<li><p><strong>Method</strong>: GET</p>\n</li>\n<li><p><strong>URL</strong>: <code>http://localhost:5000/api/courses</code></p>\n</li>\n</ul>\n<h3 id=\"response\">Response</h3>\n<p>On a successful request, the server responds with a status code of <strong>200</strong> and a JSON array containing the course objects. Each course object includes the following fields:</p>\n<ul>\n<li><p><strong>_id</strong> (String): The unique identifier for the course.</p>\n</li>\n<li><p><strong>title</strong> (String): The title of the course.</p>\n</li>\n<li><p><strong>description</strong> (String): A brief description of what the course covers.</p>\n</li>\n<li><p><strong>popularity</strong> (Number): A numerical value indicating the popularity of the course.</p>\n</li>\n<li><p><strong>category</strong> (String): The category under which the course is classified.</p>\n</li>\n<li><p><strong>tags</strong> (Array of Strings): An array of tags associated with the course for easier categorization and searchability.</p>\n</li>\n<li><p><strong>__v</strong> (Number): A version key used for internal tracking.</p>\n</li>\n</ul>\n<h3 id=\"example-response\">Example Response</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">[\n    {\n        \"_id\": \"course_id_1\",\n        \"title\": \"Introduction to Programming\",\n        \"description\": \"Learn the basics of programming.\",\n        \"popularity\": 5,\n        \"category\": \"Computer Science\",\n        \"tags\": [\"programming\", \"basics\", \"computer science\"],\n        \"__v\": 0\n    },\n    {\n        \"_id\": \"course_id_2\",\n        \"title\": \"Advanced Web Development\",\n        \"description\": \"Dive deeper into web technologies.\",\n        \"popularity\": 8,\n        \"category\": \"Web Development\",\n        \"tags\": [\"web\", \"advanced\", \"development\"],\n        \"__v\": 0\n    }\n]\n\n</code></pre>\n<p>This structure allows clients to easily access and display course information for users.</p>\n","urlObject":{"protocol":"http","port":"5001","path":["api","courses","paginated"],"host":["localhost"],"query":[{"key":"page","value":"1"},{"key":"limit","value":"20"},{"disabled":true,"description":{"content":"<p>technology, python etc</p>\n","type":"text/plain"},"key":"search","value":"technology"},{"disabled":true,"key":"sortBy","value":"createdAt"},{"disabled":true,"key":"sortOrder","value":"desc"},{"disabled":true,"key":"tags","value":"AI,beginner"}],"variable":[]}},"response":[{"id":"c9680d9f-90e5-4eed-b20c-37ac29a67beb","name":"success","originalRequest":{"method":"GET","header":[],"url":"http://localhost:5001/api/courses"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"X-Powered-By","value":"Express"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"257"},{"key":"ETag","value":"W/\"101-sosthYlIBL9yZ4QWdPR/6Egx/QI\""},{"key":"Date","value":"Mon, 15 Sep 2025 10:39:11 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"[\n    {\n        \"_id\": \"68c7ea2b69b673e941841e9b\",\n        \"title\": \"Introduction to AI\",\n        \"description\": \"Learn the basics of Artificial Intelligence, including machine learning and neural networks.\",\n        \"popularity\": 0,\n        \"category\": \"AI\",\n        \"tags\": [\n            \"AI\",\n            \"beginner\",\n            \"machine learning\"\n        ],\n        \"__v\": 0\n    }\n]"},{"id":"dd4f87ee-5873-44fa-8ce9-073cdee82524","name":"get courses paginated","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:5001/api/courses/paginated?page=1&limit=20&search=technology","protocol":"http","host":["localhost"],"port":"5001","path":["api","courses","paginated"],"query":[{"key":"page","value":"1"},{"key":"limit","value":"20"},{"key":"search","value":"technology","description":"technology, python etc"},{"key":"sortBy","value":"createdAt","disabled":true},{"key":"sortOrder","value":"desc","disabled":true},{"key":"tags","value":"AI,beginner","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"X-Powered-By","value":"Express"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"1006"},{"key":"ETag","value":"W/\"3ee-16jC8DjqoYNg8sS9iOQZ1ioyE0M\""},{"key":"Date","value":"Thu, 09 Oct 2025 16:22:36 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"courses\": [\n        {\n            \"_id\": \"68e7db24c0b108767d1010f1\",\n            \"title\": \"Mastering Python for Data Science\",\n            \"description\": \"Dive into Python programming and explore its use in data science, machine learning, and data visualization.\",\n            \"link\": \"https://www.youtube.com/watch?v=AeUnO1oNv08\",\n            \"popularity\": 0,\n            \"category\": \"Technology\",\n            \"tags\": [\n                \"Python\",\n                \"Data Science\",\n                \"machine learning\",\n                \"data visualization\"\n            ],\n            \"createdAt\": \"2025-10-09T15:56:20.327Z\",\n            \"updatedAt\": \"2025-10-09T15:56:20.327Z\",\n            \"__v\": 0\n        },\n        {\n            \"_id\": \"68e7daa7c0b108767d1010ef\",\n            \"title\": \"Introduction to Web Development\",\n            \"description\": \"Learn the fundamentals of web development including HTML, CSS, and JavaScript. Build your first responsive website.\",\n            \"link\": \"https://www.youtube.com/watch?v=HfTXHrWMGVY&list=PLZlA0Gpn_vH-cEDOofOujFIknfZZpIk3a\",\n            \"popularity\": 0,\n            \"category\": \"Technology\",\n            \"tags\": [\n                \"Web Development\",\n                \"beginner\",\n                \"HTML\",\n                \"CSS\",\n                \"JavaScript\"\n            ],\n            \"createdAt\": \"2025-10-09T15:54:15.538Z\",\n            \"updatedAt\": \"2025-10-09T15:54:15.538Z\",\n            \"__v\": 0\n        }\n    ],\n    \"totalCourses\": 2,\n    \"totalPages\": 1,\n    \"currentPage\": 1\n}"}],"_postman_id":"e0d49fce-082a-44e2-ac47-5ae4a09bacd5"},{"name":"delete course","id":"6c5d4527-49d4-4c74-ae98-94fc0c37ff45","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"url":"http://localhost:5001/api/course/:courseId","description":"<h2 id=\"get-courses\">Get Courses</h2>\n<p>This endpoint retrieves a list of courses available in the system. It provides detailed information about each course, including its title, description, popularity, category, and associated tags.</p>\n<h3 id=\"request\">Request</h3>\n<ul>\n<li><p><strong>Method</strong>: GET</p>\n</li>\n<li><p><strong>URL</strong>: <code>http://localhost:5000/api/courses</code></p>\n</li>\n</ul>\n<h3 id=\"response\">Response</h3>\n<p>On a successful request, the server responds with a status code of <strong>200</strong> and a JSON array containing the course objects. Each course object includes the following fields:</p>\n<ul>\n<li><p><strong>_id</strong> (String): The unique identifier for the course.</p>\n</li>\n<li><p><strong>title</strong> (String): The title of the course.</p>\n</li>\n<li><p><strong>description</strong> (String): A brief description of what the course covers.</p>\n</li>\n<li><p><strong>popularity</strong> (Number): A numerical value indicating the popularity of the course.</p>\n</li>\n<li><p><strong>category</strong> (String): The category under which the course is classified.</p>\n</li>\n<li><p><strong>tags</strong> (Array of Strings): An array of tags associated with the course for easier categorization and searchability.</p>\n</li>\n<li><p><strong>__v</strong> (Number): A version key used for internal tracking.</p>\n</li>\n</ul>\n<h3 id=\"example-response\">Example Response</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">[\n    {\n        \"_id\": \"course_id_1\",\n        \"title\": \"Introduction to Programming\",\n        \"description\": \"Learn the basics of programming.\",\n        \"popularity\": 5,\n        \"category\": \"Computer Science\",\n        \"tags\": [\"programming\", \"basics\", \"computer science\"],\n        \"__v\": 0\n    },\n    {\n        \"_id\": \"course_id_2\",\n        \"title\": \"Advanced Web Development\",\n        \"description\": \"Dive deeper into web technologies.\",\n        \"popularity\": 8,\n        \"category\": \"Web Development\",\n        \"tags\": [\"web\", \"advanced\", \"development\"],\n        \"__v\": 0\n    }\n]\n\n</code></pre>\n<p>This structure allows clients to easily access and display course information for users.</p>\n","urlObject":{"protocol":"http","port":"5001","path":["api","course",":courseId"],"host":["localhost"],"query":[],"variable":[{"type":"any","value":"68e7c5ace1c077c2089d4afd","key":"courseId"}]}},"response":[{"id":"e8c8884f-e631-4b83-b469-8606eba302d8","name":"success","originalRequest":{"method":"GET","header":[],"url":"http://localhost:5001/api/courses"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"X-Powered-By","value":"Express"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"257"},{"key":"ETag","value":"W/\"101-sosthYlIBL9yZ4QWdPR/6Egx/QI\""},{"key":"Date","value":"Mon, 15 Sep 2025 10:39:11 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"[\n    {\n        \"_id\": \"68c7ea2b69b673e941841e9b\",\n        \"title\": \"Introduction to AI\",\n        \"description\": \"Learn the basics of Artificial Intelligence, including machine learning and neural networks.\",\n        \"popularity\": 0,\n        \"category\": \"AI\",\n        \"tags\": [\n            \"AI\",\n            \"beginner\",\n            \"machine learning\"\n        ],\n        \"__v\": 0\n    }\n]"}],"_postman_id":"6c5d4527-49d4-4c74-ae98-94fc0c37ff45"}],"id":"1aee221d-c9af-49ca-937a-dbc16d414371","description":"<p>Allows admins to create and manage courses in the system</p>\n","_postman_id":"1aee221d-c9af-49ca-937a-dbc16d414371"},{"name":"User","item":[{"name":"create user","id":"cfee34bf-4c4f-47f4-949c-2f1a2a5b8840","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"name\": \"Education User\",\n  \"email\": \"education.user@example.com\",\n  \"careerInterest\": [\"Education\", \"Technology\"],\n  \"tags\": [\"study\", \"HTML\"],\n  \"engagementHistory\": [\n    {\n      \"courseId\": \"68e8f83f55f3c065ae8e08f9\",\n      \"timeSpent\": 120,\n      \"lastViewed\": \"2025-10-09T10:00:00Z\"\n    }\n  ]\n}\n","options":{"raw":{"language":"json"}}},"url":"http://localhost:5001/api/user","description":"<h2 id=\"api-endpoint-create-user\">API Endpoint: Create User</h2>\n<p>This endpoint allows you to create a new user profile in the system. By sending a POST request to <code>/api/user</code>, you can provide user details such as name, email, career interests, tags, and engagement history.</p>\n<h3 id=\"request-format\">Request Format</h3>\n<p><strong>Method:</strong> POST<br /><strong>URL:</strong> <code>http://localhost:5000/api/user</code></p>\n<p><strong>Request Body:</strong><br />The request body should be in JSON format and include the following parameters:</p>\n<ul>\n<li><p><strong>name</strong> (string): The name of the user.</p>\n</li>\n<li><p><strong>email</strong> (string): The email address of the user.</p>\n</li>\n<li><p><strong>careerInterest</strong> (array of strings): An array representing the user's career interests.</p>\n</li>\n<li><p><strong>tags</strong> (array of strings): An array of tags associated with the user.</p>\n</li>\n<li><p><strong>engagementHistory</strong> (array of objects): An array containing the user's engagement history, where each object includes:</p>\n<ul>\n<li><p><strong>courseId</strong> (string): The identifier of the course.</p>\n</li>\n<li><p><strong>timeSpent</strong> (integer): The time spent on the course in minutes.</p>\n</li>\n<li><p><strong>lastViewed</strong> (string): The timestamp of when the course was last viewed in ISO 8601 format.</p>\n</li>\n</ul>\n</li>\n</ul>\n<p><strong>Example Request Body:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"name\": \"Web User A\",\n  \"email\": \"web.usera@example.com\",\n  \"careerInterest\": [\"React\"],\n  \"tags\": [\"web development\"],\n  \"engagementHistory\": [\n    {\n      \"courseId\": \"68c7ed1d590efdb6cf3163c2\",\n      \"timeSpent\": 120,\n      \"lastViewed\": \"2025-09-14T10:00:00Z\"\n    }\n  ]\n}\n\n</code></pre>\n<h3 id=\"response-format\">Response Format</h3>\n<p>Upon successful creation of the user, the API will respond with a status code of <code>201 Created</code> and a JSON object that includes the following fields:</p>\n<ul>\n<li><p><strong>name</strong> (string): The name of the user (may be empty if not provided).</p>\n</li>\n<li><p><strong>email</strong> (string): The email address of the user (may be empty if not provided).</p>\n</li>\n<li><p><strong>careerInterest</strong> (array of strings): An array reflecting the user's career interests (may contain empty strings).</p>\n</li>\n<li><p><strong>tags</strong> (array of strings): An array of tags associated with the user (may contain empty strings).</p>\n</li>\n<li><p><strong>engagementHistory</strong> (array of objects): An array of engagement history objects, which may include:</p>\n<ul>\n<li><p><strong>courseId</strong> (string): The identifier of the course (may be empty).</p>\n</li>\n<li><p><strong>timeSpent</strong> (integer): The time spent on the course (default is 0).</p>\n</li>\n<li><p><strong>lastViewed</strong> (string): The timestamp of when the course was last viewed (may be empty).</p>\n</li>\n<li><p><strong>_id</strong> (string): The unique identifier for the engagement history entry (may be empty).</p>\n</li>\n</ul>\n</li>\n<li><p><strong>_id</strong> (string): The unique identifier for the user created (may be empty).</p>\n</li>\n<li><p><strong>__v</strong> (integer): The version key for the user document (default is 0).</p>\n</li>\n</ul>\n<p><strong>Example Response Body:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"name\": \"\",\n  \"email\": \"\",\n  \"careerInterest\": [\"\"],\n  \"tags\": [\"\"],\n  \"engagementHistory\": [\n    {\n      \"courseId\": \"\",\n      \"timeSpent\": 0,\n      \"lastViewed\": \"\",\n      \"_id\": \"\"\n    }\n  ],\n  \"_id\": \"\",\n  \"__v\": 0\n}\n\n</code></pre>\n<p>This endpoint is essential for managing user profiles and tracking their engagement with various courses.</p>\n","urlObject":{"protocol":"http","port":"5001","path":["api","user"],"host":["localhost"],"query":[],"variable":[]}},"response":[{"id":"2ab2526e-14be-4f04-8c1f-9253bf52946d","name":"success","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"name\": \"John Doe\",\n  \"email\": \"john.doe@example.com\",\n  \"careerInterest\": [\"AI\", \"Web Development\", \"Data Science\"],\n  \"tags\": [\"beginner\", \"data science\"],\n  \"engagementHistory\": [\n    {\n      \"courseId\": \"68c7ea2b69b673e941841e9b\",\n      \"timeSpent\": 120,\n      \"lastViewed\": \"2025-09-14T10:00:00Z\"\n    }\n  ]\n}\n","options":{"raw":{"language":"json"}}},"url":"http://localhost:5001/api/user"},"status":"Created","code":201,"_postman_previewlanguage":null,"header":[{"key":"X-Powered-By","value":"Express"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"206"},{"key":"ETag","value":"W/\"ce-bx4KHVrlX/o1MzHvP8mS9TroP3k\""},{"key":"Date","value":"Mon, 15 Sep 2025 10:44:26 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"name\": \"John Doe\",\n    \"email\": \"john.doe@example.com\",\n    \"careerInterest\": [\n        \"AI\",\n        \"Web Development\",\n        \"Data Science\"\n    ],\n    \"tags\": [\n        \"beginner\",\n        \"data science\"\n    ],\n    \"_id\": \"68c7ee08590efdb6cf3163c5\",\n    \"engagementHistory\": [],\n    \"__v\": 0\n}"},{"id":"37b0603a-aeea-46e5-afd2-bb5d9de8e5e0","name":"create user","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"name\": \"Tech User\",\n  \"email\": \"tech.user@example.com\",\n  \"careerInterest\": [\"Technology\", \"Health\"],\n  \"tags\": [\"python\", \"beginner\", \"html\"],\n  \"engagementHistory\": [\n    {\n      \"courseId\": \"68e7db24c0b108767d1010f1\",\n      \"timeSpent\": 120,\n      \"lastViewed\": \"2025-10-09T10:00:00Z\"\n    }\n  ]\n}\n","options":{"raw":{"language":"json"}}},"url":"http://localhost:5001/api/user"},"status":"Created","code":201,"_postman_previewlanguage":null,"header":[{"key":"X-Powered-By","value":"Express"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"399"},{"key":"ETag","value":"W/\"18f-Emx/MuBZpfqzHG20X2bn383DVEM\""},{"key":"Date","value":"Thu, 09 Oct 2025 16:23:35 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"name\": \"Tech User\",\n    \"email\": \"tech.user@example.com\",\n    \"careerInterest\": [\n        \"Technology\",\n        \"Health\"\n    ],\n    \"tags\": [\n        \"python\",\n        \"beginner\",\n        \"html\"\n    ],\n    \"engagementHistory\": [\n        {\n            \"courseId\": \"68e7db24c0b108767d1010f1\",\n            \"timeSpent\": 120,\n            \"lastViewed\": \"2025-10-09T10:00:00.000Z\",\n            \"_id\": \"68e7e185404ac440a33f60ea\"\n        }\n    ],\n    \"_id\": \"68e7e185404ac440a33f60e9\",\n    \"createdAt\": \"2025-10-09T16:23:33.972Z\",\n    \"updatedAt\": \"2025-10-09T16:23:33.972Z\",\n    \"__v\": 0\n}"}],"_postman_id":"cfee34bf-4c4f-47f4-949c-2f1a2a5b8840"},{"name":"add user engagement history","id":"a1029b8f-f30c-4197-b41c-0e1fe5cc15fe","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"userId\": \"68e7e6256715ce7bac6e2b9f\",\n    \"engagementHistory\": [\n        {\n            \"courseId\": \"68e7db24c0b108767d1010f1\",\n            \"timeSpent\": 120,\n            \"lastViewed\": \"2025-10-09T10:00:00Z\"\n        },\n        {\n            \"courseId\": \"68e7db78c0b108767d1010f5\",\n            \"timeSpent\": 120,\n            \"lastViewed\": \"2025-10-09T10:00:00Z\"\n        }\n    ]\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:5001/api/user/engagement-history","description":"<h2 id=\"api-endpoint-create-user\">API Endpoint: Create User</h2>\n<p>This endpoint allows you to create a new user profile in the system. By sending a POST request to <code>/api/user</code>, you can provide user details such as name, email, career interests, tags, and engagement history.</p>\n<h3 id=\"request-format\">Request Format</h3>\n<p><strong>Method:</strong> POST<br /><strong>URL:</strong> <code>http://localhost:5000/api/user</code></p>\n<p><strong>Request Body:</strong><br />The request body should be in JSON format and include the following parameters:</p>\n<ul>\n<li><p><strong>name</strong> (string): The name of the user.</p>\n</li>\n<li><p><strong>email</strong> (string): The email address of the user.</p>\n</li>\n<li><p><strong>careerInterest</strong> (array of strings): An array representing the user's career interests.</p>\n</li>\n<li><p><strong>tags</strong> (array of strings): An array of tags associated with the user.</p>\n</li>\n<li><p><strong>engagementHistory</strong> (array of objects): An array containing the user's engagement history, where each object includes:</p>\n<ul>\n<li><p><strong>courseId</strong> (string): The identifier of the course.</p>\n</li>\n<li><p><strong>timeSpent</strong> (integer): The time spent on the course in minutes.</p>\n</li>\n<li><p><strong>lastViewed</strong> (string): The timestamp of when the course was last viewed in ISO 8601 format.</p>\n</li>\n</ul>\n</li>\n</ul>\n<p><strong>Example Request Body:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"name\": \"Web User A\",\n  \"email\": \"web.usera@example.com\",\n  \"careerInterest\": [\"React\"],\n  \"tags\": [\"web development\"],\n  \"engagementHistory\": [\n    {\n      \"courseId\": \"68c7ed1d590efdb6cf3163c2\",\n      \"timeSpent\": 120,\n      \"lastViewed\": \"2025-09-14T10:00:00Z\"\n    }\n  ]\n}\n\n</code></pre>\n<h3 id=\"response-format\">Response Format</h3>\n<p>Upon successful creation of the user, the API will respond with a status code of <code>201 Created</code> and a JSON object that includes the following fields:</p>\n<ul>\n<li><p><strong>name</strong> (string): The name of the user (may be empty if not provided).</p>\n</li>\n<li><p><strong>email</strong> (string): The email address of the user (may be empty if not provided).</p>\n</li>\n<li><p><strong>careerInterest</strong> (array of strings): An array reflecting the user's career interests (may contain empty strings).</p>\n</li>\n<li><p><strong>tags</strong> (array of strings): An array of tags associated with the user (may contain empty strings).</p>\n</li>\n<li><p><strong>engagementHistory</strong> (array of objects): An array of engagement history objects, which may include:</p>\n<ul>\n<li><p><strong>courseId</strong> (string): The identifier of the course (may be empty).</p>\n</li>\n<li><p><strong>timeSpent</strong> (integer): The time spent on the course (default is 0).</p>\n</li>\n<li><p><strong>lastViewed</strong> (string): The timestamp of when the course was last viewed (may be empty).</p>\n</li>\n<li><p><strong>_id</strong> (string): The unique identifier for the engagement history entry (may be empty).</p>\n</li>\n</ul>\n</li>\n<li><p><strong>_id</strong> (string): The unique identifier for the user created (may be empty).</p>\n</li>\n<li><p><strong>__v</strong> (integer): The version key for the user document (default is 0).</p>\n</li>\n</ul>\n<p><strong>Example Response Body:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"name\": \"\",\n  \"email\": \"\",\n  \"careerInterest\": [\"\"],\n  \"tags\": [\"\"],\n  \"engagementHistory\": [\n    {\n      \"courseId\": \"\",\n      \"timeSpent\": 0,\n      \"lastViewed\": \"\",\n      \"_id\": \"\"\n    }\n  ],\n  \"_id\": \"\",\n  \"__v\": 0\n}\n\n</code></pre>\n<p>This endpoint is essential for managing user profiles and tracking their engagement with various courses.</p>\n","urlObject":{"protocol":"http","port":"5001","path":["api","user","engagement-history"],"host":["localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"a1029b8f-f30c-4197-b41c-0e1fe5cc15fe"},{"name":"get user","id":"9392c831-1d28-49c6-b310-01e26c511012","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":"http://localhost:5001/api/user/:userId","description":"<h2 id=\"get-user-details\">Get User Details</h2>\n<p>This endpoint retrieves the details of a user based on the provided user ID.</p>\n<h3 id=\"request\">Request</h3>\n<ul>\n<li><p><strong>Method</strong>: GET</p>\n</li>\n<li><p><strong>URL</strong>: <code>http://localhost:5000/api/user/:userId</code></p>\n</li>\n<li><p><strong>Path Parameter</strong>:</p>\n<ul>\n<li><code>userId</code> (string): The unique identifier of the user whose details are being requested.</li>\n</ul>\n</li>\n</ul>\n<h3 id=\"response\">Response</h3>\n<ul>\n<li><p><strong>Status Code</strong>: 200 OK</p>\n</li>\n<li><p><strong>Content-Type</strong>: application/json</p>\n</li>\n<li><p>{ \"_id\": \"\", \"name\": \"\", \"email\": \"\", \"careerInterest\": [\"\"], \"tags\": [\"\"], \"engagementHistory\": [ { \"courseId\": \"\", \"timeSpent\": 0, \"lastViewed\": \"\", \"_id\": \"\" } ], \"__v\": 0}</p>\n</li>\n</ul>\n<h3 id=\"response-fields\">Response Fields</h3>\n<ul>\n<li><p><code>_id</code> (string): The unique identifier for the user.</p>\n</li>\n<li><p><code>name</code> (string): The name of the user.</p>\n</li>\n<li><p><code>email</code> (string): The email address of the user.</p>\n</li>\n<li><p><code>careerInterest</code> (array of strings): A list of the user's career interests.</p>\n</li>\n<li><p><code>tags</code> (array of strings): A list of tags associated with the user.</p>\n</li>\n<li><p><code>engagementHistory</code> (array of objects): A history of the user's engagement with courses, where each object contains:</p>\n<ul>\n<li><p><code>courseId</code> (string): The ID of the course.</p>\n</li>\n<li><p><code>timeSpent</code> (number): The amount of time spent on the course.</p>\n</li>\n<li><p><code>lastViewed</code> (string): The last viewed date of the course.</p>\n</li>\n<li><p><code>_id</code> (string): The unique identifier for the engagement record.</p>\n</li>\n</ul>\n</li>\n<li><p><code>__v</code> (number): The version key for the document.</p>\n</li>\n</ul>\n<h3 id=\"notes\">Notes</h3>\n<ul>\n<li><p>Ensure that the <code>userId</code> provided in the URL is valid and corresponds to an existing user in the database.</p>\n</li>\n<li><p>The response will contain user details in JSON format, which can be used for further processing or display in applications.</p>\n</li>\n</ul>\n","urlObject":{"protocol":"http","port":"5001","path":["api","user",":userId"],"host":["localhost"],"query":[],"variable":[{"type":"any","value":"68e7ee176c1ec15f5d51baa8","key":"userId"}]}},"response":[{"id":"ac005472-f5a9-4b2f-a362-c7e4025b6e77","name":"get user","originalRequest":{"method":"GET","header":[],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":{"raw":"http://localhost:5001/api/user/:userId","protocol":"http","host":["localhost"],"port":"5001","path":["api","user",":userId"],"variable":[{"key":"userId","value":"68e7e185404ac440a33f60e9"}]}},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"X-Powered-By","value":"Express"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"399"},{"key":"ETag","value":"W/\"18f-C5WrlpKyB0FBRyc7c6jgjbN/KL4\""},{"key":"Date","value":"Thu, 09 Oct 2025 16:23:48 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"{\n    \"_id\": \"68e7e185404ac440a33f60e9\",\n    \"name\": \"Tech User\",\n    \"email\": \"tech.user@example.com\",\n    \"careerInterest\": [\n        \"Technology\",\n        \"Health\"\n    ],\n    \"tags\": [\n        \"python\",\n        \"beginner\",\n        \"html\"\n    ],\n    \"engagementHistory\": [\n        {\n            \"courseId\": \"68e7db24c0b108767d1010f1\",\n            \"timeSpent\": 120,\n            \"lastViewed\": \"2025-10-09T10:00:00.000Z\",\n            \"_id\": \"68e7e185404ac440a33f60ea\"\n        }\n    ],\n    \"createdAt\": \"2025-10-09T16:23:33.972Z\",\n    \"updatedAt\": \"2025-10-09T16:23:33.972Z\",\n    \"__v\": 0\n}"}],"_postman_id":"9392c831-1d28-49c6-b310-01e26c511012"}],"id":"5e7d279e-ad9c-461b-baf8-7d910aea2999","description":"<p>Allows users to sign up and maintain their profile with career interests and engagement data</p>\n","_postman_id":"5e7d279e-ad9c-461b-baf8-7d910aea2999"},{"name":"Recommendation","item":[{"name":"get user recommendations","id":"28eb5871-c612-4cd7-a8cf-32fe922c33ea","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":"http://localhost:5001/api/recommendations/:userId","description":"<h3 id=\"api-endpoint-get-recommendations\">API Endpoint: Get Recommendations</h3>\n<p><strong>Method:</strong> GET<br /><strong>URL:</strong> <code>http://localhost:5001/api/recommendations/:userId</code></p>\n<h4 id=\"purpose\">Purpose</h4>\n<p>This endpoint retrieves a list of recommended courses for a specific user based on their user ID. The recommendations are tailored to the user's preferences and past interactions.</p>\n<h4 id=\"input-parameters\">Input Parameters</h4>\n<ul>\n<li><strong>userId</strong> (path parameter): The unique identifier for the user whose recommendations are being requested. This parameter is required and should be provided in the URL.</li>\n</ul>\n<h4 id=\"response-structure\">Response Structure</h4>\n<p>Upon a successful request, the API returns a JSON array containing recommended courses. Each course object includes the following fields:</p>\n<ul>\n<li><p><strong>course</strong>: An object representing the course details.</p>\n<ul>\n<li><p><strong>_id</strong>: The unique identifier for the course.</p>\n</li>\n<li><p><strong>title</strong>: The title of the course.</p>\n</li>\n<li><p><strong>description</strong>: A brief description of the course.</p>\n</li>\n<li><p><strong>popularity</strong>: A numerical value indicating the popularity of the course.</p>\n</li>\n<li><p><strong>category</strong>: The category under which the course falls.</p>\n</li>\n<li><p><strong>tags</strong>: An array of tags associated with the course.</p>\n</li>\n<li><p><strong>__v</strong>: A version key for the course document.</p>\n</li>\n</ul>\n</li>\n<li><p><strong>score</strong>: A numerical value representing the relevance score of the recommendation for the user.</p>\n</li>\n</ul>\n<h4 id=\"example-response\">Example Response</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">[\n  {\n    \"course\": {\n      \"_id\": \"\",\n      \"title\": \"\",\n      \"description\": \"\",\n      \"popularity\": 0,\n      \"category\": \"\",\n      \"tags\": [\"\"],\n      \"__v\": 0\n    },\n    \"score\": 0\n  }\n]\n\n</code></pre>\n<p>This response structure allows clients to easily understand the recommendations and their relevance to the user.</p>\n","urlObject":{"protocol":"http","port":"5001","path":["api","recommendations",":userId"],"host":["localhost"],"query":[],"variable":[{"description":{"content":"<p>68e7e185404ac440a33f60e9,68e7ee176c1ec15f5d51baa8</p>\n","type":"text/plain"},"type":"any","value":"68e8fa0b55f3c065ae8e090d","key":"userId"}]}},"response":[{"id":"293622ac-fbf3-4522-9b1f-c4ecbe053f66","name":"get user recommendations","originalRequest":{"method":"GET","header":[],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":{"raw":"http://localhost:5001/api/recommendations/:userId","protocol":"http","host":["localhost"],"port":"5001","path":["api","recommendations",":userId"],"variable":[{"key":"userId","value":"68e7e185404ac440a33f60e9","description":"68e7e185404ac440a33f60e9"}]}},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"X-Powered-By","value":"Express"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Content-Length","value":"1453"},{"key":"ETag","value":"W/\"5ad-sQVnSEka+4aSEugBqQ84yKc+mYo\""},{"key":"Date","value":"Thu, 09 Oct 2025 16:24:06 GMT"},{"key":"Connection","value":"keep-alive"},{"key":"Keep-Alive","value":"timeout=5"}],"cookie":[],"responseTime":null,"body":"[\n    {\n        \"course\": {\n            \"_id\": \"68e7daa7c0b108767d1010ef\",\n            \"title\": \"Introduction to Web Development\",\n            \"description\": \"Learn the fundamentals of web development including HTML, CSS, and JavaScript. Build your first responsive website.\",\n            \"link\": \"https://www.youtube.com/watch?v=HfTXHrWMGVY&list=PLZlA0Gpn_vH-cEDOofOujFIknfZZpIk3a\",\n            \"popularity\": 0,\n            \"category\": \"Technology\",\n            \"tags\": [\n                \"Web Development\",\n                \"beginner\",\n                \"HTML\",\n                \"CSS\",\n                \"JavaScript\"\n            ],\n            \"createdAt\": \"2025-10-09T15:54:15.538Z\",\n            \"updatedAt\": \"2025-10-09T15:54:15.538Z\",\n            \"__v\": 0\n        },\n        \"score\": 10\n    },\n    {\n        \"course\": {\n            \"_id\": \"68e7db5ac0b108767d1010f3\",\n            \"title\": \"Introduction to Mental Health\",\n            \"description\": \"Explore the importance of mental health, common mental illnesses, and strategies for improving mental well-being.\",\n            \"link\": \"https://www.youtube.com/watch?v=FxPXC8t-2ls\",\n            \"popularity\": 0,\n            \"category\": \"Health\",\n            \"tags\": [\n                \"Mental Health\",\n                \"beginner\",\n                \"well-being\",\n                \"self-care\"\n            ],\n            \"createdAt\": \"2025-10-09T15:57:14.783Z\",\n            \"updatedAt\": \"2025-10-09T15:57:14.783Z\",\n            \"__v\": 0\n        },\n        \"score\": 10\n    },\n    {\n        \"course\": {\n            \"_id\": \"68e7db24c0b108767d1010f1\",\n            \"title\": \"Mastering Python for Data Science\",\n            \"description\": \"Dive into Python programming and explore its use in data science, machine learning, and data visualization.\",\n            \"link\": \"https://www.youtube.com/watch?v=AeUnO1oNv08\",\n            \"popularity\": 0,\n            \"category\": \"Technology\",\n            \"tags\": [\n                \"Python\",\n                \"Data Science\",\n                \"machine learning\",\n                \"data visualization\"\n            ],\n            \"createdAt\": \"2025-10-09T15:56:20.327Z\",\n            \"updatedAt\": \"2025-10-09T15:56:20.327Z\",\n            \"__v\": 0\n        },\n        \"score\": 1.2\n    }\n]"}],"_postman_id":"28eb5871-c612-4cd7-a8cf-32fe922c33ea"}],"id":"33c8c87b-374f-4717-a77c-9838be1c0355","description":"<p>Recommends top courses to a user based on their engagement history, career interests, and course popularity</p>\n","_postman_id":"33c8c87b-374f-4717-a77c-9838be1c0355"}]}