{
    "$schema": "http:\/\/json-schema.org\/draft-07\/schema#",
    "$id": "https:\/\/estateagentfeeds.com\/docs\/sendPropertyRequestSchema.json",
    "title": "Create Property",
    "description": "Estate Agent Feeds Property Submission API. Submit property records to the EAF platform for syndication to multiple portals including (Rightmove, Zoopla, OnTheMarket, Sturents, and custom bulk data feeds). Each submission requires a unique reference, branch ID, transaction type (sales\/lettings), property details (location, description, features), pricing information, and media (images, floorplans, virtual tours). Supports portal-specific pricing overrides, room-level details with flexible dimension specifications, detailed utility and restriction information, and granular property condition\/amenity flags. All timestamps in YYYY-MM-DD HH:MM:SS format. Please validate against required fields before submission. The property.reference and property.branch_id are the unique identifiers for future updates.",
    "type": "object",
    "properties": {
        "property": {
            "type": "object",
            "description": "The property record object",
            "properties": {
                "reference": {
                    "description": "The unique indentification reference number for the property. The reference is used in combination with the branch_id to update existing records so should never change.",
                    "$ref": "#\/definitions\/reference_str"
                },
                "branch_id": {
                    "description": "The primary or sub account branch ID where the create property request should be made.",
                    "$ref": "#\/definitions\/branch_ref"
                },
                "prop_url": {
                    "description": "Absolute URL to the property details page on the source website.",
                    "$ref": "#\/definitions\/web_url_str"
                },
                "output_rightmove": {
                    "description": "Whether the property record should be explicitly published to the Rightmove website or not. This option is TRUE by default so only use if you need to control publishing in relation to other portals.",
                    "type": [
                        "boolean",
                        "null"
                    ]
                },
                "output_zoopla": {
                    "description": "Whether the property record should be explicitly published to the Zoopla website or not. This option is TRUE by default so only use if you need to control publishing in relation to other portals.",
                    "type": [
                        "boolean",
                        "null"
                    ]
                },
                "output_onthemarket": {
                    "description": "Whether the property record should be explicitly published to the OnTheMarket website or not. This option is TRUE by default so only use if you need to control publishing in relation to other portals.",
                    "type": [
                        "boolean",
                        "null"
                    ]
                },
                "output_sturents": {
                    "description": "Whether the property record should be explicitly published to the Sturents website or not. This option is TRUE by default so only use if you need to control publishing in relation to other portals.",
                    "type": [
                        "boolean",
                        "null"
                    ]
                },
                "output_other": {
                    "description": "An array of other portal IDs where this property should NOT be sent. Only relates to specific export feeds that have been setup within the branch account. Contact EAF support for a list of IDs you can use.",
                    "type": [
                        "array",
                        "null"
                    ],
                    "items": {
                        "$ref": "#\/definitions\/api_str"
                    },
                    "uniqueItems": true,
                    "minItems": 1,
                    "maxItems": 30
                },
                "created": {
                    "description": "The original date and time the property record was created at source.",
                    "$ref": "#\/definitions\/date_str"
                },
                "updated": {
                    "description": "The date and time the property record was last modified at source. This value should update in parallel with any and all changes made to the property record.",
                    "$ref": "#\/definitions\/date_str"
                },
                "transaction": {
                    "description": "The transaction type the property pricing comes under. Sales or Lettings.",
                    "type": [
                        "string"
                    ],
                    "enum": [
                        "sales",
                        "lettings"
                    ],
                    "default": "sales"
                },
                "category": {
                    "description": "The category for the property record. Use this option to explicitly define the catagory if the property type used is one that is ambiguous and could be either residential or commercial. By default all records are considered residential.",
                    "type": [
                        "string"
                    ],
                    "enum": [
                        "residential",
                        "commercial"
                    ],
                    "default": "residential"
                },
                "type": {
                    "description": "The property type for the listing when advertised.",
                    "type": [
                        "string"
                    ],
                    "enum": [
                        "mobile home",
                        "park home",
                        "detached",
                        "flat",
                        "semi-detached",
                        "shop",
                        "terraced",
                        "end of terrace",
                        "apartment",
                        "link detached house",
                        "maisonette",
                        "ground maisonette",
                        "lodge",
                        "penthouse",
                        "house share",
                        "flat share",
                        "plot",
                        "land",
                        "land (commercial)",
                        "off-plan",
                        "smallholding",
                        "detached bungalow",
                        "semi-detached bungalow",
                        "terraced bungalow",
                        "bungalow",
                        "mews",
                        "restaurant",
                        "leisure facility",
                        "studio",
                        "town house",
                        "garages",
                        "office",
                        "cottage",
                        "farm",
                        "industrial development",
                        "industrial park",
                        "warehouse",
                        "distribution warehouse",
                        "light industrial",
                        "heavy industrial",
                        "pub",
                        "hotel room",
                        "hotel",
                        "guest house",
                        "hospitality",
                        "workshop",
                        "convenience store",
                        "retail property",
                        "retail property (high street)",
                        "retail property (out of town)",
                        "commercial development",
                        "commercial land",
                        "business park",
                        "block of apartments",
                        "private halls",
                        "house boat",
                        "country house",
                        "equestrian facility",
                        "farm house",
                        "farm land",
                        "barn conversion",
                        "cafe",
                        "chalet",
                        "finca",
                        "riad",
                        "detached villa",
                        "semi-detached villa",
                        "villa",
                        "triplex",
                        "duplex",
                        "manor house",
                        "longere",
                        "log cabin",
                        "parking",
                        "storage",
                        "retirement property",
                        "house",
                        "commercial"
                    ]
                },
                "rightmove_type": {
                    "description": "Property types specific to the Rightmove website only. Use this if you require a property type that is not covered by our main list when advertising on Rightmove.",
                    "example": "Residential Development",
                    "type": [
                        "string",
                        "null"
                    ]
                },
                "status": {
                    "description": "The property status.",
                    "type": [
                        "string"
                    ],
                    "enum": [
                        "under offer",
                        "sstc",
                        "let agreed",
                        "available",
                        "reserved"
                    ]
                },
                "new_build": {
                    "description": "Whether the property is a new build or not.",
                    "type": [
                        "boolean",
                        "null"
                    ]
                },
                "house_flat_share": {
                    "description": "Whether the property is a flat share. Mainly used for student lettings.",
                    "type": [
                        "boolean",
                        "null"
                    ]
                },
                "student_property": {
                    "description": "Whether the property is advertised for student lettings.",
                    "type": [
                        "boolean",
                        "null"
                    ]
                },
                "pets_allowed": {
                    "description": "Whether the property allows pets.",
                    "type": [
                        "boolean",
                        "null"
                    ]
                },
                "pricing": {
                    "description": "Details related to the pricing of the property.",
                    "type": "object",
                    "properties": {
                        "price": {
                            "description": "The sales or rental price for the property.",
                            "type": [
                                "number"
                            ],
                            "minimum": 0
                        },
                        "price_qualifier": {
                            "description": "The qualifier for the property sales price.",
                            "type": [
                                "string",
                                "null"
                            ],
                            "enum": [
                                "guide price",
                                "fixed price",
                                "poa",
                                "offers in excess of",
                                "oiro",
                                "sale by tender",
                                "from",
                                "offers over",
                                "shared ownership",
                                "shared equity",
                                "part buy, part rent",
                                null
                            ]
                        },
                        "rent_frequency": {
                            "description": "The rent payment frequency of the rental property price.",
                            "type": [
                                "string",
                                "null"
                            ],
                            "enum": [
                                "per month",
                                "per week",
                                "per quarter",
                                "per annum",
                                "per person per week",
                                null
                            ],
                            "default": "per month"
                        },
                        "deposit": {
                            "description": "The rental deposit amount.",
                            "type": [
                                "number",
                                "null"
                            ],
                            "minimum": 0
                        },
                        "contract_length": {
                            "description": "The length of the rental contract.",
                            "type": [
                                "integer",
                                "null"
                            ],
                            "minimum": 0
                        },
                        "contract_type": {
                            "description": "The type of rental contract length. Required for lettings.",
                            "type": [
                                "string",
                                "null"
                            ],
                            "enum": [
                                "long_term",
                                "short_term",
                                "rolling",
                                null
                            ]
                        },
                        "price_per_unit": {
                            "description": "The price per unit of size of the commercial rental property. For example a value of 12 might be \u00a312 per sqf. This only applies to commercial lettings and you should include the internal area sizing values for this to be used by some portals.",
                            "type": [
                                "number",
                                "null"
                            ],
                            "minimum": 0
                        },
                        "currency": {
                            "description": "The currency of the property price.",
                            "type": [
                                "string",
                                "null"
                            ],
                            "pattern": "^[a-zA-Z]{3}$",
                            "default": "GBP"
                        },
                        "portal_pricing": {
                            "description": "For very specific use-cases portal pricing allows you to provide custom pricing for individual portals that may support different rent frequencies or price qualifiers. For example with student lettings it may be necessary to provide a 'per person per week' price just for compatible portals, while a 'per month' price for those which don't support this rent frequency. Where a custom portal price has not be stipulated, the standard property price will be sent.",
                            "type": [
                                "array",
                                "null"
                            ],
                            "items": {
                                "type": [
                                    "object"
                                ],
                                "properties": {
                                    "portal": {
                                        "description": "The EAF portal ID where this pricing applies.",
                                        "type": "string",
                                        "$ref": "#\/definitions\/portal_api_str"
                                    },
                                    "price": {
                                        "description": "The custom price specific for this portal",
                                        "type": "number",
                                        "minimum": 0
                                    },
                                    "price_qualifier": {
                                        "description": "The custom price qualifier. For lettings - pw = Per Week, pm = Per Month, pppw = Per Person Per Week, pa = Per Annum. For sales these are 2 = Guide Price, 3 = Fixed Price, 1 = POA, 4 = Offers in excess of, 5 = OIRO, 6 = Sale by tender, 7 = From, 10 = Offers over, 9 = Shared ownership, 12 = Shared Equity, 11 = Part Buy, Part Rent ",
                                        "type": [
                                            "string",
                                            "integer"
                                        ],
                                        "enum": [
                                            "pw",
                                            "pm",
                                            "pppw",
                                            "pa",
                                            2,
                                            3,
                                            1,
                                            4,
                                            5,
                                            6,
                                            7,
                                            10,
                                            9,
                                            12,
                                            11
                                        ]
                                    }
                                },
                                "required": [
                                    "portal",
                                    "price"
                                ]
                            },
                            "minItems": 1
                        },
                        "annual_service_charge": {
                            "description": "The annual service charge for the property.",
                            "type": [
                                "number",
                                "null"
                            ],
                            "minimum": 0
                        },
                        "administration_fee": {
                            "description": "The administration fee charged for the property.",
                            "type": [
                                "string",
                                "null"
                            ],
                            "$ref": "#\/definitions\/text_long"
                        },
                        "shared_ownership": {
                            "description": "Whether the property is available under shared ownership scheme.",
                            "type": [
                                "boolean",
                                "null"
                            ]
                        },
                        "shared_ownership_percent": {
                            "description": "The percentage of the property owned under shared ownership.",
                            "type": [
                                "number",
                                "null"
                            ],
                            "minimum": 0,
                            "maximum": 99
                        },
                        "shared_ownership_rent_amount": {
                            "description": "The rent payable on the shared ownership portion of the property.",
                            "type": [
                                "number",
                                "null"
                            ],
                            "minimum": 0
                        },
                        "shared_ownership_rent_frequency": {
                            "description": "The frequency at which shared ownership rent is paid.",
                            "type": [
                                "string",
                                "null"
                            ],
                            "enum": [
                                "daily",
                                "weekly",
                                "monthly",
                                "quarterly",
                                "yearly",
                                null
                            ]
                        },
                        "annual_ground_rent_amount": {
                            "description": "The annual ground rent payable for the property.",
                            "type": [
                                "number",
                                "null"
                            ],
                            "minimum": 0
                        },
                        "ground_rent_review_period_years": {
                            "description": "The period in years between ground rent reviews.",
                            "type": [
                                "integer",
                                "null"
                            ],
                            "minimum": 0
                        },
                        "ground_rent_percent_increase": {
                            "description": "The percentage increase applied to ground rent at each review.",
                            "type": [
                                "number",
                                "null"
                            ],
                            "minimum": 0
                        },
                        "council_tax_band": {
                            "description": "The council tax band for the property (UK only).",
                            "type": [
                                "string",
                                "null"
                            ],
                            "enum": [
                                "A",
                                "B",
                                "C",
                                "D",
                                "E",
                                "F",
                                "G",
                                "H",
                                "I",
                                "TBC",
                                null
                            ]
                        },
                        "annual_domestic_rates": {
                            "description": "The annual domestic rates for the property (Northern Ireland only).",
                            "type": [
                                "number",
                                "null"
                            ],
                            "minimum": 0
                        },
                        "council_tax_exempt": {
                            "description": "Whether the property is exempt from council tax.",
                            "type": [
                                "boolean",
                                "null"
                            ]
                        },
                        "council_tax_exempt_reason": {
                            "description": "The reason why the council tax band or rates exemption status is not known.",
                            "type": [
                                "string",
                                "null"
                            ],
                            "$ref": "#\/definitions\/text_medium"
                        },
                        "housing_benefit": {
                            "description": "Whether the property allows applicants on housing benefit.",
                            "type": [
                                "boolean",
                                "null"
                            ]
                        }
                    },
                    "required": [
                        "price"
                    ],
                    "additionalProperties": false
                },
                "included": {
                    "description": "Details of additional things such as utility bills that are included with the rental amount",
                    "type": "object",
                    "properties": {
                        "includes_tv_licence": {
                            "description": "Whether the rental price includes the cost of a TV licence.",
                            "type": [
                                "boolean",
                                "null"
                            ]
                        },
                        "includes_broadband_internet": {
                            "description": "Whether the rental price includes the cost of broadband internet.",
                            "type": [
                                "boolean",
                                "null"
                            ]
                        },
                        "includes_gas_bill": {
                            "description": "Whether the rental price includes the gas bill",
                            "type": [
                                "boolean",
                                "null"
                            ]
                        },
                        "includes_water_bill": {
                            "description": "Whether the rental price includes the water bill",
                            "type": [
                                "boolean",
                                "null"
                            ]
                        },
                        "includes_electric_bill": {
                            "description": "Whether the rental price includes the electric bill.",
                            "type": [
                                "boolean",
                                "null"
                            ]
                        },
                        "includes_cable_tv_subscription": {
                            "description": "Whether the rental price includes the cost of cable TV.",
                            "type": [
                                "boolean",
                                "null"
                            ]
                        },
                        "includes_all_bills": {
                            "description": "Whether the rental price includes the cost of all untility bills which are typically water, gas and electric.",
                            "type": [
                                "boolean",
                                "null"
                            ]
                        },
                        "includes_council_tax": {
                            "description": "Whether the rental price includes the council tax.",
                            "type": [
                                "boolean",
                                "null"
                            ]
                        },
                        "includes_washing_machine": {
                            "description": "Whether there is a washing machine available in the property.",
                            "type": [
                                "boolean",
                                "null"
                            ]
                        },
                        "includes_dishwasher": {
                            "description": "Whether there is a dishwasher available in the property.",
                            "type": [
                                "boolean",
                                "null"
                            ]
                        },
                        "includes_burglar_alarm": {
                            "description": "Whether there is a burglar alarm present at the property.",
                            "type": [
                                "boolean",
                                "null"
                            ]
                        }
                    }
                },
                "business_for_sale": {
                    "description": "Whether a business is for sale along with the property.",
                    "type": [
                        "boolean",
                        "null"
                    ]
                },
                "auction_property": {
                    "description": "Whether the property is being sold at auction.",
                    "type": [
                        "boolean",
                        "null"
                    ]
                },
                "date_available": {
                    "description": "The date the rental property is available in the format YYYY-MM-DD",
                    "type": [
                        "string",
                        "null"
                    ],
                    "$ref": "#\/definitions\/date_standard_str"
                },
                "tenure": {
                    "description": "The tenure type of the property.",
                    "type": [
                        "string",
                        "null"
                    ],
                    "enum": [
                        "freehold",
                        "leasehold",
                        "feudal",
                        "share of freehold",
                        "non-traditional",
                        null
                    ]
                },
                "tenure_remaining": {
                    "description": "The number of years remaining on the lease (for leasehold properties).",
                    "type": [
                        "integer",
                        "null"
                    ],
                    "minimum": 0
                },
                "location": {
                    "description": "The location and address information for the property being sent.",
                    "type": "object",
                    "properties": {
                        "house_name_number": {
                            "description": "The house name or number.",
                            "type": "string",
                            "$ref": "#\/definitions\/str_medium"
                        },
                        "address_1": {
                            "description": "The primary street address line.",
                            "type": "string",
                            "$ref": "#\/definitions\/str_medium"
                        },
                        "address_2": {
                            "description": "The secondary street address line.",
                            "type": [
                                "string",
                                "null"
                            ],
                            "$ref": "#\/definitions\/str_medium"
                        },
                        "town": {
                            "description": "The town or village name.",
                            "type": "string",
                            "$ref": "#\/definitions\/str_medium"
                        },
                        "city": {
                            "description": "The city name.",
                            "type": "string",
                            "$ref": "#\/definitions\/str_medium"
                        },
                        "postcode": {
                            "description": "The full UK postcode for the property.",
                            "type": "string",
                            "pattern": "^[A-PR-UWYZ][A-HJ-Y]?[0-9][0-9A-HJKMNPR-Y]? [0-9][ABD-HJLNP-UW-Z]{2}$"
                        },
                        "prepend_address": {
                            "description": "Text to prepend to the address when displaying.",
                            "type": [
                                "string",
                                "null"
                            ],
                            "$ref": "#\/definitions\/str_medium"
                        },
                        "display_address": {
                            "description": "The formatted display address for the property.",
                            "type": [
                                "string",
                                "null"
                            ],
                            "$ref": "#\/definitions\/str_xlong"
                        },
                        "country_code": {
                            "description": "The ISO 3166-1 alpha-2 country code for the property location.",
                            "type": [
                                "string",
                                "null"
                            ],
                            "pattern": "^[a-zA-Z]{2}$",
                            "default": "GB"
                        },
                        "latitude": {
                            "description": "The latitude coordinate for the property location.",
                            "type": [
                                "number",
                                "null"
                            ],
                            "minimum": -90,
                            "maximum": 90
                        },
                        "longitude": {
                            "description": "The longitude coordinate for the property location.",
                            "type": [
                                "number",
                                "null"
                            ],
                            "minimum": -180,
                            "maximum": 180
                        }
                    },
                    "required": [
                        "house_name_number",
                        "address_1",
                        "town",
                        "city",
                        "postcode"
                    ],
                    "additionalProperties": false
                },
                "details": {
                    "description": "Fields related to the details of the property record being sent.",
                    "type": "object",
                    "properties": {
                        "title": {
                            "description": "The property listing title or headline.",
                            "$ref": "#\/definitions\/str_long"
                        },
                        "summary": {
                            "description": "A short summary of the property.",
                            "$ref": "#\/definitions\/text_medium"
                        },
                        "description": {
                            "description": "A detailed description of the property.",
                            "$ref": "#\/definitions\/text_xlong"
                        },
                        "bedrooms": {
                            "description": "The number of bedrooms in the property.",
                            "type": [
                                "integer",
                                "null"
                            ],
                            "minimum": 0,
                            "maximum": 20
                        },
                        "bathrooms": {
                            "description": "The number of bathrooms in the property.",
                            "type": [
                                "integer",
                                "null"
                            ],
                            "minimum": 0,
                            "maximum": 20
                        },
                        "receptions": {
                            "description": "The number of reception rooms in the property.",
                            "type": [
                                "integer",
                                "null"
                            ],
                            "minimum": 0,
                            "maximum": 10
                        },
                        "floors": {
                            "description": "The number of floors in the property.",
                            "type": [
                                "integer",
                                "null"
                            ],
                            "minimum": 0,
                            "maximum": 50
                        },
                        "furnished": {
                            "description": "The furnished state of the rental property.",
                            "type": [
                                "string",
                                "null"
                            ],
                            "enum": [
                                "furnished",
                                "part furnished",
                                "unfurnished",
                                "furnished\/unfurnished",
                                null
                            ]
                        },
                        "features": {
                            "description": "A list of key property features. Most portals only support up to 10 features.",
                            "type": [
                                "array",
                                "null"
                            ],
                            "minItems": 1,
                            "maxItems": 50,
                            "items": {
                                "$ref": "#\/definitions\/str_xlong"
                            },
                            "uniqueItems": true
                        },
                        "outside_features": {
                            "description": "Optional list of outside features available at the property.",
                            "type": [
                                "array",
                                "null"
                            ],
                            "items": {
                                "type": "string",
                                "enum": [
                                    "terrace",
                                    "communal garden",
                                    "private garden",
                                    "front garden",
                                    "back garden",
                                    "rear garden",
                                    "enclosed garden",
                                    "balcony",
                                    "patio"
                                ]
                            },
                            "minItems": 1,
                            "uniqueItems": true
                        },
                        "parking_features": {
                            "description": "List of parking options available at the property.",
                            "type": [
                                "array",
                                "null"
                            ],
                            "items": {
                                "type": "string",
                                "enum": [
                                    "allocated",
                                    "communal",
                                    "covered",
                                    "disabled",
                                    "double_garage",
                                    "driveway",
                                    "garage",
                                    "garage_bloc",
                                    "ev_private",
                                    "ev_shared",
                                    "gated",
                                    "underground",
                                    "off_street",
                                    "on_street",
                                    "no_parking",
                                    "no_disabled",
                                    "not_allocated",
                                    "rear",
                                    "permit",
                                    "private",
                                    "undercroft",
                                    "residents"
                                ]
                            },
                            "minItems": 1,
                            "uniqueItems": true
                        },
                        "accessibility_features": {
                            "description": "List of accessibility features available at the property.",
                            "type": [
                                "array",
                                "null"
                            ],
                            "items": {
                                "type": "string",
                                "enum": [
                                    "not_wheelchair_compatible",
                                    "level_access",
                                    "lift_access",
                                    "ramped_access",
                                    "wet_room",
                                    "wide_doorways",
                                    "step_free_access",
                                    "level_access_shower",
                                    "lateral_living"
                                ]
                            },
                            "minItems": 1,
                            "uniqueItems": true
                        },
                        "commercial_use_classes": {
                            "description": "Optional list of commercial use classes for the property.",
                            "type": [
                                "array",
                                "null"
                            ],
                            "items": {
                                "type": "string",
                                "enum": [
                                    "A1",
                                    "A2",
                                    "A3",
                                    "A4",
                                    "A5",
                                    "B1",
                                    "B2",
                                    "B8",
                                    "C1",
                                    "C2",
                                    "C2A",
                                    "C3",
                                    "D1",
                                    "D2",
                                    "sui_generis"
                                ]
                            },
                            "minItems": 1,
                            "uniqueItems": true
                        },
                        "size_area": {
                            "description": "The internal floor area of the property, building size including any external areas or total land area.",
                            "type": [
                                "number",
                                "null"
                            ],
                            "minimum": 0
                        },
                        "size_area_max": {
                            "description": "The maximum internal floor area of the property, building size including any external areas or total land area.",
                            "type": [
                                "number",
                                "null"
                            ],
                            "minimum": 0
                        },
                        "size_area_unit": {
                            "description": "The unit of measurement for the area size.",
                            "type": [
                                "string",
                                "null"
                            ],
                            "enum": [
                                "sq ft",
                                "sq mt",
                                "acre",
                                "hectares",
                                null
                            ]
                        },
                        "condition": {
                            "description": "The overall condition of the property. For Rightmove, these translate to excellent = good_condition, good = good_condition, average = some_work_needed, needs_modernisation = renovation_required.",
                            "type": [
                                "string",
                                "null"
                            ],
                            "enum": [
                                "excellent",
                                "good",
                                "average",
                                "needs_modernisation",
                                null
                            ]
                        },
                        "wood_floors": {
                            "description": "Whether the property has wood floors.",
                            "type": [
                                "boolean",
                                "null"
                            ]
                        },
                        "fireplace": {
                            "description": "Whether the property has a fireplace.",
                            "type": [
                                "boolean",
                                "null"
                            ]
                        },
                        "loft": {
                            "description": "Whether the property has a loft.",
                            "type": [
                                "boolean",
                                "null"
                            ]
                        },
                        "basement": {
                            "description": "Whether the property has a basement.",
                            "type": [
                                "boolean",
                                "null"
                            ]
                        },
                        "conservatory": {
                            "description": "Whether the property has a conservatory.",
                            "type": [
                                "boolean",
                                "null"
                            ]
                        },
                        "utility_room": {
                            "description": "Whether the property has a utility room.",
                            "type": [
                                "boolean",
                                "null"
                            ]
                        },
                        "outbuildings": {
                            "description": "Whether the property has outbuildings.",
                            "type": [
                                "boolean",
                                "null"
                            ]
                        },
                        "porter_security": {
                            "description": "Whether the property has porter or security services.",
                            "type": [
                                "boolean",
                                "null"
                            ]
                        },
                        "serviced": {
                            "description": "Whether the property is serviced (serviced apartment\/office).",
                            "type": [
                                "boolean",
                                "null"
                            ]
                        },
                        "fishing_rights": {
                            "description": "Whether the property includes fishing rights.",
                            "type": [
                                "boolean",
                                "null"
                            ]
                        },
                        "retirement": {
                            "description": "Whether the property is designated as a retirement property.",
                            "type": [
                                "boolean",
                                "null"
                            ]
                        },
                        "repossession": {
                            "description": "Whether the property is a repossession.",
                            "type": [
                                "boolean",
                                "null"
                            ]
                        }
                    },
                    "required": [
                        "summary",
                        "description"
                    ],
                    "additionalProperties": false
                },
                "utilities": {
                    "description": "Information about utility supplies available at the property.",
                    "type": "object",
                    "properties": {
                        "electricity_supply": {
                            "description": "List of electricity supply options available at the property.",
                            "type": [
                                "array",
                                "null"
                            ],
                            "items": {
                                "type": "string",
                                "enum": [
                                    "mains_supply",
                                    "private_supply",
                                    "solar_pv_panels",
                                    "wind_turbine",
                                    "generator"
                                ]
                            },
                            "minItems": 1,
                            "uniqueItems": true
                        },
                        "water_supply": {
                            "description": "List of water supply options available at the property.",
                            "type": [
                                "array",
                                "null"
                            ],
                            "items": {
                                "type": "string",
                                "enum": [
                                    "mains",
                                    "private_well",
                                    "private_spring",
                                    "private_borehole",
                                    "private_stream",
                                    "public_well",
                                    "public_spring",
                                    "public_borehole"
                                ]
                            },
                            "minItems": 1,
                            "uniqueItems": true
                        },
                        "sewerage_supply": {
                            "description": "List of sewerage disposal methods available at the property.",
                            "type": [
                                "array",
                                "null"
                            ],
                            "items": {
                                "type": "string",
                                "enum": [
                                    "mains",
                                    "septic_tank",
                                    "small_treatment_plant",
                                    "cesspit",
                                    "cesspool",
                                    "other"
                                ]
                            },
                            "minItems": 1,
                            "uniqueItems": true
                        },
                        "heating_supply": {
                            "description": "List of heating supply features available at the property.",
                            "type": [
                                "array",
                                "null"
                            ],
                            "items": {
                                "type": "string",
                                "enum": [
                                    "air_conditioning",
                                    "central",
                                    "double_glazing",
                                    "eco_friendly",
                                    "electric",
                                    "electric_room_heater",
                                    "gas",
                                    "gas_central",
                                    "night_storage",
                                    "oil",
                                    "solar",
                                    "solar_water",
                                    "solar_pv_thermal",
                                    "solar_thermal",
                                    "under_floor",
                                    "underfloor_heating",
                                    "wood_burner",
                                    "open_fire",
                                    "biomass_boiler",
                                    "ground_source_heat_pump",
                                    "air_source_heat_pump"
                                ]
                            },
                            "minItems": 1,
                            "uniqueItems": true
                        },
                        "broadband_supply": {
                            "description": "List of broadband supply options available at the property.",
                            "type": [
                                "array",
                                "null"
                            ],
                            "items": {
                                "type": "string",
                                "enum": [
                                    "adsl",
                                    "cable",
                                    "fixed_wireless",
                                    "fttc",
                                    "fttp",
                                    "mobile",
                                    "satellite",
                                    "none"
                                ]
                            },
                            "minItems": 1,
                            "uniqueItems": true
                        }
                    },
                    "additionalProperties": false
                },
                "restrictions": {
                    "description": "Any known risks or restrictions with the property that buyers should know about.",
                    "type": "object",
                    "properties": {
                        "flood_risks": {
                            "description": "List of flood risk types that may affect the property.",
                            "type": [
                                "array",
                                "null"
                            ],
                            "items": {
                                "type": "string",
                                "enum": [
                                    "none",
                                    "river",
                                    "sea",
                                    "groundwater",
                                    "lake",
                                    "reservoir",
                                    "other"
                                ]
                            },
                            "minItems": 1,
                            "uniqueItems": true
                        },
                        "flood_risk_defences": {
                            "description": "Whether the property has flood defence measures in place.",
                            "type": [
                                "boolean",
                                "null"
                            ]
                        },
                        "required_access": {
                            "description": "Whether there are access restrictions required for the property.",
                            "type": [
                                "boolean",
                                "null"
                            ]
                        },
                        "listed_building": {
                            "description": "Whether the property is a listed building with restrictions.",
                            "type": [
                                "boolean",
                                "null"
                            ]
                        },
                        "listing_grade": {
                            "description": "The listing grade or category for listed buildings.",
                            "type": [
                                "string",
                                "null"
                            ],
                            "enum": [
                                "category_a",
                                "category_b",
                                "category_c",
                                "grade_a",
                                "grade_b",
                                "grade_b_plus",
                                "grade_one",
                                "grade_two",
                                "grade_two_star",
                                "locally_listed",
                                null
                            ]
                        },
                        "property_restrictions": {
                            "description": "Whether there are general property restrictions in place.",
                            "type": [
                                "boolean",
                                "null"
                            ]
                        },
                        "rights_of_way": {
                            "description": "The type of rights of way affecting the property.",
                            "type": [
                                "string",
                                "null"
                            ],
                            "enum": [
                                "rights_of_way_public",
                                "rights_of_way_private",
                                null
                            ]
                        },
                        "permitted_development": {
                            "description": "Whether permitted development rights are restricted.",
                            "type": [
                                "boolean",
                                "null"
                            ]
                        },
                        "holiday_home": {
                            "description": "Whether the property is restricted to use as a holiday home.",
                            "type": [
                                "boolean",
                                "null"
                            ]
                        },
                        "lease_restrictions": {
                            "description": "Whether there are lease-related restrictions on the property.",
                            "type": [
                                "boolean",
                                "null"
                            ]
                        },
                        "business_from_property": {
                            "description": "Whether running a business from the property is restricted.",
                            "type": [
                                "boolean",
                                "null"
                            ]
                        },
                        "subletting": {
                            "description": "Whether subletting the property is restricted.",
                            "type": [
                                "boolean",
                                "null"
                            ]
                        },
                        "conservation_area": {
                            "description": "Whether the property is located in a conservation area.",
                            "type": [
                                "boolean",
                                "null"
                            ]
                        },
                        "restrictive_covenant": {
                            "description": "Whether the property is subject to restrictive covenants.",
                            "type": [
                                "boolean",
                                "null"
                            ]
                        }
                    },
                    "additionalProperties": false
                },
                "rooms": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "object",
                                "properties": {
                                    "room_name": {
                                        "description": "The name or type of room (e.g., bedroom, kitchen, bathroom).",
                                        "type": "string",
                                        "$ref": "#\/definitions\/str_long"
                                    },
                                    "room_description": {
                                        "description": "The room description.",
                                        "type": "string",
                                        "$ref": "#\/definitions\/text_short"
                                    },
                                    "room_dimensions": {
                                        "description": "The dimensions of the room in written form.",
                                        "type": [
                                            "string",
                                            "null"
                                        ],
                                        "$ref": "#\/definitions\/str_long"
                                    }
                                },
                                "required": [
                                    "room_name",
                                    "room_description"
                                ],
                                "additionalProperties": false
                            },
                            {
                                "type": "object",
                                "properties": {
                                    "room_name": {
                                        "description": "The name or type of room (e.g., bedroom, kitchen, bathroom).",
                                        "type": "string",
                                        "$ref": "#\/definitions\/str_long"
                                    },
                                    "room_description": {
                                        "description": "The room description.",
                                        "type": "string",
                                        "$ref": "#\/definitions\/text_short"
                                    },
                                    "room_length": {
                                        "description": "The length of the room.",
                                        "type": [
                                            "number",
                                            "null"
                                        ],
                                        "minimum": 0
                                    },
                                    "room_width": {
                                        "description": "The width of the room.",
                                        "type": [
                                            "number",
                                            "null"
                                        ],
                                        "minimum": 0
                                    },
                                    "room_dimension_unit": {
                                        "description": "The unit used to calculate the rooms width and length.",
                                        "type": [
                                            "string",
                                            "null"
                                        ],
                                        "enum": [
                                            "metre",
                                            "feet",
                                            "centimetres",
                                            "millimetres",
                                            "inches"
                                        ],
                                        "default": "feet"
                                    }
                                },
                                "required": [
                                    "room_name",
                                    "room_description"
                                ],
                                "additionalProperties": false
                            }
                        ]
                    },
                    "minItems": 1,
                    "maxItems": 20
                },
                "media": {
                    "description": "Media files associated with the property including images, floorplans, certificates, and documents.",
                    "type": "object",
                    "properties": {
                        "image": {
                            "description": "An array of property images.",
                            "type": "array",
                            "items": {
                                "type": "object",
                                "properties": {
                                    "url": {
                                        "description": "The URL to the image file.",
                                        "type": "string",
                                        "$ref": "#\/definitions\/web_url_str"
                                    },
                                    "caption": {
                                        "description": "A caption or description for the image.",
                                        "type": [
                                            "string",
                                            "null"
                                        ],
                                        "$ref": "#\/definitions\/text_xshort"
                                    }
                                },
                                "required": [
                                    "url"
                                ],
                                "additionalProperties": false
                            },
                            "minItems": 1,
                            "maxItems": 100
                        },
                        "floorplan": {
                            "description": "An array of property floorplan images.",
                            "type": [
                                "array",
                                "null"
                            ],
                            "items": {
                                "type": "object",
                                "properties": {
                                    "url": {
                                        "description": "The URL to the floorplan file.",
                                        "type": "string",
                                        "$ref": "#\/definitions\/web_url_str"
                                    },
                                    "caption": {
                                        "description": "A caption or description for the floorplan.",
                                        "type": [
                                            "string",
                                            "null"
                                        ],
                                        "$ref": "#\/definitions\/text_xshort"
                                    }
                                },
                                "required": [
                                    "url"
                                ],
                                "additionalProperties": false
                            },
                            "minItems": 1,
                            "maxItems": 20
                        },
                        "epc": {
                            "description": "An array of Energy Performance Certificate files.",
                            "type": [
                                "array",
                                "null"
                            ],
                            "items": {
                                "type": "object",
                                "properties": {
                                    "url": {
                                        "description": "The URL to the EPC file.",
                                        "type": "string",
                                        "$ref": "#\/definitions\/web_url_str"
                                    },
                                    "caption": {
                                        "description": "A caption or description for the EPC.",
                                        "type": [
                                            "string",
                                            "null"
                                        ],
                                        "$ref": "#\/definitions\/text_xshort"
                                    }
                                },
                                "required": [
                                    "url"
                                ],
                                "additionalProperties": false
                            },
                            "minItems": 1,
                            "maxItems": 5
                        },
                        "brochure": {
                            "description": "An array of property brochure files.",
                            "type": [
                                "array",
                                "null"
                            ],
                            "items": {
                                "type": "object",
                                "properties": {
                                    "url": {
                                        "description": "The URL to the brochure file.",
                                        "type": "string",
                                        "$ref": "#\/definitions\/web_url_str"
                                    },
                                    "caption": {
                                        "description": "A caption or description for the brochure.",
                                        "type": [
                                            "string",
                                            "null"
                                        ],
                                        "$ref": "#\/definitions\/text_xshort"
                                    }
                                },
                                "required": [
                                    "url"
                                ],
                                "additionalProperties": false
                            },
                            "minItems": 1,
                            "maxItems": 5
                        },
                        "home_pack": {
                            "description": "An array of home pack files.",
                            "type": [
                                "array",
                                "null"
                            ],
                            "items": {
                                "type": "object",
                                "properties": {
                                    "url": {
                                        "description": "The URL to the home pack file.",
                                        "type": "string",
                                        "$ref": "#\/definitions\/web_url_str"
                                    },
                                    "caption": {
                                        "description": "A caption or description for the home pack.",
                                        "type": [
                                            "string",
                                            "null"
                                        ],
                                        "$ref": "#\/definitions\/text_xshort"
                                    }
                                },
                                "required": [
                                    "url"
                                ],
                                "additionalProperties": false
                            },
                            "minItems": 1,
                            "maxItems": 5
                        }
                    },
                    "required": [
                        "image"
                    ],
                    "additionalProperties": false
                },
                "vtours": {
                    "description": "An array of links to video and interactive virtual tours.",
                    "type": [
                        "array",
                        "null"
                    ],
                    "items": {
                        "$ref": "#\/definitions\/tour_url_str"
                    },
                    "minItems": 1,
                    "maxItems": 5,
                    "uniqueItems": true
                }
            },
            "required": [
                "reference",
                "branch_id",
                "created",
                "updated",
                "transaction",
                "category",
                "type",
                "status",
                "pricing",
                "location",
                "details",
                "media"
            ],
            "if": {
                "properties": {
                    "transaction": {
                        "const": "lettings"
                    }
                },
                "required": [
                    "transaction"
                ]
            },
            "then": {
                "properties": {
                    "pricing": {
                        "required": [
                            "rent_frequency",
                            "contract_type"
                        ]
                    }
                }
            },
            "additionalProperties": false
        }
    },
    "required": [
        "property"
    ],
    "additionalProperties": false,
    "definitions": {
        "email_str": {
            "type": "string",
            "pattern": "^[a-zA-Z0-9-._+]{1,}@[a-zA-Z0-9-_]{2,}\\.[a-zA-Z.]{2,25}$"
        },
        "phone_str": {
            "type": "string",
            "pattern": "^(\\+)?\\s?([0-9]{1})\\s?([0-9\\s]{8,25})$"
        },
        "web_url_str": {
            "type": "string",
            "pattern": "^(http|https)\\:\\\/\\\/",
            "format": "uri"
        },
        "tour_url_str": {
            "type": "string",
            "pattern": "(matterport\\.com|3dvista\\.com|kuula\\.co|cloudpano\\.com|eyespy360\\.com|roundme\\.com|metareal\\.com|giraffe360\\.com|realync\\.com|bombbomb\\.com|youtube\\.com|vimeo\\.com|loom\\.com|wistia\\.com|brightcove\\.com|jwplayer\\.com)",
            "format": "uri"
        },
        "address_str": {
            "type": "string",
            "pattern": "^([a-zA-Z0-9]{1}\\s?(.*)?)$"
        },
        "name_str": {
            "type": "string",
            "pattern": "^([a-zA-Z0-9_\\-\\s]{1,40})$"
        },
        "reference_str": {
            "type": "string",
            "pattern": "^([a-zA-Z0-9_\\-\\.]{1,100})$"
        },
        "branch_ref": {
            "type": "string",
            "pattern": "^[0-9]{5,25}$",
            "minLength": 5,
            "maxLength": 25
        },
        "api_str": {
            "type": "string",
            "pattern": "^(api-[a-z0-9]{1,30})$"
        },
        "portal_api_str": {
            "type": "string",
            "pattern": "^(rightmove|zoopla|onthemarket|sturents|api-[a-z0-9]{1,30})$"
        },
        "text_xshort": {
            "type": "string",
            "minLength": 0,
            "maxLength": 100
        },
        "text_short": {
            "type": "string",
            "minLength": 0,
            "maxLength": 1000
        },
        "text_medium": {
            "type": "string",
            "minLength": 0,
            "maxLength": 3000
        },
        "text_long": {
            "type": "string",
            "minLength": 0,
            "maxLength": 10000
        },
        "text_xlong": {
            "type": "string",
            "minLength": 0,
            "maxLength": 32000
        },
        "str_short": {
            "type": "string",
            "minLength": 0,
            "maxLength": 20
        },
        "str_medium": {
            "type": "string",
            "minLength": 0,
            "maxLength": 60
        },
        "str_long": {
            "type": "string",
            "minLength": 0,
            "maxLength": 120
        },
        "str_xlong": {
            "type": "string",
            "minLength": 0,
            "maxLength": 200
        },
        "num_long": {
            "type": "integer",
            "minimum": 0,
            "maximum": 99999999999
        },
        "date_str": {
            "type": "string",
            "pattern": "^([0-9]{4})-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])\\s(0[0-9]|[1-2][0-9]):(0[0-9]|[1-5][0-9]):(0[0-9]|[1-5][0-9])$"
        },
        "date_standard_str": {
            "type": "string",
            "pattern": "^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$"
        }
    }
}