{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/domain-group/main/json-schema/domain-group-listings-v2-project-schema.json",
  "title": "Listings.V2.Project",
  "description": "A structured representation of a Project",
  "x-generated": "2026-10-21",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/domain-group-projects-api-openapi.yml#/components/schemas/Listings.V2.Project",
  "type": "object",
  "properties": {
    "projectProfileType": {
      "enum": [
        "noProfile",
        "projectProfileStandard",
        "projectProfilePremium"
      ],
      "type": [
        "string",
        "null"
      ],
      "description": "Gets or Sets ProjectProfileType"
    },
    "estimatedCompletionTertile": {
      "enum": [
        "early",
        "mid",
        "late"
      ],
      "type": [
        "string",
        "null"
      ],
      "description": "Gets or Sets EstimatedCompletionTertile"
    },
    "category": {
      "enum": [
        "houseAndLand",
        "apartment",
        "retirement"
      ],
      "type": [
        "string",
        "null"
      ],
      "description": "Gets or Sets Category"
    },
    "id": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Project ID",
      "format": "int32"
    },
    "name": {
      "type": [
        "string",
        "null"
      ],
      "description": "Project Name"
    },
    "startDate": {
      "type": [
        "string",
        "null"
      ],
      "description": "Start date. DateTime is in a local timezone.",
      "format": "date-time"
    },
    "endDate": {
      "type": [
        "string",
        "null"
      ],
      "description": "End date.DateTime is in a local timezone.",
      "format": "date-time"
    },
    "address": {
      "$ref": "#/$defs/Listings.V2.ProjectAddressParts"
    },
    "viewingAddress": {
      "$ref": "#/$defs/Listings.V2.ProjectAddressParts"
    },
    "propertyTypes": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "enum": [
          "unknown",
          "acreageSemiRural",
          "apartmentUnitFlat",
          "aquaculture",
          "blockOfUnits",
          "carspace",
          "dairyFarming",
          "developmentLand",
          "developmentSite",
          "duplex",
          "farm",
          "fishingForestry",
          "homeBased",
          "newHomeDesigns",
          "hotelLeisure",
          "house",
          "newHouseLand",
          "industrialWarehouse",
          "irrigationServices",
          "newLand",
          "livestock",
          "international",
          "medicalConsulting",
          "newApartments",
          "offices",
          "parkingCarSpace",
          "penthouse",
          "retail",
          "retirement",
          "rural",
          "ruralCommercialFarming",
          "semiDetached",
          "showroomsBulkyGoods",
          "specialistFarm",
          "studio",
          "terrace",
          "townhouse",
          "vacantLand",
          "villa",
          "servicedOffices",
          "other",
          "chickenShop",
          "seafoodShop",
          "deliCafe",
          "cropping",
          "viticulture",
          "mixedFarming",
          "grazing",
          "horticulture",
          "equine",
          "farmlet",
          "orchard",
          "ruralLifestyle",
          "onlineBusiness"
        ],
        "type": "string",
        "description": "Available types of Properties  * `Unknown` - Unknown * `AcreageSemiRural` - Acreage-SemiRural * `ApartmentUnitFlat` - Apartment Unit Flat * `Aquaculture` - Aquaculture             commercial/rural type * `BlockOfUnits` - Block Of Units * `Carspace` - Carspace * `DairyFarming` - Dairy Farming             commercial/rural type * `DevelopmentLand` - Development / Land * `DevelopmentSite` - Development site * `Duplex` - Duplex * `Farm` - Farm * `FishingForestry` - Fishing / Forestry             commercial/rural type * `HomeBased` - Home Based * `NewHomeDesigns` - New Home Designs * `HotelLeisure` - Hotel / Leisure             commercial type * `House` - House * `NewHouseLand` - New House And Land * `IndustrialWarehouse` - Industrial / Warehouse             commercial type * `IrrigationServices` - Irrigation Services             commercial/rural type * `NewLand` - New Land * `Livestock` - Livestock             commercial/rural type * `International` - International             commercial type * `MedicalConsulting` - Medical / Consulting             commercial type * `NewApartments` - New Apartments / Off the Plan * `Offices` - Offices             commercial type * `ParkingCarSpace` - Parking / Car Space             commercial type * `Penthouse` - Penthouse * `Retail` - Retail             commercial type * `Retirement` - Retirement * `Rural` - Rural * `RuralCommercialFarming` - Rural / Commercial Farming              commercial type * `SemiDetached` - Semi Detached * `ShowroomsBulkyGoods` - Showrooms / Bulky Goods             commercial type * `SpecialistFarm` - The specialist farm * `Studio` - Studio * `Terrace` - Terrace * `Townhouse` - The townhouse * `VacantLand` - Vacant Land * `Villa` - Villa * `ServicedOffices` - Serviced Offices             commercial type * `Other` - Other             commercial type * `ChickenShop` - Chicken Shop             commercial type * `SeafoodShop` - Seafood Shop             commercial type * `DeliCafe` - Deli Cafe             commercial type * `Cropping` - Cropping             commercial/rural type * `Viticulture` - Viticulture             commercial/rural type * `MixedFarming` - Mixed Farming             commercial type * `Grazing` - Grazing             commercial/rural type * `Horticulture` - Horticulture             commercial/rural type * `Equine` - Equine             commercial/rural type * `Farmlet` - Farmlet             commercial/rural type * `Orchard` - Orchard             commercial/rural type * `RuralLifestyle` - Rural Lifestyle             commercial/rural type * `OnlineBusiness` - Online Business"
      },
      "description": "Property types available at the project."
    },
    "displayableAddress": {
      "$ref": "#/$defs/Listings.V2.ProjectAddressParts"
    },
    "enquiryEmailAddress": {
      "type": [
        "string",
        "null"
      ],
      "description": "Enquiry email address"
    },
    "advertiserIdentifiers": {
      "$ref": "#/$defs/Listings.V2.AdvertiserIdentifiers"
    },
    "providerDetails": {
      "$ref": "#/$defs/Listings.V2.ProviderDetails"
    },
    "media": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "$ref": "#/$defs/Listings.v2.ProjectMedia"
      },
      "description": "Images and videos"
    },
    "projectUrl": {
      "type": [
        "string",
        "null"
      ],
      "description": "Project URL"
    },
    "headline": {
      "type": [
        "string",
        "null"
      ],
      "description": "Headline"
    },
    "tagline": {
      "type": [
        "string",
        "null"
      ],
      "description": "Tag line"
    },
    "displayAsLastUpdated": {
      "type": [
        "string",
        "null"
      ],
      "description": "The 'last updated' date to show to customers. DateTime is in AEST (Australian Eastern Standard Time) or AEDT (Australian Eastern Daylight Time) timezone.",
      "format": "date-time"
    },
    "modifiedBy": {
      "type": [
        "string",
        "null"
      ],
      "description": "Last updated by"
    },
    "modifiedDate": {
      "type": [
        "string",
        "null"
      ],
      "description": "Last updated, used for auditing. DateTime is in AEST (Australian Eastern Standard Time) or AEDT (Australian Eastern Daylight Time) timezone.",
      "format": "date-time"
    },
    "createdBy": {
      "type": [
        "string",
        "null"
      ],
      "description": "Created by"
    },
    "createdDate": {
      "type": [
        "string",
        "null"
      ],
      "description": "Created date. DateTime is in AEST (Australian Eastern Standard Time) or AEDT (Australian Eastern Daylight Time) timezone.",
      "format": "date-time"
    },
    "backgroundColour": {
      "type": [
        "string",
        "null"
      ],
      "description": "Background colour"
    },
    "description": {
      "type": [
        "string",
        "null"
      ],
      "description": "Description"
    },
    "appointmentRequired": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "If inspections require an appointment."
    },
    "features": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "string"
      },
      "description": "Features"
    },
    "priceFrom": {
      "type": [
        "number",
        "null"
      ],
      "description": "Price from",
      "format": "double"
    },
    "priceTo": {
      "type": [
        "number",
        "null"
      ],
      "description": "Price to",
      "format": "double"
    },
    "bannerUrl": {
      "type": [
        "string",
        "null"
      ],
      "description": "Banner URL"
    },
    "bigBannerUrl": {
      "type": [
        "string",
        "null"
      ],
      "description": "Big banner URL"
    },
    "smallBannerUrl": {
      "type": [
        "string",
        "null"
      ],
      "description": "Small banner URL"
    },
    "logoUrl": {
      "type": [
        "string",
        "null"
      ],
      "description": "Logo URL"
    },
    "pdfs": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "$ref": "#/$defs/Listings.V2.PdfUpload"
      },
      "description": "PDF files, such as brochures etc."
    },
    "inspectionDetails": {
      "$ref": "#/$defs/Listings.V2.PropertyInspections"
    },
    "numberOfFloors": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Maximum number of floors",
      "format": "int32"
    },
    "minNumberOfFloors": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Minimum number of floors",
      "format": "int32"
    },
    "minBuildingHeight": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Minimum building height",
      "format": "int32"
    },
    "maxBuildingHeight": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Maximum building height",
      "format": "int32"
    },
    "numberOfBuildings": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Number of buildings",
      "format": "int32"
    },
    "numberOfApartments": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Number of apartments",
      "format": "int32"
    },
    "estimatedCompletionDate": {
      "type": [
        "string",
        "null"
      ],
      "description": "Estimated completion date. DateTime in a local timezone.",
      "format": "date-time"
    },
    "startingPrice": {
      "type": [
        "number",
        "null"
      ],
      "description": "Lowest child listing price",
      "format": "double"
    },
    "childListingIds": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "integer",
        "format": "int32"
      },
      "description": "Child listing identifiers."
    },
    "linkedProjectIds": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "integer",
        "format": "int32"
      },
      "description": "Linked project identifiers."
    }
  },
  "additionalProperties": false,
  "x-data-access-level-info": {
    "Basic": [
      "*"
    ],
    "Detailed": [
      "*"
    ],
    "Full": [
      "*"
    ]
  },
  "$defs": {
    "Listings.V2.AdvertiserIdentifiers": {
      "type": "object",
      "properties": {
        "advertiserType": {
          "enum": [
            "agency",
            "private"
          ],
          "type": [
            "string",
            "null"
          ],
          "description": "Gets or Sets AdvertiserType"
        },
        "advertiserId": {
          "type": [
            "integer",
            "null"
          ],
          "description": "Advertiser's identifier",
          "format": "int32"
        },
        "contactIds": {
          "type": [
            "array",
            "null"
          ],
          "items": {
            "type": "integer",
            "format": "int32"
          },
          "description": "Identifier of each contact the advertiser has associated with the listing"
        },
        "agentIds": {
          "type": [
            "array",
            "null"
          ],
          "items": {
            "type": "string"
          },
          "description": "Identifier of each agent the advertiser has associated with the listing"
        },
        "conjunctionContactIds": {
          "type": [
            "array",
            "null"
          ],
          "items": {
            "type": "integer",
            "format": "int32"
          },
          "description": "Identifier of each conjunctional contact associated with the listing"
        },
        "conjunctionAgentIds": {
          "type": [
            "array",
            "null"
          ],
          "items": {
            "type": "string"
          },
          "description": "Identifier of each conjunctional agent associated with the listing"
        }
      },
      "additionalProperties": false,
      "description": "Encapsulates the listing's advertiser identifiers",
      "x-data-access-level-info": {
        "Basic": [
          "*"
        ],
        "Detailed": [
          "*"
        ],
        "Full": [
          "*"
        ]
      }
    },
    "Listings.V2.Inspection": {
      "type": "object",
      "properties": {
        "recurrence": {
          "enum": [
            "none",
            "weekly"
          ],
          "type": [
            "string",
            "null"
          ],
          "description": "Gets or Sets Recurrence"
        },
        "openingDateTime": {
          "type": [
            "string",
            "null"
          ],
          "description": "Opening date and time of the inspection. e.g. 2015-01-01T12:00:00.  Not provided by bulk uploaded listings, in these cases refer to the  inspection description field. DateTime is in a local timezone.",
          "format": "date-time"
        },
        "closingDateTime": {
          "type": [
            "string",
            "null"
          ],
          "description": "Closing date and time of the inspection. e.g. 2015-01-01T12:00:00  Not provided by bulk uploaded listings, in these cases refer to the  inspection description field. DateTime is in a local timezone.",
          "format": "date-time"
        },
        "description": {
          "type": [
            "string",
            "null"
          ],
          "description": "Description of the inspection provided by the Advertiser.  When listings are bulk uploaded, inspection times are provided as a string.  Other inspection details will not be provided"
        }
      },
      "additionalProperties": false,
      "description": "Encapsulates the details of a Listing's Inspection",
      "x-data-access-level-info": {
        "Basic": [
          "*"
        ],
        "Detailed": [
          "*"
        ],
        "Full": [
          "*"
        ]
      }
    },
    "Listings.V2.PdfUpload": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "commercialPdf",
            "newDevBrochurePdf",
            "floorplanPdf",
            "devProjectPdf",
            "devProjectMasterplanPdf"
          ],
          "type": [
            "string",
            "null"
          ],
          "description": "Gets or Sets Type"
        },
        "url": {
          "type": [
            "string",
            "null"
          ],
          "description": "Url of the PDF"
        },
        "filename": {
          "type": [
            "string",
            "null"
          ],
          "description": "Original file name of the PDF"
        },
        "fileDescription": {
          "type": [
            "string",
            "null"
          ],
          "description": "Description of the PDF"
        }
      },
      "additionalProperties": false,
      "description": "PDF file",
      "x-data-access-level-info": {
        "Basic": [
          "*"
        ],
        "Detailed": [
          "*"
        ],
        "Full": [
          "*"
        ]
      }
    },
    "Listings.V2.ProjectAddressParts": {
      "type": "object",
      "properties": {
        "stateAbbreviation": {
          "enum": [
            "nsw",
            "vic",
            "sa",
            "nt",
            "tas",
            "act",
            "qld",
            "wa"
          ],
          "type": [
            "string",
            "null"
          ],
          "description": "Gets or Sets StateAbbreviation"
        },
        "displayType": {
          "enum": [
            "fullAddress",
            "streetAndSuburb",
            "suburbOnly",
            "regionOnly",
            "areaOnly",
            "stateOnly"
          ],
          "type": [
            "string",
            "null"
          ],
          "description": "Gets or Sets DisplayType"
        },
        "streetNumber": {
          "type": [
            "string",
            "null"
          ],
          "description": "Street number"
        },
        "unitNumber": {
          "type": [
            "string",
            "null"
          ],
          "description": "Unit number."
        },
        "street": {
          "type": [
            "string",
            "null"
          ],
          "description": "Street address"
        },
        "suburb": {
          "type": [
            "string",
            "null"
          ],
          "description": "Suburb of the address"
        },
        "suburbId": {
          "type": [
            "integer",
            "null"
          ],
          "description": "Domain suburb identifier for address lookup via the domain location api",
          "format": "int32"
        },
        "postcode": {
          "type": [
            "string",
            "null"
          ],
          "description": "Postcode of the address"
        },
        "displayAddress": {
          "type": [
            "string",
            "null"
          ],
          "description": "Advertiser's preference in displaying their listing's address"
        },
        "street2": {
          "type": [
            "string",
            "null"
          ],
          "description": "Street 2"
        },
        "latitude": {
          "type": [
            "number",
            "null"
          ],
          "description": "Latitude",
          "format": "double"
        },
        "longitude": {
          "type": [
            "number",
            "null"
          ],
          "description": "Longitude",
          "format": "double"
        }
      },
      "additionalProperties": false,
      "description": "Project address parts",
      "x-data-access-level-info": {
        "Basic": [
          "DisplayAddress",
          "DisplayType",
          "StateAbbreviation",
          "UnitNumber",
          "StreetNumber",
          "Street",
          "Street2",
          "Postcode",
          "Suburb",
          "SuburbId",
          "Latitude",
          "Longitude"
        ],
        "Detailed": [
          "DisplayAddress",
          "DisplayType",
          "StateAbbreviation",
          "UnitNumber",
          "StreetNumber",
          "Street",
          "Street2",
          "Postcode",
          "Suburb",
          "SuburbId",
          "Latitude",
          "Longitude"
        ],
        "Full": [
          "DisplayAddress",
          "DisplayType",
          "StateAbbreviation",
          "UnitNumber",
          "StreetNumber",
          "Street",
          "Street2",
          "Postcode",
          "Suburb",
          "SuburbId",
          "Latitude",
          "Longitude"
        ]
      }
    },
    "Listings.V2.PropertyInspections": {
      "type": "object",
      "properties": {
        "inspections": {
          "type": [
            "array",
            "null"
          ],
          "items": {
            "$ref": "#/$defs/Listings.V2.Inspection"
          },
          "description": "Inspection details for the property. e.g. opening and closing times"
        },
        "pastInspections": {
          "type": [
            "array",
            "null"
          ],
          "items": {
            "$ref": "#/$defs/Listings.V2.Inspection"
          },
          "description": "Inspection details for the property. e.g. opening and closing times"
        },
        "isByAppointmentOnly": {
          "type": [
            "boolean",
            "null"
          ],
          "description": "True or False indicating whether the inspection is by appointment only"
        }
      },
      "additionalProperties": false,
      "description": "Property Inspection(s) details",
      "x-data-access-level-info": {
        "Basic": [
          "*"
        ],
        "Detailed": [
          "*"
        ],
        "Full": [
          "*"
        ]
      }
    },
    "Listings.V2.ProviderDetails": {
      "type": "object",
      "properties": {
        "providerSystem": {
          "type": [
            "string",
            "null"
          ],
          "description": "Feed provider ID"
        },
        "providerAdID": {
          "type": [
            "string",
            "null"
          ],
          "description": "Unique ID within provider system"
        }
      },
      "additionalProperties": false,
      "description": "Information for the listing provider. e.g. bulkuploader information",
      "x-data-access-level-info": {
        "Basic": [
          "*"
        ],
        "Detailed": [
          "*"
        ],
        "Full": [
          "*"
        ]
      }
    },
    "Listings.v2.ProjectMedia": {
      "type": "object",
      "properties": {
        "category": {
          "enum": [
            "image",
            "video",
            "others"
          ],
          "type": [
            "string",
            "null"
          ],
          "description": "Gets or Sets Category"
        },
        "type": {
          "enum": [
            "photo",
            "poster",
            "video",
            "virtualTour",
            "webLink"
          ],
          "type": [
            "string",
            "null"
          ],
          "description": "Gets or Sets Type"
        },
        "url": {
          "type": [
            "string",
            "null"
          ],
          "description": "Url"
        },
        "description": {
          "type": [
            "string",
            "null"
          ],
          "description": "Optional description"
        }
      },
      "additionalProperties": false,
      "description": "Project Media",
      "x-data-access-level-info": {
        "Basic": [
          "*"
        ],
        "Detailed": [
          "*"
        ],
        "Full": [
          "*"
        ]
      }
    }
  }
}