Classifications and selectors
Source-reviewed draft; deployment and release verification pending.
Draft — source-reviewed on 22 October 2026. Runtime catalogs, municipality configuration and deployment have not been verified. Examples are synthetic.
Physical classification controls
Load GET /api/v1/public/property-reference?destination=TENERIFE for flat inventories property_types, features_types and property_detail_types. There is no physical_tuples field. Use the reviewed relationship below to constrain dependent controls; do not treat every Cartesian combination of the inventories as valid.
property_type | Supported features_type | Optional non-null property_detail_type |
|---|---|---|
HOMES | FLAT | DUPLEX, PENTHOUSE, PENTHOUSE_DUPLEX, STUDIO |
HOMES | HOUSE | BUNGALOW |
HOMES | HOUSE_INDEPENDENT, RUSTIC | None |
HOMES | HOUSE_SEMIDETACHED, HOUSE_TERRACED | CORNER |
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 |
Subtype may be null for every parent; detail is optional for every tuple. Public property classification fields can themselves be omitted/null. Never label an unknown classification as a specific subtype. Buildings use a BUILDING_* subtype and no third-level detail; the old BUILDING/BUILDING/HOTEL representation is invalid.
PENTHOUSE_DUPLEX is one canonical detail, not two deprecated apartment booleans. Search for PENTHOUSE or DUPLEX also matches it; search for PENTHOUSE_DUPLEX alone matches only that detail. Explicit selected parent/subtype/detail combinations must be compatible. Clear incompatible child selections after a parent changes rather than sending a known-invalid combination.
Synthetic property P9001 could display this response fragment:
{"public_id":"P9001","property_type":"HOMES","features_type":"FLAT","property_detail_type":"PENTHOUSE_DUPLEX","catalogs":[]}This is a fragment, not a complete response or claim about an existing listing.
Website catalogs are independent
Use reference catalogs entries (key, nullable parent_key, labels, sort_order) to render marketing navigation and filters. Property responses supply membership keys in catalogs; an empty array is valid. Do not derive membership from property_type, nor derive a classification from a catalog label.
Search filters.catalogs uses OR across supplied active keys, without expanding descendants. Unknown or inactive keys return 422. See Classifications and catalogs for the reviewed inventory, including BUILDING_* distinctions and CRM-owned special-offer groups. Website-owned keys remain proposed handoff identifiers pending agreement; runtime active metadata determines accepted keys. A “Special offers” badge does not disclose private investment metrics, establish payment rights or expand destination coverage.
Municipality and LocalArea selectors
The public reference endpoint has no municipality-list operation. The website needs separately agreed public municipality configuration or a future reviewed endpoint. Do not fill this gap from authenticated CRM routes or invent a registry from arbitrary labels.
Once a municipality is selected, request GET /api/v1/public/property-reference?destination=TENERIFE&city=.... It returns active local_areas as {key,label,city}, capped at 500. Without city, local_areas is omitted. Unknown/blank city can yield an empty list. The reference lookup normalizes case, accents and whitespace and supports reviewed aliases, while search filters.city matches exact text. Preserve an agreed canonical search value; an alias accepted for option loading may not match property search.
Display LocalArea label, submit its key in filters.ubicacion, and use its city association. When municipality changes, clear old LocalArea selections and cancel/ignore obsolete option requests. An assigned LocalArea on an existing property may remain visible even after becoming inactive; do not erase or replace its supplied label because it no longer appears among active options.
States and privacy
Disable dependent selectors while their metadata is loading. Show retry on reference failure, an explicit “No available areas” state for successful empty choices, and safe handling for removed keys (422). Distinguish absent metadata from empty arrays. A disabled API returns 404; keep configuration errors separate from “no matching properties.” Use only public keys and labels, never database UUIDs or private classification-review data. Follow no-store.
Related operations
Choices: GET /api/v1/public/property-reference; selections: POST /api/v1/public/properties/search; display: GET /api/v1/public/properties/{public_id}. Property media (GET /api/v1/public/properties/{public_id}/images/{asset_id}) and agent media (GET /api/v1/public/agent-images/{asset_id}) do not provide selector registries. See Location and LocalAreas.
Updated 1 day ago