{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/domain-group/main/json-schema/domain-group-search-service-v2-domain-search-web-api-v2-models-sold-search-parameters-schema.json",
  "title": "SearchService.v2.DomainSearchWebApiV2ModelsSoldSearchParameters",
  "description": "DomainSearchWebApiV2ModelsSoldSearchParameters",
  "x-generated": "2026-10-21",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/domain-group-listingsearch-api-openapi.yml#/components/schemas/SearchService.v2.DomainSearchWebApiV2ModelsSoldSearchParameters",
  "type": "object",
  "properties": {
    "listingType": {
      "enum": [
        "Sale",
        "Rent",
        "Share",
        "Sold",
        "NewHomes"
      ],
      "type": "string",
      "description": "Gets or Sets ListingType"
    },
    "saleMethods": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "enum": [
          "NotStated",
          "Auction",
          "PrivateTreaty",
          "Tender",
          "ExpressionOfInterest"
        ],
        "type": "string",
        "description": "Defines Domain.Search.Web.Api.V2.Models.SaleMethod"
      },
      "description": "Gets or Sets SaleMethods"
    },
    "minBedrooms": {
      "type": [
        "number",
        "null"
      ],
      "description": "Filter listing by minimum number of bedrooms",
      "format": "float"
    },
    "maxBedrooms": {
      "type": [
        "number",
        "null"
      ],
      "description": "Filter listing by maximum number of bedrooms",
      "format": "float"
    },
    "minBathrooms": {
      "type": [
        "number",
        "null"
      ],
      "description": "Filter listing by minimum number of bathrooms",
      "format": "float"
    },
    "maxBathrooms": {
      "type": [
        "number",
        "null"
      ],
      "description": "Filter listing by maximum number of bathrooms  0.5 means no shower",
      "format": "float"
    },
    "minCarspaces": {
      "maximum": 2147483647,
      "minimum": 0,
      "type": [
        "integer",
        "null"
      ],
      "description": "Filter listing by minimum number of car spaces",
      "format": "int32"
    },
    "maxCarspaces": {
      "maximum": 2147483647,
      "minimum": 0,
      "type": [
        "integer",
        "null"
      ],
      "description": "Filter listing by maximum number of car spaces",
      "format": "int32"
    },
    "minPrice": {
      "maximum": 2147483647,
      "minimum": 0,
      "type": [
        "integer",
        "null"
      ],
      "description": "Filter listing at or above a minimum price",
      "format": "int32"
    },
    "maxPrice": {
      "maximum": 2147483647,
      "minimum": 0,
      "type": [
        "integer",
        "null"
      ],
      "description": "Filter listing at or below a maximum price",
      "format": "int32"
    },
    "minLandArea": {
      "maximum": 2147483647,
      "minimum": 0,
      "type": [
        "integer",
        "null"
      ],
      "description": "Min Land Area in square meters",
      "format": "int32"
    },
    "maxLandArea": {
      "maximum": 2147483647,
      "minimum": 0,
      "type": [
        "integer",
        "null"
      ],
      "description": "Max Land Area in square meters",
      "format": "int32"
    },
    "advertiserIds": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "integer",
        "format": "int32"
      },
      "description": "Return listings only created by these agencies."
    },
    "adIds": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "integer",
        "format": "int32"
      },
      "description": "Filter based on Ad Ids (Include in search result if AdID is in this list)"
    },
    "excludeAdIds": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "integer",
        "format": "int32"
      },
      "description": "Filter out listings with Ad Ids (Exclude listings from search result if AdID is in this list)"
    },
    "propertyTypes": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "enum": [
          "AcreageSemiRural",
          "ApartmentUnitFlat",
          "Aquaculture",
          "BlockOfUnits",
          "CarSpace",
          "DairyFarming",
          "DevelopmentSite",
          "Duplex",
          "Farm",
          "FishingForestry",
          "NewHomeDesigns",
          "House",
          "NewHouseLand",
          "IrrigationServices",
          "NewLand",
          "Livestock",
          "NewApartments",
          "Penthouse",
          "RetirementVillage",
          "Rural",
          "SemiDetached",
          "SpecialistFarm",
          "Studio",
          "Terrace",
          "Townhouse",
          "VacantLand",
          "Villa",
          "Cropping",
          "Viticulture",
          "MixedFarming",
          "Grazing",
          "Horticulture",
          "Equine",
          "Farmlet",
          "Orchard",
          "RuralLifestyle"
        ],
        "type": "string",
        "description": "Defines Domain.Search.Web.Api.v2.Models.PropertyType"
      },
      "description": "Filter by one or more types of properties"
    },
    "propertyFeatures": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "enum": [
          "AirConditioning",
          "BuiltInWardrobes",
          "CableOrSatellite",
          "Ensuite",
          "Floorboards",
          "Gas",
          "InternalLaundry",
          "PetsAllowed",
          "SecureParking",
          "SwimmingPool",
          "Furnished",
          "GroundFloor",
          "WaterViews",
          "NorthFacing",
          "CityViews",
          "IndoorSpa",
          "Gym",
          "AlarmSystem",
          "Intercom",
          "BroadbandInternetAccess",
          "Bath",
          "Fireplace",
          "SeparateDiningRoom",
          "Heating",
          "Dishwasher",
          "Study",
          "TennisCourt",
          "Shed",
          "FullyFenced",
          "BalconyDeck",
          "GardenCourtyard",
          "OutdoorSpa",
          "DoubleGlazedWindows",
          "EnergyEfficientAppliances",
          "WaterEfficientAppliances",
          "WallCeilingInsulation",
          "RainwaterStorageTank",
          "GreywaterSystem",
          "WaterEfficientFixtures",
          "SolarHotWater",
          "SolarPanels"
        ],
        "type": "string",
        "description": "Defines Domain.Search.Web.Api.v2.Models.SearchPropertyFeature"
      },
      "description": "Filter by one or more property features such as Gas or AC"
    },
    "locations": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "$ref": "#/$defs/SearchService.v2.DomainSearchWebApiV2ModelsSearchLocation"
      },
      "description": "Filter by the locations either suburb, area, region or state  <br />  Can also be used to search suburb and some area around it if radius is provided.   <br />  Invalid locations will return no results.  <br />  If Domain.Search.Web.Api.v2.Models.SearchLocation.IncludeSurroundingSuburbs is set to `true`, surrounding suburbs will also be searched for."
    },
    "schoolCatchments": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "$ref": "#/$defs/SearchService.v2.DomainSearchWebApiV2ModelsSchoolCatchment"
      },
      "description": "one or more school identifiers to find the listings in their catchment area"
    },
    "locationTerms": {
      "type": [
        "string",
        "null"
      ],
      "description": "Filter by location terms. This can be used in conjunction with Locations"
    },
    "keywords": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "string"
      },
      "description": "Filter by one or more keywords that a listing should contain"
    },
    "listingAttributes": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "enum": [
          "HasPhotos",
          "HasPrice",
          "NotUpForAuction",
          "NotUnderContract",
          "MarkedAsNew",
          "HasMatterport"
        ],
        "type": "string",
        "description": "Defines Domain.Search.Web.Api.v2.Models.ListingAttribute"
      },
      "description": "Limit the results to listing with specific attributes"
    },
    "newDevOnly": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Gets or Sets NewDevOnly"
    },
    "inspectionFrom": {
      "type": [
        "string",
        "null"
      ],
      "description": "Filter listings with inspection time on or from the date specified.  Strings of the format: yyyy-MM-dd are acceptable.",
      "format": "date-time"
    },
    "inspectionTo": {
      "type": [
        "string",
        "null"
      ],
      "description": "Filter listings with inspection time on or before date specified.  Strings of the format: yyyy-MM-dd are acceptable.",
      "format": "date-time"
    },
    "auctionFrom": {
      "type": [
        "string",
        "null"
      ],
      "description": "Filter listings with auction time on or from the date specified.  Strings of the format: yyyy-MM-dd are acceptable.",
      "format": "date-time"
    },
    "auctionTo": {
      "type": [
        "string",
        "null"
      ],
      "description": "Filter listings with auction on or before from the date specified.  Strings of the format: yyyy-MM-dd are acceptable.",
      "format": "date-time"
    },
    "dateAvailableFrom": {
      "type": [
        "string",
        "null"
      ],
      "description": "Return only those listings whose DateAvailable is null, or is at or after the specified time.  Strings of the format: yyyy-MM-dd are acceptable.",
      "format": "date-time"
    },
    "dateAvailableTo": {
      "type": [
        "string",
        "null"
      ],
      "description": "Return only those listings whose DateAvailable is null, or is at or before the specified time.  Strings of the format: yyyy-MM-dd are acceptable.",
      "format": "date-time"
    },
    "ruralOnly": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "if true, the response will include only listings flagged with IsRural"
    },
    "excludePriceWithheld": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "If `true`, exclude listings whose price has been withheld."
    },
    "excludeDepositTaken": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "If `true`c>, exclude listings (rental) has deposit taken"
    },
    "topspotKeywords": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "string"
      },
      "description": "Search by topspot keywords"
    },
    "customSort": {
      "$ref": "#/$defs/SearchService.v2.DomainSearchWebApiV2ModelsCustomSort"
    },
    "sort": {
      "$ref": "#/$defs/SearchService.v2.DomainSearchWebApiV2ModelsSortBy"
    },
    "page": {
      "type": [
        "integer",
        "null"
      ],
      "description": "The specific result page to return. Defaults to 1 when omitted or less than zero.",
      "format": "int32"
    },
    "geoWindow": {
      "$ref": "#/$defs/SearchService.v2.DomainSearchWebApiV2ModelsGeoWindow"
    },
    "updatedSince": {
      "type": [
        "string",
        "null"
      ],
      "description": "Only return listings that have been updated since the specified date.  Strings of the format: yyyy-MM-dd are acceptable.",
      "format": "date-time"
    },
    "listedSince": {
      "type": [
        "string",
        "null"
      ],
      "description": "Only return listings that have been listed since the specified date.  Strings of the format: yyyy-MM-dd are acceptable.",
      "format": "date-time"
    },
    "propertyEstablishedType": {
      "enum": [
        "Any",
        "New",
        "Established"
      ],
      "type": "string",
      "description": "Gets or Sets PropertyEstablishedType"
    },
    "includeInspectionAggregations": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Gets or Sets IncludeInspectionAggregations"
    },
    "tags": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "$ref": "#/$defs/SearchService.v2.DomainSearchWebApiV2ModelsTagQuery"
      },
      "description": "<br>              Filter listings based on a combination of tag value and inclusion/exclusion criteria.              For all of the tags whose criteria is \\\"include\\\": include only those listings in the search results              that have one or more of these tags.              For all of the tags whose criteria is \\\"exclude\\\": exclude listings that have one or more of these              tags from the search results.                <br>              Example: return only those listings that have the \\\"red\\\" or \\\"blue\\\" tags, but exclude              any that also have a \\\"green\\\" tag.                <example>              \\\"tags\\\":  [                  {                      \\\"criteria\\\":  \\\"include\\\",                      \\\"Tag\\\":  \\\"red\\\"                  },                  {                      \\\"criteria\\\":  \\\"include\\\",                      \\\"tag\\\":  \\\"blue\\\"                  },                  {                      \\\"criteria\\\":  \\\"exclude\\\",                      \\\"tag\\\":  \\\"green\\\"                  }              ]              </example>  <br>              Summary of the available tags and their meanings.                <list type=\\\"table\\\">    <item>      <term>retirement</term>      <description>Property is suitable for retirement.</description>    </item>    <item>      <term>rural</term>      <description>Rural listing.</description>    </item>    <item>      <term>newdevelopment</term>      <description>A newly-developed property.</description>    </item>  </list>"
    },
    "aggregations": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "string"
      },
      "description": "Gets or Sets Aggregations"
    },
    "soldFrom": {
      "type": [
        "string",
        "null"
      ],
      "description": "Filter listings with sold date on or from the date specified",
      "format": "date-time"
    },
    "soldTo": {
      "type": [
        "string",
        "null"
      ],
      "description": "Filter listings with sold date on or before from the date specified",
      "format": "date-time"
    },
    "pageSize": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Gets or Sets PageSize",
      "format": "int32"
    }
  },
  "additionalProperties": false,
  "x-data-access-level-info": {
    "Basic": [
      "*"
    ],
    "Detailed": [
      "*"
    ],
    "Full": [
      "*"
    ]
  },
  "$defs": {
    "SearchService.v2.DomainSearchWebApiV2ModelsBox": {
      "type": "object",
      "properties": {
        "topLeft": {
          "$ref": "#/$defs/SearchService.v2.DomainSearchWebApiV2ModelsGeoPoint"
        },
        "bottomRight": {
          "$ref": "#/$defs/SearchService.v2.DomainSearchWebApiV2ModelsGeoPoint"
        }
      },
      "additionalProperties": false,
      "description": "DomainSearchWebApiV2ModelsBox",
      "x-data-access-level-info": {
        "Basic": [
          "*"
        ],
        "Detailed": [
          "*"
        ],
        "Full": [
          "*"
        ]
      }
    },
    "SearchService.v2.DomainSearchWebApiV2ModelsCircle": {
      "required": [
        "radiusInMeters"
      ],
      "type": "object",
      "properties": {
        "center": {
          "$ref": "#/$defs/SearchService.v2.DomainSearchWebApiV2ModelsGeoPoint"
        },
        "radiusInMeters": {
          "maximum": 2147483647,
          "minimum": 0,
          "type": "integer",
          "description": "Gets or Sets RadiusInMeters",
          "format": "int32"
        }
      },
      "additionalProperties": false,
      "description": "DomainSearchWebApiV2ModelsCircle",
      "x-data-access-level-info": {
        "Basic": [
          "*"
        ],
        "Detailed": [
          "*"
        ],
        "Full": [
          "*"
        ]
      }
    },
    "SearchService.v2.DomainSearchWebApiV2ModelsCustomSort": {
      "type": "object",
      "properties": {
        "elements": {
          "type": [
            "array",
            "null"
          ],
          "items": {
            "$ref": "#/$defs/SearchService.v2.DomainSearchWebApiV2ModelsCustomSortElement"
          },
          "description": "The elements (field + direction) that comprise the custom sort. Order is significant, so each sort  element will be applied in the order that it appears in the array. If this array is `null` or  empty, no sort order will be applied, other than potentially surrounding suburbs boost."
        },
        "boostPrimarySuburbs": {
          "type": [
            "boolean",
            "null"
          ],
          "description": "Gets or Sets BoostPrimarySuburbs"
        }
      },
      "additionalProperties": false,
      "description": "Defines a sort order comprised of 0 or more elements (Domain.Search.Web.Api.v2.Models.CustomSortElement).  <br />  Each element is applied in the  order specified. An element is a combination of field (Domain.Search.Web.Api.v2.Models.CustomSortField) and direction (Domain.Search.Web.Api.v2.Models.SortDirection).",
      "x-data-access-level-info": {
        "Basic": [
          "*"
        ],
        "Detailed": [
          "*"
        ],
        "Full": [
          "*"
        ]
      }
    },
    "SearchService.v2.DomainSearchWebApiV2ModelsCustomSortElement": {
      "type": "object",
      "properties": {
        "field": {
          "enum": [
            "AdId",
            "PromoLevelScore",
            "FreshnessLevel",
            "ProductBoost",
            "DateUpdated",
            "DateListed",
            "SuburbName",
            "PriceDisplayOption",
            "SoldDate",
            "Price",
            "EarliestInspectionOpenTime",
            "EarliestAuctionTime",
            "DateAvailable"
          ],
          "type": "string",
          "description": "Gets or Sets Field"
        },
        "direction": {
          "enum": [
            "Ascending",
            "Descending"
          ],
          "type": "string",
          "description": "Gets or Sets Direction"
        }
      },
      "additionalProperties": false,
      "description": "DomainSearchWebApiV2ModelsCustomSortElement",
      "x-data-access-level-info": {
        "Basic": [
          "*"
        ],
        "Detailed": [
          "*"
        ],
        "Full": [
          "*"
        ]
      }
    },
    "SearchService.v2.DomainSearchWebApiV2ModelsGeoPoint": {
      "type": "object",
      "properties": {
        "lat": {
          "type": [
            "number",
            "null"
          ],
          "description": "Latitude coordinate",
          "format": "double"
        },
        "lon": {
          "type": [
            "number",
            "null"
          ],
          "description": "Longitude coordinate",
          "format": "double"
        }
      },
      "additionalProperties": false,
      "description": "DomainSearchWebApiV2ModelsGeoPoint",
      "x-data-access-level-info": {
        "Basic": [
          "*"
        ],
        "Detailed": [
          "*"
        ],
        "Full": [
          "*"
        ]
      }
    },
    "SearchService.v2.DomainSearchWebApiV2ModelsGeoWindow": {
      "type": "object",
      "properties": {
        "box": {
          "$ref": "#/$defs/SearchService.v2.DomainSearchWebApiV2ModelsBox"
        },
        "circle": {
          "$ref": "#/$defs/SearchService.v2.DomainSearchWebApiV2ModelsCircle"
        },
        "polygon": {
          "$ref": "#/$defs/SearchService.v2.DomainSearchWebApiV2ModelsPolygon"
        }
      },
      "additionalProperties": false,
      "description": "Define different geo filter shapes",
      "x-data-access-level-info": {
        "Basic": [
          "*"
        ],
        "Detailed": [
          "*"
        ],
        "Full": [
          "*"
        ]
      }
    },
    "SearchService.v2.DomainSearchWebApiV2ModelsPolygon": {
      "type": "object",
      "properties": {
        "points": {
          "type": [
            "array",
            "null"
          ],
          "items": {
            "$ref": "#/$defs/SearchService.v2.DomainSearchWebApiV2ModelsGeoPoint"
          },
          "description": "You must provide at least three points to form a polygon"
        }
      },
      "additionalProperties": false,
      "description": "DomainSearchWebApiV2ModelsPolygon",
      "x-data-access-level-info": {
        "Basic": [
          "*"
        ],
        "Detailed": [
          "*"
        ],
        "Full": [
          "*"
        ]
      }
    },
    "SearchService.v2.DomainSearchWebApiV2ModelsSchoolCatchment": {
      "type": "object",
      "properties": {
        "name": {
          "type": [
            "string",
            "null"
          ],
          "description": "Gets or Sets Name"
        },
        "state": {
          "type": [
            "string",
            "null"
          ],
          "description": "Gets or Sets State"
        },
        "postcode": {
          "type": [
            "string",
            "null"
          ],
          "description": "Gets or Sets Postcode"
        }
      },
      "additionalProperties": false,
      "description": "DomainSearchWebApiV2ModelsSchoolCatchment",
      "x-data-access-level-info": {
        "Basic": [
          "*"
        ],
        "Detailed": [
          "*"
        ],
        "Full": [
          "*"
        ]
      }
    },
    "SearchService.v2.DomainSearchWebApiV2ModelsSearchLocation": {
      "type": "object",
      "properties": {
        "state": {
          "enum": [
            "ACT",
            "NSW",
            "QLD",
            "VIC",
            "SA",
            "WA",
            "NT",
            "TAS"
          ],
          "type": "string",
          "description": "Gets or Sets State"
        },
        "region": {
          "type": [
            "string",
            "null"
          ],
          "description": "See http://location-api.domain.com.au/locations/regions"
        },
        "area": {
          "type": [
            "string",
            "null"
          ],
          "description": "See http://location-api.domain.com.au/locations/areas"
        },
        "suburb": {
          "type": [
            "string",
            "null"
          ],
          "description": "The name of the suburb i.e Sydney"
        },
        "postCode": {
          "type": [
            "string",
            "null"
          ],
          "description": "The post code for the suburb i.e 2000"
        },
        "includeSurroundingSuburbs": {
          "type": [
            "boolean",
            "null"
          ],
          "description": "Return listing in surrounding suburbs  <br />  This works only if a location is a complete suburb match (State, Suburb, Postcode)"
        },
        "surroundingRadiusInMeters": {
          "maximum": 200000,
          "minimum": 1,
          "type": [
            "integer",
            "null"
          ],
          "description": "RadiusInMeters to add to the search area  <br />  It will be used to construct a circular search area based on suburb mid point.  <br />  This area will be searched in additional to the provided suburb (i.e. the results will belong to either suburb Or Circular area)  Radius Search works only for Suburb and will limit the results on selected suburb's state. i.e. If calculated circular area  overlapes with a different state, overlapping area will be ignored.  <br />  Minimum Value: 1  <br />  Maximum Value: 200000",
          "format": "int32"
        },
        "definesPostcodeOnly": {
          "type": [
            "boolean",
            "null"
          ],
          "description": "If `true`, this instance has a postcode and nothing more.",
          "readOnly": true
        }
      },
      "additionalProperties": false,
      "description": "DomainSearchWebApiV2ModelsSearchLocation",
      "x-data-access-level-info": {
        "Basic": [
          "*"
        ],
        "Detailed": [
          "*"
        ],
        "Full": [
          "*"
        ]
      }
    },
    "SearchService.v2.DomainSearchWebApiV2ModelsSortBy": {
      "type": "object",
      "properties": {
        "sortKey": {
          "enum": [
            "Default",
            "Suburb",
            "Price",
            "DateUpdated",
            "InspectionTime",
            "AuctionTime",
            "SoldDate",
            "DefaultThenDateUpdated",
            "DateAvailable",
            "DateListed"
          ],
          "type": "string",
          "description": "Gets or Sets SortKey"
        },
        "direction": {
          "enum": [
            "Ascending",
            "Descending"
          ],
          "type": "string",
          "description": "Gets or Sets Direction"
        }
      },
      "additionalProperties": false,
      "description": "DomainSearchWebApiV2ModelsSortBy",
      "x-data-access-level-info": {
        "Basic": [
          "*"
        ],
        "Detailed": [
          "*"
        ],
        "Full": [
          "*"
        ]
      }
    },
    "SearchService.v2.DomainSearchWebApiV2ModelsTagQuery": {
      "type": "object",
      "properties": {
        "tag": {
          "type": [
            "string",
            "null"
          ],
          "description": "The tag value."
        },
        "criteria": {
          "enum": [
            "Include",
            "Exclude"
          ],
          "type": "string",
          "description": "Gets or Sets Criteria"
        }
      },
      "additionalProperties": false,
      "description": "Used to indicate whether listings with a given Domain.Search.Web.Api.v2.Models.TagQuery.Tag should be included  or excluded, based on the Domain.Search.Web.Api.v2.Models.TagCriteria.",
      "x-data-access-level-info": {
        "Basic": [
          "*"
        ],
        "Detailed": [
          "*"
        ],
        "Full": [
          "*"
        ]
      }
    }
  }
}