{"info":{"_postman_id":"e5261a0b-0585-431c-8cd0-4731e8c9d8e9","name":"Home truth ai","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"description":"<html><head></head><body></body></html>","owner":"50839341","collectionId":"e5261a0b-0585-431c-8cd0-4731e8c9d8e9","publishedId":"2sBXqJLLzS","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"publishDate":"2026-04-29T12:53:43.000Z"},"item":[{"name":"Test Auth API","id":"db7d7ac6-3252-420f-8197-4b33f4013e96","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://hometruth-ai.onrender.com/api/auth/test","description":"<p>StartFragment</p>\n<p>📦 <strong>API Endpoint: Test Auth Service</strong></p>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>🔹 <strong>Method:</strong> <code>GET</code><br />🔹 <strong>URL:</strong> <code>/api/auth/test</code></p>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>📌 <strong>Description:</strong><br />This endpoint is used to verify that the authentication service is up and running. It acts as a health-check for the Auth module.</p>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>📥 <strong>Request Details</strong></p>\n<p><strong>Headers:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>Content-Type: application/json\n\n</code></pre><p><strong>Body:</strong><br />None</p>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>📤 <strong>Success Response (200 OK):</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"message\": \"Auth API is working\"\n}\n\n</code></pre>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>❌ <strong>Error Response:</strong><br />No error response is expected from this endpoint under normal conditions.</p>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>💡 <strong>Usage Tip:</strong><br />Useful for testing server status or verifying deployment before calling other authentication APIs.</p>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>EndFragment</p>\n","urlObject":{"protocol":"https","path":["api","auth","test"],"host":["hometruth-ai","onrender","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"db7d7ac6-3252-420f-8197-4b33f4013e96"},{"name":"Register User","id":"b7bf4c64-dfc9-4624-af02-0934186f308d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n  \"fullName\": \"John Doe\",\r\n  \"email\": \"john@example.com\",\r\n  \"phone\": \"9876543210\",\r\n  \"location\": \"Mumbai\",\r\n  \"intent\": \"Buy\",\r\n  \"password\": \"password123\",\r\n  \"role\": \"user\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://hometruth-ai.onrender.com/api/auth/register","description":"<p>StartFragment</p>\n<p>📦 <strong>API Endpoint: Register User</strong></p>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>🔹 <strong>Method:</strong> <code>POST</code><br />🔹 <strong>URL:</strong> <code>/api/auth/register</code></p>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>📌 <strong>Description:</strong><br />This endpoint is used to register a new user in the system. It supports both regular users (buyers, renters, investors) and service providers.</p>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>📥 <strong>Request Details</strong></p>\n<p><strong>Headers:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-id=&quot;h1x9ab&quot;\">Content-Type: application/json\n\n</code></pre>\n<hr />\n<p>🧾 <strong>Request Body (Regular User):</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"fullName\": \"John Doe\",\n  \"email\": \"john@example.com\",\n  \"phone\": \"9876543210\",\n  \"location\": \"Mumbai\",\n  \"intent\": \"Buy\",\n  \"password\": \"password123\",\n  \"role\": \"user\"\n}\n\n</code></pre>\n<hr />\n<p>🧾 <strong>Request Body (Service Provider):</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"fullName\": \"Jane Smith\",\n  \"email\": \"jane@example.com\",\n  \"phone\": \"9876543211\",\n  \"location\": \"Delhi\",\n  \"password\": \"password123\",\n  \"role\": \"provider\",\n  \"serviceCategory\": \"plumber\",\n  \"experience\": 5,\n  \"jobsCompleted\": 50,\n  \"baseFee\": 500\n}\n\n</code></pre>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>📊 <strong>Request Body Fields</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>fullName</code></td>\n<td>String</td>\n<td>Yes</td>\n<td>User's full name</td>\n</tr>\n<tr>\n<td><code>email</code></td>\n<td>String</td>\n<td>Yes</td>\n<td>Unique email address</td>\n</tr>\n<tr>\n<td><code>phone</code></td>\n<td>String</td>\n<td>No</td>\n<td>Phone number</td>\n</tr>\n<tr>\n<td><code>location</code></td>\n<td>String</td>\n<td>No</td>\n<td>User's city/location</td>\n</tr>\n<tr>\n<td><code>intent</code></td>\n<td>String</td>\n<td>No</td>\n<td>Buy / Rent / Invest / none</td>\n</tr>\n<tr>\n<td><code>password</code></td>\n<td>String</td>\n<td>Yes</td>\n<td>Minimum 6 characters recommended</td>\n</tr>\n<tr>\n<td><code>role</code></td>\n<td>String</td>\n<td>No</td>\n<td>user / admin / provider (default: user)</td>\n</tr>\n<tr>\n<td><code>avatar</code></td>\n<td>String</td>\n<td>No</td>\n<td>Cloudinary image URL</td>\n</tr>\n<tr>\n<td><code>serviceCategory</code></td>\n<td>String</td>\n<td>Conditional</td>\n<td>Required if role = provider</td>\n</tr>\n<tr>\n<td><code>experience</code></td>\n<td>Number</td>\n<td>Conditional</td>\n<td>Required if role = provider</td>\n</tr>\n<tr>\n<td><code>jobsCompleted</code></td>\n<td>Number</td>\n<td>Conditional</td>\n<td>Required if role = provider</td>\n</tr>\n<tr>\n<td><code>baseFee</code></td>\n<td>Number</td>\n<td>Conditional</td>\n<td>Required if role = provider</td>\n</tr>\n</tbody>\n</table>\n</div><p>📝 <em>Fields marked \"Conditional\" are mandatory only when role is</em> <code>_provider_</code><em>.</em></p>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>📤 <strong>Success Response (201 Created):</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"status\": \"success\",\n  \"token\": \"JWT_TOKEN\",\n  \"data\": {\n    \"user\": {\n      \"_id\": \"67b0fcd95d3f...\",\n      \"fullName\": \"John Doe\",\n      \"email\": \"john@example.com\",\n      \"phone\": \"9876543210\",\n      \"location\": \"Mumbai\",\n      \"intent\": \"Buy\",\n      \"role\": \"user\",\n      \"avatar\": \"\",\n      \"isActive\": true,\n      \"createdAt\": \"2026-04-29T10:00:00.000Z\",\n      \"updatedAt\": \"2026-04-29T10:00:00.000Z\",\n      \"preferences\": {\n        \"notificationsEnabled\": true\n      },\n      \"savedHomes\": [],\n      \"viewedHomes\": [],\n      \"experience\": 0,\n      \"jobsCompleted\": 0,\n      \"baseFee\": 0\n    }\n  }\n}\n\n</code></pre>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>❌ <strong>Error Responses</strong></p>\n<p>🔸 <strong>400 Bad Request (User Already Exists):</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"message\": \"User already exists\"\n}\n\n</code></pre>\n<p>🔸 <strong>500 Internal Server Error:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"error\": \"Error message here\"\n}\n\n</code></pre>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>💡 <strong>Usage Tips:</strong></p>\n<ul>\n<li><p>Ensure email is unique before sending request</p>\n</li>\n<li><p>Always validate required fields on frontend</p>\n</li>\n<li><p>For providers, include all service-related fields</p>\n</li>\n<li><p>Store JWT token securely after successful registration</p>\n</li>\n</ul>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>EndFragment</p>\n","urlObject":{"protocol":"https","path":["api","auth","register"],"host":["hometruth-ai","onrender","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"b7bf4c64-dfc9-4624-af02-0934186f308d"},{"name":"Login User","id":"7c0428dd-8fdb-4caa-b1c2-e69777d382d5","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n  \"status\": \"success\",\r\n  \"token\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...\",\r\n  \"data\": {\r\n    \"user\": {\r\n      \"_id\": \"67b0fcd95d3f...\",\r\n      \"fullName\": \"John Doe\",\r\n      \"email\": \"john@example.com\",\r\n      \"phone\": \"9876543210\",\r\n      \"location\": \"Mumbai\",\r\n      \"intent\": \"Buy\",\r\n      \"role\": \"user\",\r\n      \"avatar\": \"\",\r\n      \"isActive\": true\r\n    }\r\n  }\r\n}","options":{"raw":{"language":"json"}}},"url":"https://hometruth-ai.onrender.com/api/auth/login","description":"<p>StartFragment</p>\n<p>📦 <strong>API Endpoint: Login User</strong></p>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>🔹 <strong>Method:</strong> <code>POST</code><br />🔹 <strong>URL:</strong> <code>/api/auth/login</code></p>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>📌 <strong>Description:</strong><br />This endpoint authenticates a registered user and returns a JWT token upon successful login. The token can be used for authorized requests.</p>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>📥 <strong>Request Details</strong></p>\n<p><strong>Headers:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-id=&quot;k9d2la&quot;\">Content-Type: application/json\n\n</code></pre>\n<hr />\n<p>🧾 <strong>Request Body:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"email\": \"john@example.com\",\n  \"password\": \"password123\"\n}\n\n</code></pre>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>📊 <strong>Request Body Fields</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>email</code></td>\n<td>String</td>\n<td>Yes</td>\n<td>Registered email address</td>\n</tr>\n<tr>\n<td><code>password</code></td>\n<td>String</td>\n<td>Yes</td>\n<td>User password</td>\n</tr>\n</tbody>\n</table>\n</div><p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>📤 <strong>Success Response (200 OK):</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"status\": \"success\",\n  \"token\": \"JWT_TOKEN\",\n  \"data\": {\n    \"user\": {\n      \"_id\": \"67b0fcd95d3f...\",\n      \"fullName\": \"John Doe\",\n      \"email\": \"john@example.com\",\n      \"phone\": \"9876543210\",\n      \"location\": \"Mumbai\",\n      \"intent\": \"Buy\",\n      \"role\": \"user\",\n      \"avatar\": \"\",\n      \"isActive\": true\n    }\n  }\n}\n\n</code></pre>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>❌ <strong>Error Responses</strong></p>\n<p>🔸 <strong>400 Bad Request (Missing Credentials):</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"message\": \"Please provide email and password\"\n}\n\n</code></pre>\n<p>🔸 <strong>401 Unauthorized (Invalid Credentials):</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"message\": \"Incorrect email or password\"\n}\n\n</code></pre>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>💡 <strong>Usage Tips:</strong></p>\n<ul>\n<li><p>Ensure correct email and password before sending request</p>\n</li>\n<li><p>Store the returned JWT token securely (e.g., localStorage or cookies)</p>\n</li>\n<li><p>Use the token in Authorization header for protected routes</p>\n</li>\n<li><p>Avoid exposing token in frontend logs or URLs</p>\n</li>\n</ul>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>EndFragment</p>\n","urlObject":{"protocol":"https","path":["api","auth","login"],"host":["hometruth-ai","onrender","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"7c0428dd-8fdb-4caa-b1c2-e69777d382d5"},{"name":"Forgot Password","id":"82517d81-f117-4cbc-a00e-4b20f2830cb1","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n  \"email\": \"john@example.com\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://hometruth-ai.onrender.com/api/auth/forgot-password","description":"<p>StartFragment</p>\n<p>📦 <strong>API Endpoint: Forgot Password</strong></p>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>🔹 <strong>Method:</strong> <code>POST</code><br />🔹 <strong>URL:</strong> <code>/api/auth/forgot-password</code></p>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>📌 <strong>Description:</strong><br />This endpoint initiates the password reset process by sending a One-Time Password (OTP) to the user's registered email address. The OTP is valid for <strong>10 minutes</strong>.</p>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>📥 <strong>Request Details</strong></p>\n<p><strong>Headers:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-id=&quot;f1k9as&quot;\">Content-Type: application/json\n\n</code></pre>\n<hr />\n<p>🧾 <strong>Request Body:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"email\": \"john@example.com\"\n}\n\n</code></pre>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>📊 <strong>Request Body Fields</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>email</code></td>\n<td>String</td>\n<td>Yes</td>\n<td>Registered email address</td>\n</tr>\n</tbody>\n</table>\n</div><p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>📤 <strong>Success Response (200 OK):</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"status\": \"success\",\n  \"message\": \"OTP sent to email\"\n}\n\n</code></pre>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>❌ <strong>Error Responses</strong></p>\n<p>🔸 <strong>404 Not Found (User Not Found):</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"message\": \"No user found with that email\"\n}\n\n</code></pre>\n<p>🔸 <strong>500 Internal Server Error (Email Sending Failed):</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"message\": \"Error sending email. Try again later.\"\n}\n\n</code></pre>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>💡 <strong>Usage Tips:</strong></p>\n<ul>\n<li><p>Ensure the email is registered before calling this endpoint</p>\n</li>\n<li><p>OTP expires in 10 minutes — prompt user to act quickly</p>\n</li>\n<li><p>Avoid exposing OTP in frontend logs</p>\n</li>\n<li><p>Use this endpoint as the first step in password recovery flow</p>\n</li>\n</ul>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>EndFragment</p>\n","urlObject":{"protocol":"https","path":["api","auth","forgot-password"],"host":["hometruth-ai","onrender","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"82517d81-f117-4cbc-a00e-4b20f2830cb1"},{"name":"Verify OTP","id":"9d12e8b7-1317-484b-bd8a-ad0d4a069231","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n  \"email\": \"john@example.com\",\r\n  \"otp\": \"123456\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://hometruth-ai.onrender.com/api/auth/verify-otp","description":"<p>StartFragment</p>\n<p>📦 <strong>API Endpoint: Verify OTP</strong></p>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>🔹 <strong>Method:</strong> <code>POST</code><br />🔹 <strong>URL:</strong> <code>/api/auth/verify-otp</code></p>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>📌 <strong>Description:</strong><br />This endpoint verifies the One-Time Password (OTP) sent to the user’s registered email. It is a required step before allowing password reset.</p>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>📥 <strong>Request Details</strong></p>\n<p><strong>Headers:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-id=&quot;z4k2la&quot;\">Content-Type: application/json\n\n</code></pre>\n<hr />\n<p>🧾 <strong>Request Body:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"email\": \"john@example.com\",\n  \"otp\": \"123456\"\n}\n\n</code></pre>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>📊 <strong>Request Body Fields</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>email</code></td>\n<td>String</td>\n<td>Yes</td>\n<td>Registered email address</td>\n</tr>\n<tr>\n<td><code>otp</code></td>\n<td>String</td>\n<td>Yes</td>\n<td>6-digit OTP received via email</td>\n</tr>\n</tbody>\n</table>\n</div><p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>📤 <strong>Success Response (200 OK):</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"status\": \"success\",\n  \"message\": \"OTP verified\"\n}\n\n</code></pre>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>❌ <strong>Error Response</strong></p>\n<p>🔸 <strong>400 Bad Request (Invalid or Expired OTP):</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"message\": \"Invalid or expired OTP\"\n}\n\n</code></pre>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>💡 <strong>Usage Tips:</strong></p>\n<ul>\n<li><p>Ensure OTP is entered correctly and within validity period (10 minutes)</p>\n</li>\n<li><p>This step must be completed before calling reset password API</p>\n</li>\n<li><p>Avoid multiple failed attempts to prevent security issues</p>\n</li>\n</ul>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>EndFragment</p>\n","urlObject":{"protocol":"https","path":["api","auth","verify-otp"],"host":["hometruth-ai","onrender","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"9d12e8b7-1317-484b-bd8a-ad0d4a069231"},{"name":"Reset Password","id":"9f10c0e4-adf0-476c-a825-e2525d94f2cf","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n  \"email\": \"john@example.com\",\r\n  \"otp\": \"123456\",\r\n  \"password\": \"newpassword123\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://hometruth-ai.onrender.com/api/auth/reset-password","description":"<p>StartFragment</p>\n<p>📦 <strong>API Endpoint: Reset Password</strong></p>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>🔹 <strong>Method:</strong> <code>POST</code><br />🔹 <strong>URL:</strong> <code>/api/auth/reset-password</code></p>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>📌 <strong>Description:</strong><br />This endpoint allows users to reset their password using a verified OTP. Upon successful reset, a new JWT token is issued for authentication.</p>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>📥 <strong>Request Details</strong></p>\n<p><strong>Headers:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-id=&quot;r8k2la&quot;\">Content-Type: application/json\n\n</code></pre>\n<hr />\n<p>🧾 <strong>Request Body:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"email\": \"john@example.com\",\n  \"otp\": \"123456\",\n  \"password\": \"newpassword123\"\n}\n\n</code></pre>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>📊 <strong>Request Body Fields</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>email</code></td>\n<td>String</td>\n<td>Yes</td>\n<td>Registered email address</td>\n</tr>\n<tr>\n<td><code>otp</code></td>\n<td>String</td>\n<td>Yes</td>\n<td>Verified 6-digit OTP</td>\n</tr>\n<tr>\n<td><code>password</code></td>\n<td>String</td>\n<td>Yes</td>\n<td>New password</td>\n</tr>\n</tbody>\n</table>\n</div><p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>📤 <strong>Success Response (200 OK):</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"status\": \"success\",\n  \"token\": \"JWT_TOKEN\",\n  \"data\": {\n    \"user\": {\n      \"_id\": \"67b0fcd95d3f...\",\n      \"fullName\": \"John Doe\",\n      \"email\": \"john@example.com\",\n      \"role\": \"user\"\n    }\n  }\n}\n\n</code></pre>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>❌ <strong>Error Response</strong></p>\n<p>🔸 <strong>400 Bad Request (Invalid or Expired OTP):</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"message\": \"Invalid or expired OTP\"\n}\n\n</code></pre>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>💡 <strong>Usage Tips:</strong></p>\n<ul>\n<li><p>Ensure OTP is verified before calling this endpoint</p>\n</li>\n<li><p>Use a strong password (recommended: min 6–8 characters with mix of letters &amp; numbers)</p>\n</li>\n<li><p>Replace old token with the new JWT token after reset</p>\n</li>\n<li><p>Invalidate previous sessions on frontend after password change</p>\n</li>\n</ul>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>EndFragment</p>\n","urlObject":{"protocol":"https","path":["api","auth","reset-password"],"host":["hometruth-ai","onrender","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"9f10c0e4-adf0-476c-a825-e2525d94f2cf"},{"name":"Recover Password (Temporary Password)","id":"114cc58d-0cff-4e41-b4e4-9aa110af3cc2","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n  \"email\": \"john@example.com\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://hometruth-ai.onrender.com/api/auth/recover-password","description":"<p>StartFragment</p>\n<p>📦 <strong>API Endpoint: Recover Password (Temporary Password)</strong></p>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>🔹 <strong>Method:</strong> <code>POST</code><br />🔹 <strong>URL:</strong> <code>/api/auth/recover-password</code></p>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>📌 <strong>Description:</strong><br />This endpoint generates a temporary password for the user and is primarily designed for frontend integration (e.g., EmailJS). The temporary password can be shared with the user for quick account recovery.</p>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>📥 <strong>Request Details</strong></p>\n<p><strong>Headers:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-id=&quot;k3d9la&quot;\">Content-Type: application/json\n\n</code></pre>\n<hr />\n<p>🧾 <strong>Request Body:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"email\": \"john@example.com\"\n}\n\n</code></pre>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>📊 <strong>Request Body Fields</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>email</code></td>\n<td>String</td>\n<td>Yes</td>\n<td>Registered email address</td>\n</tr>\n</tbody>\n</table>\n</div><p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>📤 <strong>Success Response (200 OK):</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"status\": \"success\",\n  \"message\": \"New password generated\",\n  \"data\": {\n    \"tempPassword\": \"abc123xy\",\n    \"fullName\": \"John Doe\",\n    \"email\": \"john@example.com\",\n    \"phone\": \"9876543210\"\n  }\n}\n\n</code></pre>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>❌ <strong>Error Response</strong></p>\n<p>🔸 <strong>404 Not Found (User Not Found):</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"message\": \"No user found with that email\"\n}\n\n</code></pre>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>💡 <strong>Usage Tips:</strong></p>\n<ul>\n<li><p>Use this endpoint when OTP-based reset is not preferred</p>\n</li>\n<li><p>Send the temporary password securely to the user (email/SMS)</p>\n</li>\n<li><p>Prompt the user to change password immediately after login</p>\n</li>\n<li><p>Avoid exposing the temporary password in frontend logs</p>\n</li>\n</ul>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>EndFragment</p>\n","urlObject":{"protocol":"https","path":["api","auth","recover-password"],"host":["hometruth-ai","onrender","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"114cc58d-0cff-4e41-b4e4-9aa110af3cc2"},{"name":"Get All Service Providers","id":"9f2f00fa-a018-4e53-8fbc-39eef5cfdfef","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://hometruth-ai.onrender.com/api/auth/providers","description":"<p>StartFragment</p>\n<p>📦 <strong>API Endpoint: Get All Service Providers</strong></p>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>🔹 <strong>Method:</strong> <code>GET</code><br />🔹 <strong>URL:</strong> <code>/api/auth/providers</code></p>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>📌 <strong>Description:</strong><br />This endpoint retrieves a list of all users registered as service providers. It is useful for displaying available professionals (e.g., plumbers, electricians, etc.) in the system.</p>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>📥 <strong>Request Details</strong></p>\n<p><strong>Headers:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-id=&quot;u2k9la&quot;\">Content-Type: application/json\n\n</code></pre>\n<p><strong>Body:</strong><br />None</p>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>📤 <strong>Success Response (200 OK):</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"status\": \"success\",\n  \"results\": 2,\n  \"data\": {\n    \"providers\": [\n      {\n        \"_id\": \"67b0fcd95d3f...\",\n        \"fullName\": \"Jane Smith\",\n        \"email\": \"jane@example.com\",\n        \"phone\": \"9876543211\",\n        \"location\": \"Delhi\",\n        \"role\": \"provider\",\n        \"serviceCategory\": \"plumber\",\n        \"experience\": 5,\n        \"jobsCompleted\": 50,\n        \"baseFee\": 500,\n        \"rating\": 0,\n        \"isActive\": true\n      }\n    ]\n  }\n}\n\n</code></pre>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>❌ <strong>Error Response</strong></p>\n<p>🔸 <strong>500 Internal Server Error:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"error\": \"Error message here\"\n}\n\n</code></pre>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>💡 <strong>Usage Tips:</strong></p>\n<ul>\n<li><p>Use this endpoint to build service provider listing pages</p>\n</li>\n<li><p>Can be extended with filters (e.g., category, location, rating)</p>\n</li>\n<li><p>Cache results on frontend if data doesn’t change frequently</p>\n</li>\n<li><p>Useful for marketplace or service-booking features</p>\n</li>\n</ul>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>EndFragment</p>\n","urlObject":{"protocol":"https","path":["api","auth","providers"],"host":["hometruth-ai","onrender","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"9f2f00fa-a018-4e53-8fbc-39eef5cfdfef"},{"name":"Get All Properties","id":"adbbb199-5a8d-4245-b3fa-55ceaa83afa2","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://hometruth-ai.onrender.com/api/properties","description":"<p>StartFragment</p>\n<p>📦 <strong>API Endpoint: Get All Properties</strong></p>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>🔹 <strong>Method:</strong> <code>GET</code><br />🔹 <strong>URL:</strong> <code>/api/properties</code></p>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>📌 <strong>Description:</strong><br />This endpoint retrieves a list of all property listings available in the system. Results are returned in descending order based on creation date (newest first).</p>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>📥 <strong>Request Details</strong></p>\n<p><strong>Headers:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-id=&quot;k8d3la&quot;\">Content-Type: application/json\n\n</code></pre>\n<hr />\n<p>🔍 <strong>Query Parameters:</strong><br />None (Can be extended in future for filters like city, price, type, etc.)</p>\n<hr />\n<p><strong>Body:</strong><br />None</p>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>📤 <strong>Success Response (200 OK):</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"status\": \"success\",\n  \"results\": 2,\n  \"data\": {\n    \"properties\": [\n      {\n        \"_id\": \"67b0fcd95d3f...\",\n        \"title\": \"3BHK Apartment in Andheri\",\n        \"propertyType\": \"Apartment\",\n        \"listingType\": \"buy\",\n        \"address\": \"123, Sunshine Heights, Andheri West\",\n        \"city\": \"Mumbai\",\n        \"state\": \"Maharashtra\",\n        \"price\": 15000000,\n        \"bedrooms\": 3,\n        \"bathrooms\": 2,\n        \"area\": 1450,\n        \"furnishing\": \"Semi\",\n        \"ownerName\": \"Rahul Sharma\",\n        \"phone\": \"9876543210\",\n        \"whatsapp\": \"9876543210\",\n        \"email\": \"rahul@example.com\",\n        \"images\": [\n          \"https://res.cloudinary.com/.../image1.jpg\",\n          \"https://res.cloudinary.com/.../image2.jpg\",\n          \"https://res.cloudinary.com/.../image3.jpg\"\n        ],\n        \"healthScore\": 85,\n        \"riskLevel\": \"low\",\n        \"status\": \"pending\",\n        \"lat\": 19.1234,\n        \"lng\": 72.8456,\n        \"nearbyPlaces\": {\n          \"hospitals\": [\n            {\n              \"name\": \"City Hospital\",\n              \"distance\": \"2.5 km\",\n              \"lat\": 19.1300,\n              \"lng\": 72.8500\n            }\n          ],\n          \"gardens\": [],\n          \"temples\": []\n        },\n        \"createdAt\": \"2026-04-29T10:00:00.000Z\",\n        \"updatedAt\": \"2026-04-29T10:00:00.000Z\"\n      }\n    ]\n  }\n}\n\n</code></pre>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>❌ <strong>Error Response</strong></p>\n<p>🔸 <strong>500 Internal Server Error:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"status\": \"error\",\n  \"message\": \"Error message here\"\n}\n\n</code></pre>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>💡 <strong>Usage Tips:</strong></p>\n<ul>\n<li><p>Ideal for property listing pages (home, explore, search)</p>\n</li>\n<li><p>Implement pagination on frontend if dataset grows large</p>\n</li>\n<li><p>Future enhancements may include filtering, sorting, and search</p>\n</li>\n<li><p>Cache results if frequent calls are expected</p>\n</li>\n</ul>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>EndFragment</p>\n","urlObject":{"protocol":"https","path":["api","properties"],"host":["hometruth-ai","onrender","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"adbbb199-5a8d-4245-b3fa-55ceaa83afa2"},{"name":"Create Property","id":"51c287ff-af45-44b6-a80c-142909dcae68","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n  \"title\": \"3BHK Apartment in Andheri\",\r\n  \"propertyType\": \"Apartment\",\r\n  \"listingType\": \"buy\",\r\n  \"address\": \"123, Sunshine Heights, Andheri West\",\r\n  \"city\": \"Mumbai\",\r\n  \"state\": \"Maharashtra\",\r\n  \"price\": 15000000,\r\n  \"bedrooms\": 3,\r\n  \"bathrooms\": 2,\r\n  \"area\": 1450,\r\n  \"furnishing\": \"Semi\",\r\n  \"ownerName\": \"Rahul Sharma\",\r\n  \"phone\": \"9876543210\",\r\n  \"whatsapp\": \"9876543210\",\r\n  \"email\": \"rahul@example.com\",\r\n  \"images\": [\r\n    \"https://example.com/image1.jpg\",\r\n    \"https://example.com/image2.jpg\",\r\n    \"https://example.com/image3.jpg\"\r\n  ],\r\n  \"healthScore\": 85,\r\n  \"riskLevel\": \"low\",\r\n  \"lat\": 19.1234,\r\n  \"lng\": 72.8456,\r\n  \"nearbyPlaces\": {\r\n    \"hospitals\": [\r\n      {\r\n        \"name\": \"City Hospital\",\r\n        \"distance\": \"2.5 km\",\r\n        \"lat\": 19.1300,\r\n        \"lng\": 72.8500\r\n      }\r\n    ],\r\n    \"gardens\": [\r\n      {\r\n        \"name\": \"Central Park\",\r\n        \"distance\": \"1.2 km\",\r\n        \"lat\": 19.1250,\r\n        \"lng\": 72.8470\r\n      }\r\n    ],\r\n    \"temples\": []\r\n  }\r\n}","options":{"raw":{"language":"json"}}},"url":"https://hometruth-ai.onrender.com/api/properties","description":"<p>StartFragment</p>\n<p>📦 <strong>API Endpoint: Create Property</strong></p>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>🔹 <strong>Method:</strong> <code>POST</code><br />🔹 <strong>URL:</strong> <code>/api/properties</code></p>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>📌 <strong>Description:</strong><br />This endpoint allows users to create a new property listing in the system. It supports detailed property information including location, pricing, images, and nearby places.</p>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>📥 <strong>Request Details</strong></p>\n<p><strong>Headers:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-id=&quot;k2d8la&quot;\">Content-Type: application/json\n\n</code></pre>\n<hr />\n<p>🧾 <strong>Request Body:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"title\": \"3BHK Apartment in Andheri\",\n  \"propertyType\": \"Apartment\",\n  \"listingType\": \"buy\",\n  \"address\": \"123, Sunshine Heights, Andheri West\",\n  \"city\": \"Mumbai\",\n  \"state\": \"Maharashtra\",\n  \"price\": 15000000,\n  \"bedrooms\": 3,\n  \"bathrooms\": 2,\n  \"area\": 1450,\n  \"furnishing\": \"Semi\",\n  \"ownerName\": \"Rahul Sharma\",\n  \"phone\": \"9876543210\",\n  \"whatsapp\": \"9876543210\",\n  \"email\": \"rahul@example.com\",\n  \"images\": [\n    \"https://example.com/image1.jpg\",\n    \"https://example.com/image2.jpg\",\n    \"https://example.com/image3.jpg\"\n  ],\n  \"healthScore\": 85,\n  \"riskLevel\": \"low\",\n  \"lat\": 19.1234,\n  \"lng\": 72.8456,\n  \"nearbyPlaces\": {\n    \"hospitals\": [\n      {\n        \"name\": \"City Hospital\",\n        \"distance\": \"2.5 km\",\n        \"lat\": 19.1300,\n        \"lng\": 72.8500\n      }\n    ],\n    \"gardens\": [\n      {\n        \"name\": \"Central Park\",\n        \"distance\": \"1.2 km\",\n        \"lat\": 19.1250,\n        \"lng\": 72.8470\n      }\n    ],\n    \"temples\": []\n  }\n}\n\n</code></pre>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>📊 <strong>Request Body Fields</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>title</code></td>\n<td>String</td>\n<td>Yes</td>\n<td>Property title</td>\n</tr>\n<tr>\n<td><code>propertyType</code></td>\n<td>String</td>\n<td>Yes</td>\n<td>Apartment / House / Villa / PG / Commercial</td>\n</tr>\n<tr>\n<td><code>listingType</code></td>\n<td>String</td>\n<td>Yes</td>\n<td>buy / rent</td>\n</tr>\n<tr>\n<td><code>address</code></td>\n<td>String</td>\n<td>Yes</td>\n<td>Full property address</td>\n</tr>\n<tr>\n<td><code>city</code></td>\n<td>String</td>\n<td>Yes</td>\n<td>City name</td>\n</tr>\n<tr>\n<td><code>state</code></td>\n<td>String</td>\n<td>Yes</td>\n<td>State name</td>\n</tr>\n<tr>\n<td><code>price</code></td>\n<td>Number</td>\n<td>Yes</td>\n<td>Property price (INR)</td>\n</tr>\n<tr>\n<td><code>bedrooms</code></td>\n<td>Number</td>\n<td>No</td>\n<td>Default: 0</td>\n</tr>\n<tr>\n<td><code>bathrooms</code></td>\n<td>Number</td>\n<td>No</td>\n<td>Default: 0</td>\n</tr>\n<tr>\n<td><code>area</code></td>\n<td>Number</td>\n<td>Yes</td>\n<td>Area in sq. ft</td>\n</tr>\n<tr>\n<td><code>furnishing</code></td>\n<td>String</td>\n<td>No</td>\n<td>Unfurnished / Semi / Fully</td>\n</tr>\n<tr>\n<td><code>ownerName</code></td>\n<td>String</td>\n<td>Yes</td>\n<td>Owner's name</td>\n</tr>\n<tr>\n<td><code>phone</code></td>\n<td>String</td>\n<td>Yes</td>\n<td>Owner's contact number</td>\n</tr>\n<tr>\n<td><code>whatsapp</code></td>\n<td>String</td>\n<td>Yes</td>\n<td>WhatsApp number</td>\n</tr>\n<tr>\n<td><code>email</code></td>\n<td>String</td>\n<td>No</td>\n<td>Owner's email</td>\n</tr>\n<tr>\n<td><code>images</code></td>\n<td>Array[String]</td>\n<td>Conditional</td>\n<td>3–10 image URLs</td>\n</tr>\n<tr>\n<td><code>healthScore</code></td>\n<td>Number</td>\n<td>No</td>\n<td>Range: 0–100</td>\n</tr>\n<tr>\n<td><code>riskLevel</code></td>\n<td>String</td>\n<td>No</td>\n<td>low / medium / high</td>\n</tr>\n<tr>\n<td><code>status</code></td>\n<td>String</td>\n<td>No</td>\n<td>pending / approved / sold / rented</td>\n</tr>\n<tr>\n<td><code>lat</code></td>\n<td>Number</td>\n<td>No</td>\n<td>Latitude</td>\n</tr>\n<tr>\n<td><code>lng</code></td>\n<td>Number</td>\n<td>No</td>\n<td>Longitude</td>\n</tr>\n<tr>\n<td><code>nearbyPlaces</code></td>\n<td>Object</td>\n<td>No</td>\n<td>Nearby hospitals, gardens, temples</td>\n</tr>\n</tbody>\n</table>\n</div><p>📝 <em>Images must contain between 3 to 10 URLs if provided.</em></p>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>📤 <strong>Success Response (201 Created):</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"status\": \"success\",\n  \"data\": {\n    \"property\": {\n      \"_id\": \"67b0fcd95d3f...\",\n      \"title\": \"3BHK Apartment in Andheri\",\n      \"propertyType\": \"Apartment\",\n      \"listingType\": \"buy\",\n      \"address\": \"123, Sunshine Heights, Andheri West\",\n      \"city\": \"Mumbai\",\n      \"state\": \"Maharashtra\",\n      \"price\": 15000000,\n      \"bedrooms\": 3,\n      \"bathrooms\": 2,\n      \"area\": 1450,\n      \"furnishing\": \"Semi\",\n      \"ownerName\": \"Rahul Sharma\",\n      \"phone\": \"9876543210\",\n      \"whatsapp\": \"9876543210\",\n      \"email\": \"rahul@example.com\",\n      \"images\": [...],\n      \"healthScore\": 85,\n      \"riskLevel\": \"low\",\n      \"status\": \"pending\",\n      \"createdAt\": \"2026-04-29T10:00:00.000Z\",\n      \"updatedAt\": \"2026-04-29T10:00:00.000Z\"\n    }\n  }\n}\n\n</code></pre>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>❌ <strong>Error Response</strong></p>\n<p>🔸 <strong>400 Bad Request (Validation Error):</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"status\": \"fail\",\n  \"message\": \"Property title is required\"\n}\n\n</code></pre>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>💡 <strong>Usage Tips:</strong></p>\n<ul>\n<li><p>Always validate required fields before sending request</p>\n</li>\n<li><p>Ensure image URLs are valid and accessible</p>\n</li>\n<li><p>Use consistent formats for location (lat/lng)</p>\n</li>\n<li><p>Keep healthScore &amp; riskLevel aligned for better UX</p>\n</li>\n<li><p>Ideal for admin panels or property listing dashboards</p>\n</li>\n</ul>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>EndFragment</p>\n","urlObject":{"protocol":"https","path":["api","properties"],"host":["hometruth-ai","onrender","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"51c287ff-af45-44b6-a80c-142909dcae68"},{"name":"Get Single Property","id":"8bb842a7-8e60-4565-a79c-1b6788aec427","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://hometruth-ai.onrender.com/api/properties/:id","description":"<p>StartFragment</p>\n<p>📦 <strong>API Endpoint: Get Single Property</strong></p>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>🔹 <strong>Method:</strong> <code>GET</code><br />🔹 <strong>URL:</strong> <code>/api/properties/:id</code></p>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>📌 <strong>Description:</strong><br />This endpoint retrieves detailed information of a specific property using its unique ID.</p>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>📥 <strong>Request Details</strong></p>\n<p><strong>Headers:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-id=&quot;k4d7la&quot;\">Content-Type: application/json\n\n</code></pre>\n<hr />\n<p>🔑 <strong>Path Parameters:</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>String</td>\n<td>Property ID (MongoDB ObjectId)</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<p><strong>Body:</strong><br />None</p>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>📤 <strong>Success Response (200 OK):</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"status\": \"success\",\n  \"data\": {\n    \"property\": {\n      \"_id\": \"67b0fcd95d3f...\",\n      \"title\": \"3BHK Apartment in Andheri\",\n      \"propertyType\": \"Apartment\",\n      \"listingType\": \"buy\",\n      \"city\": \"Mumbai\",\n      \"price\": 15000000,\n      \"bedrooms\": 3,\n      \"area\": 1450,\n      \"ownerName\": \"Rahul Sharma\",\n      \"images\": [...],\n      \"createdAt\": \"2026-04-29T10:00:00.000Z\"\n    }\n  }\n}\n\n</code></pre>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>❌ <strong>Error Responses</strong></p>\n<p>🔸 <strong>404 Not Found (Property Not Found):</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"status\": \"fail\",\n  \"message\": \"Property not found\"\n}\n\n</code></pre>\n<p>🔸 <strong>400 Bad Request (Invalid ID Format):</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"status\": \"fail\",\n  \"message\": \"Invalid ID format\"\n}\n\n</code></pre>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>💡 <strong>Usage Tips:</strong></p>\n<ul>\n<li><p>Ensure the property ID is valid before making the request</p>\n</li>\n<li><p>Use this endpoint for property detail pages</p>\n</li>\n<li><p>Cache response for better performance if data is static</p>\n</li>\n<li><p>Handle 404 errors gracefully on frontend (e.g., show “Property Not Found”)</p>\n</li>\n</ul>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>EndFragment</p>\n","urlObject":{"protocol":"https","path":["api","properties",":id"],"host":["hometruth-ai","onrender","com"],"query":[],"variable":[{"type":"any","value":"69f1f88ea6015cef5b6f936a","key":"id"}]}},"response":[],"_postman_id":"8bb842a7-8e60-4565-a79c-1b6788aec427"},{"name":"Update Property","id":"acb7c06d-f167-4d7d-8a66-a5e99c714bb1","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PATCH","header":[],"url":"https://hometruth-ai.onrender.com/api/properties/:id","description":"<p>StartFragment</p>\n<p>📦 <strong>API Endpoint: Update Property</strong></p>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>🔹 <strong>Method:</strong> <code>PATCH</code><br />🔹 <strong>URL:</strong> <code>/api/properties/:id</code></p>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>📌 <strong>Description:</strong><br />This endpoint updates an existing property. Only the fields provided in the request body will be modified (partial update supported).</p>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>📥 <strong>Request Details</strong></p>\n<p><strong>Headers:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-id=&quot;k6d2la&quot;\">Content-Type: application/json\n\n</code></pre>\n<hr />\n<p>🔑 <strong>Path Parameters:</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>String</td>\n<td>Property ID (MongoDB ObjectId)</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<p>🧾 <strong>Request Body (Partial Update):</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"price\": 14000000,\n  \"healthScore\": 90,\n  \"riskLevel\": \"low\",\n  \"status\": \"approved\"\n}\n\n</code></pre>\n<p>📝 <em>Include only the fields you want to update.</em></p>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>📤 <strong>Success Response (200 OK):</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"status\": \"success\",\n  \"data\": {\n    \"property\": {\n      \"_id\": \"67b0fcd95d3f...\",\n      \"title\": \"3BHK Apartment in Andheri\",\n      \"price\": 14000000,\n      \"healthScore\": 90,\n      \"riskLevel\": \"low\",\n      \"status\": \"approved\",\n      \"updatedAt\": \"2026-04-29T11:00:00.000Z\"\n    }\n  }\n}\n\n</code></pre>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>❌ <strong>Error Response</strong></p>\n<p>🔸 <strong>400 Bad Request (Validation Error):</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"status\": \"fail\",\n  \"message\": \"Error message here\"\n}\n\n</code></pre>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>💡 <strong>Usage Tips:</strong></p>\n<ul>\n<li><p>Use this endpoint for editing property details from admin/user panel</p>\n</li>\n<li><p>Avoid sending unnecessary fields to reduce payload size</p>\n</li>\n<li><p>Validate data before sending update request</p>\n</li>\n<li><p>Track <code>updatedAt</code> for audit or UI refresh purposes</p>\n</li>\n</ul>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>EndFragment</p>\n","urlObject":{"protocol":"https","path":["api","properties",":id"],"host":["hometruth-ai","onrender","com"],"query":[],"variable":[{"type":"any","value":"","key":"id"}]}},"response":[],"_postman_id":"acb7c06d-f167-4d7d-8a66-a5e99c714bb1"},{"name":"Delete Property","id":"e7462820-41b8-491e-8c62-c02d447bb7be","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"url":"https://hometruth-ai.onrender.com/api/properties/:id","description":"<p>StartFragment</p>\n<p>📦 <strong>API Endpoint: Delete Property</strong></p>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>🔹 <strong>Method:</strong> <code>DELETE</code><br />🔹 <strong>URL:</strong> <code>/api/properties/:id</code></p>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>📌 <strong>Description:</strong><br />This endpoint deletes an existing property listing from the system using its unique ID. Once deleted, the property cannot be recovered.</p>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>📥 <strong>Request Details</strong></p>\n<p><strong>Headers:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-id=&quot;k1d9la&quot;\">Content-Type: application/json\n\n</code></pre>\n<hr />\n<p>🔑 <strong>Path Parameters:</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>String</td>\n<td>Property ID (MongoDB ObjectId)</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<p><strong>Body:</strong><br />None</p>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>📤 <strong>Success Response (204 No Content):</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"status\": \"success\",\n  \"data\": null\n}\n\n</code></pre>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>❌ <strong>Error Response</strong></p>\n<p>🔸 <strong>400 Bad Request:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"status\": \"fail\",\n  \"message\": \"Error message here\"\n}\n\n</code></pre>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>💡 <strong>Usage Tips:</strong></p>\n<ul>\n<li><p>Use carefully — deletion is permanent</p>\n</li>\n<li><p>Confirm user action before sending request (UI confirmation recommended)</p>\n</li>\n<li><p>Handle deletion gracefully on frontend (e.g., redirect or refresh list)</p>\n</li>\n<li><p>Validate property ID before making request</p>\n</li>\n</ul>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>📦 <strong>Postman Testing Guide (Professional Setup)</strong></p>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>🔧 <strong>1. Environment Setup</strong></p>\n<ul>\n<li><p>Create a new environment in Postman</p>\n</li>\n<li><p>Add variables:</p>\n<ul>\n<li><p><code>base_url</code> → <code>https://hometruth-ai.onrender.com</code></p>\n</li>\n<li><p><code>token</code> → (set after login)</p>\n</li>\n</ul>\n</li>\n</ul>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>🔐 <strong>2. Authentication Flow</strong></p>\n<ul>\n<li><p>Register or Login first</p>\n</li>\n<li><p>Copy JWT token from response</p>\n</li>\n<li><p>Store in <code>token</code> variable</p>\n</li>\n</ul>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>🔑 <strong>3. Using Authorization</strong></p>\n<ul>\n<li><p>Go to <strong>Authorization Tab</strong></p>\n</li>\n<li><p>Select <strong>Bearer Token</strong></p>\n</li>\n<li><p>Enter:</p>\n</li>\n</ul>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-id=&quot;auth1&quot;\">{{token}}\n\n</code></pre>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>📤 <strong>4. Sending Requests</strong></p>\n<ul>\n<li><p>Set <strong>Body → raw → JSON</strong></p>\n</li>\n<li><p>Always include:</p>\n</li>\n</ul>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-id=&quot;hdr1&quot;\">Content-Type: application/json\n\n</code></pre>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>⚠️ <strong>5. Common Notes</strong></p>\n<ul>\n<li><p>CORS is enabled (no frontend issues expected)</p>\n</li>\n<li><p>Max payload size: <strong>50MB</strong></p>\n</li>\n<li><p>Always validate request body before sending</p>\n</li>\n</ul>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>🔁 <strong>6. Password Reset Flow</strong></p>\n<ol>\n<li><p><code>POST /api/auth/forgot-password</code></p>\n</li>\n<li><p><code>POST /api/auth/verify-otp</code></p>\n</li>\n<li><p><code>POST /api/auth/reset-password</code></p>\n</li>\n</ol>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>📦 <strong>Model Reference (Quick Overview)</strong></p>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>👤 <strong>User Model Key Fields</strong></p>\n<ul>\n<li><p>fullName, email, password</p>\n</li>\n<li><p>role (user / admin / provider)</p>\n</li>\n<li><p>serviceCategory (for providers)</p>\n</li>\n<li><p>experience, jobsCompleted, baseFee</p>\n</li>\n<li><p>savedHomes, viewedHomes</p>\n</li>\n</ul>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>🏠 <strong>Property Model Key Fields</strong></p>\n<ul>\n<li><p>title, propertyType, listingType</p>\n</li>\n<li><p>price, area, bedrooms, bathrooms</p>\n</li>\n<li><p>location (city, state, lat, lng)</p>\n</li>\n<li><p>images (3–10 URLs)</p>\n</li>\n<li><p>healthScore, riskLevel</p>\n</li>\n<li><p>nearbyPlaces (hospitals, gardens, temples)</p>\n</li>\n</ul>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>📦 <strong>Postman Collection</strong></p>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>📁 Import file:<br /><code>HomeTruth_API_Collection.json</code></p>\n<p>✔️ Contains all endpoints pre-configured<br />✔️ Ready for testing &amp; sharing</p>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>📞 <strong>Support</strong></p>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>For issues or improvements:</p>\n<ul>\n<li><p>Contact development team</p>\n</li>\n<li><p>Raise issue in repository</p>\n</li>\n</ul>\n<p>🗓️ <strong>Last Updated:</strong> April 29, 2026</p>\n<p>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>\n<p>EndFragment</p>\n","urlObject":{"protocol":"https","path":["api","properties",":id"],"host":["hometruth-ai","onrender","com"],"query":[],"variable":[{"type":"any","value":"","key":"id"}]}},"response":[],"_postman_id":"e7462820-41b8-491e-8c62-c02d447bb7be"}]}