{
	"openapi": "3.0.0",
	"info": {
		"title": "pol api",
		"description": "API for managing OTPs",
		"version": "1.0.0"
	},
	"servers": [
		{
			"url": "https://polapi.myecommerce.in/api/v1"
		},
		{
			"url": "http://localhost:3000/api/v1",
			"description": "development server"
		}
	],
	"components": {
		"securitySchemes": {
			"bearerAuth": {
				"type": "http",
				"scheme": "bearer",
				"bearerFormat": "JWT",
				"description": "Bearer token to access these API endpoints"
			}
		},
		"schemas": {
			"Settings": {
				"description": "services table",
				"type": "object",
				"properties": {
					"id": {
						"type": "integer",
						"example": 1
					},
					"companyname": {
						"type": "string",
						"example": "MD IT INFO PRIVATE LIMITED"
					},
					"gst": {
						"type": "string",
						"example": "27AAOCM1644D1ZI"
					},
					"address": {
						"type": "string",
						"example": "Dhantoli Nagpur"
					},
					"website": {
						"type": "string",
						"example": "www.propertyonlocation.com"
					},
					"androidversion": {
						"type": "string",
						"example": "0.0.35"
					},
					"androidforce": {
						"type": "boolean",
						"example": true
					},
					"iosversion": {
						"type": "string",
						"example": "0.0.15"
					},
					"iosforce": {
						"type": "boolean",
						"example": true
					},
					"demourl": {
						"type": "string",
						"example": "https://www.instagram.com/reel/C2W8EPkikfa/?igsh=Z3VqcWV2dWk3OWg="
					},
					"created_on": {
						"type": "string",
						"format": "date-time",
						"example": "2025-01-29T09:12:42.000Z"
					},
					"updated_on": {
						"type": "string",
						"format": "date-time",
						"example": "2025-01-29T09:12:42.000Z"
					}
				}
			},
			"Property": {
				"type": "object",
				"description": "Represents a property with various attributes such as location, type, and status.",
				"properties": {
					"id": {
						"type": "integer",
						"format": "int64",
						"description": "Unique identifier for the property."
					},
					"uuid": {
						"type": "string",
						"description": "Universally unique identifier for the property."
					},
					"exbuildings_id": {
						"type": "integer",
						"format": "int64",
						"description": "Reference to the building ID if applicable."
					},
					"refno": {
						"type": "string",
						"description": "Reference number for the property."
					},
					"totalrating": {
						"type": "string",
						"description": "Total rating of the property."
					},
					"users_id": {
						"type": "integer",
						"format": "int64",
						"description": "Reference to the user ID associated with the property."
					},
					"markers_id": {
						"type": "integer",
						"format": "int64",
						"description": "Reference to the marker ID for location purposes."
					},
					"latitude": {
						"type": "number",
						"format": "double",
						"description": "Latitude coordinate of the property."
					},
					"longitude": {
						"type": "number",
						"format": "double",
						"description": "Longitude coordinate of the property."
					},
					"buildingname": {
						"type": "string",
						"description": "Name of the building, if applicable."
					},
					"city": {
						"type": "string",
						"description": "City where the property is located."
					},
					"address": {
						"type": "string",
						"description": "Full address of the property."
					},
					"states_id": {
						"type": "integer",
						"format": "int64",
						"description": "Reference to the state ID."
					},
					"districts_id": {
						"type": "integer",
						"format": "int64",
						"description": "Reference to the district ID."
					},
					"posttypes_id": {
						"type": "integer",
						"format": "int64",
						"description": "Reference to the post type ID."
					},
					"kindofpropertymasters_id": {
						"type": "integer",
						"format": "int64",
						"description": "Reference to the kind of property master ID."
					},
					"propertytypemasters_id": {
						"type": "integer",
						"format": "int64",
						"description": "Reference to the select property type master ID."
					},
					"carpet": {
						"type": "integer",
						"format": "int32",
						"description": "Indicates if the property has carpet."
					},
					"carpetarea": {
						"type": "number",
						"format": "double",
						"description": "Carpet area of the property."
					},
					"carpetunits_id": {
						"type": "integer",
						"format": "int64",
						"description": "Reference to the carpet area unit ID."
					},
					"buildup": {
						"type": "integer",
						"format": "int32",
						"description": "Indicates if the property has a built-up area."
					},
					"builduparea": {
						"type": "number",
						"format": "double",
						"description": "Built-up area of the property."
					},
					"buildupunits_id": {
						"type": "integer",
						"format": "int64",
						"description": "Reference to the built-up area unit ID."
					},
					"supperup": {
						"type": "integer",
						"format": "int32",
						"description": "Indicates if the property has a super built-up area."
					},
					"supperuparea": {
						"type": "number",
						"format": "double",
						"description": "Super built-up area of the property."
					},
					"supperupunits_id": {
						"type": "integer",
						"format": "int64",
						"description": "Reference to the super built-up area unit ID."
					},
					"plot": {
						"type": "integer",
						"format": "int32",
						"description": "Indicates if the property is a plot."
					},
					"plotarea": {
						"type": "number",
						"format": "double",
						"description": "Plot area of the property."
					},
					"plotunits_id": {
						"type": "integer",
						"format": "int64",
						"description": "Reference to the plot area unit ID."
					},
					"isnew": {
						"type": "string",
						"description": "Indicates if the property is new."
					},
					"categories_id": {
						"type": "integer",
						"format": "int64",
						"description": "Reference to the category ID."
					},
					"totalrooms": {
						"type": "string",
						"description": "Total number of rooms in the property."
					},
					"totalbathrooms": {
						"type": "string",
						"description": "Total number of bathrooms in the property."
					},
					"totalbalconies": {
						"type": "string",
						"description": "Total number of balconies in the property."
					},
					"totalfloors": {
						"type": "string",
						"description": "Total number of floors in the property."
					},
					"facing": {
						"type": "string",
						"description": "Facing direction of the property."
					},
					"furnishstatus": {
						"type": "string",
						"description": "Furnishing status of the property."
					},
					"age": {
						"type": "string",
						"description": "Age of the property."
					},
					"description": {
						"type": "string",
						"description": "Description of the property."
					},
					"possession": {
						"type": "string",
						"enum": [
							"ready-to-move",
							"under-construction"
						],
						"description": "Possession status of the property."
					},
					"expectedby": {
						"type": "string",
						"description": "Expected date by which the property will be ready."
					},
					"expecteddate": {
						"type": "string",
						"description": "Expected completion date of the property."
					},
					"isprice": {
						"type": "string",
						"description": "Indicates if the price is available."
					},
					"price": {
						"type": "string",
						"description": "Price of the property."
					},
					"pricecurrencies_id": {
						"type": "string",
						"description": "Currency ID for the price."
					},
					"rent": {
						"type": "string",
						"description": "Rent price of the property."
					},
					"rentperunit": {
						"type": "string",
						"description": "Unit for the rent price."
					},
					"forsell": {
						"type": "string",
						"description": "Sell price of the property."
					},
					"forsellunit": {
						"type": "string",
						"description": "Unit for the sell price."
					},
					"deposit": {
						"type": "number",
						"format": "double",
						"description": "Deposit amount for the property."
					},
					"depositunit": {
						"type": "string",
						"description": "Unit for the deposit amount."
					},
					"maintenance": {
						"type": "number",
						"format": "double",
						"description": "Maintenance charges for the property."
					},
					"maintenanceunit": {
						"type": "string",
						"description": "Unit for the maintenance charges."
					},
					"contract": {
						"type": "number",
						"format": "double",
						"description": "Contract amount for the property."
					},
					"contractperiod": {
						"type": "string",
						"description": "Contract period for the property."
					},
					"postedby": {
						"type": "string",
						"enum": [
							"owner",
							"broker",
							"developer",
							"builder",
							"other"
						],
						"description": "Indicates who posted the property."
					},
					"isrera": {
						"type": "string",
						"description": "Indicates if the property is RERA registered."
					},
					"rera": {
						"type": "string",
						"description": "RERA registration number."
					},
					"hasowner": {
						"type": "string",
						"description": "Indicates if the property has an owner."
					},
					"ownername": {
						"type": "string",
						"description": "Name of the property owner."
					},
					"remark_note": {
						"type": "string",
						"description": "Additional remarks about the property."
					},
					"ownernumber": {
						"type": "string",
						"description": "Contact number of the property owner."
					},
					"alternate_name": {
						"type": "string",
						"description": "Alternate name for the property or owner."
					},
					"alternate_contact": {
						"type": "string",
						"description": "Alternate contact information."
					},
					"visitingtime": {
						"type": "string",
						"description": "Preferred visiting time for viewing the property."
					},
					"location": {
						"type": "string",
						"description": "Geographical location of the property."
					},
					"landmarks": {
						"type": "string",
						"description": "Nearby landmarks to the property."
					},
					"nearby": {
						"type": "string",
						"description": "Nearby amenities and services."
					},
					"document": {
						"type": "string",
						"description": "Details of the property documents."
					},
					"status": {
						"type": "string",
						"enum": [
							"active",
							"inactive"
						],
						"description": "Current status of the property."
					},
					"isadminapproved": {
						"type": "string",
						"description": "Indicates if the property is approved by admin."
					},
					"isuserapproved": {
						"type": "string",
						"description": "Indicates if the property is approved by the user."
					},
					"createdAt": {
						"type": "string",
						"format": "date-time",
						"description": "Date and time when the property record was created."
					},
					"updatedAt": {
						"type": "string",
						"format": "date-time",
						"description": "Date and time when the property record was last updated."
					}
				},
				"required": [
					"id",
					"uuid",
					"status",
					"createdAt",
					"updatedAt"
				]
			},
			"services": {
				"description": "services table",
				"type": "object",
				"properties": {
					"mobile": {
						"type": "string"
					},
					"type": {
						"type": "string"
					},
					"professions_id": {
						"type": "string"
					},
					"name": {
						"type": "string"
					},
					"company": {
						"type": "string"
					},
					"states_id": {
						"type": "number"
					},
					"districts_id": {
						"type": "number"
					},
					"areas_id": {
						"type": "number"
					},
					"cities_id": {
						"type": "number"
					},
					"latitude": {
						"type": "number"
					},
					"longitude": {
						"type": "number"
					},
					"city": {
						"type": "string"
					},
					"address": {
						"type": "string"
					},
					"qualification": {
						"type": "string"
					},
					"experience": {
						"type": "string"
					},
					"aboutus": {
						"type": "string"
					},
					"contactno": {
						"type": "string"
					},
					"email": {
						"type": "string"
					},
					"websiteurl": {
						"type": "string"
					},
					"project": {
						"type": "string"
					},
					"refcode": {
						"type": "string"
					},
					"users_id": {
						"type": "string"
					},
					"workingtimes": {
						"type": "array",
						"items": {
							"$ref": "#/components/schemas/workingtimes"
						}
					},
					"photos": {
						"type": "array",
						"items": {
							"$ref": "#/components/schemas/assets"
						}
					},
					"users": {
						"type": "object",
						"items": null,
						"$ref": "#/components/schemas/assets"
					}
				}
			},
			"razorpayorder": {
				"description": "razorpay order",
				"type": "object",
				"properties": {
					"users_id": {
						"type": "string"
					},
					"districts_id": {
						"type": "string"
					},
					"packages_id": {
						"type": "string"
					}
				}
			},
			"razorpayresponse": {
				"description": "razorpay order",
				"type": "object",
				"properties": {
					"transactions_id": {
						"type": "string"
					},
					"status": {
						"type": "string"
					},
					"errorcode": {
						"type": "string"
					},
					"errormessage": {
						"type": "string"
					},
					"razorpay_payment_id": {
						"type": "string"
					},
					"razorpay_signature": {
						"type": "string"
					},
					"razorpay_order_id": {
						"type": "string"
					}
				}
			},
			"users": {
				"description": "describe workingtimes table",
				"type": "object",
				"properties": {
					"id": {
						"type": "number"
					},
					"refno": {
						"type": "string"
					},
					"status": {
						"type": "string"
					},
					"mobile": {
						"type": "string"
					},
					"name": {
						"type": "string"
					},
					"email": {
						"type": "string"
					},
					"loginas": {
						"type": "string"
					},
					"isold": {
						"type": "boolean"
					},
					"token": {
						"type": "string"
					}
				}
			},
			"workingtimes": {
				"description": "describe workingtimes table",
				"type": "object",
				"properties": {
					"day": {
						"type": "string"
					},
					"start": {
						"type": "string"
					},
					"end": {
						"type": "string"
					},
					"is_holiday": {
						"type": "boolean"
					}
				}
			},
			"assets": {
				"description": "describe assets table",
				"type": "object",
				"properties": {
					"id": {
						"type": "string"
					},
					"uuid": {
						"type": "string"
					},
					"location": {
						"type": "string"
					},
					"ext": {
						"type": "string"
					},
					"mimetype": {
						"type": "string"
					},
					"type": {
						"type": "string"
					}
				}
			},
			"areaunits": {
				"description": "Area units",
				"type": "object",
				"properties": {
					"id": {
						"type": "integer",
						"format": "int64"
					},
					"name": {
						"type": "string",
						"maxLength": 255
					},
					"slug": {
						"type": "string",
						"maxLength": 255
					},
					"status": {
						"type": "string",
						"enum": [
							"active",
							"inactive",
							"deleted"
						],
						"default": "active"
					},
					"created_at": {
						"type": "string",
						"format": "date-time",
						"default": "now"
					},
					"modified_at": {
						"type": "string",
						"format": "date-time",
						"default": "now"
					}
				}
			},
			"KindOfProjectType": {
				"type": "object",
				"properties": {
					"id": {
						"type": "integer",
						"format": "int64",
						"example": 1,
						"description": "Primary key of the kindofprojecttypes table."
					},
					"projecttypes_id": {
						"type": "integer",
						"format": "int64",
						"description": "Foreign key to the projecttypes table."
					},
					"created_at": {
						"type": "string",
						"format": "date-time",
						"example": "2021-12-14T16:30:01Z",
						"description": "Timestamp when the record was created."
					},
					"modified_at": {
						"type": "string",
						"format": "date-time",
						"example": "2021-12-14T16:32:02Z",
						"description": "Timestamp when the record was last modified."
					}
				}
			},
			"ProjectType": {
				"type": "object",
				"properties": {
					"id": {
						"type": "integer",
						"format": "int64",
						"example": 1,
						"description": "Primary key of the projecttypes table."
					},
					"name": {
						"type": "string",
						"example": "Commercial / Residential",
						"description": "Name of the project type."
					},
					"slug": {
						"type": "string",
						"example": "commercial-residential",
						"description": "Unique slug identifier for the project type."
					},
					"created_at": {
						"type": "string",
						"format": "date-time",
						"example": "2021-12-14T16:30:01Z",
						"description": "Timestamp when the record was created."
					},
					"modified_at": {
						"type": "string",
						"format": "date-time",
						"example": "2021-12-14T16:32:02Z",
						"description": "Timestamp when the record was last modified."
					},
					"kindofprojecttypes": {
						"type": "array",
						"items": {
							"$ref": "#/components/schemas/KindOfProjectType"
						},
						"description": "List of associated kind of project types."
					}
				},
				"required": [
					"name",
					"slug",
					"created_at",
					"modified_at",
					"kindofprojecttypes"
				]
			},
			"ServicesMaster": {
				"description": "Service master",
				"type": "object",
				"properties": {
					"id": {
						"type": "integer",
						"format": "int64"
					},
					"name": {
						"type": "string",
						"maxLength": 255
					},
					"slug": {
						"type": "string",
						"maxLength": 255
					},
					"created_at": {
						"type": "string",
						"format": "date-time"
					},
					"modified_at": {
						"type": "string",
						"format": "date-time"
					}
				}
			},
			"Area": {
				"type": "object",
				"description": "Represents an area within a city.",
				"properties": {
					"id": {
						"type": "integer",
						"format": "int64",
						"description": "Unique identifier for the area."
					},
					"name": {
						"type": "string",
						"maxLength": 255,
						"description": "Name of the area."
					},
					"latitude": {
						"type": "number",
						"format": "double",
						"description": "Latitude coordinate of the area."
					},
					"longitude": {
						"type": "number",
						"format": "double",
						"description": "Longitude coordinate of the area."
					},
					"cities_id": {
						"type": "integer",
						"format": "int64",
						"description": "Identifier of the city to which the area belongs."
					},
					"status": {
						"type": "string",
						"enum": [
							"active",
							"inactive",
							"deleted"
						],
						"description": "Current status of the area."
					},
					"created_at": {
						"type": "string",
						"format": "date-time",
						"description": "Timestamp when the area was created."
					},
					"modified_at": {
						"type": "string",
						"format": "date-time",
						"description": "Timestamp when the area was last modified."
					}
				},
				"required": [
					"name",
					"latitude",
					"longitude",
					"cities_id",
					"status"
				]
			},
			"State": {
				"type": "object",
				"description": "Represents a state with its status and timestamps.",
				"properties": {
					"id": {
						"type": "integer",
						"format": "int64",
						"description": "Unique identifier for the state."
					},
					"name": {
						"type": "string",
						"description": "Name of the state."
					},
					"status": {
						"type": "string",
						"enum": [
							"active",
							"deleted",
							"inactive",
							"sold"
						],
						"description": "Current status of the state.",
						"default": "active"
					},
					"created_at": {
						"type": "string",
						"format": "date-time",
						"description": "Timestamp when the state was created."
					},
					"modified_at": {
						"type": "string",
						"format": "date-time",
						"description": "Timestamp when the state was last modified."
					}
				},
				"required": [
					"name",
					"status"
				]
			},
			"District": {
				"type": "object",
				"description": "Represents a district with its geographical coordinates and status.",
				"properties": {
					"id": {
						"type": "integer",
						"format": "int64",
						"description": "Unique identifier for the district."
					},
					"name": {
						"type": "string",
						"description": "Name of the district."
					},
					"states_id": {
						"type": "integer",
						"format": "int64",
						"description": "Identifier of the state to which the district belongs."
					},
					"latitude": {
						"type": "number",
						"format": "double",
						"description": "Latitude coordinate of the district."
					},
					"longitude": {
						"type": "number",
						"format": "double",
						"description": "Longitude coordinate of the district."
					},
					"status": {
						"type": "string",
						"enum": [
							"active",
							"deleted",
							"inactive",
							"sold"
						],
						"description": "Current status of the district.",
						"default": "active"
					},
					"created_at": {
						"type": "string",
						"format": "date-time",
						"description": "Timestamp when the district was created."
					},
					"modified_at": {
						"type": "string",
						"format": "date-time",
						"description": "Timestamp when the district was last modified."
					}
				},
				"required": [
					"name",
					"states_id",
					"latitude",
					"longitude",
					"status"
				]
			},
			"Category": {
				"type": "object",
				"description": "Represents a category with its name, status, and timestamps.",
				"properties": {
					"id": {
						"type": "integer",
						"format": "int64",
						"description": "Unique identifier for the district."
					},
					"name": {
						"type": "string",
						"description": "Name of the district."
					},
					"status": {
						"type": "string",
						"enum": [
							"active",
							"inactive",
							"deleted"
						],
						"description": "Current status of the category.",
						"default": "active"
					},
					"created_at": {
						"type": "string",
						"format": "date-time",
						"description": "Timestamp when the district was created."
					},
					"modified_at": {
						"type": "string",
						"format": "date-time",
						"description": "Timestamp when the district was last modified."
					}
				},
				"required": [
					"name",
					"status"
				]
			},
			"Currency": {
				"type": "object",
				"description": "Represents a currency with its name, symbol, and timestamps.",
				"properties": {
					"id": {
						"type": "integer",
						"format": "int64",
						"description": "Unique identifier for the currency."
					},
					"name": {
						"type": "string",
						"maxLength": 255,
						"description": "Name of the currency."
					},
					"symbol": {
						"type": "string",
						"maxLength": 10,
						"description": "Symbol of the currency."
					},
					"created_at": {
						"type": "string",
						"format": "date-time",
						"description": "Timestamp when the currency was created."
					},
					"modified_at": {
						"type": "string",
						"format": "date-time",
						"description": "Timestamp when the currency was last modified."
					}
				},
				"required": [
					"name",
					"symbol"
				]
			},
			"DeviceMaster": {
				"type": "object",
				"description": "Represents a device with its name, operating system, software version, and associated user.",
				"properties": {
					"id": {
						"type": "integer",
						"format": "int64",
						"description": "Unique identifier for the device."
					},
					"device_name": {
						"type": "string",
						"maxLength": 255,
						"description": "Name of the device."
					},
					"device_os": {
						"type": "string",
						"nullable": true,
						"description": "Operating system of the device."
					},
					"software_version": {
						"type": "string",
						"description": "Software version installed on the device."
					},
					"users_id": {
						"type": "integer",
						"format": "int64",
						"description": "Identifier of the user associated with the device."
					},
					"created_at": {
						"type": "string",
						"format": "date-time",
						"description": "Timestamp when the device record was created."
					},
					"modified_at": {
						"type": "string",
						"format": "date-time",
						"description": "Timestamp when the device record was last modified."
					}
				},
				"required": [
					"device_name",
					"software_version",
					"users_id"
				]
			},
			"KindOfProperty": {
				"type": "object",
				"description": "Represents a kind of property associated with a property master and post type.",
				"properties": {
					"id": {
						"type": "integer",
						"format": "int64",
						"description": "Unique identifier for the kind of property."
					},
					"kindofpropertymasters_id": {
						"type": "integer",
						"format": "int64",
						"description": "Identifier of the related property master."
					},
					"posttypes_id": {
						"type": "integer",
						"format": "int64",
						"description": "Identifier of the related post type."
					},
					"created_at": {
						"type": "string",
						"format": "date-time",
						"description": "Timestamp when the kind of property record was created."
					},
					"modified_at": {
						"type": "string",
						"format": "date-time",
						"description": "Timestamp when the kind of property record was last modified."
					}
				},
				"required": [
					"kindofpropertymasters_id",
					"posttypes_id"
				]
			},
			"KindOfPropertyMaster": {
				"type": "object",
				"description": "Represents a master record for different kinds of properties.",
				"properties": {
					"id": {
						"type": "integer",
						"format": "int64",
						"description": "Unique identifier for the kind of property master."
					},
					"name": {
						"type": "string",
						"maxLength": 255,
						"description": "Name of the kind of property."
					},
					"created_at": {
						"type": "string",
						"format": "date-time",
						"description": "Timestamp when the record was created."
					},
					"modified_at": {
						"type": "string",
						"format": "date-time",
						"description": "Timestamp when the record was last modified."
					}
				},
				"required": [
					"name"
				]
			},
			"Locality": {
				"type": "object",
				"description": "Represents a locality associated with specific requirements.",
				"properties": {
					"id": {
						"type": "integer",
						"format": "int64",
						"description": "Unique identifier for the locality."
					},
					"requirements_id": {
						"type": "integer",
						"format": "int64",
						"description": "Identifier of the related requirements."
					},
					"priority": {
						"type": "string",
						"description": "Priority level of the locality."
					},
					"created_at": {
						"type": "string",
						"format": "date-time",
						"description": "Timestamp when the locality record was created."
					},
					"modified_at": {
						"type": "string",
						"format": "date-time",
						"description": "Timestamp when the locality record was last modified."
					}
				},
				"required": [
					"requirements_id",
					"priority"
				]
			},
			"OTP": {
				"type": "object",
				"description": "Represents an OTP (One-Time Password) entry with details about the code, validity, and usage.",
				"properties": {
					"id": {
						"type": "integer",
						"format": "int64",
						"description": "Unique identifier for the OTP entry."
					},
					"mobile": {
						"type": "string",
						"maxLength": 255,
						"description": "Mobile number associated with the OTP."
					},
					"code": {
						"type": "string",
						"maxLength": 255,
						"description": "The OTP code."
					},
					"validity": {
						"type": "string",
						"format": "date-time",
						"description": "Expiration date and time of the OTP."
					},
					"used": {
						"type": "boolean",
						"description": "Indicates whether the OTP has been used.",
						"default": false
					},
					"devicemasters_id": {
						"type": "integer",
						"format": "int64",
						"nullable": true,
						"description": "Identifier of the device master associated with the OTP."
					},
					"created_at": {
						"type": "string",
						"format": "date-time",
						"description": "Timestamp when the OTP record was created."
					},
					"modified_at": {
						"type": "string",
						"format": "date-time",
						"description": "Timestamp when the OTP record was last modified."
					}
				},
				"required": [
					"mobile",
					"code",
					"validity",
					"used"
				]
			},
			"PropertyAmenity": {
				"type": "object",
				"description": "Represents an amenity available for properties.",
				"properties": {
					"id": {
						"type": "integer",
						"format": "int64",
						"description": "Unique identifier for the property amenity."
					},
					"name": {
						"type": "string",
						"maxLength": 255,
						"description": "Name of the property amenity."
					},
					"status": {
						"type": "string",
						"enum": [
							"active",
							"inactive",
							"deleted"
						],
						"description": "Status of the property amenity.",
						"default": "active"
					},
					"created_at": {
						"type": "string",
						"format": "date-time",
						"description": "Timestamp when the property amenity record was created."
					},
					"modified_at": {
						"type": "string",
						"format": "date-time",
						"description": "Timestamp when the property amenity record was last modified."
					}
				},
				"required": [
					"name",
					"status"
				]
			},
			"Requirements": {
				"type": "object",
				"properties": {
					"id": {
						"type": "integer",
						"format": "int64",
						"description": "Unique identifier for the requirement"
					},
					"uuid": {
						"type": "string",
						"format": "uuid",
						"description": "UUID of the requirement"
					},
					"refno": {
						"type": "string",
						"description": "Reference number for the requirement"
					},
					"latitude": {
						"type": "number",
						"format": "decimal",
						"description": "Latitude coordinate"
					},
					"longitude": {
						"type": "number",
						"format": "decimal",
						"description": "Longitude coordinate"
					},
					"status": {
						"type": "string",
						"enum": [
							"active",
							"inactive",
							"deleted"
						],
						"description": "Status of the requirement"
					},
					"states_id": {
						"type": "integer",
						"format": "int64",
						"description": "ID of the state"
					},
					"districts_id": {
						"type": "integer",
						"format": "int64",
						"description": "ID of the district"
					},
					"posttypes_id": {
						"type": "integer",
						"format": "int64",
						"description": "ID of the post type"
					},
					"kindofpropertymasters_id": {
						"type": "integer",
						"format": "int64",
						"description": "ID of the kind of property master"
					},
					"propertytypemasters_id": {
						"type": "integer",
						"format": "int64",
						"description": "ID of the property type master"
					},
					"minbudgets": {
						"type": "integer",
						"description": "Minimum budget"
					},
					"maxbudgets": {
						"type": "integer",
						"description": "Maximum budget"
					},
					"minarea": {
						"type": "integer",
						"description": "Minimum area"
					},
					"maxarea": {
						"type": "integer",
						"description": "Maximum area"
					},
					"areaunits_id": {
						"type": "integer",
						"format": "int64",
						"description": "ID of the area unit"
					},
					"budgetunit": {
						"type": "string",
						"description": "Unit of the budget"
					},
					"address": {
						"type": "string",
						"description": "address"
					},
					"users_id": {
						"type": "integer",
						"format": "int64",
						"description": "ID of the user"
					},
					"totalrooms": {
						"type": "string",
						"description": "Total number of rooms"
					},
					"isnew": {
						"type": "string",
						"enum": [
							"yes",
							"no"
						],
						"description": "Whether the requirement is new or not"
					},
					"possession": {
						"type": "string",
						"enum": [
							"ready-to-move",
							"under-construction"
						],
						"description": "Possession status"
					},
					"expecteddate": {
						"type": "string",
						"format": "date-time",
						"description": "Expected date"
					},
					"furnishstatus": {
						"type": "string",
						"enum": [
							"unfurnished",
							"semi-furnished",
							"furnished"
						],
						"description": "Furnish status"
					},
					"types": {
						"type": "string",
						"enum": [
							"property",
							"builder",
							"contractor"
						],
						"description": "Type of requirement"
					},
					"reqbuildertypes_id": {
						"type": "integer",
						"format": "int64",
						"description": "ID of the builder type requirement"
					},
					"reqothervalue": {
						"type": "string",
						"description": "Other values for the requirement"
					},
					"projectbrief": {
						"type": "string",
						"description": "Brief description of the project"
					},
					"reqcontractortypes_id": {
						"type": "integer",
						"format": "int64",
						"description": "ID of the contractor type requirement"
					},
					"nooffloors": {
						"type": "integer",
						"description": "Number of floors"
					},
					"avgarea": {
						"type": "integer",
						"description": "Average area"
					},
					"avgareaunits_id": {
						"type": "integer",
						"format": "int64",
						"description": "ID of the average area unit"
					},
					"created_at": {
						"type": "string",
						"format": "date-time",
						"description": "Timestamp of creation"
					},
					"modified_at": {
						"type": "string",
						"format": "date-time",
						"description": "Timestamp of last modification"
					}
				},
				"required": [
					"id",
					"uuid",
					"latitude",
					"longitude",
					"status",
					"states_id",
					"districts_id",
					"minbudgets",
					"minarea",
					"areaunits_id",
					"users_id",
					"totalrooms",
					"types"
				],
				"example": {
					"id": 1,
					"uuid": "123e4567-e89b-12d3-a456-426614174000",
					"refno": "RQ1",
					"latitude": 12.3456789,
					"longitude": 98.7654321,
					"status": "active",
					"states_id": 1,
					"districts_id": 1,
					"posttypes_id": 1,
					"kindofpropertymasters_id": 1,
					"propertytypemasters_id": 1,
					"minbudgets": 100000,
					"maxbudgets": 500000,
					"minarea": 1000,
					"maxarea": 5000,
					"areaunits_id": 1,
					"budgetunit": "USD",
					"users_id": 1,
					"totalrooms": "5",
					"isnew": "yes",
					"possession": "ready-to-move",
					"expecteddate": "2024-12-31T00:00:00Z",
					"furnishstatus": "semi-furnished",
					"types": "property",
					"reqbuildertypes_id": 1,
					"reqothervalue": "Additional details here",
					"projectbrief": "Brief description of the project",
					"reqcontractortypes_id": 1,
					"nooffloors": 3,
					"avgarea": 1500,
					"avgareaunits_id": 1,
					"created_at": "2024-08-09T12:00:00Z",
					"modified_at": "2024-08-09T12:00:00Z"
				}
			},
			"ReqBuilderTerm": {
				"type": "object",
				"description": "Represents a  contact only for Builder Requirement",
				"properties": {
					"id": {
						"type": "integer",
						"format": "int64",
						"description": "Unique identifier for the requirement."
					},
					"name": {
						"type": "string",
						"example": "Sample Name"
					},
					"status": {
						"type": "string",
						"enum": [
							"active",
							"inactive",
							"deleted"
						],
						"example": "active"
					},
					"created_at": {
						"type": "string",
						"format": "date-time",
						"example": "2024-08-06T14:00:00Z"
					},
					"modified_at": {
						"type": "string",
						"format": "date-time",
						"example": "2024-08-06T14:00:00Z"
					}
				}
			},
			"Review": {
				"type": "object",
				"description": "Represents a review given by a user.",
				"properties": {
					"id": {
						"type": "integer",
						"format": "int64",
						"description": "Unique identifier for the review."
					},
					"users_id": {
						"type": "integer",
						"format": "int64",
						"description": "Identifier for the user who made the review."
					},
					"reviewable_id": {
						"type": "integer",
						"description": "Identifier for the entity being reviewed."
					},
					"reviewable_type": {
						"type": "string",
						"description": "The type of entity being reviewed (e.g., \"product\", \"service\")."
					},
					"rate": {
						"type": "integer",
						"description": "Rating given by the user."
					},
					"review": {
						"type": "string",
						"description": "Textual review provided by the user."
					},
					"created_at": {
						"type": "string",
						"format": "date-time",
						"description": "Timestamp when the review was created."
					},
					"modified_at": {
						"type": "string",
						"format": "date-time",
						"description": "Timestamp when the review was last modified."
					}
				},
				"required": [
					"users_id",
					"reviewable_id",
					"reviewable_type"
				]
			},
			"RoomType": {
				"type": "object",
				"description": "Represents a type of room.",
				"properties": {
					"id": {
						"type": "integer",
						"format": "int64",
						"description": "Unique identifier for the room type."
					},
					"name": {
						"type": "string",
						"maxLength": 255,
						"description": "Name of the room type."
					},
					"status": {
						"type": "string",
						"enum": [
							"active",
							"deleted",
							"inactive",
							"sold"
						],
						"description": "Status of the room type."
					},
					"created_at": {
						"type": "string",
						"format": "date-time",
						"description": "Timestamp when the room type was created."
					},
					"modified_at": {
						"type": "string",
						"format": "date-time",
						"description": "Timestamp when the room type was last modified."
					}
				},
				"required": [
					"name",
					"status"
				]
			},
			"SelectPropertyTypeMaster": {
				"type": "object",
				"description": "Represents a master record for selected property types.",
				"properties": {
					"id": {
						"type": "integer",
						"format": "int64",
						"description": "Unique identifier for the property type master."
					},
					"name": {
						"type": "string",
						"maxLength": 255,
						"description": "Name of the property type master."
					},
					"slug": {
						"type": "string",
						"maxLength": 255,
						"description": "Slug for the property type master."
					},
					"created_at": {
						"type": "string",
						"format": "date-time",
						"description": "Timestamp when the property type master was created."
					},
					"modified_at": {
						"type": "string",
						"format": "date-time",
						"description": "Timestamp when the property type master was last modified."
					}
				},
				"required": [
					"name",
					"slug"
				]
			},
			"SelectPropertyType": {
				"type": "object",
				"description": "Represents a selected property type with references to other property types and categories.",
				"properties": {
					"id": {
						"type": "integer",
						"format": "int64",
						"description": "Unique identifier for the selected property type."
					},
					"propertytypemasters_id": {
						"type": "integer",
						"format": "int64",
						"description": "Identifier for the property type master this record belongs to."
					},
					"kindofproperties_id": {
						"type": "integer",
						"format": "int64",
						"description": "Identifier for the kind of property this record is associated with."
					},
					"created_at": {
						"type": "string",
						"format": "date-time",
						"description": "Timestamp when the selected property type was created."
					},
					"modified_at": {
						"type": "string",
						"format": "date-time",
						"description": "Timestamp when the selected property type was last modified."
					}
				},
				"required": [
					"propertytypemasters_id",
					"kindofproperties_id"
				]
			},
			"ServiceCategory": {
				"type": "object",
				"description": "Represents a category for services with a unique slug and a reference to service masters.",
				"properties": {
					"id": {
						"type": "integer",
						"format": "int64",
						"description": "Unique identifier for the service category."
					},
					"name": {
						"type": "string",
						"description": "Name of the service category."
					},
					"slug": {
						"type": "string",
						"description": "Unique slug for the service category."
					},
					"servicesmasters_id": {
						"type": "string",
						"description": "Slug of the service master this category belongs to."
					},
					"created_at": {
						"type": "string",
						"format": "date-time",
						"description": "Timestamp when the service category was created."
					},
					"modified_at": {
						"type": "string",
						"format": "date-time",
						"description": "Timestamp when the service category was last modified."
					}
				},
				"required": [
					"name",
					"slug",
					"servicesmasters_id"
				]
			},
			"Tenant": {
				"type": "object",
				"description": "Represents a tenant with a status and timestamps.",
				"properties": {
					"id": {
						"type": "integer",
						"format": "int64",
						"description": "Unique identifier for the tenant."
					},
					"name": {
						"type": "string",
						"description": "Name of the tenant."
					},
					"status": {
						"type": "string",
						"enum": [
							"active",
							"inactive",
							"deleted"
						],
						"description": "Current status of the tenant."
					},
					"created_at": {
						"type": "string",
						"format": "date-time",
						"description": "Timestamp when the tenant was created."
					},
					"modified_at": {
						"type": "string",
						"format": "date-time",
						"description": "Timestamp when the tenant was last modified."
					}
				},
				"required": [
					"name",
					"status"
				]
			},
			"Token": {
				"type": "object",
				"description": "Represents a token used for authentication or other purposes.",
				"properties": {
					"id": {
						"type": "integer",
						"format": "int64",
						"description": "Unique identifier for the token."
					},
					"users_id": {
						"type": "string",
						"description": "Identifier of the user associated with the token."
					},
					"key": {
						"type": "string",
						"description": "The token key used for authentication or identification."
					},
					"devicemasters_id": {
						"type": "integer",
						"format": "int64",
						"description": "Identifier of the device associated with the token."
					},
					"created_at": {
						"type": "string",
						"format": "date-time",
						"description": "Timestamp when the token was created."
					},
					"modified_at": {
						"type": "string",
						"format": "date-time",
						"description": "Timestamp when the token was last modified."
					}
				},
				"required": [
					"users_id",
					"key",
					"devicemasters_id"
				]
			},
			"Attach": {
				"type": "object",
				"description": "Represents an attachment with various attributes.",
				"properties": {
					"id": {
						"type": "integer",
						"format": "int64",
						"description": "Unique identifier for the attachment.",
						"example": 1
					},
					"name": {
						"type": "string",
						"description": "Name of the attachment.",
						"example": "Sample Document"
					},
					"slug": {
						"type": "string",
						"description": "Slug for the attachment.",
						"example": "sample-document"
					},
					"status": {
						"type": "string",
						"enum": [
							"active",
							"inactive",
							"deleted"
						],
						"description": "Current status of the attachment.",
						"example": "active"
					},
					"created_at": {
						"type": "string",
						"format": "date-time",
						"description": "Date and time when the attachment was created.",
						"example": "2024-07-26T14:00:00Z"
					},
					"modified_at": {
						"type": "string",
						"format": "date-time",
						"description": "Date and time when the attachment was last modified.",
						"example": "2024-07-26T15:00:00Z"
					}
				},
				"required": [
					"id",
					"name",
					"slug",
					"status",
					"created_at"
				]
			},
			"Project": {
				"type": "object",
				"properties": {
					"id": {
						"type": "integer",
						"format": "int64",
						"example": 1
					},
					"uuid": {
						"type": "string",
						"format": "uuid",
						"example": "550e8400-e29b-41d4-a716-446655440000"
					},
					"refno": {
						"type": "string",
						"example": "PJ1"
					},
					"buildername": {
						"type": "string",
						"example": "ABC Builders"
					},
					"city": {
						"type": "string",
						"example": "New York"
					},
					"descriptproject": {
						"type": "string",
						"nullable": true,
						"example": "A luxury residential project."
					},
					"areas_id": {
						"type": "integer",
						"format": "int64",
						"example": 1
					},
					"cities_id": {
						"type": "integer",
						"format": "int64",
						"example": 1
					},
					"landarea": {
						"type": "string",
						"example": "5000 sq ft"
					},
					"landunits_id": {
						"type": "integer",
						"format": "int64",
						"nullable": true,
						"example": 1
					},
					"latitude": {
						"type": "number",
						"format": "decimal",
						"example": 40.712776
					},
					"longitude": {
						"type": "number",
						"format": "decimal",
						"example": -74.005974
					},
					"pname": {
						"type": "string",
						"example": "Project XYZ"
					},
					"postedby": {
						"type": "string",
						"enum": [
							"owner",
							"broker",
							"developer",
							"builder",
							"other",
							"promoter"
						],
						"example": "builder"
					},
					"states_id": {
						"type": "integer",
						"format": "int64",
						"example": 1
					},
					"districts_id": {
						"type": "integer",
						"format": "int64",
						"example": 1
					},
					"users_id": {
						"type": "integer",
						"format": "int64",
						"example": 1
					},
					"rera": {
						"type": "string",
						"nullable": true,
						"example": "RERA12345"
					},
					"brochure": {
						"type": "string",
						"nullable": true,
						"example": "http://example.com/brochure.pdf"
					},
					"contactdetails": {
						"type": "string",
						"nullable": true,
						"example": "Contact us at info@example.com"
					},
					"lunchingdate": {
						"type": "string",
						"format": "date",
						"nullable": true,
						"example": "2024-01-01"
					},
					"officeaddress": {
						"type": "string",
						"nullable": true,
						"example": "123 Main St, New York, NY"
					},
					"videourl": {
						"type": "string",
						"nullable": true,
						"example": "http://example.com/video.mp4"
					},
					"websiteurl": {
						"type": "string",
						"nullable": true,
						"example": "http://example.com"
					},
					"telephonicno": {
						"type": "string",
						"example": "+1234567890"
					},
					"isverified": {
						"type": "string",
						"enum": [
							"pending",
							"approved",
							"rejected"
						],
						"default": "pending",
						"example": "approved"
					},
					"status": {
						"type": "string",
						"enum": [
							"active",
							"inactive",
							"sold",
							"deleted"
						],
						"default": "active",
						"example": "active"
					},
					"promoted": {
						"type": "string",
						"default": "no",
						"example": "yes"
					},
					"created_at": {
						"type": "string",
						"format": "date-time",
						"nullable": true,
						"example": "2024-01-01T12:00:00Z"
					},
					"modified_at": {
						"type": "string",
						"format": "date-time",
						"nullable": true,
						"example": "2024-01-02T12:00:00Z"
					}
				},
				"required": [
					"uuid",
					"buildername",
					"city",
					"areas_id",
					"cities_id",
					"landarea",
					"latitude",
					"longitude",
					"pname",
					"postedby",
					"states_id",
					"districts_id",
					"users_id",
					"telephonicno",
					"isverified",
					"status"
				]
			},
			"Building": {
				"type": "object",
				"properties": {
					"id": {
						"type": "integer",
						"format": "int64",
						"example": 1
					},
					"projects_id": {
						"type": "integer",
						"format": "int64",
						"example": 1
					},
					"type": {
						"type": "string",
						"nullable": true,
						"example": "Residential"
					},
					"descriptphase": {
						"type": "string",
						"nullable": true,
						"example": "Phase 1 of the project."
					},
					"buildingname": {
						"type": "string",
						"nullable": true,
						"example": "Building A"
					},
					"expectedby": {
						"type": "string",
						"format": "date",
						"nullable": true,
						"example": "2024-12-31"
					},
					"expecteddate": {
						"type": "string",
						"format": "date",
						"nullable": true,
						"example": "2024-12-31"
					},
					"possession": {
						"type": "string",
						"nullable": true,
						"example": "Immediate"
					},
					"landarea": {
						"type": "string",
						"nullable": true,
						"example": "2000 sq ft"
					},
					"landunits_id": {
						"type": "integer",
						"format": "int64",
						"nullable": true,
						"example": 1
					},
					"totalfloors": {
						"type": "integer",
						"nullable": true,
						"example": 10
					},
					"created_at": {
						"type": "string",
						"format": "date-time",
						"nullable": true,
						"example": "2024-08-12T12:00:00Z"
					},
					"modified_at": {
						"type": "string",
						"format": "date-time",
						"nullable": true,
						"example": "2024-08-12T12:00:00Z"
					}
				},
				"required": [
					"projects_id"
				]
			},
			"Flat": {
				"type": "object",
				"properties": {
					"id": {
						"type": "integer",
						"format": "int64",
						"example": 1
					},
					"buildings_id": {
						"type": "integer",
						"format": "int64",
						"example": 1
					},
					"balance": {
						"type": "number",
						"format": "decimal",
						"example": 100.50
					},
					"balanceunit": {
						"type": "string",
						"nullable": true,
						"example": "sq ft"
					},
					"buildup": {
						"type": "number",
						"format": "decimal",
						"example": 800.75
					},
					"builduparea": {
						"type": "string",
						"nullable": true,
						"example": "sq ft"
					},
					"buildupunits_id": {
						"type": "integer",
						"format": "int64",
						"nullable": true,
						"example": 1
					},
					"carpet": {
						"type": "number",
						"format": "decimal",
						"nullable": true,
						"example": 750.50
					},
					"carpetarea": {
						"type": "string",
						"nullable": true,
						"example": "sq ft"
					},
					"carpetunits_id": {
						"type": "integer",
						"format": "int64",
						"nullable": true,
						"example": 1
					},
					"descriptphase": {
						"type": "string",
						"nullable": true,
						"example": "Phase 1 description"
					},
					"forsell": {
						"type": "boolean",
						"nullable": true,
						"example": true
					},
					"forsellunit": {
						"type": "string",
						"nullable": true,
						"example": "USD"
					},
					"per_price": {
						"type": "number",
						"format": "decimal",
						"nullable": true,
						"example": 5000.00
					},
					"plot": {
						"type": "string",
						"nullable": true,
						"example": "Plot A"
					},
					"plotarea": {
						"type": "string",
						"nullable": true,
						"example": "sq ft"
					},
					"plotunits_id": {
						"type": "integer",
						"format": "int64",
						"nullable": true,
						"example": 1
					},
					"price": {
						"type": "number",
						"format": "decimal",
						"nullable": true,
						"example": 75000.00
					},
					"pricecurrencies_id": {
						"type": "integer",
						"format": "int64",
						"example": 1
					},
					"rateprunits_id": {
						"type": "integer",
						"format": "int64",
						"nullable": true,
						"example": 1
					},
					"kindofprojecttypes_id": {
						"type": "integer",
						"format": "int64",
						"nullable": true,
						"example": 1
					},
					"supperup": {
						"type": "number",
						"format": "decimal",
						"nullable": true,
						"example": 900.00
					},
					"supperuparea": {
						"type": "string",
						"nullable": true,
						"example": "sq ft"
					},
					"totalrooms": {
						"type": "integer",
						"nullable": true,
						"example": 3
					},
					"supperupunits_id": {
						"type": "integer",
						"format": "int64",
						"nullable": true,
						"example": 1
					},
					"created_at": {
						"type": "string",
						"format": "date-time",
						"nullable": true,
						"example": "2024-08-12T12:00:00Z"
					},
					"modified_at": {
						"type": "string",
						"format": "date-time",
						"nullable": true,
						"example": "2024-08-12T12:00:00Z"
					}
				},
				"required": [
					"buildings_id",
					"pricecurrencies_id"
				]
			},
			"UserHistory": {
				"type": "object",
				"properties": {
					"id": {
						"type": "integer",
						"description": "The ID of the user history entry"
					},
					"users_id": {
						"type": "integer",
						"description": "ID of the user who created the history entry"
					},
					"userhistorable_id": {
						"type": "integer",
						"description": "ID of the associated item (property, service, project, or requirement)"
					},
					"userhistorable_type": {
						"type": "string",
						"description": "Type of associated item",
						"enum": [
							"properties",
							"projects",
							"requirements",
							"services"
						]
					},
					"createdAt": {
						"type": "string",
						"format": "date-time",
						"description": "Timestamp when the entry was created"
					},
					"updatedAt": {
						"type": "string",
						"format": "date-time",
						"description": "Timestamp when the entry was last updated"
					}
				}
			},
			"exbuildings": {
				"description": "Schema for exbuildings data",
				"type": "object",
				"properties": {
					"id": {
						"type": "integer",
						"description": "Primary key for the exbuilding",
						"example": 1
					},
					"title": {
						"type": "string",
						"description": "Title of the exbuilding",
						"example": "Building A"
					},
					"description": {
						"type": "string",
						"description": "Description of the exbuilding",
						"example": "A description of Building A"
					},
					"restrictedzone": {
						"type": "string",
						"enum": [
							"yes",
							"no"
						],
						"description": "Indicates if the building is in a restricted zone",
						"example": "no"
					},
					"restrictedzonelabel": {
						"type": "string",
						"enum": [
							"restricted area",
							"permit area"
						],
						"description": "Label for the restricted zone",
						"example": "permit area"
					},
					"refcode": {
						"type": "string",
						"description": "Reference code for the exbuilding",
						"example": "BLA001"
					},
					"floorno": {
						"type": "string",
						"description": "Floor number of the exbuilding",
						"example": "3"
					},
					"states_id": {
						"type": "integer",
						"description": "Foreign key to the states table",
						"example": 1
					},
					"districts_id": {
						"type": "integer",
						"description": "Foreign key to the districts table",
						"example": 1
					},
					"areas_id": {
						"type": "integer",
						"description": "Foreign key to the areas table",
						"example": 1
					},
					"cities_id": {
						"type": "integer",
						"description": "Foreign key to the cities table",
						"example": 1
					},
					"status": {
						"type": "string",
						"enum": [
							"active",
							"inactive",
							"deleted"
						],
						"description": "Status of the exbuilding",
						"example": "active"
					},
					"created_at": {
						"type": "string",
						"format": "date-time",
						"description": "Timestamp when the exbuilding was created",
						"example": "2024-08-26T10:00:00Z"
					},
					"modified_at": {
						"type": "string",
						"format": "date-time",
						"description": "Timestamp when the exbuilding was last modified",
						"example": "2024-08-26T10:00:00Z"
					}
				},
				"required": [
					"refcode",
					"states_id",
					"districts_id",
					"areas_id",
					"cities_id",
					"status",
					"created_at",
					"modified_at"
				]
			},
			"PropertyLabel": {
				"type": "object",
				"properties": {
					"id": {
						"type": "integer",
						"description": "Unique identifier for the property label"
					},
					"name": {
						"type": "string",
						"description": "Name of the property label"
					},
					"propertytypemasters_id": {
						"type": "integer",
						"description": "ID of the related property type master"
					},
					"status": {
						"type": "string",
						"enum": [
							"active",
							"inactive",
							"deleted"
						],
						"description": "Status of the property label"
					},
					"created_at": {
						"type": "string",
						"format": "date-time",
						"description": "Creation timestamp of the property label record"
					},
					"modified_at": {
						"type": "string",
						"format": "date-time",
						"description": "Last modification timestamp of the property label record"
					}
				}
			},
			"ProjectLabel": {
				"type": "object",
				"properties": {
					"id": {
						"type": "integer",
						"description": "Unique identifier for the project label"
					},
					"name": {
						"type": "string",
						"description": "Name of the project label"
					},
					"projecttypes_id": {
						"type": "integer",
						"description": "ID of the related project type master"
					},
					"status": {
						"type": "string",
						"enum": [
							"active",
							"inactive",
							"deleted"
						],
						"description": "Status of the project label"
					},
					"created_at": {
						"type": "string",
						"format": "date-time",
						"description": "Creation timestamp of the project label record"
					},
					"modified_at": {
						"type": "string",
						"format": "date-time",
						"description": "Last modification timestamp of the project label record"
					}
				}
			},
			"City": {
				"type": "object",
				"properties": {
					"id": {
						"type": "integer",
						"format": "int64",
						"description": "Primary key of the city",
						"example": 1
					},
					"name": {
						"type": "string",
						"description": "Name of the city",
						"example": "New York"
					},
					"districts_id": {
						"type": "integer",
						"format": "int64",
						"description": "Foreign key referencing the district",
						"example": 2
					},
					"status": {
						"type": "string",
						"enum": [
							"active",
							"inactive",
							"deleted"
						],
						"description": "Status of the city",
						"example": "active"
					},
					"created_at": {
						"type": "string",
						"format": "date-time",
						"description": "Date when the city was created",
						"example": "2023-01-01T00:00:00Z"
					},
					"modified_at": {
						"type": "string",
						"format": "date-time",
						"description": "Date when the city was last modified",
						"example": "2023-06-01T00:00:00Z"
					}
				},
				"required": [
					"name",
					"districts_id",
					"status",
					"created_at",
					"modified_at"
				]
			},
			"Packagemaster": {
				"type": "object",
				"properties": {
					"id": {
						"type": "integer",
						"example": 1
					},
					"name": {
						"type": "string",
						"example": "Basic Package"
					},
					"startdate": {
						"type": "string",
						"format": "date-time",
						"example": "2024-01-01T00:00:00Z"
					},
					"enddate": {
						"type": "string",
						"format": "date-time",
						"example": "2024-12-31T00:00:00Z"
					},
					"iosid": {
						"type": "string",
						"example": "IOS-12345"
					},
					"validity": {
						"type": "integer",
						"example": 30
					},
					"index": {
						"type": "integer",
						"example": 1
					},
					"price": {
						"type": "string",
						"example": "99.99"
					},
					"suitablefor": {
						"type": "string",
						"example": "All Users"
					},
					"type": {
						"type": "string",
						"enum": [
							"free",
							"paid"
						],
						"example": "paid"
					},
					"districts_id": {
						"type": "integer",
						"example": 2
					},
					"created_by": {
						"type": "integer",
						"example": 1
					},
					"created_at": {
						"type": "string",
						"format": "date-time",
						"example": "2024-01-01T00:00:00Z"
					},
					"modified_at": {
						"type": "string",
						"format": "date-time",
						"example": "2024-01-01T00:00:00Z"
					}
				}
			},
			"Eliteads": {
				"description": "eliteads table",
				"type": "object",
				"properties": {
					"id": {
						"type": "number"
					},
					"districts_id": {
						"type": "number"
					},
					"eliteadable_id": {
						"type": "number"
					},
					"eliteadable_type": {
						"type": "string"
					},
					"properties": {
						"type": "object",
						"items": {
							"$ref": "#/components/schemas/Property"
						}
					},
					"projects": {
						"type": "object",
						"items": {
							"$ref": "#/components/schemas/Project"
						}
					},
					"services": {
						"type": "object",
						"items": {
							"$ref": "#/components/schemas/services"
						}
					},
					"requirements": {
						"type": "object",
						"items": {
							"$ref": "#/components/schemas/Requirements"
						}
					},
					"districts": {
						"type": "object",
						"items": {
							"$ref": "#/components/schemas/District"
						}
					}
				}
			},
			"Dashboard": {
				"description": "Dashboard counts",
				"type": "object",
				"properties": {
					"posted": {
						"type": "object",
						"properties": {
							"properties": {
								"type": "integer",
								"example": 27
							},
							"projects": {
								"type": "integer",
								"example": 5
							},
							"services": {
								"type": "integer",
								"example": 1
							},
							"requirements": {
								"type": "integer",
								"example": 7
							}
						}
					},
					"shortlisted": {
						"type": "object",
						"properties": {
							"properties": {
								"type": "integer",
								"example": 5
							},
							"projects": {
								"type": "integer",
								"example": 3
							},
							"services": {
								"type": "integer",
								"example": 1
							},
							"requirements": {
								"type": "integer",
								"example": 0
							}
						}
					},
					"recentsearches": {
						"type": "object",
						"properties": {
							"properties": {
								"type": "integer",
								"example": 83
							},
							"projects": {
								"type": "integer",
								"example": 70
							},
							"services": {
								"type": "integer",
								"example": 5
							},
							"requirements": {
								"type": "integer",
								"example": 11
							}
						}
					},
					"notifications": {
						"type": "integer",
						"example": 3
					}
				}
			},
			"Notifications": {
				"description": "Dashboard counts",
				"type": "object",
				"properties": {
					"id": {
						"type": "integer",
						"example": 3347
					},
					"created_by": {
						"type": "integer",
						"example": 11
					},
					"users_id": {
						"type": "integer",
						"example": 760
					},
					"notificationable_id": {
						"type": "integer",
						"example": 704
					},
					"notificationable_type": {
						"type": "string",
						"example": "properties"
					},
					"title": {
						"type": "string",
						"example": "Your property has been visited by someone."
					},
					"body": {
						"type": "string",
						"example": ""
					},
					"redirect": {
						"type": "string",
						"example": ""
					},
					"type": {
						"type": "string",
						"example": "view-details"
					},
					"read": {
						"type": "boolean",
						"example": false
					},
					"status": {
						"type": "string",
						"example": "active"
					},
					"created_at": {
						"type": "string",
						"format": "date-time",
						"example": "2024-08-08T11:11:51.000Z"
					},
					"modified_at": {
						"type": "string",
						"format": "date-time",
						"example": "2024-08-08T11:11:51.000Z"
					},
					"senders": {
						"type": "object",
						"properties": {
							"id": {
								"type": "integer",
								"example": 11
							},
							"refno": {
								"type": "string",
								"example": "UR11"
							},
							"refname": {
								"type": "string",
								"nullable": true
							},
							"name": {
								"type": "string",
								"example": "nikhil prakash shende"
							},
							"email": {
								"type": "string",
								"example": "nkhlshnd@gmail.com"
							},
							"mobile": {
								"type": "string",
								"example": "9730854135"
							},
							"loginas": {
								"type": "string",
								"example": "owner"
							},
							"status": {
								"type": "string",
								"example": "active"
							},
							"created_at": {
								"type": "string",
								"format": "date-time",
								"example": "2023-08-19T08:19:58.000Z"
							},
							"modified_at": {
								"type": "string",
								"format": "date-time",
								"example": "2024-08-15T15:10:39.000Z"
							}
						}
					},
					"receivers": {
						"type": "object",
						"properties": {
							"id": {
								"type": "integer",
								"example": 760
							},
							"refno": {
								"type": "string",
								"example": "UR760"
							},
							"refname": {
								"type": "string",
								"nullable": true
							},
							"name": {
								"type": "string",
								"example": "Muskan"
							},
							"email": {
								"type": "string",
								"example": "hfhc@jhchc.jvj"
							},
							"mobile": {
								"type": "string",
								"example": "7757959419"
							},
							"loginas": {
								"type": "string",
								"example": "owner"
							},
							"status": {
								"type": "string",
								"example": "active"
							},
							"created_at": {
								"type": "string",
								"format": "date-time",
								"example": "2024-07-01T08:48:28.000Z"
							},
							"modified_at": {
								"type": "string",
								"format": "date-time",
								"example": "2024-07-02T10:02:32.000Z"
							}
						}
					}
				}
			}
		}
	},
	"security": [
		{
			"bearerAuth": {
				"type": "http",
				"scheme": "bearer",
				"bearerFormat": "JWT"
			}
		}
	],
	"paths": {
		"/settings": {
			"get": {
				"summary": "Get settings",
				"tags": [
					"settings"
				],
				"requestBody": {
					"required": false
				},				
				"responses": {
					"200": {
						"description": "An settings",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"items": null,
									"$ref": "#/components/schemas/Settings"
								}
							}
						}
					}
				}
			}
		},
		"/otps": {
			"post": {
				"summary": "Create a new OTP",
				"tags": [
					"OTPs"
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object",
								"properties": {
									"mobile": {
										"type": "string",
										"description": "Mobile number for OTP generation"
									}
								},
								"required": [
									"mobile"
								]
							}
						}
					}
				},
				"responses": {
					"201": {
						"description": "OTP generated successfully",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {}
								}
							}
						}
					},
					"400": {
						"description": "Bad Request – Invalid mobile number or validation errors",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"errors": {
											"type": "array",
											"items": {
												"type": "object",
												"properties": {
													"msg": {
														"type": "string"
													}
												}
											}
										}
									}
								}
							}
						}
					}
				}
			}
		},
		"/authorizations": {
			"post": {
				"tags": [
					"Authorizations"
				],
				"summary": "get access token OTP",
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object",
								"properties": {
									"mobile": {
										"type": "string"
									},
									"otp": {
										"type": "string"
									},
									"devicemasters": {
										"type": "object",
										"properties": {
											"device_name": {
												"type": "string"
											},
											"device_os": {
												"type": "string"
											},
											"software_version": {
												"type": "string"
											}
										}
									}
								}
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "Welcome To Property On Location App",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"items": null,
									"$ref": "#/components/schemas/users"
								}
							}
						}
					},
					"422": {
						"description": "validation error"
					},
					"401": {
						"description": "Unauthorized"
					},
					"500": {
						"description": "Internal Server Error"
					}
				}
			}
		},
		"/assets": {
			"post": {
				"summary": "upload files",
				"tags": [
					"assets upload"
				],
				"requestBody": {
					"required": true,
					"content": {
						"multipart/form-data": {
							"schema": {
								"type": "object",
								"properties": {
									"file": {
										"type": "string",
										"format": "binary"
									}
								}
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "An services",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"items": null,
									"$ref": "#/components/schemas/assets"
								}
							}
						}
					}
				}
			}
		},
		"/districts/{id}/eliteads": {
			"get": {
				"tags": [
					"eliteads"
				],
				"summary": "get elitead",
				"description": "Optional extended description in CommonMark or HTML.",
				"parameters": [
					{
						"name": "id",
						"in": "path",
						"required": true,
						"schema": {
							"type": "integer"
						}
					}
				],
				"responses": {
					"200": {
						"description": "Welcome To Property On Location App",
						"content": {
							"application/json": null
						}
					},
					"422": {
						"description": "validation error"
					},
					"401": {
						"description": "Unauthorized"
					},
					"500": {
						"description": "Internal Server Error"
					}
				}
			}
		},
		"/users/{id}/dashboard": {
			"get": {
				"tags": [
					"dashboard counts"
				],
				"summary": "get user dashboard counts",
				"description": "Optional extended description in CommonMark or HTML.",
				"parameters": [
					{
						"name": "id",
						"in": "path",
						"required": true,
						"schema": {
							"type": "integer"
						}
					}
				],
				"responses": {
					"200": {
						"description": "Welcome To Property On Location App",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"items": null,
									"$ref": "#/components/schemas/Dashboard"
								}
							}
						}
					},
					"422": {
						"description": "validation error"
					},
					"401": {
						"description": "Unauthorized"
					},
					"500": {
						"description": "Internal Server Error"
					}
				}
			}
		},
		"/users/{id}/notifications": {
			"get": {
				"tags": [
					"notifications"
				],
				"summary": "get notifications of user",
				"description": "Optional extended description in CommonMark or HTML.",
				"parameters": [
					{
						"name": "id",
						"in": "path",
						"required": true,
						"schema": {
							"type": "integer"
						}
					}
				],
				"responses": {
					"200": {
						"description": "Welcome To Property On Location App",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"items": null,
									"$ref": "#/components/schemas/Notifications"
								}
							}
						}
					},
					"422": {
						"description": "validation error"
					},
					"401": {
						"description": "Unauthorized"
					},
					"500": {
						"description": "Internal Server Error"
					}
				}
			}
		},
		"/users/{uid}/notifications/{id}": {
			"delete": {
				"summary": "Delete notifications by IDs",
				"operationId": "deleteNotifications",
				"tags": [
					"notifications"
				],
				"parameters": [
					{
						"name": "uid",
						"in": "path",
						"required": true,
						"description": "users id",
						"schema": {
							"type": "string",
							"example": "1"
						}
					},
					{
						"name": "id",
						"in": "path",
						"required": true,
						"description": "Comma-separated list of notification IDs to delete",
						"schema": {
							"type": "string",
							"example": "1,2,3"
						}
					}
				],
				"responses": {
					"200": {
						"description": "Notifications deleted successfully",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"success": {
											"type": "boolean",
											"example": true
										},
										"message": {
											"type": "string",
											"example": "2 notification(s) deleted successfully"
										}
									}
								}
							}
						}
					},
					"400": {
						"description": "Bad request, invalid notification IDs",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean",
											"example": true
										},
										"message": {
											"type": "string",
											"example": "Invalid notification ID format"
										}
									}
								}
							}
						}
					},
					"404": {
						"description": "Notifications not found or user is not authorized to delete them",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean",
											"example": true
										},
										"message": {
											"type": "string",
											"example": "Not allowed to delete notifications on behalf of another user"
										}
									}
								}
							}
						}
					},
					"500": {
						"description": "Server error",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean",
											"example": true
										},
										"status": {
											"type": "integer",
											"example": 500
										},
										"message": {
											"type": "string",
											"example": "Internal server error"
										}
									}
								}
							}
						}
					}
				}
			}
		},
		"/users/{id}/notifications/{nid}": {
			"put": {
				"tags": [
					"notifications"
				],
				"summary": "Update notifications",
				"description": "Allows a user to update the read status of specific notifications.",
				"parameters": [
					{
						"name": "id",
						"in": "path",
						"required": true,
						"type": "integer",
						"description": "The ID of the user whose notifications are being updated."
					},
					{
						"name": "nid",
						"in": "path",
						"required": true,
						"type": "string",
						"description": "Comma-separated list of notification IDs to update."
					},
					{
						"name": "Authorization",
						"in": "header",
						"required": true,
						"type": "string",
						"description": "Bearer token for authentication."
					},
					{
						"name": "body",
						"in": "body",
						"required": true,
						"schema": {
							"type": "object",
							"properties": {
								"read": {
									"type": "boolean",
									"example": true,
									"description": "The updated read status for the notifications."
								}
							},
							"required": [
								"read"
							]
						},
						"description": "The payload containing the new read status."
					}
				],
				"responses": {
					"200": {
						"description": "Notifications updated successfully.",
						"schema": {
							"type": "object",
							"properties": {
								"success": {
									"type": "boolean",
									"example": true
								},
								"message": {
									"type": "string",
									"example": "2 notifications(s) updated successfully"
								}
							}
						}
					},
					"201": {
						"description": "Unauthorized operation.",
						"schema": {
							"type": "object",
							"properties": {
								"error": {
									"type": "boolean",
									"example": true
								},
								"message": {
									"type": "string",
									"example": "not allowed to update notifications on behalf of another user"
								}
							}
						}
					},
					"500": {
						"description": "Internal server error.",
						"schema": {
							"type": "object",
							"properties": {
								"error": {
									"type": "boolean",
									"example": true
								},
								"status": {
									"type": "integer",
									"example": 500
								},
								"message": {
									"type": "string",
									"example": "An unexpected error occurred"
								}
							}
						}
					}
				},
				"security": [
					{
						"BearerAuth": []
					}
				]
			}
		},
		"/platform/devices/properties": {
			"get": {
				"tags": [
					"properties"
				],
				"summary": "get property listing by grouping markers_id",
				"description": "Optional extended description in CommonMark or HTML.",
				"parameters": [
					{
						"in": "query",
						"name": "first",
						"schema": {
							"type": "integer"
						},
						"description": "The number of items to skip before starting to collect the result set"
					},
					{
						"in": "query",
						"name": "rows",
						"schema": {
							"type": "integer"
						},
						"description": "The numbers of items to return"
					},
					{
						"in": "query",
						"name": "select",
						"schema": {
							"type": "string"
						},
						"description": "select perticular columns"
					},
					{
						"in": "query",
						"name": "pagination",
						"schema": {
							"type": "string"
						},
						"description": "if pagination needed set it to true"
					},
					{
						"in": "query",
						"name": "filter",
						"schema": {
							"type": "string"
						},
						"description": "(column_name,oprator,value|column_name,oprator,value) use this format to filter, operater is optional,supported operator are [=,!=,<,<=,>,>=],if value are multiple then use COMMA seprated,each filter seprated by | symbol. ex. filter=districts_id,=,360|promoted,no"
					},
					{
						"in": "query",
						"name": "order",
						"schema": {
							"type": "string"
						},
						"description": "(column_name,type|column_name,type) use this format to order, supported type are [ASC,DESC], each filter order by | symbol. ex. order=states_id,DESC|budget,ASC"
					}
				],
				"responses": {
					"200": {
						"description": "Welcome To Property On Location App",
						"content": {
							"application/json": null
						}
					},
					"422": {
						"description": "validation error"
					},
					"401": {
						"description": "Unauthorized"
					},
					"500": {
						"description": "Internal Server Error"
					}
				}
			}
		},
		"/properties": {
			"get": {
				"tags": [
					"properties"
				],
				"summary": "get property listing",
				"description": "Optional extended description in CommonMark or HTML.",
				"parameters": [
					{
						"in": "query",
						"name": "first",
						"schema": {
							"type": "integer"
						},
						"description": "The number of items to skip before starting to collect the result set"
					},
					{
						"in": "query",
						"name": "rows",
						"schema": {
							"type": "integer"
						},
						"description": "The numbers of items to return"
					},
					{
						"in": "query",
						"name": "select",
						"schema": {
							"type": "string"
						},
						"description": "select perticular columns"
					},
					{
						"in": "query",
						"name": "pagination",
						"schema": {
							"type": "string"
						},
						"description": "if pagination needed set it to true"
					},
					{
						"in": "query",
						"name": "filter",
						"schema": {
							"type": "string"
						},
						"description": "(column_name,oprator,value|column_name,oprator,value) use this format to filter, operater is optional,supported operator are [=,!=,<,<=,>,>=],if value are multiple then use COMMA seprated,each filter seprated by | symbol. ex. filter=districts_id,=,360|promoted,no"
					},
					{
						"in": "query",
						"name": "order",
						"schema": {
							"type": "string"
						},
						"description": "(column_name,type|column_name,type) use this format to order, supported type are [ASC,DESC], each filter order by | symbol. ex. order=states_id,DESC|budget,ASC"
					}
				],
				"responses": {
					"200": {
						"description": "Welcome To Property On Location App",
						"content": {
							"application/json": null
						}
					},
					"422": {
						"description": "validation error"
					},
					"401": {
						"description": "Unauthorized"
					},
					"500": {
						"description": "Internal Server Error"
					}
				}
			}
		},
		"/properties/{id}": {
			"get": {
				"tags": [
					"properties"
				],
				"summary": "Get an Property by ID",
				"description": "Optional extended description in CommonMark or HTML.",
				"parameters": [
					{
						"name": "id",
						"in": "path",
						"required": true,
						"schema": {
							"type": "integer"
						}
					}
				],
				"requestBody": {
					"required": false
				},
				"responses": {
					"200": {
						"description": "An services",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"items": null,
									"$ref": "#/components/schemas/Property"
								}
							}
						}
					},
					"422": {
						"description": "validation error"
					},
					"401": {
						"description": "Unauthorized"
					},
					"500": {
						"description": "Internal Server Error"
					}
				}
			},
			"put": {
				"tags": [
					"properties"
				],
				"summary": "Update a property by ID",
				"parameters": [
					{
						"name": "id",
						"in": "path",
						"required": true,
						"schema": {
							"type": "integer"
						},
						"description": "ID of the property to update"
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/Property"
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "A Property",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/Property"
								}
							}
						}
					},
					"422": {
						"description": "Validation error"
					},
					"401": {
						"description": "Unauthorized"
					},
					"500": {
						"description": "Internal Server Error"
					}
				}
			},
			"delete": {
				"summary": "delete an property by ID",
				"tags": [
					"properties"
				],
				"parameters": [
					{
						"name": "id",
						"in": "path",
						"required": true,
						"schema": {
							"type": "integer"
						}
					}
				],
				"responses": {
					"200": {
						"description": "An propoerties",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"items": null,
									"$ref": "#/components/schemas/Property",
									"properties": {
										"photos": {
											"type": "array",
											"items": {
												"$ref": "#/components/schemas/assets"
											}
										}
									}
								}
							}
						}
					},
					"422": {
						"description": "validation error"
					},
					"401": {
						"description": "Unauthorized"
					},
					"500": {
						"description": "Internal Server Error"
					}
				}
			}
		},
		"/cities/{id}/areas": {
			"get": {
				"tags": [
					"get areas of specific city"
				],
				"summary": "Get areas of specific city",
				"description": "Optional extended description in CommonMark or HTML.",
				"parameters": [
					{
						"name": "id",
						"in": "path",
						"required": true,
						"schema": {
							"type": "integer"
						}
					}
				],
				"requestBody": {
					"required": false
				},
				"responses": {
					"200": {
						"description": "An Cities with areas",
						"content": {
							"application/json": {
								"schema": {
									"type": "array",
									"items": null,
									"$ref": "#/components/schemas/Area"
								}
							}
						}
					},
					"422": {
						"description": "validation error"
					},
					"401": {
						"description": "Unauthorized"
					},
					"500": {
						"description": "Internal Server Error"
					}
				}
			}
		},
		"/cities": {
			"get": {
				"tags": [
					"get cities"
				],
				"summary": "Get cities list",
				"description": "Optional extended description in CommonMark or HTML.",
				"requestBody": {
					"required": false
				},
				"responses": {
					"200": {
						"description": "An Cities ",
						"content": {
							"application/json": {
								"schema": {
									"type": "array",
									"items": null,
									"$ref": "#/components/schemas/City"
								}
							}
						}
					},
					"422": {
						"description": "validation error"
					},
					"401": {
						"description": "Unauthorized"
					},
					"500": {
						"description": "Internal Server Error"
					}
				}
			}
		},
		"/services": {
			"get": {
				"tags": [
					"services"
				],
				"summary": "get services listing",
				"description": "Optional extended description in CommonMark or HTML.",
				"parameters": [
					{
						"in": "query",
						"name": "first",
						"schema": {
							"type": "integer"
						},
						"description": "The number of items to skip before starting to collect the result set"
					},
					{
						"in": "query",
						"name": "rows",
						"schema": {
							"type": "integer"
						},
						"description": "The numbers of items to return"
					},
					{
						"in": "query",
						"name": "select",
						"schema": {
							"type": "string"
						},
						"description": "select perticular columns"
					},
					{
						"in": "query",
						"name": "pagination",
						"schema": {
							"type": "string"
						},
						"description": "if pagination needed set it to true"
					},
					{
						"in": "query",
						"name": "filter",
						"schema": {
							"type": "string"
						},
						"description": "(column_name,oprator,value|column_name,oprator,value) use this format to filter, operater is optional,supported operator are [=,!=,<,<=,>,>=],if value are multiple then use COMMA seprated,each filter seprated by | symbol. ex. filter=districts_id,=,360|promoted,no"
					},
					{
						"in": "query",
						"name": "order",
						"schema": {
							"type": "string"
						},
						"description": "(column_name,type|column_name,type) use this format to order, supported type are [ASC,DESC], each filter order by | symbol. ex. order=states_id,DESC|budget,ASC"
					}
				],
				"responses": {
					"200": {
						"description": "Welcome To Property On Location App",
						"content": {
							"application/json": {
								"schema": {
									"type": "array",
									"items": {
										"$ref": "#/components/schemas/services"
									}
								}
							}
						}
					},
					"422": {
						"description": "validation error"
					},
					"401": {
						"description": "Unauthorized"
					},
					"500": {
						"description": "Internal Server Error"
					}
				}
			},
			"post": {
				"tags": [
					"services"
				],
				"summary": "post service",
				"description": "Optional extended description in CommonMark or HTML.",
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object",
								"items": null,
								"$ref": "#/components/schemas/services"
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "Welcome To Property On Location App",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"items": null,
									"$ref": "#/components/schemas/services"
								}
							}
						}
					},
					"422": {
						"description": "validation error"
					},
					"401": {
						"description": "Unauthorized"
					},
					"500": {
						"description": "Internal Server Error"
					}
				}
			}
		},
		"/services/{id}": {
			"get": {
				"tags": [
					"services"
				],
				"summary": "Get an services by ID",
				"description": "Optional extended description in CommonMark or HTML.",
				"parameters": [
					{
						"name": "id",
						"in": "path",
						"required": true,
						"schema": {
							"type": "integer"
						}
					}
				],
				"requestBody": {
					"required": false
				},
				"responses": {
					"200": {
						"description": "An services",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"items": null,
									"$ref": "#/components/schemas/services"
								}
							}
						}
					},
					"422": {
						"description": "validation error"
					},
					"401": {
						"description": "Unauthorized"
					},
					"500": {
						"description": "Internal Server Error"
					}
				}
			},
			"put": {
				"security": [
					{
						"bearerAuth": []
					}
				],
				"tags": [
					"services"
				],
				"summary": "update an services by ID",
				"parameters": [
					{
						"name": "id",
						"in": "path",
						"required": true,
						"schema": {
							"type": "integer"
						}
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": null,
							"$ref": "#/components/schemas/services"
						}
					}
				},
				"responses": {
					"200": {
						"description": "An services",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/services"
								}
							}
						}
					},
					"422": {
						"description": "validation error"
					},
					"401": {
						"description": "Unauthorized"
					},
					"500": {
						"description": "Internal Server Error"
					}
				}
			},
			"delete": {
				"summary": "delete an services by ID",
				"tags": [
					"services"
				],
				"parameters": [
					{
						"name": "id",
						"in": "path",
						"required": true,
						"schema": {
							"type": "integer"
						}
					}
				],
				"responses": {
					"200": {
						"description": "An services",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"items": null,
									"$ref": "#/components/schemas/services",
									"properties": {
										"photos": {
											"type": "array",
											"items": {
												"$ref": "#/components/schemas/assets"
											}
										}
									}
								}
							}
						}
					},
					"422": {
						"description": "validation error"
					},
					"401": {
						"description": "Unauthorized"
					},
					"500": {
						"description": "Internal Server Error"
					}
				}
			}
		},
		"/requirements": {
			"get": {
				"tags": [
					"requirements"
				],
				"summary": "get requirements listing",
				"description": "Optional extended description in CommonMark or HTML.",
				"parameters": [
					{
						"in": "query",
						"name": "first",
						"schema": {
							"type": "integer"
						},
						"description": "The number of items to skip before starting to collect the result set"
					},
					{
						"in": "query",
						"name": "rows",
						"schema": {
							"type": "integer"
						},
						"description": "The numbers of items to return"
					},
					{
						"in": "query",
						"name": "select",
						"schema": {
							"type": "string"
						},
						"description": "select perticular columns"
					},
					{
						"in": "query",
						"name": "pagination",
						"schema": {
							"type": "string"
						},
						"description": "if pagination needed set it to true"
					},
					{
						"in": "query",
						"name": "filter",
						"schema": {
							"type": "string"
						},
						"description": "(column_name,oprator,value|column_name,oprator,value) use this format to filter, operater is optional,supported operator are [=,!=,<,<=,>,>=],if value are multiple then use COMMA seprated,each filter seprated by | symbol. ex. filter=districts_id,=,360|promoted,no"
					},
					{
						"in": "query",
						"name": "order",
						"schema": {
							"type": "string"
						},
						"description": "(column_name,type|column_name,type) use this format to order, supported type are [ASC,DESC], each filter order by | symbol. ex. order=states_id,DESC|budget,ASC"
					}
				],
				"responses": {
					"200": {
						"description": "Welcome To Property On Location App",
						"content": {
							"application/json": {
								"schema": {
									"type": "array",
									"items": {
										"$ref": "#/components/schemas/Requirements"
									}
								}
							}
						}
					},
					"422": {
						"description": "validation error"
					},
					"401": {
						"description": "Unauthorized"
					},
					"500": {
						"description": "Internal Server Error"
					}
				}
			},
			"post": {
				"tags": [
					"requirements"
				],
				"summary": "post requirements",
				"description": "Optional extended description in CommonMark or HTML.",
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object",
								"items": null,
								"$ref": "#/components/schemas/Requirements"
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "Welcome To Property On Location App",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"items": null,
									"$ref": "#/components/schemas/Requirements"
								}
							}
						}
					},
					"422": {
						"description": "validation error"
					},
					"401": {
						"description": "Unauthorized"
					},
					"500": {
						"description": "Internal Server Error"
					}
				}
			}
		},
		"/requirements/{id}": {
			"get": {
				"tags": [
					"requirements"
				],
				"summary": "Get an requirements by ID",
				"description": "Optional extended description in CommonMark or HTML.",
				"parameters": [
					{
						"name": "id",
						"in": "path",
						"required": true,
						"schema": {
							"type": "integer"
						}
					}
				],
				"requestBody": {
					"required": false
				},
				"responses": {
					"200": {
						"description": "An services",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"items": null,
									"$ref": "#/components/schemas/Requirements"
								}
							}
						}
					},
					"422": {
						"description": "validation error"
					},
					"401": {
						"description": "Unauthorized"
					},
					"500": {
						"description": "Internal Server Error"
					}
				}
			},
			"put": {
				"tags": [
					"requirements"
				],
				"summary": "Update a requirement",
				"operationId": "updateRequirement",
				"parameters": [
					{
						"name": "id",
						"in": "path",
						"required": true,
						"schema": {
							"type": "integer",
							"format": "int64"
						}
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/Requirements"
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "Requirement updated successfully",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/Requirements"
								}
							}
						}
					},
					"404": {
						"description": "Requirement not found"
					}
				}
			},
			"delete": {
				"tags": [
					"requirements"
				],
				"summary": "Delete a requirement",
				"operationId": "deleteRequirement",
				"parameters": [
					{
						"name": "id",
						"in": "path",
						"required": true,
						"schema": {
							"type": "integer",
							"format": "int64"
						}
					}
				],
				"responses": {
					"204": {
						"description": "Requirement deleted successfully"
					},
					"404": {
						"description": "Requirement not found"
					}
				}
			}
		},
		"/projects": {
			"get": {
				"tags": [
					"projects"
				],
				"summary": "get projects listing",
				"description": "Optional extended description in CommonMark or HTML.",
				"parameters": [
					{
						"in": "query",
						"name": "first",
						"schema": {
							"type": "integer"
						},
						"description": "The number of items to skip before starting to collect the result set"
					},
					{
						"in": "query",
						"name": "rows",
						"schema": {
							"type": "integer"
						},
						"description": "The numbers of items to return"
					},
					{
						"in": "query",
						"name": "select",
						"schema": {
							"type": "string"
						},
						"description": "select perticular columns"
					},
					{
						"in": "query",
						"name": "pagination",
						"schema": {
							"type": "string"
						},
						"description": "if pagination needed set it to true"
					},
					{
						"in": "query",
						"name": "filter",
						"schema": {
							"type": "string"
						},
						"description": "(column_name,oprator,value|column_name,oprator,value) use this format to filter, operater is optional,supported operator are [=,!=,<,<=,>,>=],if value are multiple then use COMMA seprated,each filter seprated by | symbol. ex. filter=districts_id,=,360|promoted,no"
					},
					{
						"in": "query",
						"name": "order",
						"schema": {
							"type": "string"
						},
						"description": "(column_name,type|column_name,type) use this format to order, supported type are [ASC,DESC], each filter order by | symbol. ex. order=states_id,DESC|budget,ASC"
					}
				],
				"responses": {
					"200": {
						"description": "Welcome To Property On Location App",
						"content": {
							"application/json": {
								"schema": {
									"type": "array",
									"items": {
										"$ref": "#/components/schemas/Project"
									}
								}
							}
						}
					},
					"422": {
						"description": "validation error"
					},
					"401": {
						"description": "Unauthorized"
					},
					"500": {
						"description": "Internal Server Error"
					}
				}
			},
			"post": {
				"tags": [
					"projects"
				],
				"summary": "post project",
				"description": "Optional extended description in CommonMark or HTML.",
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object",
								"items": null,
								"$ref": "#/components/schemas/Project"
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "Welcome To Property On Location App",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"items": null,
									"$ref": "#/components/schemas/Requirements"
								}
							}
						}
					},
					"422": {
						"description": "validation error"
					},
					"401": {
						"description": "Unauthorized"
					},
					"500": {
						"description": "Internal Server Error"
					}
				}
			}
		},
		"/projects/{id}": {
			"get": {
				"tags": [
					"projects"
				],
				"summary": "Get an project by ID",
				"description": "Optional extended description in CommonMark or HTML.",
				"parameters": [
					{
						"name": "id",
						"in": "path",
						"required": true,
						"schema": {
							"type": "integer"
						}
					}
				],
				"requestBody": {
					"required": false
				},
				"responses": {
					"200": {
						"description": "An Project",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"items": null,
									"$ref": "#/components/schemas/Project"
								}
							}
						}
					},
					"422": {
						"description": "validation error"
					},
					"401": {
						"description": "Unauthorized"
					},
					"500": {
						"description": "Internal Server Error"
					}
				}
			},
			"put": {
				"tags": [
					"projects"
				],
				"summary": "Update a project",
				"operationId": "update project",
				"parameters": [
					{
						"name": "id",
						"in": "path",
						"required": true,
						"schema": {
							"type": "integer",
							"format": "int64"
						}
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/Project"
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "Requirement updated successfully",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/Project"
								}
							}
						}
					},
					"404": {
						"description": "project not found"
					}
				}
			},
			"delete": {
				"tags": [
					"projects"
				],
				"summary": "Delete a project",
				"operationId": "delete project",
				"parameters": [
					{
						"name": "id",
						"in": "path",
						"required": true,
						"schema": {
							"type": "integer",
							"format": "int64"
						}
					}
				],
				"responses": {
					"204": {
						"description": "project deleted successfully"
					},
					"404": {
						"description": "project not found"
					}
				}
			}
		},
		"/reqbuilderterms": {
			"get": {
				"tags": [
					"req. builder Terms"
				],
				"summary": "Get all reqbuilderterms",
				"responses": {
					"200": {
						"description": "Successful response",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ReqBuilderTerm"
								}
							}
						}
					}
				}
			}
		},
		"/reqbuildertypes": {
			"get": {
				"tags": [
					"req. builder Types"
				],
				"summary": "Get all req builder types",
				"responses": {
					"200": {
						"description": "Successful response",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ReqBuilderTerm"
								}
							}
						}
					}
				}
			}
		},
		"/reqcontractorterms": {
			"get": {
				"tags": [
					"req. Contractor Terms"
				],
				"summary": "Get all Contractor Terms",
				"responses": {
					"200": {
						"description": "Successful response",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ReqBuilderTerm"
								}
							}
						}
					}
				}
			}
		},
		"/reqcontractortypes": {
			"get": {
				"tags": [
					"req. Contractor Types"
				],
				"summary": "Get all Contractor Types",
				"responses": {
					"200": {
						"description": "Successful response",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ReqBuilderTerm"
								}
							}
						}
					}
				}
			}
		},
		"/areaunits": {
			"get": {
				"tags": [
					"areaunits"
				],
				"summary": "Get area units listing",
				"description": "Retrieve a list of all area units. Optional extended description in CommonMark or HTML.",
				"responses": {
					"200": {
						"description": "A list of area units",
						"content": {
							"application/json": {
								"schema": {
									"type": "array",
									"items": {
										"$ref": "#/components/schemas/areaunits"
									}
								}
							}
						}
					},
					"422": {
						"description": "Validation error"
					},
					"401": {
						"description": "Unauthorized"
					},
					"500": {
						"description": "Internal Server Error"
					}
				}
			}
		},
		"/areas": {
			"get": {
				"tags": [
					"areas"
				],
				"summary": "Get areas listing",
				"description": "Retrieve a list of all areas",
				"parameters": [
					{
						"in": "query",
						"name": "first",
						"schema": {
							"type": "integer"
						},
						"description": "The number of items to skip before starting to collect the result set"
					},
					{
						"in": "query",
						"name": "rows",
						"schema": {
							"type": "integer"
						},
						"description": "The numbers of items to return"
					},
					{
						"in": "query",
						"name": "select",
						"schema": {
							"type": "string"
						},
						"description": "select perticular columns"
					},
					{
						"in": "query",
						"name": "pagination",
						"schema": {
							"type": "string"
						},
						"description": "if pagination needed set it to true"
					},
					{
						"in": "query",
						"name": "filter",
						"schema": {
							"type": "string"
						},
						"description": "(column_name,oprator,value|column_name,oprator,value) use this format to filter, operater is optional,supported operator are [=,!=,<,<=,>,>=],if value are multiple then use COMMA seprated,each filter seprated by | symbol. ex. filter=districts_id,=,360|promoted,no"
					},
					{
						"in": "query",
						"name": "order",
						"schema": {
							"type": "string"
						},
						"description": "(column_name,type|column_name,type) use this format to order, supported type are [ASC,DESC], each filter order by | symbol. ex. order=states_id,DESC|budget,ASC"
					}
				],
				"responses": {
					"200": {
						"description": "A list of areas",
						"content": {
							"application/json": {
								"schema": {
									"type": "array",
									"items": {
										"$ref": "#/components/schemas/Area"
									}
								}
							}
						}
					},
					"422": {
						"description": "Validation error"
					},
					"401": {
						"description": "Unauthorized"
					},
					"500": {
						"description": "Internal Server Error"
					}
				}
			}
		},
		"/cities/:id/suggestions": {
			"get": {
				"summary": "Get suggestions based on city ID",
				"description": "Retrieve random areas and properties, and counts for properties, requirements, services, and projects related to a specific district.",
				"parameters": [
					{
						"name": "id",
						"in": "path",
						"required": true,
						"type": "integer",
						"description": "ID of the city"
					}
				],
				"responses": {
					"200": {
						"description": "Successful response",
						"schema": {
							"type": "object",
							"properties": {
								"areas": {
									"type": "array",
									"items": {
										"$ref": "#/components/schemas/Area"
									}
								},
								"properties": {
									"type": "array",
									"items": {
										"$ref": "#/components/schemas/Property"
									}
								},
								"propertiesCount": {
									"type": "integer"
								},
								"requirementsCount": {
									"type": "integer"
								},
								"servicesCount": {
									"type": "integer"
								},
								"projectsCount": {
									"type": "integer"
								}
							},
							"example": {
								"areas": [
									{
										"id": 1,
										"name": "Downtown",
										"description": "A popular area in the city."
									},
									{
										"id": 2,
										"name": "Greenfield",
										"description": "A suburban area with parks and schools."
									},
									{
										"id": 3,
										"name": "Riverbank",
										"description": "An area near the river with scenic views."
									},
									{
										"id": 4,
										"name": "Tech Hub",
										"description": "The technology center of the city."
									},
									{
										"id": 5,
										"name": "Old Town",
										"description": "Historic center with old architecture."
									},
									{
										"id": 6,
										"name": "Sunset Valley",
										"description": "Residential area with sunset views."
									}
								],
								"properties": [
									{
										"id": 101,
										"name": "Luxury Apartment",
										"price": 500000,
										"location": "Downtown"
									}
								],
								"propertiesCount": 120,
								"requirementsCount": 45,
								"servicesCount": 25,
								"projectsCount": 18
							}
						}
					},
					"404": {
						"description": "City not found"
					},
					"500": {
						"description": "Internal server error"
					}
				}
			}
		},
		"/posttypes": {
			"get": {
				"tags": [
					"posttypes"
				],
				"summary": "Get post types listing",
				"description": "Retrieve a list of all post types. Optional extended description in CommonMark or HTML.",
				"responses": {
					"200": {
						"description": "A list of post types",
						"content": {
							"application/json": {
								"schema": {
									"type": "array",
									"items": {
										"$ref": "#/components/schemas/ProjectType"
									}
								}
							}
						}
					},
					"422": {
						"description": "Validation error"
					},
					"401": {
						"description": "Unauthorized"
					},
					"500": {
						"description": "Internal Server Error"
					}
				}
			}
		},
		"/servicesmasters": {
			"get": {
				"tags": [
					"servicesmasters"
				],
				"summary": "Get services masters listing",
				"description": "Retrieve a list of all services masters. Optional extended description in CommonMark or HTML.",
				"responses": {
					"200": {
						"description": "A list of services masters",
						"content": {
							"application/json": {
								"schema": {
									"type": "array",
									"items": null,
									"$ref": "#/components/schemas/servicesmasters"
								}
							}
						}
					},
					"422": {
						"description": "Validation error"
					},
					"401": {
						"description": "Unauthorized"
					},
					"500": {
						"description": "Internal Server Error"
					}
				}
			}
		},
		"/users/{id}": {
			"put": {
				"summary": "update an user by ID",
				"tags": [
					"update user"
				],
				"parameters": [
					{
						"name": "id",
						"in": "path",
						"required": true,
						"schema": {
							"type": "integer"
						}
					}
				],
				"responses": {
					"200": {
						"description": "An user",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"items": null,
									"$ref": "#/components/schemas/users"
								}
							}
						}
					},
					"422": {
						"description": "validation error"
					},
					"401": {
						"description": "Unauthorized"
					},
					"500": {
						"description": "Internal Server Error"
					}
				}
			}
		},
		"/projecttypes": {
			"get": {
				"tags": [
					"project types"
				],
				"summary": "Get all Project Types",
				"responses": {
					"200": {
						"description": "A list of project types",
						"content": {
							"application/json": {
								"schema": {
									"type": "array",
									"items": {
										"$ref": "#/components/schemas/ProjectType"
									}
								}
							}
						}
					}
				}
			}
		},
		"/users/{id}/properties": {
			"get": {
				"tags": [
					"Get properties for a user"
				],
				"summary": "Get properties for a user",
				"description": "Returns a list of properties for the given user ID",
				"security": [
					{
						"bearerAuth": []
					}
				],
				"parameters": [
					{
						"name": "id",
						"in": "path",
						"required": true,
						"description": "ID of the user",
						"schema": {
							"type": "string"
						}
					},
					{
						"name": "q",
						"in": "query",
						"required": false,
						"description": "Search query to filter properties",
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"description": "A list of properties for the user",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"data": {
											"type": "array",
											"items": {
												"$ref": "#/components/schemas/Property"
											}
										}
									}
								}
							}
						}
					},
					"404": {
						"description": "User not found"
					},
					"401": {
						"description": "Unauthorized"
					}
				}
			}
		},
		"/users/{id}/services": {
			"get": {
				"tags": [
					"Get services for a user"
				],
				"summary": "Get services for a user",
				"description": "Returns a list of services for the given user ID",
				"security": [
					{
						"bearerAuth": []
					}
				],
				"parameters": [
					{
						"name": "id",
						"in": "path",
						"required": true,
						"description": "ID of the user",
						"schema": {
							"type": "string"
						}
					},
					{
						"name": "q",
						"in": "query",
						"required": false,
						"description": "Search query to filter services",
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"description": "A list of services for the user",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"data": {
											"type": "array",
											"items": {
												"$ref": "#/components/schemas/services"
											}
										}
									}
								}
							}
						}
					},
					"404": {
						"description": "User not found"
					},
					"401": {
						"description": "Unauthorized"
					}
				}
			}
		},
		"/users/{id}/projects": {
			"get": {
				"tags": [
					"Get projects for a user"
				],
				"summary": "Get projects for a user",
				"description": "Returns a list of projects for the given user ID",
				"security": [
					{
						"bearerAuth": []
					}
				],
				"parameters": [
					{
						"name": "id",
						"in": "path",
						"required": true,
						"description": "ID of the user",
						"schema": {
							"type": "string"
						}
					},
					{
						"name": "q",
						"in": "query",
						"required": false,
						"description": "Search query to filter projects",
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"description": "A list of projects for the user",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"data": {
											"type": "array",
											"items": {
												"$ref": "#/components/schemas/Project"
											}
										}
									}
								}
							}
						}
					},
					"404": {
						"description": "User not found"
					},
					"401": {
						"description": "Unauthorized"
					}
				}
			}
		},
		"/users/{id}/requirements": {
			"get": {
				"tags": [
					"Get requirements for a user"
				],
				"summary": "Get requirements for a user",
				"description": "Returns a list of requirements for the given user ID",
				"security": [
					{
						"bearerAuth": []
					}
				],
				"parameters": [
					{
						"name": "id",
						"in": "path",
						"required": true,
						"description": "ID of the user",
						"schema": {
							"type": "string"
						}
					},
					{
						"name": "q",
						"in": "query",
						"required": false,
						"description": "Search query to filter requirements",
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"description": "A list of requirements for the user",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"data": {
											"type": "array",
											"items": {
												"$ref": "#/components/schemas/Requirements"
											}
										}
									}
								}
							}
						}
					},
					"404": {
						"description": "User not found"
					},
					"401": {
						"description": "Unauthorized"
					}
				}
			}
		},
		"/users/{id}/fbtokens": {
			"post": {
				"tags": [
					"Add a Firebase token for the user"
				],
				"summary": "Add a Firebase token for the user",
				"description": "Add or update a Firebase token for the user. A user can only add a token for their own account.",
				"security": [
					{
						"bearerAuth": []
					}
				],
				"parameters": [
					{
						"name": "id",
						"in": "path",
						"required": true,
						"description": "ID of the user",
						"schema": {
							"type": "string"
						}
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object",
								"properties": {
									"key": {
										"type": "string",
										"description": "Firebase user token",
										"example": "abc123firebaseToken"
									}
								},
								"required": [
									"key"
								]
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "Token added successfully",
						"headers": {
							"description": {
								"schema": {
									"type": "string",
									"example": "Token added successfully"
								}
							}
						},
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"id": {
											"type": "integer",
											"example": 1
										},
										"fbtokenable_id": {
											"type": "string",
											"example": "123"
										},
										"fbtokenable_type": {
											"type": "string",
											"example": "users"
										},
										"status": {
											"type": "string",
											"example": "active"
										},
										"key": {
											"type": "string",
											"example": "abc123firebaseToken"
										}
									}
								}
							}
						}
					},
					"404": {
						"description": "User not found",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean",
											"example": true
										},
										"message": {
											"type": "string",
											"example": "User not found."
										}
									}
								}
							}
						}
					},
					"401": {
						"description": "Unauthorized. User cannot add a token for another user",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean",
											"example": true
										},
										"message": {
											"type": "string",
											"example": "Not allowed to add to user token on behalf of another user"
										}
									}
								}
							}
						}
					},
					"400": {
						"description": "Validation errors",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"errors": {
											"type": "array",
											"items": {
												"type": "object",
												"properties": {
													"msg": {
														"type": "string",
														"example": "Firebase user token is required"
													}
												}
											}
										}
									}
								}
							}
						}
					},
					"500": {
						"description": "Server error",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean",
											"example": true
										},
										"message": {
											"type": "string",
											"example": "Internal server error"
										}
									}
								}
							}
						}
					}
				}
			}
		},
		"/users/{uid}/properties/{pid}": {
			"put": {
				"summary": " create a property shortlist for a user",
				"tags": [
					"Shortlists"
				],
				"parameters": [
					{
						"name": "uid",
						"in": "path",
						"required": true,
						"description": "The ID of the user",
						"schema": {
							"type": "integer"
						}
					},
					{
						"name": "pid",
						"in": "path",
						"required": true,
						"description": "The ID of the property",
						"schema": {
							"type": "integer"
						}
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object"
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "Successfully updated or created the property shortlist",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"success": {
											"type": "boolean",
											"example": true
										},
										"message": {
											"type": "string",
											"example": "Property shortlisted successfully!"
										},
										"data": {
											"type": "object",
											"properties": {
												"uid": {
													"type": "integer",
													"example": 1
												},
												"pid": {
													"type": "integer",
													"example": 101
												}
											}
										}
									}
								}
							}
						}
					},
					"400": {
						"description": "Invalid request parameters or body",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean",
											"example": true
										},
										"message": {
											"type": "string",
											"example": "Invalid request parameters or body"
										}
									}
								}
							}
						}
					},
					"404": {
						"description": "User or Property not found",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean",
											"example": true
										},
										"message": {
											"type": "string",
											"example": "User or Property not found."
										}
									}
								}
							}
						}
					},
					"500": {
						"description": "Internal server error",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean",
											"example": true
										},
										"message": {
											"type": "string",
											"example": "An error occurred"
										}
									}
								}
							}
						}
					}
				}
			},
			"delete": {
				"summary": "Remove a property from a user's shortlist",
				"tags": [
					"Shortlists"
				],
				"parameters": [
					{
						"name": "uid",
						"in": "path",
						"required": true,
						"description": "The ID of the user",
						"schema": {
							"type": "integer"
						}
					},
					{
						"name": "pid",
						"in": "path",
						"required": true,
						"description": "The ID of the property to remove",
						"schema": {
							"type": "integer"
						}
					}
				],
				"responses": {
					"200": {
						"description": "Successfully removed the shortlisted property",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"success": {
											"type": "boolean",
											"example": true
										},
										"message": {
											"type": "string",
											"example": "Shortlisted property removed successfully!"
										},
										"data": {
											"type": "object",
											"properties": {
												"users_id": {
													"type": "integer",
													"example": 1
												},
												"properties_id": {
													"type": "integer",
													"example": 101
												}
											}
										}
									}
								}
							}
						}
					},
					"404": {
						"description": "User or Requirement not found",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean",
											"example": true
										},
										"message": {
											"type": "string",
											"example": "User or Requirement not found."
										}
									}
								}
							}
						}
					},
					"500": {
						"description": "Internal server error",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean",
											"example": true
										},
										"message": {
											"type": "string",
											"example": "An error occurred"
										}
									}
								}
							}
						}
					}
				}
			}
		},
		"/users/{uid}/services/{sid}": {
			"put": {
				"summary": "Create or update a service shortlist for a user",
				"tags": [
					"Shortlists"
				],
				"parameters": [
					{
						"name": "uid",
						"in": "path",
						"required": true,
						"description": "The ID of the user",
						"schema": {
							"type": "integer"
						}
					},
					{
						"name": "sid",
						"in": "path",
						"required": true,
						"description": "The ID of the service",
						"schema": {
							"type": "integer"
						}
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object"
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "Successfully created or updated the service shortlist",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"success": {
											"type": "boolean",
											"example": true
										},
										"message": {
											"type": "string",
											"example": "Service shortlisted successfully!"
										},
										"data": {
											"type": "object",
											"properties": {
												"uid": {
													"type": "integer",
													"example": 1
												},
												"sid": {
													"type": "integer",
													"example": 101
												}
											}
										}
									}
								}
							}
						}
					},
					"400": {
						"description": "Invalid request parameters or body",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean",
											"example": true
										},
										"message": {
											"type": "string",
											"example": "Invalid request parameters or body"
										}
									}
								}
							}
						}
					},
					"404": {
						"description": "User or Service not found",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean",
											"example": true
										},
										"message": {
											"type": "string",
											"example": "User or Service not found."
										}
									}
								}
							}
						}
					},
					"500": {
						"description": "Internal server error",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean",
											"example": true
										},
										"message": {
											"type": "string",
											"example": "An error occurred"
										}
									}
								}
							}
						}
					}
				}
			},
			"delete": {
				"summary": "Remove a service from a user's shortlist",
				"tags": [
					"Shortlists"
				],
				"parameters": [
					{
						"name": "uid",
						"in": "path",
						"required": true,
						"description": "The ID of the user",
						"schema": {
							"type": "integer"
						}
					},
					{
						"name": "sid",
						"in": "path",
						"required": true,
						"description": "The ID of the service to remove",
						"schema": {
							"type": "integer"
						}
					}
				],
				"responses": {
					"200": {
						"description": "Successfully removed the service from the shortlist",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"success": {
											"type": "boolean",
											"example": true
										},
										"message": {
											"type": "string",
											"example": "Shortlisted service removed successfully!"
										},
										"data": {
											"type": "object",
											"properties": {
												"uid": {
													"type": "integer",
													"example": 1
												},
												"sid": {
													"type": "integer",
													"example": 101
												}
											}
										}
									}
								}
							}
						}
					},
					"404": {
						"description": "User or Service not found",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean",
											"example": true
										},
										"message": {
											"type": "string",
											"example": "User or Service not found."
										}
									}
								}
							}
						}
					},
					"500": {
						"description": "Internal server error",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean",
											"example": true
										},
										"message": {
											"type": "string",
											"example": "An error occurred"
										}
									}
								}
							}
						}
					}
				}
			}
		},
		"/users/{uid}/requirements/{rid}": {
			"put": {
				"summary": "Create or update a requirement shortlist for a user",
				"tags": [
					"Shortlists"
				],
				"parameters": [
					{
						"name": "uid",
						"in": "path",
						"required": true,
						"description": "The ID of the user",
						"schema": {
							"type": "integer"
						}
					},
					{
						"name": "rid",
						"in": "path",
						"required": true,
						"description": "The ID of the requirement",
						"schema": {
							"type": "integer"
						}
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object"
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "Successfully created the requirement shortlist",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"success": {
											"type": "boolean",
											"example": true
										},
										"message": {
											"type": "string",
											"example": "Requirement shortlisted successfully!"
										},
										"data": {
											"type": "object",
											"properties": {
												"uid": {
													"type": "integer",
													"example": 1
												},
												"rid": {
													"type": "integer",
													"example": 101
												}
											}
										}
									}
								}
							}
						}
					},
					"400": {
						"description": "Invalid request parameters or body",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean",
											"example": true
										},
										"message": {
											"type": "string",
											"example": "Invalid request parameters or body"
										}
									}
								}
							}
						}
					},
					"404": {
						"description": "User or Requirement not found",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean",
											"example": true
										},
										"message": {
											"type": "string",
											"example": "User or Requirement not found."
										}
									}
								}
							}
						}
					},
					"500": {
						"description": "Internal server error",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean",
											"example": true
										},
										"message": {
											"type": "string",
											"example": "An error occurred"
										}
									}
								}
							}
						}
					}
				}
			},
			"delete": {
				"summary": "Remove a requirement from a user's shortlist",
				"tags": [
					"Shortlists"
				],
				"parameters": [
					{
						"name": "uid",
						"in": "path",
						"required": true,
						"description": "The ID of the user",
						"schema": {
							"type": "integer"
						}
					},
					{
						"name": "rid",
						"in": "path",
						"required": true,
						"description": "The ID of the requirement to remove",
						"schema": {
							"type": "integer"
						}
					}
				],
				"responses": {
					"200": {
						"description": "Successfully removed the requirement from the shortlist",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"success": {
											"type": "boolean",
											"example": true
										},
										"message": {
											"type": "string",
											"example": "Shortlisted requirement removed successfully!"
										},
										"data": {
											"type": "object",
											"properties": {
												"uid": {
													"type": "integer",
													"example": 1
												},
												"rid": {
													"type": "integer",
													"example": 101
												}
											}
										}
									}
								}
							}
						}
					},
					"404": {
						"description": "User or Requirement not found",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean",
											"example": true
										},
										"message": {
											"type": "string",
											"example": "User or Requirement not found."
										}
									}
								}
							}
						}
					},
					"500": {
						"description": "Internal server error",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean",
											"example": true
										},
										"message": {
											"type": "string",
											"example": "An error occurred"
										}
									}
								}
							}
						}
					}
				}
			}
		},
		"/users/{uid}/projects/{prid}": {
			"put": {
				"summary": "Create or update a project shortlist for a user",
				"tags": [
					"Shortlists"
				],
				"parameters": [
					{
						"name": "uid",
						"in": "path",
						"required": true,
						"description": "The ID of the user",
						"schema": {
							"type": "integer"
						}
					},
					{
						"name": "prid",
						"in": "path",
						"required": true,
						"description": "The ID of the project",
						"schema": {
							"type": "integer"
						}
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object"
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "Successfully created or updated the project shortlist",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"success": {
											"type": "boolean",
											"example": true
										},
										"message": {
											"type": "string",
											"example": "Project shortlisted successfully!"
										},
										"data": {
											"type": "object",
											"properties": {
												"uid": {
													"type": "integer",
													"example": 1
												},
												"prid": {
													"type": "integer",
													"example": 101
												}
											}
										}
									}
								}
							}
						}
					},
					"400": {
						"description": "Invalid request parameters or body",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean",
											"example": true
										},
										"message": {
											"type": "string",
											"example": "Invalid request parameters or body"
										}
									}
								}
							}
						}
					},
					"404": {
						"description": "User or Project not found",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean",
											"example": true
										},
										"message": {
											"type": "string",
											"example": "User or Project not found."
										}
									}
								}
							}
						}
					},
					"500": {
						"description": "Internal server error",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean",
											"example": true
										},
										"message": {
											"type": "string",
											"example": "An error occurred"
										}
									}
								}
							}
						}
					}
				}
			},
			"delete": {
				"summary": "Remove a project from a user's shortlist",
				"tags": [
					"Shortlists"
				],
				"parameters": [
					{
						"name": "uid",
						"in": "path",
						"required": true,
						"description": "The ID of the user",
						"schema": {
							"type": "integer"
						}
					},
					{
						"name": "prid",
						"in": "path",
						"required": true,
						"description": "The ID of the project to remove",
						"schema": {
							"type": "integer"
						}
					}
				],
				"responses": {
					"200": {
						"description": "Successfully removed the project from the shortlist",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"success": {
											"type": "boolean",
											"example": true
										},
										"message": {
											"type": "string",
											"example": "Shortlisted project removed successfully!"
										},
										"data": {
											"type": "object",
											"properties": {
												"uid": {
													"type": "integer",
													"example": 1
												},
												"prid": {
													"type": "integer",
													"example": 101
												}
											}
										}
									}
								}
							}
						}
					},
					"404": {
						"description": "User or Project not found",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean",
											"example": true
										},
										"message": {
											"type": "string",
											"example": "User or Project not found."
										}
									}
								}
							}
						}
					},
					"500": {
						"description": "Internal server error",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean",
											"example": true
										},
										"message": {
											"type": "string",
											"example": "An error occurred"
										}
									}
								}
							}
						}
					}
				}
			}
		},
		"/properties/{id}/users": {
			"get": {
				"summary": "Retrieve users associated with a specific property",
				"tags": [
					"properties"
				],
				"parameters": [
					{
						"name": "id",
						"in": "path",
						"required": true,
						"description": "ID of the property to retrieve users for",
						"schema": {
							"type": "integer",
							"example": 1
						}
					},
					{
						"name": "select",
						"in": "query",
						"description": "Comma-separated list of fields to include in the response",
						"schema": {
							"type": "string",
							"example": "name,email,mobile"
						}
					},
					{
						"name": "q",
						"in": "query",
						"description": "Search term for filtering users",
						"schema": {
							"type": "string",
							"example": "john"
						}
					},
					{
						"name": "filter",
						"in": "query",
						"description": "Filter conditions, in the format 'column,operator,value'",
						"schema": {
							"type": "string",
							"example": "status,=,active"
						}
					},
					{
						"name": "order",
						"in": "query",
						"description": "Ordering of the results, in the format 'column,direction'",
						"schema": {
							"type": "string",
							"example": "name,asc"
						}
					},
					{
						"name": "pagination",
						"in": "query",
						"description": "Enable pagination (true/false)",
						"schema": {
							"type": "boolean",
							"example": true
						}
					},
					{
						"name": "first",
						"in": "query",
						"description": "Offset for pagination",
						"schema": {
							"type": "integer",
							"example": 0
						}
					},
					{
						"name": "rows",
						"in": "query",
						"description": "Limit for pagination",
						"schema": {
							"type": "integer",
							"example": 10
						}
					}
				],
				"responses": {
					"200": {
						"description": "A list of users associated with the specified users",
						"content": {
							"application/json": {
								"schema": {
									"type": "array",
									"items": {
										"$ref": "#/components/schemas/users"
									}
								}
							}
						}
					},
					"404": {
						"description": "users not found",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"message": {
											"type": "string",
											"example": "users not found"
										}
									}
								}
							}
						}
					},
					"500": {
						"description": "Error occurred while retrieving the users",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"message": {
											"type": "string",
											"example": "An error occurred while retrieving the users"
										}
									}
								}
							}
						}
					}
				}
			}
		},
		"/properties/{id}/visitors": {
			"get": {
				"summary": "Retrieve visitors associated with a specific property",
				"tags": [
					"properties"
				],
				"parameters": [
					{
						"name": "id",
						"in": "path",
						"required": true,
						"description": "ID of the property to retrieve visitors for",
						"schema": {
							"type": "integer",
							"example": 1
						}
					},
					{
						"name": "select",
						"in": "query",
						"description": "Comma-separated list of fields to include in the response",
						"schema": {
							"type": "string",
							"example": "name,email,mobile"
						}
					},
					{
						"name": "q",
						"in": "query",
						"description": "Search term for filtering visitors",
						"schema": {
							"type": "string",
							"example": "john"
						}
					},
					{
						"name": "filter",
						"in": "query",
						"description": "Filter conditions, in the format 'column,operator,value'",
						"schema": {
							"type": "string",
							"example": "status,=,active"
						}
					},
					{
						"name": "order",
						"in": "query",
						"description": "Ordering of the results, in the format 'column,direction'",
						"schema": {
							"type": "string",
							"example": "name,asc"
						}
					},
					{
						"name": "pagination",
						"in": "query",
						"description": "Enable pagination (true/false)",
						"schema": {
							"type": "boolean",
							"example": true
						}
					},
					{
						"name": "first",
						"in": "query",
						"description": "Offset for pagination",
						"schema": {
							"type": "integer",
							"example": 0
						}
					},
					{
						"name": "rows",
						"in": "query",
						"description": "Limit for pagination",
						"schema": {
							"type": "integer",
							"example": 10
						}
					}
				],
				"responses": {
					"200": {
						"description": "A list of visitors associated with the specified property",
						"content": {
							"application/json": {
								"schema": {
									"type": "array",
									"items": {
										"$ref": "#/components/schemas/users"
									}
								}
							}
						}
					},
					"404": {
						"description": "visitors not found",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"message": {
											"type": "string",
											"example": "visitors not found"
										}
									}
								}
							}
						}
					},
					"500": {
						"description": "Error occurred while retrieving the visitors",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"message": {
											"type": "string",
											"example": "An error occurred while retrieving the visitors"
										}
									}
								}
							}
						}
					}
				}
			}
		},
		"/properties/{id}/advertisements": {
			"put": {
				"tags": [
					"properties"
				],
				"summary": "Promote a property for advertisement",
				"description": "Allows a user to promote their property for advertisements.",
				"parameters": [
					{
						"name": "id",
						"in": "path",
						"required": true,
						"description": "The ID of the property to promote.",
						"schema": {
							"type": "integer"
						}
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object",
								"properties": {
									"promoted": {
										"type": "string",
										"enum": [
											"yes",
											"no"
										],
										"description": "Indicates whether the property is promoted for advertisements. Acceptable values are 'yes' or 'no'."
									}
								},
								"required": [
									"promoted"
								]
							},
							"example": {
								"promoted": "yes"
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "Property promoted successfully.",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"success": {
											"type": "boolean"
										},
										"message": {
											"type": "string"
										}
									}
								},
								"example": {
									"success": true,
									"message": "property promoted for advertisement successfully."
								}
							}
						}
					},
					"400": {
						"description": "Validation errors.",
						"content": {
							"application/json": {
								"schema": {
									"type": "array",
									"items": {
										"type": "object",
										"properties": {
											"msg": {
												"type": "string"
											},
											"param": {
												"type": "string"
											},
											"location": {
												"type": "string"
											}
										}
									}
								},
								"example": [
									{
										"msg": "'promoted' field must be 'yes' or 'no'.",
										"param": "promoted",
										"location": "body"
									}
								]
							}
						}
					},
					"404": {
						"description": "Property not found or unauthorized access.",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean"
										},
										"message": {
											"type": "string"
										}
									}
								},
								"example": {
									"error": true,
									"message": "not allowed to promote property for offer on behalf of another user"
								}
							}
						}
					},
					"500": {
						"description": "Internal server error.",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean"
										},
										"status": {
											"type": "integer"
										},
										"message": {
											"type": "string"
										}
									}
								},
								"example": {
									"error": true,
									"status": 500,
									"message": "Internal server error."
								}
							}
						}
					}
				}
			}
		},
		"/properties/{id}/offers": {
			"put": {
				"tags": [
					"properties"
				],
				"summary": "Promote a property for offer",
				"description": "Allows a user to promote their property for offers.",
				"parameters": [
					{
						"name": "id",
						"in": "path",
						"required": true,
						"description": "The ID of the property to promote.",
						"schema": {
							"type": "integer"
						}
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object",
								"properties": {
									"isoffers": {
										"type": "string",
										"enum": [
											true,
											false
										],
										"description": "Indicates whether the property is use for offers. Acceptable values are 'yes' or 'no'."
									}
								},
								"required": [
									"isoffers"
								]
							},
							"example": {
								"isoffers": "true"
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "Property promoted for offers successfully done.",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"success": {
											"type": "boolean"
										},
										"message": {
											"type": "string"
										}
									}
								},
								"example": {
									"success": true,
									"message": "property promoted for offer successfully done."
								}
							}
						}
					},
					"400": {
						"description": "Validation errors.",
						"content": {
							"application/json": {
								"schema": {
									"type": "array",
									"items": {
										"type": "object",
										"properties": {
											"msg": {
												"type": "string"
											},
											"param": {
												"type": "string"
											},
											"location": {
												"type": "string"
											}
										}
									}
								},
								"example": [
									{
										"msg": "'isoffers' field must be 'true' or 'false'.",
										"param": "isoffers",
										"location": "body"
									}
								]
							}
						}
					},
					"404": {
						"description": "Property not found or unauthorized access.",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean"
										},
										"message": {
											"type": "string"
										}
									}
								},
								"example": {
									"error": true,
									"message": "not allowed to use  property for offer on behalf of another user"
								}
							}
						}
					},
					"500": {
						"description": "Internal server error.",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean"
										},
										"status": {
											"type": "integer"
										},
										"message": {
											"type": "string"
										}
									}
								},
								"example": {
									"error": true,
									"status": 500,
									"message": "Internal server error."
								}
							}
						}
					}
				}
			}
		},
		"/projects/{id}/advertisements": {
			"put": {
				"tags": [
					"projects"
				],
				"summary": "Promote a project for advertisement",
				"description": "Allows a user to promote their project for advertisements.",
				"parameters": [
					{
						"name": "id",
						"in": "path",
						"required": true,
						"description": "The ID of the project to promote.",
						"schema": {
							"type": "integer"
						}
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object",
								"properties": {
									"promoted": {
										"type": "string",
										"enum": [
											"yes",
											"no"
										],
										"description": "Indicates whether the project is promoted for advertisements. Acceptable values are 'yes' or 'no'."
									}
								},
								"required": [
									"promoted"
								]
							},
							"example": {
								"promoted": "yes"
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "project promoted successfully.",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"success": {
											"type": "boolean"
										},
										"message": {
											"type": "string"
										}
									}
								},
								"example": {
									"success": true,
									"message": "project promoted for advertisement successfully."
								}
							}
						}
					},
					"400": {
						"description": "Validation errors.",
						"content": {
							"application/json": {
								"schema": {
									"type": "array",
									"items": {
										"type": "object",
										"properties": {
											"msg": {
												"type": "string"
											},
											"param": {
												"type": "string"
											},
											"location": {
												"type": "string"
											}
										}
									}
								},
								"example": [
									{
										"msg": "'promoted' field must be 'yes' or 'no'.",
										"param": "promoted",
										"location": "body"
									}
								]
							}
						}
					},
					"404": {
						"description": "project not found or unauthorized access.",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean"
										},
										"message": {
											"type": "string"
										}
									}
								},
								"example": {
									"error": true,
									"message": "not allowed to promote project for offer on behalf of another user"
								}
							}
						}
					},
					"500": {
						"description": "Internal server error.",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean"
										},
										"status": {
											"type": "integer"
										},
										"message": {
											"type": "string"
										}
									}
								},
								"example": {
									"error": true,
									"status": 500,
									"message": "Internal server error."
								}
							}
						}
					}
				}
			}
		},
		"/services/{id}/users": {
			"get": {
				"summary": "Retrieve users associated with a specific service",
				"tags": [
					"services"
				],
				"parameters": [
					{
						"name": "id",
						"in": "path",
						"required": true,
						"description": "ID of the service to retrieve users for",
						"schema": {
							"type": "integer",
							"example": 1
						}
					},
					{
						"name": "select",
						"in": "query",
						"description": "Comma-separated list of fields to include in the response",
						"schema": {
							"type": "string",
							"example": "name,email,mobile"
						}
					},
					{
						"name": "q",
						"in": "query",
						"description": "Search term for filtering users",
						"schema": {
							"type": "string",
							"example": "john"
						}
					},
					{
						"name": "filter",
						"in": "query",
						"description": "Filter conditions, in the format 'column,operator,value'",
						"schema": {
							"type": "string",
							"example": "status,=,active"
						}
					},
					{
						"name": "order",
						"in": "query",
						"description": "Ordering of the results, in the format 'column,direction'",
						"schema": {
							"type": "string",
							"example": "name,asc"
						}
					},
					{
						"name": "pagination",
						"in": "query",
						"description": "Enable pagination (true/false)",
						"schema": {
							"type": "boolean",
							"example": true
						}
					},
					{
						"name": "first",
						"in": "query",
						"description": "Offset for pagination",
						"schema": {
							"type": "integer",
							"example": 0
						}
					},
					{
						"name": "rows",
						"in": "query",
						"description": "Limit for pagination",
						"schema": {
							"type": "integer",
							"example": 10
						}
					}
				],
				"responses": {
					"200": {
						"description": "A list of users associated with the specified service",
						"content": {
							"application/json": {
								"schema": {
									"type": "array",
									"items": {
										"$ref": "#/components/schemas/users"
									}
								}
							}
						}
					},
					"404": {
						"description": "Service not found",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"message": {
											"type": "string",
											"example": "Service not found"
										}
									}
								}
							}
						}
					},
					"500": {
						"description": "Error occurred while retrieving the service",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"message": {
											"type": "string",
											"example": "An error occurred while retrieving the service"
										}
									}
								}
							}
						}
					}
				}
			}
		},
		"/verifications": {
			"post": {
				"summary": "Create a verification",
				"description": "Creates a new verification for a specified resource type (properties, projects, services, or requirements).",
				"tags": [
					"Verifications"
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object",
								"properties": {
									"verificationable_type": {
										"type": "string",
										"enum": [
											"properties",
											"projects",
											"services",
											"requirements"
										],
										"description": "The type of resource to verify."
									},
									"verificationable_id": {
										"type": "integer",
										"description": "The ID of the resource to verify."
									}
								},
								"required": [
									"verificationable_type",
									"verificationable_id"
								]
							},
							"example": {
								"verificationable_type": "properties",
								"verificationable_id": 123
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "Verification created successfully",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"id": {
											"type": "integer",
											"description": "ID of the created verification."
										},
										"verificationable_type": {
											"type": "string",
											"description": "The type of resource being verified."
										},
										"verificationable_id": {
											"type": "integer",
											"description": "The ID of the resource being verified."
										},
										"status": {
											"type": "string",
											"enum": [
												"pending",
												"approved",
												"rejected"
											],
											"description": "The status of the verification."
										}
									}
								},
								"example": {
									"id": 1,
									"verificationable_type": "properties",
									"verificationable_id": 123,
									"status": "pending"
								}
							}
						}
					},
					"400": {
						"description": "Bad Request",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean",
											"example": true
										},
										"message": {
											"type": "string",
											"example": "A verification already exists in pending status."
										}
									}
								}
							}
						}
					},
					"403": {
						"description": "Forbidden",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean",
											"example": true
										},
										"message": {
											"type": "string",
											"example": "Not allowed to verify properties on behalf of another user."
										}
									}
								}
							}
						}
					},
					"500": {
						"description": "Internal Server Error",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean",
											"example": true
										},
										"status": {
											"type": "integer",
											"example": 500
										},
										"message": {
											"type": "string",
											"example": "An unexpected error occurred."
										}
									}
								}
							}
						}
					}
				}
			}
		},
		"/services/{id}/visitors": {
			"get": {
				"summary": "Retrieve visitors associated with a specific service",
				"tags": [
					"services"
				],
				"parameters": [
					{
						"name": "id",
						"in": "path",
						"required": true,
						"description": "ID of the service to retrieve visitors for",
						"schema": {
							"type": "integer",
							"example": 1
						}
					},
					{
						"name": "select",
						"in": "query",
						"description": "Comma-separated list of fields to include in the response",
						"schema": {
							"type": "string",
							"example": "name,email,mobile"
						}
					},
					{
						"name": "q",
						"in": "query",
						"description": "Search term for filtering visitors",
						"schema": {
							"type": "string",
							"example": "john"
						}
					},
					{
						"name": "filter",
						"in": "query",
						"description": "Filter conditions, in the format 'column,operator,value'",
						"schema": {
							"type": "string",
							"example": "status,=,active"
						}
					},
					{
						"name": "order",
						"in": "query",
						"description": "Ordering of the results, in the format 'column,direction'",
						"schema": {
							"type": "string",
							"example": "name,asc"
						}
					},
					{
						"name": "pagination",
						"in": "query",
						"description": "Enable pagination (true/false)",
						"schema": {
							"type": "boolean",
							"example": true
						}
					},
					{
						"name": "first",
						"in": "query",
						"description": "Offset for pagination",
						"schema": {
							"type": "integer",
							"example": 0
						}
					},
					{
						"name": "rows",
						"in": "query",
						"description": "Limit for pagination",
						"schema": {
							"type": "integer",
							"example": 10
						}
					}
				],
				"responses": {
					"200": {
						"description": "A list of visitors associated with the specified property",
						"content": {
							"application/json": {
								"schema": {
									"type": "array",
									"items": {
										"$ref": "#/components/schemas/users"
									}
								}
							}
						}
					},
					"404": {
						"description": "visitors not found",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"message": {
											"type": "string",
											"example": "visitors not found"
										}
									}
								}
							}
						}
					},
					"500": {
						"description": "Error occurred while retrieving the visitors",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"message": {
											"type": "string",
											"example": "An error occurred while retrieving the visitors"
										}
									}
								}
							}
						}
					}
				}
			}
		},
		"/requirements/{id}/users": {
			"get": {
				"summary": "Retrieve users associated with a specific requirement",
				"tags": [
					"requirements"
				],
				"parameters": [
					{
						"name": "id",
						"in": "path",
						"required": true,
						"description": "ID of the requirement to retrieve users for",
						"schema": {
							"type": "integer",
							"example": 1
						}
					},
					{
						"name": "select",
						"in": "query",
						"description": "Comma-separated list of fields to include in the response",
						"schema": {
							"type": "string",
							"example": "name,email,mobile"
						}
					},
					{
						"name": "q",
						"in": "query",
						"description": "Search term for filtering users",
						"schema": {
							"type": "string",
							"example": "john"
						}
					},
					{
						"name": "filter",
						"in": "query",
						"description": "Filter conditions, in the format 'column,operator,value'",
						"schema": {
							"type": "string",
							"example": "status,=,active"
						}
					},
					{
						"name": "order",
						"in": "query",
						"description": "Ordering of the results, in the format 'column,direction'",
						"schema": {
							"type": "string",
							"example": "name,asc"
						}
					},
					{
						"name": "pagination",
						"in": "query",
						"description": "Enable pagination (true/false)",
						"schema": {
							"type": "boolean",
							"example": true
						}
					},
					{
						"name": "first",
						"in": "query",
						"description": "Offset for pagination",
						"schema": {
							"type": "integer",
							"example": 0
						}
					},
					{
						"name": "rows",
						"in": "query",
						"description": "Limit for pagination",
						"schema": {
							"type": "integer",
							"example": 10
						}
					}
				],
				"responses": {
					"200": {
						"description": "A list of users associated with the specified requirement",
						"content": {
							"application/json": {
								"schema": {
									"type": "array",
									"items": {
										"$ref": "#/components/schemas/users"
									}
								}
							}
						}
					},
					"404": {
						"description": "Requirement not found",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"message": {
											"type": "string",
											"example": "Requirement not found"
										}
									}
								}
							}
						}
					},
					"500": {
						"description": "Error occurred while retrieving the requirement",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"message": {
											"type": "string",
											"example": "An error occurred while retrieving the requirement"
										}
									}
								}
							}
						}
					}
				}
			}
		},
		"/requirements/{id}/visitors": {
			"get": {
				"summary": "Retrieve visitors associated with a specific requirement",
				"tags": [
					"requirements"
				],
				"parameters": [
					{
						"name": "id",
						"in": "path",
						"required": true,
						"description": "ID of the requirement to retrieve visitors for",
						"schema": {
							"type": "integer",
							"example": 1
						}
					},
					{
						"name": "select",
						"in": "query",
						"description": "Comma-separated list of fields to include in the response",
						"schema": {
							"type": "string",
							"example": "name,email,mobile"
						}
					},
					{
						"name": "q",
						"in": "query",
						"description": "Search term for filtering visitors",
						"schema": {
							"type": "string",
							"example": "john"
						}
					},
					{
						"name": "filter",
						"in": "query",
						"description": "Filter conditions, in the format 'column,operator,value'",
						"schema": {
							"type": "string",
							"example": "status,=,active"
						}
					},
					{
						"name": "order",
						"in": "query",
						"description": "Ordering of the results, in the format 'column,direction'",
						"schema": {
							"type": "string",
							"example": "name,asc"
						}
					},
					{
						"name": "pagination",
						"in": "query",
						"description": "Enable pagination (true/false)",
						"schema": {
							"type": "boolean",
							"example": true
						}
					},
					{
						"name": "first",
						"in": "query",
						"description": "Offset for pagination",
						"schema": {
							"type": "integer",
							"example": 0
						}
					},
					{
						"name": "rows",
						"in": "query",
						"description": "Limit for pagination",
						"schema": {
							"type": "integer",
							"example": 10
						}
					}
				],
				"responses": {
					"200": {
						"description": "A list of visitors associated with the specified property",
						"content": {
							"application/json": {
								"schema": {
									"type": "array",
									"items": {
										"$ref": "#/components/schemas/users"
									}
								}
							}
						}
					},
					"404": {
						"description": "visitors not found",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"message": {
											"type": "string",
											"example": "visitors not found"
										}
									}
								}
							}
						}
					},
					"500": {
						"description": "Error occurred while retrieving the visitors",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"message": {
											"type": "string",
											"example": "An error occurred while retrieving the visitors"
										}
									}
								}
							}
						}
					}
				}
			}
		},
		"/projects/{id}/users": {
			"get": {
				"summary": "Retrieve users associated with a specific project",
				"tags": [
					"projects"
				],
				"parameters": [
					{
						"name": "id",
						"in": "path",
						"required": true,
						"description": "ID of the project to retrieve users for",
						"schema": {
							"type": "integer",
							"example": 1
						}
					},
					{
						"name": "select",
						"in": "query",
						"description": "Comma-separated list of fields to include in the response",
						"schema": {
							"type": "string",
							"example": "name,email,mobile"
						}
					},
					{
						"name": "q",
						"in": "query",
						"description": "Search term for filtering users",
						"schema": {
							"type": "string",
							"example": "john"
						}
					},
					{
						"name": "filter",
						"in": "query",
						"description": "Filter conditions, in the format 'column,operator,value'",
						"schema": {
							"type": "string",
							"example": "status,=,active"
						}
					},
					{
						"name": "order",
						"in": "query",
						"description": "Ordering of the results, in the format 'column,direction'",
						"schema": {
							"type": "string",
							"example": "name,asc"
						}
					},
					{
						"name": "pagination",
						"in": "query",
						"description": "Enable pagination (true/false)",
						"schema": {
							"type": "boolean",
							"example": true
						}
					},
					{
						"name": "first",
						"in": "query",
						"description": "Offset for pagination",
						"schema": {
							"type": "integer",
							"example": 0
						}
					},
					{
						"name": "rows",
						"in": "query",
						"description": "Limit for pagination",
						"schema": {
							"type": "integer",
							"example": 10
						}
					}
				],
				"responses": {
					"200": {
						"description": "A list of users associated with the specified project",
						"content": {
							"application/json": {
								"schema": {
									"type": "array",
									"items": {
										"$ref": "#/components/schemas/users"
									}
								}
							}
						}
					},
					"404": {
						"description": "Project not found",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"message": {
											"type": "string",
											"example": "Project not found"
										}
									}
								}
							}
						}
					},
					"500": {
						"description": "Error occurred while retrieving the project",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"message": {
											"type": "string",
											"example": "An error occurred while retrieving the project"
										}
									}
								}
							}
						}
					}
				}
			}
		},
		"/projects/{id}/visitors": {
			"get": {
				"summary": "Retrieve visitors associated with a specific project",
				"tags": [
					"projects"
				],
				"parameters": [
					{
						"name": "id",
						"in": "path",
						"required": true,
						"description": "ID of the project to retrieve visitors for",
						"schema": {
							"type": "integer",
							"example": 1
						}
					},
					{
						"name": "select",
						"in": "query",
						"description": "Comma-separated list of fields to include in the response",
						"schema": {
							"type": "string",
							"example": "name,email,mobile"
						}
					},
					{
						"name": "q",
						"in": "query",
						"description": "Search term for filtering visitors",
						"schema": {
							"type": "string",
							"example": "john"
						}
					},
					{
						"name": "filter",
						"in": "query",
						"description": "Filter conditions, in the format 'column,operator,value'",
						"schema": {
							"type": "string",
							"example": "status,=,active"
						}
					},
					{
						"name": "order",
						"in": "query",
						"description": "Ordering of the results, in the format 'column,direction'",
						"schema": {
							"type": "string",
							"example": "name,asc"
						}
					},
					{
						"name": "pagination",
						"in": "query",
						"description": "Enable pagination (true/false)",
						"schema": {
							"type": "boolean",
							"example": true
						}
					},
					{
						"name": "first",
						"in": "query",
						"description": "Offset for pagination",
						"schema": {
							"type": "integer",
							"example": 0
						}
					},
					{
						"name": "rows",
						"in": "query",
						"description": "Limit for pagination",
						"schema": {
							"type": "integer",
							"example": 10
						}
					}
				],
				"responses": {
					"200": {
						"description": "A list of visitors associated with the specified property",
						"content": {
							"application/json": {
								"schema": {
									"type": "array",
									"items": {
										"$ref": "#/components/schemas/users"
									}
								}
							}
						}
					},
					"404": {
						"description": "visitors not found",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"message": {
											"type": "string",
											"example": "visitors not found"
										}
									}
								}
							}
						}
					},
					"500": {
						"description": "Error occurred while retrieving the visitors",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"message": {
											"type": "string",
											"example": "An error occurred while retrieving the visitors"
										}
									}
								}
							}
						}
					}
				}
			}
		},
		"/userhistories/{uid}/properties": {
			"get": {
				"summary": "Retrieve all properties in a user's shortlist",
				"tags": [
					"Properties"
				],
				"parameters": [
					{
						"name": "uid",
						"in": "path",
						"required": true,
						"description": "The ID of the user",
						"schema": {
							"type": "integer",
							"example": 1
						}
					}
				],
				"responses": {
					"200": {
						"description": "A list of properties in the user's shortlist",
						"content": {
							"application/json": {
								"schema": {
									"type": "array",
									"items": {
										"$ref": "#/components/schemas/Property"
									}
								}
							}
						}
					},
					"404": {
						"description": "User not found or no properties in the shortlist",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean",
											"example": true
										},
										"message": {
											"type": "string",
											"example": "User not found or no properties in the shortlist."
										}
									}
								}
							}
						}
					},
					"500": {
						"description": "Internal server error",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean",
											"example": true
										},
										"message": {
											"type": "string",
											"example": "An error occurred"
										}
									}
								}
							}
						}
					}
				}
			}
		},
		"/userhistories/{uid}/services": {
			"get": {
				"summary": "Retrieve all services associated with a user",
				"tags": [
					"Services"
				],
				"parameters": [
					{
						"name": "uid",
						"in": "path",
						"required": true,
						"description": "The ID of the user",
						"schema": {
							"type": "integer",
							"example": 1
						}
					}
				],
				"responses": {
					"200": {
						"description": "A list of services associated with the user",
						"content": {
							"application/json": {
								"schema": {
									"type": "array",
									"items": {
										"$ref": "#/components/schemas/services"
									}
								}
							}
						}
					},
					"404": {
						"description": "User not found or no services associated",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean",
											"example": true
										},
										"message": {
											"type": "string",
											"example": "User not found or no services associated."
										}
									}
								}
							}
						}
					},
					"500": {
						"description": "Internal server error",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean",
											"example": true
										},
										"message": {
											"type": "string",
											"example": "An error occurred"
										}
									}
								}
							}
						}
					}
				}
			}
		},
		"/userhistories/{uid}/requirements": {
			"get": {
				"summary": "Retrieve all requirements associated with a user",
				"tags": [
					"Requirements"
				],
				"parameters": [
					{
						"name": "uid",
						"in": "path",
						"required": true,
						"description": "The ID of the user",
						"schema": {
							"type": "integer",
							"example": 1
						}
					}
				],
				"responses": {
					"200": {
						"description": "A list of requirements associated with the user",
						"content": {
							"application/json": {
								"schema": {
									"type": "array",
									"items": {
										"$ref": "#/components/schemas/Requirements"
									}
								}
							}
						}
					},
					"404": {
						"description": "User not found or no requirements associated",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean",
											"example": true
										},
										"message": {
											"type": "string",
											"example": "User not found or no requirements associated."
										}
									}
								}
							}
						}
					},
					"500": {
						"description": "Internal server error",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean",
											"example": true
										},
										"message": {
											"type": "string",
											"example": "An error occurred"
										}
									}
								}
							}
						}
					}
				}
			}
		},
		"/userhistories/{uid}/projects": {
			"get": {
				"summary": "Retrieve all projects associated with a user",
				"tags": [
					"Projects"
				],
				"parameters": [
					{
						"name": "uid",
						"in": "path",
						"required": true,
						"description": "The ID of the user",
						"schema": {
							"type": "integer",
							"example": 1
						}
					}
				],
				"responses": {
					"200": {
						"description": "A list of projects associated with the user",
						"content": {
							"application/json": {
								"schema": {
									"type": "array",
									"items": {
										"$ref": "#/components/schemas/Project"
									}
								}
							}
						}
					},
					"404": {
						"description": "User not found or no projects associated",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean",
											"example": true
										},
										"message": {
											"type": "string",
											"example": "User not found or no projects associated."
										}
									}
								}
							}
						}
					},
					"500": {
						"description": "Internal server error",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean",
											"example": true
										},
										"message": {
											"type": "string",
											"example": "An error occurred"
										}
									}
								}
							}
						}
					}
				}
			}
		},
		"/userhistories": {
			"post": {
				"summary": "Create a new user history entry",
				"tags": [
					"UserHistories"
				],
				"security": [
					{
						"bearerAuth": []
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object",
								"properties": {
									"users_id": {
										"type": "integer",
										"description": "ID of the user creating the history entry"
									},
									"userhistorable_id": {
										"type": "integer",
										"description": "ID of the item associated with the history entry (property, service, project, or requirement)"
									},
									"userhistorable_type": {
										"type": "string",
										"description": "Type of item associated with the history entry",
										"enum": [
											"properties",
											"projects",
											"requirements",
											"services"
										]
									}
								},
								"required": [
									"users_id",
									"userhistorable_id",
									"userhistorable_type"
								]
							},
							"example": {
								"users_id": 123,
								"userhistorable_id": 456,
								"userhistorable_type": "properties"
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "User history entry created successfully",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"success": {
											"type": "boolean"
										},
										"message": {
											"type": "string"
										},
										"data": {
											"type": "array",
											"properties": {
												"userhistories": {
													"$ref": "#/components/schemas/UserHistory"
												}
											}
										}
									}
								},
								"example": {
									"success": true,
									"message": "User history entry created successfully!",
									"data": {
										"userhistories": {
											"id": 1,
											"users_id": 123,
											"userhistorable_id": 456,
											"userhistorable_type": "properties",
											"createdAt": "2024-08-21T12:34:56Z",
											"updatedAt": "2024-08-21T12:34:56Z"
										}
									}
								}
							}
						}
					},
					"400": {
						"description": "Bad Request - Invalid input",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean"
										},
										"message": {
											"type": "string"
										}
									}
								},
								"example": {
									"error": true,
									"message": "Invalid userhistorable_id."
								}
							}
						}
					},
					"404": {
						"description": "Not Found - User or associated item not found",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean"
										},
										"message": {
											"type": "string"
										}
									}
								},
								"examples": {
									"UserNotFound": {
										"value": {
											"error": true,
											"message": "User not found."
										}
									},
									"ItemNotFound": {
										"value": {
											"error": true,
											"message": "Property not found."
										}
									}
								}
							}
						}
					},
					"422": {
						"description": "Unprocessable Entity - Validation error",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean"
										},
										"message": {
											"type": "string"
										}
									}
								},
								"example": {
									"error": true,
									"message": "userhistorable_type is required"
								}
							}
						}
					},
					"500": {
						"description": "Internal Server Error",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean"
										},
										"message": {
											"type": "string"
										}
									}
								},
								"example": {
									"error": true,
									"message": "An unexpected error occurred."
								}
							}
						}
					}
				}
			}
		},
		"/states/{sid}/districts/{did}/exbuildings": {
			"get": {
				"tags": [
					"Retrieve Exbuildings"
				],
				"summary": "Retrieve Exbuildings",
				"description": "Fetch a list of exbuildings filtered by state and district.",
				"parameters": [
					{
						"name": "sid",
						"in": "path",
						"required": true,
						"description": "State ID",
						"schema": {
							"type": "integer",
							"example": 1
						}
					},
					{
						"name": "did",
						"in": "path",
						"required": true,
						"description": "District ID",
						"schema": {
							"type": "integer",
							"example": 1
						}
					},
					{
						"name": "select",
						"in": "query",
						"required": false,
						"description": "Comma-separated list of columns to include in the result.",
						"schema": {
							"type": "string",
							"example": "name,createdAt"
						}
					},
					{
						"name": "q",
						"in": "query",
						"required": false,
						"description": "Search query to filter results.",
						"schema": {
							"type": "string",
							"example": "building"
						}
					},
					{
						"name": "filter",
						"in": "query",
						"required": false,
						"description": "Filter conditions formatted as `column,operator,value`. Multiple filters can be separated by `|`.",
						"schema": {
							"type": "string",
							"example": "status,=,active|type,like,residential"
						}
					},
					{
						"name": "order",
						"in": "query",
						"required": false,
						"description": "Order the results by specific columns. Format: `column,asc|column,desc` or `random` for random order.",
						"schema": {
							"type": "string",
							"example": "name,asc|createdAt,desc"
						}
					},
					{
						"name": "pagination",
						"in": "query",
						"required": false,
						"description": "Set to `true` to include total count in the response.",
						"schema": {
							"type": "boolean",
							"example": true
						}
					},
					{
						"name": "first",
						"in": "query",
						"required": false,
						"description": "Offset for pagination.",
						"schema": {
							"type": "integer",
							"example": 0
						}
					},
					{
						"name": "rows",
						"in": "query",
						"required": false,
						"description": "Limit for pagination.",
						"schema": {
							"type": "integer",
							"example": 10
						}
					}
				],
				"responses": {
					"200": {
						"description": "A list of exbuildings or paginated results",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"total": {
											"type": "integer",
											"description": "Total number of exbuildings (only if pagination is true).",
											"example": 100
										},
										"data": {
											"type": "array",
											"items": {
												"type": "object",
												"$ref": "#/components/schemas/exbuildings"
											}
										}
									}
								}
							}
						}
					},
					"400": {
						"description": "Bad request"
					},
					"401": {
						"description": "Unauthorized"
					},
					"500": {
						"description": "Internal server error"
					}
				},
				"security": [
					{
						"bearerAuth": []
					}
				]
			}
		},
		"/amenitiespropertiesmasters": {
			"get": {
				"summary": "Retrieve amenities properties with optional filtering, searching, and pagination",
				"tags": [
					"property amenities"
				],
				"parameters": [
					{
						"name": "id",
						"in": "path",
						"type": "string",
						"description": "ID of the amenities property"
					},
					{
						"name": "select",
						"in": "query",
						"type": "string",
						"description": "Comma-separated list of fields to include in the response"
					},
					{
						"name": "q",
						"in": "query",
						"type": "string",
						"description": "Search query to filter results"
					},
					{
						"name": "filter",
						"in": "query",
						"type": "string",
						"description": "Filters to apply, formatted as 'column,operator,value|column,operator,value'"
					},
					{
						"name": "order",
						"in": "query",
						"type": "string",
						"description": "Order by fields, formatted as 'field1,ASC|field2,DESC' or 'random' for random order"
					},
					{
						"name": "pagination",
						"in": "query",
						"type": "string",
						"description": "Set to 'true' to enable pagination"
					},
					{
						"name": "first",
						"in": "query",
						"type": "integer",
						"description": "Offset for pagination"
					},
					{
						"name": "rows",
						"in": "query",
						"type": "integer",
						"description": "Number of rows to return"
					}
				],
				"responses": {
					"200": {
						"description": "Successful response",
						"schema": {
							"type": "object",
							"properties": {
								"total": {
									"type": "integer",
									"description": "Total number of records if pagination is enabled"
								},
								"data": {
									"type": "array",
									"items": {
										"$ref": "#/components/schemas/Tenant"
									},
									"description": "List of amenities properties"
								}
							}
						}
					},
					"400": {
						"description": "Invalid request parameters"
					},
					"500": {
						"description": "Internal server error"
					}
				}
			}
		},
		"/amenitiesprojectsmasters": {
			"get": {
				"summary": "Retrieve amenities projects with optional filtering, searching, and pagination",
				"tags": [
					"Project amenities"
				],
				"parameters": [
					{
						"name": "id",
						"in": "path",
						"type": "string",
						"description": "ID of the amenities property"
					},
					{
						"name": "select",
						"in": "query",
						"type": "string",
						"description": "Comma-separated list of fields to include in the response"
					},
					{
						"name": "q",
						"in": "query",
						"type": "string",
						"description": "Search query to filter results"
					},
					{
						"name": "filter",
						"in": "query",
						"type": "string",
						"description": "Filters to apply, formatted as 'column,operator,value|column,operator,value'"
					},
					{
						"name": "order",
						"in": "query",
						"type": "string",
						"description": "Order by fields, formatted as 'field1,ASC|field2,DESC' or 'random' for random order"
					},
					{
						"name": "pagination",
						"in": "query",
						"type": "string",
						"description": "Set to 'true' to enable pagination"
					},
					{
						"name": "first",
						"in": "query",
						"type": "integer",
						"description": "Offset for pagination"
					},
					{
						"name": "rows",
						"in": "query",
						"type": "integer",
						"description": "Number of rows to return"
					}
				],
				"responses": {
					"200": {
						"description": "Successful response",
						"schema": {
							"type": "object",
							"properties": {
								"total": {
									"type": "integer",
									"description": "Total number of records if pagination is enabled"
								},
								"data": {
									"type": "array",
									"items": {
										"$ref": "#/components/schemas/Tenant"
									},
									"description": "List of amenities project"
								}
							}
						}
					},
					"400": {
						"description": "Invalid request parameters"
					},
					"500": {
						"description": "Internal server error"
					}
				}
			}
		},
		"/tenants": {
			"get": {
				"summary": "Retrieve tenants with optional filtering, searching, and pagination",
				"tags": [
					"tenants"
				],
				"parameters": [
					{
						"name": "id",
						"in": "path",
						"type": "string",
						"description": "ID of the tenant"
					},
					{
						"name": "select",
						"in": "query",
						"type": "string",
						"description": "Comma-separated list of fields to include in the response"
					},
					{
						"name": "q",
						"in": "query",
						"type": "string",
						"description": "Search query to filter results"
					},
					{
						"name": "filter",
						"in": "query",
						"type": "string",
						"description": "Filters to apply, formatted as 'column,operator,value|column,operator,value'"
					},
					{
						"name": "order",
						"in": "query",
						"type": "string",
						"description": "Order by fields, formatted as 'field1,ASC|field2,DESC' or 'random' for random order"
					},
					{
						"name": "pagination",
						"in": "query",
						"type": "string",
						"description": "Set to 'true' to enable pagination"
					},
					{
						"name": "first",
						"in": "query",
						"type": "integer",
						"description": "Offset for pagination"
					},
					{
						"name": "rows",
						"in": "query",
						"type": "integer",
						"description": "Number of rows to return"
					}
				],
				"responses": {
					"200": {
						"description": "Successful response",
						"schema": {
							"type": "object",
							"properties": {
								"total": {
									"type": "integer",
									"description": "Total number of records if pagination is enabled"
								},
								"data": {
									"type": "array",
									"items": {
										"$ref": "#/components/schemas/Tenant"
									},
									"description": "List of tenants"
								}
							}
						}
					},
					"400": {
						"description": "Invalid request parameters"
					},
					"500": {
						"description": "Internal server error"
					}
				}
			}
		},
		"/categories": {
			"get": {
				"summary": "Retrieve Categories with optional filtering, searching, and pagination",
				"tags": [
					"Categories"
				],
				"parameters": [
					{
						"name": "id",
						"in": "path",
						"type": "string",
						"description": "ID of the tenant"
					},
					{
						"name": "select",
						"in": "query",
						"type": "string",
						"description": "Comma-separated list of fields to include in the response"
					},
					{
						"name": "q",
						"in": "query",
						"type": "string",
						"description": "Search query to filter results"
					},
					{
						"name": "filter",
						"in": "query",
						"type": "string",
						"description": "Filters to apply, formatted as 'column,operator,value|column,operator,value'"
					},
					{
						"name": "order",
						"in": "query",
						"type": "string",
						"description": "Order by fields, formatted as 'field1,ASC|field2,DESC' or 'random' for random order"
					},
					{
						"name": "pagination",
						"in": "query",
						"type": "string",
						"description": "Set to 'true' to enable pagination"
					},
					{
						"name": "first",
						"in": "query",
						"type": "integer",
						"description": "Offset for pagination"
					},
					{
						"name": "rows",
						"in": "query",
						"type": "integer",
						"description": "Number of rows to return"
					}
				],
				"responses": {
					"200": {
						"description": "Successful response",
						"schema": {
							"type": "object",
							"properties": {
								"total": {
									"type": "integer",
									"description": "Total number of records if pagination is enabled"
								},
								"data": {
									"type": "array",
									"items": {
										"$ref": "#/components/schemas/Tenant"
									},
									"description": "List of categories "
								}
							}
						}
					},
					"400": {
						"description": "Invalid request parameters"
					},
					"500": {
						"description": "Internal server error"
					}
				}
			}
		},
		"/attaches": {
			"get": {
				"summary": "Retrieve attaches with optional filtering, searching, and pagination",
				"tags": [
					"Attaches"
				],
				"parameters": [
					{
						"name": "id",
						"in": "path",
						"type": "string",
						"description": "ID of the attach"
					},
					{
						"name": "select",
						"in": "query",
						"type": "string",
						"description": "Comma-separated list of fields to include in the response"
					},
					{
						"name": "q",
						"in": "query",
						"type": "string",
						"description": "Search query to filter results"
					},
					{
						"name": "filter",
						"in": "query",
						"type": "string",
						"description": "Filters to apply, formatted as 'column,operator,value|column,operator,value'"
					},
					{
						"name": "order",
						"in": "query",
						"type": "string",
						"description": "Order by fields, formatted as 'field1,ASC|field2,DESC' or 'random' for random order"
					},
					{
						"name": "pagination",
						"in": "query",
						"type": "string",
						"description": "Set to 'true' to enable pagination"
					},
					{
						"name": "first",
						"in": "query",
						"type": "integer",
						"description": "Offset for pagination"
					},
					{
						"name": "rows",
						"in": "query",
						"type": "integer",
						"description": "Number of rows to return"
					}
				],
				"responses": {
					"200": {
						"description": "Successful response",
						"schema": {
							"type": "object",
							"properties": {
								"total": {
									"type": "integer",
									"description": "Total number of records if pagination is enabled"
								},
								"data": {
									"type": "array",
									"items": {
										"$ref": "#/components/schemas/Attach"
									},
									"description": "List of attaches"
								}
							}
						}
					},
					"400": {
						"description": "Invalid request parameters"
					},
					"500": {
						"description": "Internal server error"
					}
				}
			}
		},
		"/roomtypes": {
			"get": {
				"summary": "Retrieve roomtypes with optional filtering, searching, and pagination",
				"tags": [
					"Roomtypes"
				],
				"parameters": [
					{
						"name": "id",
						"in": "path",
						"type": "string",
						"description": "ID of the attach"
					},
					{
						"name": "select",
						"in": "query",
						"type": "string",
						"description": "Comma-separated list of fields to include in the response"
					},
					{
						"name": "q",
						"in": "query",
						"type": "string",
						"description": "Search query to filter results"
					},
					{
						"name": "filter",
						"in": "query",
						"type": "string",
						"description": "Filters to apply, formatted as 'column,operator,value|column,operator,value'"
					},
					{
						"name": "order",
						"in": "query",
						"type": "string",
						"description": "Order by fields, formatted as 'field1,ASC|field2,DESC' or 'random' for random order"
					},
					{
						"name": "pagination",
						"in": "query",
						"type": "string",
						"description": "Set to 'true' to enable pagination"
					},
					{
						"name": "first",
						"in": "query",
						"type": "integer",
						"description": "Offset for pagination"
					},
					{
						"name": "rows",
						"in": "query",
						"type": "integer",
						"description": "Number of rows to return"
					}
				],
				"responses": {
					"200": {
						"description": "Successful response",
						"schema": {
							"type": "object",
							"properties": {
								"total": {
									"type": "integer",
									"description": "Total number of records if pagination is enabled"
								},
								"data": {
									"type": "array",
									"items": {
										"$ref": "#/components/schemas/RoomType"
									},
									"description": "List of roomtypes"
								}
							}
						}
					},
					"400": {
						"description": "Invalid request parameters"
					},
					"500": {
						"description": "Internal server error"
					}
				}
			}
		},
		"/propertylabels": {
			"get": {
				"summary": "Retrieve property labels with optional filtering, searching, and pagination",
				"tags": [
					"PropertyLabel"
				],
				"parameters": [
					{
						"name": "select",
						"in": "query",
						"type": "string",
						"description": "Comma-separated list of fields to include in the response"
					},
					{
						"name": "q",
						"in": "query",
						"type": "string",
						"description": "Search query to filter results"
					},
					{
						"name": "filter",
						"in": "query",
						"type": "string",
						"description": "Filters to apply, formatted as 'column,operator,value|column,operator,value'"
					},
					{
						"name": "order",
						"in": "query",
						"type": "string",
						"description": "Order by fields, formatted as 'field1,ASC|field2,DESC' or 'random' for random order"
					},
					{
						"name": "pagination",
						"in": "query",
						"type": "string",
						"description": "Set to 'true' to enable pagination"
					},
					{
						"name": "first",
						"in": "query",
						"type": "integer",
						"description": "Offset for pagination"
					},
					{
						"name": "rows",
						"in": "query",
						"type": "integer",
						"description": "Number of rows to return"
					}
				],
				"responses": {
					"200": {
						"description": "Successful response",
						"schema": {
							"type": "object",
							"properties": {
								"total": {
									"type": "integer",
									"description": "Total number of records if pagination is enabled"
								},
								"data": {
									"type": "array",
									"items": {
										"$ref": "#/components/schemas/PropertyLabel"
									},
									"description": "List of property labels"
								}
							}
						}
					},
					"400": {
						"description": "Invalid request parameters"
					},
					"500": {
						"description": "Internal server error"
					}
				}
			}
		},
		"/projectlabels": {
			"get": {
				"summary": "Retrieve project labels with optional filtering, searching, and pagination",
				"tags": [
					"projectLabel"
				],
				"parameters": [
					{
						"name": "select",
						"in": "query",
						"type": "string",
						"description": "Comma-separated list of fields to include in the response"
					},
					{
						"name": "q",
						"in": "query",
						"type": "string",
						"description": "Search query to filter results"
					},
					{
						"name": "filter",
						"in": "query",
						"type": "string",
						"description": "Filters to apply, formatted as 'column,operator,value|column,operator,value'"
					},
					{
						"name": "order",
						"in": "query",
						"type": "string",
						"description": "Order by fields, formatted as 'field1,ASC|field2,DESC' or 'random' for random order"
					},
					{
						"name": "pagination",
						"in": "query",
						"type": "string",
						"description": "Set to 'true' to enable pagination"
					},
					{
						"name": "first",
						"in": "query",
						"type": "integer",
						"description": "Offset for pagination"
					},
					{
						"name": "rows",
						"in": "query",
						"type": "integer",
						"description": "Number of rows to return"
					}
				],
				"responses": {
					"200": {
						"description": "Successful response",
						"schema": {
							"type": "object",
							"properties": {
								"total": {
									"type": "integer",
									"description": "Total number of records if pagination is enabled"
								},
								"data": {
									"type": "array",
									"items": {
										"$ref": "#/components/schemas/ProjectLabel"
									},
									"description": "List of projectlabels"
								}
							}
						}
					},
					"400": {
						"description": "Invalid request parameters"
					},
					"500": {
						"description": "Internal server error"
					}
				}
			}
		},
		"/currencies": {
			"get": {
				"summary": "Retrieve currencies with optional filtering, searching, and pagination",
				"tags": [
					"Currencies"
				],
				"parameters": [
					{
						"name": "select",
						"in": "query",
						"type": "string",
						"description": "Comma-separated list of fields to include in the response"
					},
					{
						"name": "q",
						"in": "query",
						"type": "string",
						"description": "Search query to filter results"
					},
					{
						"name": "filter",
						"in": "query",
						"type": "string",
						"description": "Filters to apply, formatted as 'column,operator,value|column,operator,value'"
					},
					{
						"name": "order",
						"in": "query",
						"type": "string",
						"description": "Order by fields, formatted as 'field1,ASC|field2,DESC' or 'random' for random order"
					},
					{
						"name": "pagination",
						"in": "query",
						"type": "string",
						"description": "Set to 'true' to enable pagination"
					},
					{
						"name": "first",
						"in": "query",
						"type": "integer",
						"description": "Offset for pagination"
					},
					{
						"name": "rows",
						"in": "query",
						"type": "integer",
						"description": "Number of rows to return"
					}
				],
				"responses": {
					"200": {
						"description": "Successful response",
						"schema": {
							"type": "object",
							"properties": {
								"total": {
									"type": "integer",
									"description": "Total number of records if pagination is enabled"
								},
								"data": {
									"type": "array",
									"items": {
										"$ref": "#/components/schemas/Currency"
									},
									"description": "List of currencies"
								}
							}
						}
					},
					"400": {
						"description": "Invalid request parameters"
					},
					"500": {
						"description": "Internal server error"
					}
				}
			}
		},
		"/icons": {
			"get": {
				"summary": "Retrieve icons",
				"tags": [
					"icons"
				],
				"responses": {
					"200": {
						"description": "Successful response",
						"schema": {
							"type": "array",
							"items": {
								"$ref": "#/components/schemas/assets"
							},
							"description": "List of icons"
						}
					},
					"400": {
						"description": "Invalid request"
					},
					"500": {
						"description": "Internal server error"
					}
				}
			}
		},
		"/coordinates/{coordinate}/cities": {
			"get": {
				"tags": [
					"get cities by co-ordinates"
				],
				"summary": "Get city by geographic coordinate",
				"description": "Retrieve the city and its associated data based on a geographic coordinate (latitude, longitude).",
				"parameters": [
					{
						"name": "coordinate",
						"in": "path",
						"required": true,
						"description": "Geographic coordinate in the format 'latitude,longitude'",
						"schema": {
							"type": "string",
							"example": "40.712776,-74.005974"
						}
					}
				],
				"responses": {
					"200": {
						"description": "City and building data based on the provided coordinates",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/City"
								}
							}
						}
					},
					"500": {
						"description": "Server error",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean",
											"example": true
										},
										"message": {
											"type": "string",
											"example": "Internal server error"
										}
									}
								}
							}
						}
					}
				}
			}
		},
		"/properties/{uuid}/pdf": {
			"get": {
				"tags": [
					"properties"
				],
				"summary": "Generate a PDF for the property",
				"description": "Fetches a property by its UUID and generates a PDF of the property details.",
				"parameters": [
					{
						"name": "uuid",
						"in": "path",
						"required": true,
						"description": "The UUID of the property to fetch",
						"schema": {
							"type": "string",
							"example": "a1b2c3d4-e5f6-7890-ab12-34cd56ef78gh"
						}
					}
				],
				"responses": {
					"200": {
						"description": "PDF file encoded as a base64 string",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"file": {
											"type": "string",
											"description": "Base64 encoded PDF file",
											"example": "data:application/pdf;base64,JVBERi0xLjQKJcfsj6IK..."
										}
									}
								}
							}
						}
					},
					"201": {
						"description": "Error in PDF generation",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"message": {
											"type": "string",
											"example": "Error message regarding the PDF generation"
										}
									}
								}
							}
						}
					},
					"404": {
						"description": "Property not found",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean",
											"example": true
										},
										"message": {
											"type": "string",
											"example": "Property not found."
										}
									}
								}
							}
						}
					},
					"500": {
						"description": "Server error",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean",
											"example": true
										},
										"message": {
											"type": "string",
											"example": "Error generating PDF"
										}
									}
								}
							}
						}
					}
				}
			}
		},
		"/services/{uuid}/pdf": {
			"get": {
				"tags": [
					"services"
				],
				"summary": "Generate a PDF for the service",
				"description": "Fetches a service by its UUID and generates a PDF of the service details.",
				"parameters": [
					{
						"name": "uuid",
						"in": "path",
						"required": true,
						"description": "The UUID of the service to fetch",
						"schema": {
							"type": "string",
							"example": "a1b2c3d4-e5f6-7890-ab12-34cd56ef78gh"
						}
					}
				],
				"responses": {
					"200": {
						"description": "PDF file encoded as a base64 string",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"file": {
											"type": "string",
											"description": "Base64 encoded PDF file",
											"example": "data:application/pdf;base64,JVBERi0xLjQKJcfsj6IK..."
										}
									}
								}
							}
						}
					},
					"201": {
						"description": "Error in PDF generation",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"message": {
											"type": "string",
											"example": "Error message regarding the PDF generation"
										}
									}
								}
							}
						}
					},
					"404": {
						"description": "service not found",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean",
											"example": true
										},
										"message": {
											"type": "string",
											"example": "service not found."
										}
									}
								}
							}
						}
					},
					"500": {
						"description": "Server error",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean",
											"example": true
										},
										"message": {
											"type": "string",
											"example": "Error generating PDF"
										}
									}
								}
							}
						}
					}
				}
			}
		},
		"/requirements/{uuid}/pdf": {
			"get": {
				"tags": [
					"requirements"
				],
				"summary": "Generate a PDF for the requirement",
				"description": "Fetches a requirement by its UUID and generates a PDF of the requirement details.",
				"parameters": [
					{
						"name": "uuid",
						"in": "path",
						"required": true,
						"description": "The UUID of the requirement to fetch",
						"schema": {
							"type": "string",
							"example": "a1b2c3d4-e5f6-7890-ab12-34cd56ef78gh"
						}
					}
				],
				"responses": {
					"200": {
						"description": "PDF file encoded as a base64 string",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"file": {
											"type": "string",
											"description": "Base64 encoded PDF file",
											"example": "data:application/pdf;base64,JVBERi0xLjQKJcfsj6IK..."
										}
									}
								}
							}
						}
					},
					"201": {
						"description": "Error in PDF generation",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"message": {
											"type": "string",
											"example": "Error message regarding the PDF generation"
										}
									}
								}
							}
						}
					},
					"404": {
						"description": "requirement not found",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean",
											"example": true
										},
										"message": {
											"type": "string",
											"example": "requirement not found."
										}
									}
								}
							}
						}
					},
					"500": {
						"description": "Server error",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean",
											"example": true
										},
										"message": {
											"type": "string",
											"example": "Error generating PDF"
										}
									}
								}
							}
						}
					}
				}
			}
		},
		"/projects/{uuid}/pdf": {
			"get": {
				"tags": [
					"projects"
				],
				"summary": "Generate a PDF for the project",
				"description": "Fetches a project by its UUID and generates a PDF of the project details.",
				"parameters": [
					{
						"name": "uuid",
						"in": "path",
						"required": true,
						"description": "The UUID of the project to fetch",
						"schema": {
							"type": "string",
							"example": "a1b2c3d4-e5f6-7890-ab12-34cd56ef78gh"
						}
					}
				],
				"responses": {
					"200": {
						"description": "PDF file encoded as a base64 string",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"file": {
											"type": "string",
											"description": "Base64 encoded PDF file",
											"example": "data:application/pdf;base64,JVBERi0xLjQKJcfsj6IK..."
										}
									}
								}
							}
						}
					},
					"201": {
						"description": "Error in PDF generation",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"message": {
											"type": "string",
											"example": "Error message regarding the PDF generation"
										}
									}
								}
							}
						}
					},
					"404": {
						"description": "project not found",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean",
											"example": true
										},
										"message": {
											"type": "string",
											"example": "project not found."
										}
									}
								}
							}
						}
					},
					"500": {
						"description": "Server error",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean",
											"example": true
										},
										"message": {
											"type": "string",
											"example": "Error generating PDF"
										}
									}
								}
							}
						}
					}
				}
			}
		},
		"/properties/{id}/reviews": {
			"post": {
				"tags": [
					"properties"
				],
				"summary": "Create a review for a property",
				"description": "Add or update a review for a property based on the user and property ID.",
				"parameters": [
					{
						"name": "id",
						"in": "path",
						"required": true,
						"description": "The ID of the property being reviewed",
						"schema": {
							"type": "integer",
							"example": 123
						}
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object",
								"properties": {
									"users_id": {
										"type": "integer",
										"description": "ID of the user submitting the review",
										"example": 456
									},
									"rate": {
										"type": "integer",
										"description": "Rating given to the property",
										"example": 5
									},
									"review": {
										"type": "string",
										"description": "Review text provided by the user",
										"example": "Great property with all necessary amenities."
									}
								},
								"required": [
									"users_id",
									"rate",
									"review"
								]
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "Review added or updated successfully",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"items": {
										"$ref": "#/components/schemas/Review"
									},
									"description": "List of currencies"
								}
							}
						}
					},
					"201": {
						"description": "Validation errors or review already exists",
						"content": {
							"application/json": {
								"schema": {
									"type": "array",
									"items": {
										"type": "object",
										"properties": {
											"msg": {
												"type": "string",
												"description": "Error message",
												"example": "Review is required"
											}
										}
									}
								}
							}
						}
					},
					"500": {
						"description": "Internal server error",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean",
											"example": true
										},
										"status": {
											"type": "integer",
											"example": 500
										},
										"message": {
											"type": "string",
											"example": "Error message"
										}
									}
								}
							}
						}
					}
				}
			}
		},
		"/projects/{id}/reviews": {
			"post": {
				"tags": [
					"projects"
				],
				"summary": "Create a review for a project",
				"description": "Add or update a review for a project based on the user and project ID.",
				"parameters": [
					{
						"name": "id",
						"in": "path",
						"required": true,
						"description": "The ID of the project being reviewed",
						"schema": {
							"type": "integer",
							"example": 123
						}
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object",
								"properties": {
									"users_id": {
										"type": "integer",
										"description": "ID of the user submitting the review",
										"example": 456
									},
									"rate": {
										"type": "integer",
										"description": "Rating given to the project",
										"example": 5
									},
									"review": {
										"type": "string",
										"description": "Review text provided by the user",
										"example": "Great project with all necessary amenities."
									}
								},
								"required": [
									"users_id",
									"rate",
									"review"
								]
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "Review added or updated successfully",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"items": {
										"$ref": "#/components/schemas/Review"
									},
									"description": "List of currencies"
								}
							}
						}
					},
					"201": {
						"description": "Validation errors or review already exists",
						"content": {
							"application/json": {
								"schema": {
									"type": "array",
									"items": {
										"type": "object",
										"properties": {
											"msg": {
												"type": "string",
												"description": "Error message",
												"example": "Review is required"
											}
										}
									}
								}
							}
						}
					},
					"500": {
						"description": "Internal server error",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean",
											"example": true
										},
										"status": {
											"type": "integer",
											"example": 500
										},
										"message": {
											"type": "string",
											"example": "Error message"
										}
									}
								}
							}
						}
					}
				}
			}
		},
		"/users/{id}/faqreviews": {
			"post": {
				"tags": [
					"FAQ Reviews"
				],
				"summary": "Add a response to a FAQ for a user",
				"description": "Allows a user to submit a response to a specific FAQ.",
				"parameters": [
					{
						"name": "id",
						"in": "path",
						"required": true,
						"description": "The ID of the user submitting the response",
						"schema": {
							"type": "integer",
							"example": 123
						}
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object",
								"properties": {
									"faqs_id": {
										"type": "integer",
										"description": "ID of the FAQ",
										"example": 456
									},
									"response": {
										"type": "string",
										"description": "User's response to the FAQ",
										"example": "This is my response to the FAQ."
									}
								},
								"required": [
									"faqs_id",
									"response"
								]
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "Response added successfully",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"message": {
											"type": "string",
											"example": "Response added successfully"
										}
									}
								}
							}
						}
					},
					"201": {
						"description": "Validation errors",
						"content": {
							"application/json": {
								"schema": {
									"type": "array",
									"items": {
										"type": "object",
										"properties": {
											"msg": {
												"type": "string",
												"description": "Error message",
												"example": "Response is required"
											}
										}
									}
								}
							}
						}
					},
					"404": {
						"description": "User not found",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean",
											"example": true
										},
										"message": {
											"type": "string",
											"example": "User not found."
										}
									}
								}
							}
						}
					},
					"500": {
						"description": "Internal server error",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean",
											"example": true
										},
										"message": {
											"type": "string",
											"example": "Error message"
										}
									}
								}
							}
						}
					}
				}
			}
		},
		"/properties/{uuid}/visitors/pdf": {
			"get": {
				"tags": [
					"properties"
				],
				"summary": "Generate PDF of property visitors",
				"description": "Generates a PDF file containing details of visitors to a specific property and returns it in a base64 encoded format.",
				"parameters": [
					{
						"name": "uuid",
						"in": "path",
						"required": true,
						"description": "The UUID of the property for which visitors PDF is being generated",
						"schema": {
							"type": "string",
							"example": "123e4567-e89b-12d3-a456-426614174000"
						}
					}
				],
				"responses": {
					"200": {
						"description": "PDF generated successfully",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"file": {
											"type": "string",
											"description": "Base64 encoded PDF file",
											"example": "data:application/pdf;base64,JVBERi0xLjcKJY..."
										}
									}
								}
							}
						}
					},
					"201": {
						"description": "Error generating PDF",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"message": {
											"type": "string",
											"example": "Error message indicating why the PDF generation failed"
										}
									}
								}
							}
						}
					},
					"500": {
						"description": "Internal server error",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean",
											"example": true
										},
										"message": {
											"type": "string",
											"example": "Error generating PDF"
										}
									}
								}
							}
						}
					}
				},
				"security": [
					{
						"bearerAuth": []
					}
				]
			}
		},
		"/services/{uuid}/visitors/pdf": {
			"get": {
				"tags": [
					"services"
				],
				"summary": "Generate PDF of service visitors",
				"description": "Generates a PDF file containing details of visitors to a specific service and returns it in a base64 encoded format.",
				"parameters": [
					{
						"name": "uuid",
						"in": "path",
						"required": true,
						"description": "The UUID of the service for which visitors PDF is being generated",
						"schema": {
							"type": "string",
							"example": "123e4567-e89b-12d3-a456-426614174000"
						}
					}
				],
				"responses": {
					"200": {
						"description": "PDF generated successfully",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"file": {
											"type": "string",
											"description": "Base64 encoded PDF file",
											"example": "data:application/pdf;base64,JVBERi0xLjcKJY..."
										}
									}
								}
							}
						}
					},
					"201": {
						"description": "Error generating PDF",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"message": {
											"type": "string",
											"example": "Error message indicating why the PDF generation failed"
										}
									}
								}
							}
						}
					},
					"500": {
						"description": "Internal server error",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean",
											"example": true
										},
										"message": {
											"type": "string",
											"example": "Error generating PDF"
										}
									}
								}
							}
						}
					}
				},
				"security": [
					{
						"bearerAuth": []
					}
				]
			}
		},
		"/requirements/{uuid}/visitors/pdf": {
			"get": {
				"tags": [
					"requirements"
				],
				"summary": "Generate PDF of requirement visitors",
				"description": "Generates a PDF file containing details of visitors to a specific requirement and returns it in a base64 encoded format.",
				"parameters": [
					{
						"name": "uuid",
						"in": "path",
						"required": true,
						"description": "The UUID of the requirement for which visitors PDF is being generated",
						"schema": {
							"type": "string",
							"example": "123e4567-e89b-12d3-a456-426614174000"
						}
					}
				],
				"responses": {
					"200": {
						"description": "PDF generated successfully",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"file": {
											"type": "string",
											"description": "Base64 encoded PDF file",
											"example": "data:application/pdf;base64,JVBERi0xLjcKJY..."
										}
									}
								}
							}
						}
					},
					"201": {
						"description": "Error generating PDF",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"message": {
											"type": "string",
											"example": "Error message indicating why the PDF generation failed"
										}
									}
								}
							}
						}
					},
					"500": {
						"description": "Internal server error",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean",
											"example": true
										},
										"message": {
											"type": "string",
											"example": "Error generating PDF"
										}
									}
								}
							}
						}
					}
				},
				"security": [
					{
						"bearerAuth": []
					}
				]
			}
		},
		"/projects/{uuid}/visitors/pdf": {
			"get": {
				"tags": [
					"projects"
				],
				"summary": "Generate PDF of project visitors",
				"description": "Generates a PDF file containing details of visitors to a specific project and returns it in a base64 encoded format.",
				"parameters": [
					{
						"name": "uuid",
						"in": "path",
						"required": true,
						"description": "The UUID of the project for which visitors PDF is being generated",
						"schema": {
							"type": "string",
							"example": "123e4567-e89b-12d3-a456-426614174000"
						}
					}
				],
				"responses": {
					"200": {
						"description": "PDF generated successfully",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"file": {
											"type": "string",
											"description": "Base64 encoded PDF file",
											"example": "data:application/pdf;base64,JVBERi0xLjcKJY..."
										}
									}
								}
							}
						}
					},
					"201": {
						"description": "Error generating PDF",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"message": {
											"type": "string",
											"example": "Error message indicating why the PDF generation failed"
										}
									}
								}
							}
						}
					},
					"500": {
						"description": "Internal server error",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean",
											"example": true
										},
										"message": {
											"type": "string",
											"example": "Error generating PDF"
										}
									}
								}
							}
						}
					}
				},
				"security": [
					{
						"bearerAuth": []
					}
				]
			}
		},
		"/platform/web/adds": {
			"get": {
				"summary": "Get Properties and Projects",
				"description": "Retrieve a list of properties and projects sorted by distance from a given location. Promoted properties and projects are returned in the response.",
				"parameters": [
					{
						"in": "query",
						"name": "latitude",
						"schema": {
							"type": "number"
						},
						"description": "Latitude of the user's current location.",
						"required": true
					},
					{
						"in": "query",
						"name": "longitude",
						"schema": {
							"type": "number"
						},
						"description": "Longitude of the user's current location.",
						"required": true
					}
				],
				"responses": {
					"200": {
						"description": "Successful response with the list of properties and projects.",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"adssone": {
											"type": "array",
											"description": "List of promoted projects and properties closest to the provided coordinates.",
											"items": {
												"type": "object",
												"properties": {
													"title": {
														"type": "string",
														"description": "The title or building name of the project/property."
													},
													"price": {
														"type": "number",
														"description": "The price of the project/property."
													},
													"address": {
														"type": "string",
														"description": "The address of the project/property."
													},
													"photos": {
														"type": "array",
														"description": "A list of photos associated with the project/property.",
														"items": {
															"type": "object",
															"items": {
																"$ref": "#/components/schemas/assets"
															}
														}
													},
													"type": {
														"type": "string",
														"description": "Property type (or \"N/A\" if not available)."
													}
												}
											}
										},
										"adstwo": {
											"type": "array",
											"description": "List of additional promoted properties excluding the ones in `adssone`.",
											"items": {
												"type": "object",
												"properties": {
													"title": {
														"type": "string",
														"description": "The title or building name of the project/property."
													},
													"price": {
														"type": "number",
														"description": "The price of the project/property."
													},
													"address": {
														"type": "string",
														"description": "The address of the project/property."
													},
													"photos": {
														"type": "array",
														"description": "A list of photos associated with the project/property.",
														"items": {
															"type": "object",
															"items": {
																"$ref": "#/components/schemas/assets"
															}
														}
													},
													"type": {
														"type": "string",
														"description": "Property type (or \"N/A\" if not available)."
													}
												}
											}
										}
									}
								}
							}
						}
					},
					"400": {
						"description": "Bad Request, required parameters missing or invalid."
					},
					"500": {
						"description": "Internal Server Error"
					}
				}
			}
		},
		"/platform/device/adds": {
			"get": {
				"summary": "Get Properties and Projects",
				"description": "Retrieve a list of properties and projects sorted by distance from a given location. Promoted properties and projects are returned in the response.",
				"parameters": [
					{
						"in": "query",
						"name": "latitude",
						"schema": {
							"type": "number"
						},
						"description": "Latitude of the user's current location.",
						"required": true
					},
					{
						"in": "query",
						"name": "longitude",
						"schema": {
							"type": "number"
						},
						"description": "Longitude of the user's current location.",
						"required": true
					}
				],
				"responses": {
					"200": {
						"description": "Successful response with the list of properties and projects.",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"adssone": {
											"type": "array",
											"description": "List of promoted projects and properties closest to the provided coordinates.",
											"items": {
												"type": "object",
												"properties": {
													"title": {
														"type": "string",
														"description": "The title or building name of the project/property."
													},
													"price": {
														"type": "number",
														"description": "The price of the project/property."
													},
													"address": {
														"type": "string",
														"description": "The address of the project/property."
													},
													"photos": {
														"type": "array",
														"description": "A list of photos associated with the project/property.",
														"items": {
															"type": "object",
															"items": {
																"$ref": "#/components/schemas/assets"
															}
														}
													},
													"type": {
														"type": "string",
														"description": "Property type (or \"N/A\" if not available)."
													}
												}
											}
										},
										"adstwo": {
											"type": "array",
											"description": "List of additional promoted properties excluding the ones in `adssone`.",
											"items": {
												"type": "object",
												"properties": {
													"title": {
														"type": "string",
														"description": "The title or building name of the project/property."
													},
													"price": {
														"type": "number",
														"description": "The price of the project/property."
													},
													"address": {
														"type": "string",
														"description": "The address of the project/property."
													},
													"photos": {
														"type": "array",
														"description": "A list of photos associated with the project/property.",
														"items": {
															"type": "object",
															"items": {
																"$ref": "#/components/schemas/assets"
															}
														}
													},
													"type": {
														"type": "string",
														"description": "Property type (or \"N/A\" if not available)."
													}
												}
											}
										}
									}
								}
							}
						}
					},
					"400": {
						"description": "Bad Request, required parameters missing or invalid."
					},
					"500": {
						"description": "Internal Server Error"
					}
				}
			}
		},
		"/properties/{id}/photos/{uuid}": {
			"put": {
				"tags": [
					"properties"
				],
				"summary": "Set Default Image for Property",
				"description": "Sets a default image for a property by its ID and UUID. The user must be the owner of the property.",
				"parameters": [
					{
						"name": "id",
						"in": "path",
						"required": true,
						"description": "ID of the property",
						"schema": {
							"type": "integer"
						}
					},
					{
						"name": "uuid",
						"in": "path",
						"required": true,
						"description": "UUID of the photo to set as default",
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"description": "Default photo has been set",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean",
											"example": false
										},
										"message": {
											"type": "string",
											"example": "default photo has been set"
										}
									}
								}
							}
						}
					},
					"201": {
						"description": "Error in request",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean",
											"example": true
										},
										"message": {
											"type": "string",
											"example": "property not found"
										}
									}
								}
							}
						}
					},
					"500": {
						"description": "Internal Server Error",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean",
											"example": true
										},
										"message": {
											"type": "string",
											"example": "Internal server error"
										}
									}
								}
							}
						}
					}
				}
			}
		},
		"/projects/{id}/photos/{uuid}": {
			"put": {
				"tags": [
					"projects"
				],
				"summary": "Set Default Image for project",
				"description": "Sets a default image for a project by its ID and UUID. The user must be the owner of the project.",
				"parameters": [
					{
						"name": "id",
						"in": "path",
						"required": true,
						"description": "ID of the project",
						"schema": {
							"type": "integer"
						}
					},
					{
						"name": "uuid",
						"in": "path",
						"required": true,
						"description": "UUID of the photo to set as default",
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"description": "Default photo has been set",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean",
											"example": false
										},
										"message": {
											"type": "string",
											"example": "default photo has been set"
										}
									}
								}
							}
						}
					},
					"201": {
						"description": "Error in request",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean",
											"example": true
										},
										"message": {
											"type": "string",
											"example": "project not found"
										}
									}
								}
							}
						}
					},
					"500": {
						"description": "Internal Server Error",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean",
											"example": true
										},
										"message": {
											"type": "string",
											"example": "Internal server error"
										}
									}
								}
							}
						}
					}
				}
			}
		},
		"/districts/{id}/packages": {
			"get": {
				"tags": [
					"packagemasters"
				],
				"summary": "Get a list of packagemasters as per districts",
				"operationId": "getPackagemasters",
				"parameters": [
					{
						"name": "id",
						"in": "path",
						"required": true,
						"description": "The ID of the districts",
						"schema": {
							"type": "string"
						}
					},
					{
						"name": "select",
						"in": "query",
						"required": false,
						"description": "Comma-separated list of fields to include in the response",
						"schema": {
							"type": "string"
						}
					},
					{
						"name": "q",
						"in": "query",
						"required": false,
						"description": "Search query for filtering packagemasters",
						"schema": {
							"type": "string"
						}
					},
					{
						"name": "filter",
						"in": "query",
						"required": false,
						"description": "Filter criteria in the format of column,value",
						"schema": {
							"type": "string"
						}
					},
					{
						"name": "order",
						"in": "query",
						"required": false,
						"description": "Order the results based on specific fields",
						"schema": {
							"type": "string",
							"example": "column1,asc|column2,desc"
						}
					},
					{
						"name": "pagination",
						"in": "query",
						"required": false,
						"description": "Enable pagination",
						"schema": {
							"type": "string",
							"enum": [
								"true",
								"false"
							]
						}
					},
					{
						"name": "first",
						"in": "query",
						"required": false,
						"description": "The starting index for pagination",
						"schema": {
							"type": "integer",
							"example": 0
						}
					},
					{
						"name": "rows",
						"in": "query",
						"required": false,
						"description": "The number of rows to return for pagination",
						"schema": {
							"type": "integer",
							"example": 10
						}
					}
				],
				"responses": {
					"200": {
						"description": "A list of packagemasters",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"data": {
											"type": "array",
											"items": {
												"$ref": "#/components/schemas/Packagemaster"
											}
										},
										"total": {
											"type": "integer"
										}
									}
								}
							}
						}
					},
					"400": {
						"description": "Bad request"
					},
					"404": {
						"description": "Not found"
					}
				}
			}
		},
		"/users/{id}/districts/{did}/subscriptions": {
			"post": {
				"summary": "Create a new subscription for a user",
				"description": "Creates a new subscription based on a selected package for the specified user.",
				"parameters": [
					{
						"name": "id",
						"in": "path",
						"required": true,
						"description": "The ID of the user who is purchasing the subscription.",
						"schema": {
							"type": "string"
						}
					},
					{
						"name": "did",
						"in": "path",
						"required": true,
						"description": "The ID of the districts which package belongs to.",
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"description": "Subscription created successfully.",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"subscriptiondetailsdr": {
											"type": "array",
											"items": {
												"type": "object",
												"properties": {
													"benefittags_id": {
														"type": "integer",
														"description": "ID of the benefit tag."
													},
													"benefitcountdr": {
														"type": "integer",
														"description": "Debit count for the benefit."
													},
													"benefittags": {
														"type": "object",
														"properties": {
															"id": {
																"type": "integer",
																"description": "ID of the benefit tag."
															},
															"name": {
																"type": "string",
																"description": "Internal name of the benefit tag."
															},
															"label": {
																"type": "string",
																"description": "Label displayed for the benefit tag."
															},
															"created_at": {
																"type": "string",
																"format": "date-time",
																"description": "Creation timestamp of the benefit tag."
															},
															"modified_at": {
																"type": "string",
																"format": "date-time",
																"description": "Last modified timestamp of the benefit tag."
															}
														}
													}
												}
											}
										}
									}
								}
							}
						}
					},
					"201": {
						"description": "Validation error or forbidden action.",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean"
										},
										"message": {
											"type": "string"
										}
									}
								}
							}
						}
					},
					"500": {
						"description": "Internal server error.",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean"
										},
										"message": {
											"type": "string"
										}
									}
								}
							}
						}
					}
				},
				"security": [
					{
						"bearerAuth": []
					}
				],
				"tags": [
					"subscriptions"
				]
			},
			"get": {
				"tags": [
					"subscriptions"
				],
				"summary": "Get a list of subscriptions as per user id & districts",
				"operationId": "get subscriptions",
				"parameters": [
					{
						"name": "id",
						"in": "path",
						"required": true,
						"description": "The ID of the user",
						"schema": {
							"type": "string"
						}
					},
					{
						"name": "did",
						"in": "path",
						"required": true,
						"description": "The ID of the districts",
						"schema": {
							"type": "string"
						}
					},
					{
						"name": "select",
						"in": "query",
						"required": false,
						"description": "Comma-separated list of fields to include in the response",
						"schema": {
							"type": "string"
						}
					},
					{
						"name": "q",
						"in": "query",
						"required": false,
						"description": "Search query for filtering packagemasters",
						"schema": {
							"type": "string"
						}
					},
					{
						"name": "filter",
						"in": "query",
						"required": false,
						"description": "Filter criteria in the format of column,value",
						"schema": {
							"type": "string"
						}
					},
					{
						"name": "order",
						"in": "query",
						"required": false,
						"description": "Order the results based on specific fields",
						"schema": {
							"type": "string",
							"example": "column1,asc|column2,desc"
						}
					},
					{
						"name": "pagination",
						"in": "query",
						"required": false,
						"description": "Enable pagination",
						"schema": {
							"type": "string",
							"enum": [
								"true",
								"false"
							]
						}
					},
					{
						"name": "first",
						"in": "query",
						"required": false,
						"description": "The starting index for pagination",
						"schema": {
							"type": "integer",
							"example": 0
						}
					},
					{
						"name": "rows",
						"in": "query",
						"required": false,
						"description": "The number of rows to return for pagination",
						"schema": {
							"type": "integer",
							"example": 10
						}
					}
				],
				"responses": {
					"200": {
						"description": "Subscription created successfully.",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"subscriptiondetailsdr": {
											"type": "array",
											"items": {
												"type": "object",
												"properties": {
													"benefittags_id": {
														"type": "integer",
														"description": "ID of the benefit tag."
													},
													"benefitcountdr": {
														"type": "integer",
														"description": "Debit count for the benefit."
													},
													"benefittags": {
														"type": "object",
														"properties": {
															"id": {
																"type": "integer",
																"description": "ID of the benefit tag."
															},
															"name": {
																"type": "string",
																"description": "Internal name of the benefit tag."
															},
															"label": {
																"type": "string",
																"description": "Label displayed for the benefit tag."
															},
															"created_at": {
																"type": "string",
																"format": "date-time",
																"description": "Creation timestamp of the benefit tag."
															},
															"modified_at": {
																"type": "string",
																"format": "date-time",
																"description": "Last modified timestamp of the benefit tag."
															}
														}
													}
												}
											}
										}
									}
								}
							}
						}
					},
					"201": {
						"description": "Validation error or forbidden action.",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean"
										},
										"message": {
											"type": "string"
										}
									}
								}
							}
						}
					},
					"500": {
						"description": "Internal server error.",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean"
										},
										"message": {
											"type": "string"
										}
									}
								}
							}
						}
					}
				}
			},
			"put": {
				"tags": [
					"subscriptions"
				],
				"summary": "Update an existing subscription for a user",
				"operationId": "updateSubscription",
				"parameters": [
					{
						"name": "id",
						"in": "path",
						"required": true,
						"description": "The ID of the user",
						"schema": {
							"type": "string"
						}
					},
					{
						"name": "did",
						"in": "path",
						"required": true,
						"description": "The ID of the district",
						"schema": {
							"type": "string"
						}
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object",
								"properties": {
									"benefittag": {
										"type": "string"
									},
									"for_id": {
										"type": "integer",
										"description": ""
									},
									"for_type": {
										"type": "string"
									}
								}
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "Subscription updated successfully.",
						"content": {
							"application/json": {
								"schema": {
									"type": "object"
								}
							}
						}
					},
					"201": {
						"description": "Validation error or forbidden action.",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean"
										},
										"message": {
											"type": "string"
										}
									}
								}
							}
						}
					},
					"500": {
						"description": "Internal server error.",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"error": {
											"type": "boolean"
										},
										"message": {
											"type": "string"
										}
									}
								}
							}
						}
					}
				}
			}
		},
		"/users/{id}/enquiries": {
			"post": {
				"summary": "Create a new enquiry for a user",
				"operationId": "createEnquiry",
				"tags": [
					"Enquiries"
				],
				"parameters": [
					{
						"name": "id",
						"in": "path",
						"required": true,
						"description": "User ID",
						"schema": {
							"type": "string",
							"example": "123"
						}
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object",
								"properties": {
									"message": {
										"type": "string",
										"description": "Message for the enquiry",
										"example": "I would like more information about the product."
									}
								},
								"required": [
									"message"
								]
							}
						}
					}
				},
				"responses": {
					"201": {
						"description": "Enquiry successfully created",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"success": {
											"type": "boolean",
											"example": true
										},
										"message": {
											"type": "string",
											"example": "Enquiry added successfully"
										},
										"data": {
											"type": "object",
											"properties": {
												"id": {
													"type": "string",
													"example": "1"
												},
												"users_id": {
													"type": "string",
													"example": "123"
												},
												"message": {
													"type": "string",
													"example": "I would like more information about the product."
												},
												"status": {
													"type": "string",
													"example": "pending"
												}
											}
										}
									}
								}
							}
						}
					},
					"400": {
						"description": "Bad request, missing or invalid parameter",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"success": {
											"type": "boolean",
											"example": false
										},
										"message": {
											"type": "string",
											"example": "User ID is required"
										}
									}
								}
							}
						}
					},
					"500": {
						"description": "Server error",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"success": {
											"type": "boolean",
											"example": false
										},
										"message": {
											"type": "string",
											"example": "An error occurred while creating the enquiry"
										},
										"error": {
											"type": "string",
											"example": "Error message here"
										}
									}
								}
							}
						}
					}
				}
			}
		},
		"/payments/razorpay/orders": {
			"post": {
				"tags": [
					"razorpay payment"
				],
				"summary": "make payment order",
				"description": "create order from razorpay payment gatway",
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object",
								"items": null,
								"$ref": "#/components/schemas/razorpayorder"
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "Welcome To Property On Location App",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"items": null
								}
							}
						}
					},
					"422": {
						"description": "validation error"
					},
					"401": {
						"description": "Unauthorized"
					},
					"500": {
						"description": "Internal Server Error"
					}
				}
			}
		},
		"/payments/razorpay/response": {
			"post": {
				"tags": [
					"razorpay payment"
				],
				"summary": "after payment add subscription",
				"description": "create subscription",
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object",
								"items": null,
								"$ref": "#/components/schemas/razorpayresponse"
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "Welcome To Property On Location App",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"items": null
								}
							}
						}
					},
					"422": {
						"description": "validation error"
					},
					"401": {
						"description": "Unauthorized"
					},
					"500": {
						"description": "Internal Server Error"
					}
				}
			}
		}
	}
}