dld_backend/Dubai_DLD_Properties_API_Complete.postman_collection.json

1145 lines
26 KiB
JSON

{
"info": {
"_postman_id": "dubai-dld-properties-api-v1",
"name": "Dubai DLD Properties API - Complete Collection",
"description": "Comprehensive Postman collection for Dubai DLD Analytics API including the new unified Properties endpoint and all existing endpoints.\n\n## New Endpoint\n- **Properties Recent**: Unified endpoint for both rent and sale queries (`/api/properties/recent`)\n\n## Features\n- Natural Language Query Processing\n- Transaction & Rental Filtering\n- Property Search (Rent/Sale)\n- Analytics & Reporting\n- Database Information",
"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json",
"_exporter_id": "dubai-dld-api"
},
"item": [
{
"name": "🏘️ Properties (Unified Endpoint)",
"item": [
{
"name": "Get All Properties - Rent",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/api/properties/recent?type=rent&page=1&page_size=30",
"host": ["{{baseUrl}}"],
"path": ["api", "properties", "recent"],
"query": [
{
"key": "type",
"value": "rent",
"description": "Property type: rent or sale"
},
{
"key": "page",
"value": "1"
},
{
"key": "page_size",
"value": "30"
}
]
},
"description": "Get all rental properties with pagination"
},
"response": []
},
{
"name": "Get All Properties - Sale",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/api/properties/recent?type=sale&page=1&page_size=30",
"host": ["{{baseUrl}}"],
"path": ["api", "properties", "recent"],
"query": [
{
"key": "type",
"value": "sale"
},
{
"key": "page",
"value": "1"
},
{
"key": "page_size",
"value": "30"
}
]
},
"description": "Get all sale/transaction properties with pagination"
},
"response": []
},
{
"name": "Rent - Filter by Area",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/api/properties/recent?type=rent&area_name=business+bay&page=1&page_size=30",
"host": ["{{baseUrl}}"],
"path": ["api", "properties", "recent"],
"query": [
{
"key": "type",
"value": "rent"
},
{
"key": "area_name",
"value": "business bay",
"description": "Case-insensitive partial match"
},
{
"key": "page",
"value": "1"
},
{
"key": "page_size",
"value": "30"
}
]
},
"description": "Get rental properties in Business Bay area"
},
"response": []
},
{
"name": "Sale - Filter by Area",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/api/properties/recent?type=sale&area_name=dubai+marina&page=1&page_size=30",
"host": ["{{baseUrl}}"],
"path": ["api", "properties", "recent"],
"query": [
{
"key": "type",
"value": "sale"
},
{
"key": "area_name",
"value": "dubai marina"
},
{
"key": "page",
"value": "1"
},
{
"key": "page_size",
"value": "30"
}
]
},
"description": "Get sale properties in Dubai Marina area"
},
"response": []
},
{
"name": "Rent - Filter by Property Type",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/api/properties/recent?type=rent&property_type=apartment&page=1&page_size=30",
"host": ["{{baseUrl}}"],
"path": ["api", "properties", "recent"],
"query": [
{
"key": "type",
"value": "rent"
},
{
"key": "property_type",
"value": "apartment"
},
{
"key": "page",
"value": "1"
},
{
"key": "page_size",
"value": "30"
}
]
},
"description": "Get rental apartments"
},
"response": []
},
{
"name": "Sale - Filter by Property Type",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/api/properties/recent?type=sale&property_type=villa&page=1&page_size=30",
"host": ["{{baseUrl}}"],
"path": ["api", "properties", "recent"],
"query": [
{
"key": "type",
"value": "sale"
},
{
"key": "property_type",
"value": "villa"
},
{
"key": "page",
"value": "1"
},
{
"key": "page_size",
"value": "30"
}
]
},
"description": "Get sale villas"
},
"response": []
},
{
"name": "Rent - Filter by Rooms",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/api/properties/recent?type=rent&rooms=2.0&page=1&page_size=30",
"host": ["{{baseUrl}}"],
"path": ["api", "properties", "recent"],
"query": [
{
"key": "type",
"value": "rent"
},
{
"key": "rooms",
"value": "2.0",
"description": "Decimal value: 1.0, 2.0, 3.0, etc."
},
{
"key": "page",
"value": "1"
},
{
"key": "page_size",
"value": "30"
}
]
},
"description": "Get 2-bedroom rental properties"
},
"response": []
},
{
"name": "Sale - Filter by Bedrooms",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/api/properties/recent?type=sale&beds=3&page=1&page_size=30",
"host": ["{{baseUrl}}"],
"path": ["api", "properties", "recent"],
"query": [
{
"key": "type",
"value": "sale"
},
{
"key": "beds",
"value": "3",
"description": "String format: '3', 'studio', '3 b/r', etc."
},
{
"key": "page",
"value": "1"
},
{
"key": "page_size",
"value": "30"
}
]
},
"description": "Get 3-bedroom sale properties (can also use 'rooms' parameter)"
},
"response": []
},
{
"name": "Sale - Filter by Studio",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/api/properties/recent?type=sale&beds=studio&page=1&page_size=30",
"host": ["{{baseUrl}}"],
"path": ["api", "properties", "recent"],
"query": [
{
"key": "type",
"value": "sale"
},
{
"key": "beds",
"value": "studio"
},
{
"key": "page",
"value": "1"
},
{
"key": "page_size",
"value": "30"
}
]
},
"description": "Get studio sale properties"
},
"response": []
},
{
"name": "Rent - Filter by Size Range",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/api/properties/recent?type=rent&size_min=1000&size_max=2000&page=1&page_size=30",
"host": ["{{baseUrl}}"],
"path": ["api", "properties", "recent"],
"query": [
{
"key": "type",
"value": "rent"
},
{
"key": "size_min",
"value": "1000",
"description": "Minimum area in sq. ft"
},
{
"key": "size_max",
"value": "2000",
"description": "Maximum area in sq. ft"
},
{
"key": "page",
"value": "1"
},
{
"key": "page_size",
"value": "30"
}
]
},
"description": "Get rental properties between 1000-2000 sq. ft"
},
"response": []
},
{
"name": "Sale - Filter by Size Range",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/api/properties/recent?type=sale&size_min=1500&size_max=3000&page=1&page_size=30",
"host": ["{{baseUrl}}"],
"path": ["api", "properties", "recent"],
"query": [
{
"key": "type",
"value": "sale"
},
{
"key": "size_min",
"value": "1500"
},
{
"key": "size_max",
"value": "3000"
},
{
"key": "page",
"value": "1"
},
{
"key": "page_size",
"value": "30"
}
]
},
"description": "Get sale properties between 1500-3000 sq. ft"
},
"response": []
},
{
"name": "Sale - Legacy Size Parameter",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/api/properties/recent?type=sale&size=2500&page=1&page_size=30",
"host": ["{{baseUrl}}"],
"path": ["api", "properties", "recent"],
"query": [
{
"key": "type",
"value": "sale"
},
{
"key": "size",
"value": "2500",
"description": "Legacy parameter: upper bound for area (only for sale)"
},
{
"key": "page",
"value": "1"
},
{
"key": "page_size",
"value": "30"
}
]
},
"description": "Get sale properties with size <= 2500 sq. ft (legacy size parameter)"
},
"response": []
},
{
"name": "Rent - Filter by Project",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/api/properties/recent?type=rent&project=emaar&page=1&page_size=30",
"host": ["{{baseUrl}}"],
"path": ["api", "properties", "recent"],
"query": [
{
"key": "type",
"value": "rent"
},
{
"key": "project",
"value": "emaar",
"description": "Case-insensitive partial match"
},
{
"key": "page",
"value": "1"
},
{
"key": "page_size",
"value": "30"
}
]
},
"description": "Get rental properties in Emaar projects"
},
"response": []
},
{
"name": "Sale - Filter by Project",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/api/properties/recent?type=sale&project=dubai+marina&page=1&page_size=30",
"host": ["{{baseUrl}}"],
"path": ["api", "properties", "recent"],
"query": [
{
"key": "type",
"value": "sale"
},
{
"key": "project",
"value": "dubai marina"
},
{
"key": "page",
"value": "1"
},
{
"key": "page_size",
"value": "30"
}
]
},
"description": "Get sale properties in Dubai Marina projects"
},
"response": []
},
{
"name": "Rent - Combined Filters",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/api/properties/recent?type=rent&area_name=business+bay&property_type=apartment&rooms=2.0&size_min=1000&size_max=1500&page=1&page_size=20",
"host": ["{{baseUrl}}"],
"path": ["api", "properties", "recent"],
"query": [
{
"key": "type",
"value": "rent"
},
{
"key": "area_name",
"value": "business bay"
},
{
"key": "property_type",
"value": "apartment"
},
{
"key": "rooms",
"value": "2.0"
},
{
"key": "size_min",
"value": "1000"
},
{
"key": "size_max",
"value": "1500"
},
{
"key": "page",
"value": "1"
},
{
"key": "page_size",
"value": "20"
}
]
},
"description": "Get 2-bedroom apartments for rent in Business Bay, 1000-1500 sq. ft"
},
"response": []
},
{
"name": "Sale - Combined Filters",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/api/properties/recent?type=sale&area_name=dubai+marina&property_type=villa&beds=3&size_min=2000&size_max=3000&project=emaar&page=1&page_size=20",
"host": ["{{baseUrl}}"],
"path": ["api", "properties", "recent"],
"query": [
{
"key": "type",
"value": "sale"
},
{
"key": "area_name",
"value": "dubai marina"
},
{
"key": "property_type",
"value": "villa"
},
{
"key": "beds",
"value": "3"
},
{
"key": "size_min",
"value": "2000"
},
{
"key": "size_max",
"value": "3000"
},
{
"key": "project",
"value": "emaar"
},
{
"key": "page",
"value": "1"
},
{
"key": "page_size",
"value": "20"
}
]
},
"description": "Get 3-bedroom villas for sale in Dubai Marina, 2000-3000 sq. ft, Emaar projects"
},
"response": []
},
{
"name": "Rent - Simple Limit",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/api/properties/recent?type=rent&limit=10",
"host": ["{{baseUrl}}"],
"path": ["api", "properties", "recent"],
"query": [
{
"key": "type",
"value": "rent"
},
{
"key": "limit",
"value": "10",
"description": "Legacy limit parameter (no pagination metadata)"
}
]
},
"description": "Get first 10 rental properties (legacy limit)"
},
"response": []
},
{
"name": "Sale - Simple Limit",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/api/properties/recent?type=sale&limit=50",
"host": ["{{baseUrl}}"],
"path": ["api", "properties", "recent"],
"query": [
{
"key": "type",
"value": "sale"
},
{
"key": "limit",
"value": "50"
}
]
},
"description": "Get first 50 sale properties (legacy limit)"
},
"response": []
},
{
"name": "Rent - Pagination Page 2",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/api/properties/recent?type=rent&page=2&page_size=30",
"host": ["{{baseUrl}}"],
"path": ["api", "properties", "recent"],
"query": [
{
"key": "type",
"value": "rent"
},
{
"key": "page",
"value": "2"
},
{
"key": "page_size",
"value": "30"
}
]
},
"description": "Get second page of rental properties"
},
"response": []
},
{
"name": "Error - Missing Type Parameter",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/api/properties/recent?page=1&page_size=30",
"host": ["{{baseUrl}}"],
"path": ["api", "properties", "recent"],
"query": [
{
"key": "page",
"value": "1"
},
{
"key": "page_size",
"value": "30"
}
]
},
"description": "This should return 400 error - type parameter is required"
},
"response": []
},
{
"name": "Error - Invalid Type",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/api/properties/recent?type=invalid&page=1&page_size=30",
"host": ["{{baseUrl}}"],
"path": ["api", "properties", "recent"],
"query": [
{
"key": "type",
"value": "invalid"
},
{
"key": "page",
"value": "1"
},
{
"key": "page_size",
"value": "30"
}
]
},
"description": "This should return 400 error - type must be 'rent' or 'sale'"
},
"response": []
}
]
},
{
"name": "🏢 Transactions",
"item": [
{
"name": "Get Recent Transactions",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/api/transactions/recent?page=1&page_size=30",
"host": ["{{baseUrl}}"],
"path": ["api", "transactions", "recent"],
"query": [
{
"key": "page",
"value": "1"
},
{
"key": "page_size",
"value": "30"
}
]
}
},
"response": []
},
{
"name": "Filter by Area",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/api/transactions/recent?area_name=business+bay&page=1&page_size=30",
"host": ["{{baseUrl}}"],
"path": ["api", "transactions", "recent"],
"query": [
{
"key": "area_name",
"value": "business bay"
},
{
"key": "page",
"value": "1"
},
{
"key": "page_size",
"value": "30"
}
]
}
},
"response": []
},
{
"name": "Filter by Property Type and Beds",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/api/transactions/recent?property_type=apartment&beds=3&page=1&page_size=30",
"host": ["{{baseUrl}}"],
"path": ["api", "transactions", "recent"],
"query": [
{
"key": "property_type",
"value": "apartment"
},
{
"key": "beds",
"value": "3"
},
{
"key": "page",
"value": "1"
},
{
"key": "page_size",
"value": "30"
}
]
}
},
"response": []
}
]
},
{
"name": "🏠 Rents",
"item": [
{
"name": "Get Recent Rents",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/api/rents/recent?page=1&page_size=30",
"host": ["{{baseUrl}}"],
"path": ["api", "rents", "recent"],
"query": [
{
"key": "page",
"value": "1"
},
{
"key": "page_size",
"value": "30"
}
]
}
},
"response": []
},
{
"name": "Filter by Area and Rooms",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/api/rents/recent?area_name=dubai+marina&rooms=2.0&page=1&page_size=30",
"host": ["{{baseUrl}}"],
"path": ["api", "rents", "recent"],
"query": [
{
"key": "area_name",
"value": "dubai marina"
},
{
"key": "rooms",
"value": "2.0"
},
{
"key": "page",
"value": "1"
},
{
"key": "page_size",
"value": "30"
}
]
}
},
"response": []
}
]
},
{
"name": "🤖 Natural Language Queries",
"item": [
{
"name": "Rental Price Trend",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"query\": \"Give me the last 6 months rental price trend for Business Bay\",\n \"sessionId\": \"test-session-123\"\n}",
"options": {
"raw": {
"language": "json"
}
}
},
"url": {
"raw": "{{baseUrl}}/api/query",
"host": ["{{baseUrl}}"],
"path": ["api", "query"]
},
"description": "Natural language query for rental price trends"
},
"response": []
},
{
"name": "Top Areas for Rental Transactions",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"query\": \"Which area is having more rental transactions?\"\n}",
"options": {
"raw": {
"language": "json"
}
}
},
"url": {
"raw": "{{baseUrl}}/api/query",
"host": ["{{baseUrl}}"],
"path": ["api", "query"]
}
},
"response": []
},
{
"name": "Commercial Leasing",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"query\": \"Top 5 areas for Commercial leasing and why?\"\n}",
"options": {
"raw": {
"language": "json"
}
}
},
"url": {
"raw": "{{baseUrl}}/api/query",
"host": ["{{baseUrl}}"],
"path": ["api", "query"]
}
},
"response": []
},
{
"name": "Average Price 3BHK",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"query\": \"Avg price of 3BHK apartment by area in last 6 months, group it by month. Show top 5 areas only.\"\n}",
"options": {
"raw": {
"language": "json"
}
}
},
"url": {
"raw": "{{baseUrl}}/api/query",
"host": ["{{baseUrl}}"],
"path": ["api", "query"]
}
},
"response": []
}
]
},
{
"name": "📊 Predefined Analytics",
"item": [
{
"name": "Rental Trend by Area",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/api/queries/rental-trend/business-bay",
"host": ["{{baseUrl}}"],
"path": ["api", "queries", "rental-trend", "business-bay"]
}
},
"response": []
},
{
"name": "Top Areas",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/api/queries/top-areas",
"host": ["{{baseUrl}}"],
"path": ["api", "queries", "top-areas"]
}
},
"response": []
},
{
"name": "Commercial Leasing",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/api/queries/commercial-leasing",
"host": ["{{baseUrl}}"],
"path": ["api", "queries", "commercial-leasing"]
}
},
"response": []
},
{
"name": "Residential Leasing",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/api/queries/residential-leasing",
"host": ["{{baseUrl}}"],
"path": ["api", "queries", "residential-leasing"]
}
},
"response": []
},
{
"name": "Fast Moving Projects",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/api/queries/fast-moving-projects",
"host": ["{{baseUrl}}"],
"path": ["api", "queries", "fast-moving-projects"]
}
},
"response": []
},
{
"name": "Off-Plan Uptick",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/api/queries/offplan-uptick",
"host": ["{{baseUrl}}"],
"path": ["api", "queries", "offplan-uptick"]
}
},
"response": []
},
{
"name": "Project Summary",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/api/queries/project-summary",
"host": ["{{baseUrl}}"],
"path": ["api", "queries", "project-summary"]
}
},
"response": []
},
{
"name": "Project Summary Detail",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/api/queries/project-summary-detail",
"host": ["{{baseUrl}}"],
"path": ["api", "queries", "project-summary-detail"]
}
},
"response": []
}
]
},
{
"name": "🔧 System & Info",
"item": [
{
"name": "Health Check",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/health",
"host": ["{{baseUrl}}"],
"path": ["health"]
},
"description": "Check if the API server is running"
},
"response": []
},
{
"name": "Database Info",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/api/database/info",
"host": ["{{baseUrl}}"],
"path": ["api", "database", "info"]
},
"description": "Get database table information and record counts"
},
"response": []
},
{
"name": "Available Queries",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{baseUrl}}/api/queries/available",
"host": ["{{baseUrl}}"],
"path": ["api", "queries", "available"]
},
"description": "List all available query endpoints and examples"
},
"response": []
}
]
}
],
"event": [
{
"listen": "prerequest",
"script": {
"type": "text/javascript",
"exec": [
""
]
}
},
{
"listen": "test",
"script": {
"type": "text/javascript",
"exec": [
""
]
}
}
],
"variable": [
{
"key": "baseUrl",
"value": "http://localhost:3000",
"type": "string"
}
]
}