Classifications and website catalogs
Source-reviewed draft; deployment and release verification pending.
Draft — source-reviewed on 22 October 2026. Website-owned catalog keys remain proposed handoff identifiers; deployed registry contents have not been verified.
Physical classification answers what a property is. Catalog membership answers which marketing collections it belongs to. Keep those concepts separate in forms, badges and navigation.
Canonical physical hierarchy
property_type is the parent, features_type its subtype and property_detail_type an optional third level. The supported non-null pairs and third-level values are:
property_type | features_type | Allowed non-null property_detail_type |
|---|---|---|
HOMES | FLAT | DUPLEX, PENTHOUSE, PENTHOUSE_DUPLEX, STUDIO |
HOMES | HOUSE | BUNGALOW |
HOMES | HOUSE_INDEPENDENT | None |
HOMES | HOUSE_SEMIDETACHED | CORNER |
HOMES | HOUSE_TERRACED | CORNER |
HOMES | RUSTIC | None |
GARAGE | GARAGE | None |
OFFICE | OFFICE | None |
PREMISES_COMMERCIAL | PREMISES, PREMISES_COMMERCIAL, PREMISES_INDUSTRIAL | None |
LAND | LAND, LAND_URBAN, LAND_COUNTRYBUILDABLE, LAND_COUNTRYNONBUILDABLE | None |
STORAGE | STORAGE | None |
BUILDING | BUILDING_HOTEL, BUILDING_COMMERCIAL, BUILDING_INDUSTRIAL, BUILDING_OFFICE, BUILDING_CHALET, BUILDING_OTHER | None |
A null subtype is valid for every parent; detail is optional for every tuple. All three public fields are nullable/optional, so unknown classification must remain unknown. A non-null detail requires its allowed parent/subtype combination. Buildings never use a third-level detail. Do not use the superseded BUILDING/BUILDING/HOTEL representation or old building detail values.
PENTHOUSE_DUPLEX is one canonical detail. A search selecting PENTHOUSE or DUPLEX also matches it; selecting only PENTHOUSE_DUPLEX matches that detail. Do not translate this into deprecated apartment booleans. Those flags are not canonical public fields.
The public reference response lists individual enum inventories (property_types, features_types, property_detail_types), but does not return the full tuple matrix. This reviewed table supplies that relationship for frontend design; do not call an authenticated CRM metadata endpoint from the website.
Catalog membership
Summary/detail catalogs is an array of active membership keys. It is not inferred from physical type, details, a view or construction flags. A flat does not automatically belong to apartments, and a building classified as a hotel does not automatically join hotels.
Reference catalogs entries contain key, nullable parent_key, localized labels and sort_order. Use returned active metadata, preserve keys as identities and select an appropriate label language with an explicit fallback. Search selections match any supplied active catalog key. Parent selection does not automatically expand descendants: request the intended keys explicitly.
Reviewed proposed website catalog inventory
The source registry marks website-owned keys as proposed_handoff, not verified external website identifiers. The following inventory is meaningful for design review but must be agreed before deployment. A runtime reference response may differ after authorized registry updates.
| Key | English marketing label |
|---|---|
apartments | Apartments / flats |
apartments.apartment | Apartment / flat |
apartments.duplex | Duplex |
apartments.penthouse | Penthouse |
apartments.studio | Studio |
houses | Villas / houses |
houses.villa | Villa |
houses.house | House |
houses.estate | Estate / finca |
houses.bungalow | Bungalow |
townhouses | Townhouses |
townhouses.semi_detached | Semi-detached |
townhouses.corner | Corner townhouse |
garages | Garages |
land | Land |
commercial_properties | Commercial properties |
hotels | Hotels |
buildings | Buildings |
buildings.chalet | Chalet |
buildings.commercial | Commercial |
buildings.hotel | Hotel |
buildings.industrial | Industrial |
buildings.office | Office |
buildings.other | Other building |
commercial_premises | Commercial premises |
gas_stations | Gas stations |
ready_made_business | Ready-made business |
new_construction | New construction |
new_development | New development |
development_projects | Development projects |
residential_properties | Residential properties |
CRM-owned special offers
These membership entries belong to the CRM-owned special_offers group (English label: Special offers). They are still catalog memberships, not property booleans or independent financial offers.
| Key | English marketing label |
|---|---|
special_offers.urgent_sale | Urgent sale |
special_offers.unique_property | Unique property |
special_offers.rent_to_own | Rent-to-own |
special_offers.other_islands | Other islands |
special_offers.first_line | Seafront Property |
special_offers.installment_purchase | Installment purchase |
special_offers.exclusive | Exclusive |
special_offers.promotion | Promo |
Do not infer a payment plan, legal purchase entitlement or rental booking capability from a marketing membership. In particular, special_offers.other_islands does not add other destination coverage; the implemented public search destination remains TENERIFE.
Unknown/inactive requested catalog keys return 422. If metadata loading fails, show a retry state rather than inventing or silently submitting keys. An empty membership array means no active memberships in that response.
Related operations
GET /api/v1/public/property-reference supplies available values and active catalog metadata. POST /api/v1/public/properties/search accepts classification/catalog selections. GET /api/v1/public/properties/{public_id} exposes the selected classification and memberships.
Updated 1 day ago