Property Configuration
Property configuration schemas for real estate management. Includes property categories, addresses, features, and property listings.
Source: src/core/business-mgt/property-config.schema.ts
PropertyCategory​
Categories for organizing property listings.
Schema: PropertyCategorySchema
Attributes​
| Attribute | Type | Required | Default | Description |
|---|---|---|---|---|
id | string | — | — | Unique identifier for the category |
name | string | Yes | — | Category name (e.g., Luxury Homes, Commercial Offices) |
description | string | No | — | Category description |
propertyType | enum | Yes | — | Type of property. One of RESIDENTIAL, COMMERCIAL, or LAND. |
displayOrder | number | No | — | Display order in listing |
createdAt | number | — | — | Unix timestamp when created |
updatedAt | number | — | — | Unix timestamp when last updated |
PropertyAddress​
Standalone address entity for properties.
Schema: PropertyAddressSchema
Attributes​
| Attribute | Type | Required | Default | Description |
|---|---|---|---|---|
id | string | — | — | Unique identifier for the address |
street | string | Yes | — | Street address |
unit | string | null | No | — | Unit or apartment number |
city | string | Yes | — | City name |
state | string | Yes | — | State or province |
postalCode | string | null | No | — | Postal or ZIP code |
country | string | Yes | — | Country |
coordinates | object | null | No | — | Geographic coordinates (latitude, longitude) |
neighborhood | string | null | No | — | Neighborhood or district name |
district | string | null | No | — | Administrative district |
isVerified | boolean | No | false | Whether address has been verified |
verifiedAt | number | null | No | — | Timestamp when verified |
primaryUserAccountId | string | null | No | — | User account managing the property |
createdAt | number | — | — | Unix timestamp when created |
updatedAt | number | — | — | Unix timestamp when last updated |
PropertyFeatures​
Physical features and amenities of a property.
Schema: PropertyFeaturesSchema
Attributes​
| Attribute | Type | Required | Default | Description |
|---|---|---|---|---|
bedrooms | number | null | No | — | Number of bedrooms |
bathrooms | number | null | No | — | Number of bathrooms |
parkingSpaces | number | null | No | — | Number of parking spaces |
squareFootage | number | null | No | — | Total square footage |
lotSize | number | null | No | — | Lot size |
lotSizeUnit | enum | No | sqft | Unit for lot size |
yearBuilt | number | null | No | — | Year the property was built |
floors | number | null | No | — | Number of floors |
amenities | array<string> | No | [] | List of amenities |
utilities | array<string> | No | [] | Available utilities |
Property​
Main property listing schema.
Schema: PropertySchema
Attributes​
| Attribute | Type | Required | Default | Description |
|---|---|---|---|---|
id | string | — | — | Unique identifier for the property |
categoryId | string | Yes | — | ID of the property category |
category | PropertyCategory | No | — | Populated category object |
title | string | Yes | — | Property listing title |
description | string | No | — | Detailed property description |
propertyType | enum | Yes | — | Type of property. One of RESIDENTIAL, COMMERCIAL, or LAND. |
propertySubType | enum | Yes | — | Subtype of property. |
addressId | string | Yes | — | ID of the property address |
address | PropertyAddress | null | No | — | Populated address object |
listingType | enum | Yes | — | Type of listing. One of SALE, RENT, or SALE_OR_RENT. |
listingStatus | enum | No | DRAFT | Current listing status. One of DRAFT, ACTIVE, PENDING, SOLD, RENTED, or INACTIVE. |
salePrice | number | null | No | — | Sale price |
salePriceCurrency | string | No | USD | Currency for sale price |
rentalPrice | number | null | No | — | Rental price |
rentalPeriod | enum | null | No | — | Rental period. One of DAILY, WEEKLY, MONTHLY, or YEARLY. |
rentalPriceCurrency | string | No | USD | Currency for rental price |
priceNegotiable | boolean | No | false | Whether price is negotiable |
features | PropertyFeatures | No | — | Property features |
condition | enum | null | No | — | Property condition. One of NEW, EXCELLENT, GOOD, FAIR, POOR, or NEEDS_WORK. |
furnished | boolean | No | false | Whether property is furnished |
images | array<string> | No | [] | Array of image URLs |
virtualTourUrl | string | null | No | — | Virtual tour URL |
videoUrl | string | null | No | — | Video tour URL |
availableFrom | number | null | No | — | Available from date (timestamp) |
availableTo | number | null | No | — | Available until date (timestamp) |
isActive | boolean | No | true | Whether property is active |
isFeatured | boolean | No | false | Whether property is featured |
isVerified | boolean | No | false | Whether property has been verified |
externalId | string | null | No | — | External system reference ID |
mlsNumber | string | null | No | — | MLS listing number |
createdAt | number | — | — | Unix timestamp when created |
updatedAt | number | — | — | Unix timestamp when last updated |
Example​
{
"id": "prop_abc123",
"categoryId": "cat_luxury",
"title": "Modern Downtown Apartment",
"description": "Beautiful 2-bedroom apartment with city views",
"propertyType": "RESIDENTIAL",
"propertySubType": "APARTMENT",
"addressId": "addr_xyz789",
"listingType": "RENT",
"listingStatus": "ACTIVE",
"rentalPrice": 2500,
"rentalPeriod": "MONTHLY",
"rentalPriceCurrency": "USD",
"features": {
"bedrooms": 2,
"bathrooms": 2,
"parkingSpaces": 1,
"squareFootage": 1200,
"amenities": ["gym", "pool", "concierge"],
"utilities": ["gas", "electric", "water"]
},
"condition": "EXCELLENT",
"furnished": true,
"images": ["https://example.com/image1.jpg"],
"isActive": true,
"isFeatured": true,
"createdAt": 1709856000000,
"updatedAt": 1709856000000
}
Create / Update Schemas​
| Schema | Description | Omits |
|---|---|---|
CreatePropertyCategorySchema | For creating categories | id, createdAt, updatedAt |
UpdatePropertyCategorySchema | For updating categories | All fields optional except id |
CreatePropertyAddressSchema | For creating addresses | id, createdAt, updatedAt, verifiedAt |
UpdatePropertyAddressSchema | For updating addresses | All fields optional except id |
CreatePropertySchema | For creating properties | id, createdAt, updatedAt, category, address |
UpdatePropertySchema | For updating properties | All fields optional except id |