{
  "openapi": "3.1.0",
  "info": {
    "title": "Real Estate Listings API",
    "description": "API for searching listings, resolving locations, reading property detail, exploring promotions and retrieving related metadata. The documentation is written from the integrator perspective so each operation explains when to use it, which identifiers it needs and what kind of data it returns.",
    "version": "0.2.0"
  },
  "servers": [
    {
      "url": "https://idealista-real-estate.p.rapidapi.com",
      "description": "RapidAPI (production)"
    }
  ],
  "paths": {
    "/v1/search": {
      "get": {
        "tags": [
          "Search"
        ],
        "summary": "Search listings by location or promotion",
        "description": "Returns a paginated list of real-estate listings matching the requested filters. At least one of `locationIds` or `parentPromotionId` is required.",
        "operationId": "searchListings",
        "parameters": [
          {
            "name": "operation",
            "in": "query",
            "required": true,
            "schema": {
              "enum": [
                "sale",
                "rent"
              ],
              "type": "string",
              "description": "Listing operation type: `sale` (for sale) or `rent` (for rent).",
              "title": "Operation"
            },
            "description": "Listing operation type: `sale` (for sale) or `rent` (for rent)."
          },
          {
            "name": "propertyType",
            "in": "query",
            "required": true,
            "schema": {
              "enum": [
                "homes",
                "newDevelopments",
                "offices",
                "premises",
                "garages",
                "storageRooms",
                "rooms"
              ],
              "type": "string",
              "description": "Property type to search. One of: `homes` (flats and houses), `newDevelopments` (new build promotions), `offices`, `premises` (commercial premises), `garages`, `storageRooms`, `rooms` (shared rooms, rent only).",
              "title": "Propertytype"
            },
            "description": "Property type to search. One of: `homes` (flats and houses), `newDevelopments` (new build promotions), `offices`, `premises` (commercial premises), `garages`, `storageRooms`, `rooms` (shared rooms, rent only)."
          },
          {
            "name": "locationIds",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Location tag. Accepts the id with or without brackets (`[0-EU-ES-28]` or `0-EU-ES-28`). To search several zones at once concatenate them, e.g. `[0-EU-ES-28][0-EU-ES-08]` (Madrid + Barcelona).",
              "examples": [
                "[0-EU-ES-28]",
                "0-EU-ES-28",
                "[0-EU-ES-28][0-EU-ES-08]"
              ],
              "default": "[0-EU-ES-28]",
              "title": "Locationids"
            },
            "description": "Location tag. Accepts the id with or without brackets (`[0-EU-ES-28]` or `0-EU-ES-28`). To search several zones at once concatenate them, e.g. `[0-EU-ES-28][0-EU-ES-08]` (Madrid + Barcelona)."
          },
          {
            "name": "parentPromotionId",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Parent promotion id when listing units of a `newDevelopments` promotion. Mutually substitutes `locationIds`.",
              "title": "Parentpromotionid"
            },
            "description": "Parent promotion id when listing units of a `newDevelopments` promotion. Mutually substitutes `locationIds`."
          },
          {
            "name": "numPage",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "description": "1-based page number to retrieve.",
              "default": 1,
              "title": "Numpage"
            },
            "description": "1-based page number to retrieve."
          },
          {
            "name": "maxItems",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 40,
              "minimum": 1,
              "description": "Number of results per page. Max 40 (upstream cap).",
              "default": 40,
              "title": "Maxitems"
            },
            "description": "Number of results per page. Max 40 (upstream cap)."
          },
          {
            "name": "order",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "enum": [
                    "publicationDate",
                    "price",
                    "size",
                    "priceDown",
                    "distance",
                    "weigh"
                  ],
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Sort field: `publicationDate` (most recent), `price`, `size` (square meters), `priceDown` (recent price drops), `distance` (when searching by point), `weigh` (relevance, default upstream).",
              "title": "Order"
            },
            "description": "Sort field: `publicationDate` (most recent), `price`, `size` (square meters), `priceDown` (recent price drops), `distance` (when searching by point), `weigh` (relevance, default upstream)."
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "enum": [
                    "asc",
                    "desc"
                  ],
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Sort direction: `asc` (ascending) or `desc` (descending).",
              "title": "Sort"
            },
            "description": "Sort direction: `asc` (ascending) or `desc` (descending)."
          },
          {
            "name": "locale",
            "in": "query",
            "required": false,
            "schema": {
              "enum": [
                "es",
                "en",
                "ca",
                "it",
                "pt",
                "de",
                "fr",
                "ro",
                "sv",
                "nl",
                "nb",
                "fi",
                "el"
              ],
              "type": "string",
              "description": "Response locale (affects localized strings).",
              "default": "es",
              "title": "Locale"
            },
            "description": "Response locale (affects localized strings)."
          },
          {
            "name": "country",
            "in": "query",
            "required": false,
            "schema": {
              "enum": [
                "es",
                "it",
                "pt"
              ],
              "type": "string",
              "description": "Idealista country market to query.",
              "default": "es",
              "title": "Country"
            },
            "description": "Idealista country market to query."
          },
          {
            "name": "priceFrom",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "number",
                  "minimum": 0
                },
                {
                  "type": "null"
                }
              ],
              "description": "Minimum price in EUR.",
              "title": "Pricefrom"
            },
            "description": "Minimum price in EUR."
          },
          {
            "name": "priceTo",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "number",
                  "minimum": 0
                },
                {
                  "type": "null"
                }
              ],
              "description": "Maximum price in EUR.",
              "title": "Priceto"
            },
            "description": "Maximum price in EUR."
          },
          {
            "name": "sizeFrom",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "integer",
                  "minimum": 0
                },
                {
                  "type": "null"
                }
              ],
              "description": "Minimum surface area in m².",
              "title": "Sizefrom"
            },
            "description": "Minimum surface area in m²."
          },
          {
            "name": "sizeTo",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "integer",
                  "minimum": 0
                },
                {
                  "type": "null"
                }
              ],
              "description": "Maximum surface area in m².",
              "title": "Sizeto"
            },
            "description": "Maximum surface area in m²."
          },
          {
            "name": "bedrooms",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Comma-separated list of bedroom counts, e.g. `2,3,4`.",
              "title": "Bedrooms"
            },
            "description": "Comma-separated list of bedroom counts, e.g. `2,3,4`."
          },
          {
            "name": "bathsFrom",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "integer",
                  "minimum": 0
                },
                {
                  "type": "null"
                }
              ],
              "description": "Minimum number of bathrooms.",
              "title": "Bathsfrom"
            },
            "description": "Minimum number of bathrooms."
          },
          {
            "name": "bathsTo",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "integer",
                  "minimum": 0
                },
                {
                  "type": "null"
                }
              ],
              "description": "Maximum number of bathrooms.",
              "title": "Bathsto"
            },
            "description": "Maximum number of bathrooms."
          },
          {
            "name": "exterior",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Only listings facing outside (exterior) when `true`.",
              "title": "Exterior"
            },
            "description": "Only listings facing outside (exterior) when `true`."
          },
          {
            "name": "hasPlan",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Only listings with a floor plan.",
              "title": "Hasplan"
            },
            "description": "Only listings with a floor plan."
          },
          {
            "name": "has360",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Only listings with 360° photos.",
              "title": "Has360"
            },
            "description": "Only listings with 360° photos."
          },
          {
            "name": "withParking",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Only listings that include parking.",
              "title": "Withparking"
            },
            "description": "Only listings that include parking."
          },
          {
            "name": "withSwimmingPool",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Only listings with a swimming pool.",
              "title": "Withswimmingpool"
            },
            "description": "Only listings with a swimming pool."
          },
          {
            "name": "withTerrace",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Only listings with a terrace.",
              "title": "Withterrace"
            },
            "description": "Only listings with a terrace."
          },
          {
            "name": "withGarden",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Only listings with a garden.",
              "title": "Withgarden"
            },
            "description": "Only listings with a garden."
          },
          {
            "name": "withStorageRoom",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Only listings with a storage room.",
              "title": "Withstorageroom"
            },
            "description": "Only listings with a storage room."
          },
          {
            "name": "withElevator",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Only listings in buildings with an elevator.",
              "title": "Withelevator"
            },
            "description": "Only listings in buildings with an elevator."
          },
          {
            "name": "withAirConditioning",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Only listings with air conditioning.",
              "title": "Withairconditioning"
            },
            "description": "Only listings with air conditioning."
          },
          {
            "name": "luxury",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Only luxury listings (Idealista premium segment).",
              "title": "Luxury"
            },
            "description": "Only luxury listings (Idealista premium segment)."
          },
          {
            "name": "accessible",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Only listings adapted for accessibility / reduced mobility.",
              "title": "Accessible"
            },
            "description": "Only listings adapted for accessibility / reduced mobility."
          },
          {
            "name": "builtinWardrobes",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Only listings with built-in wardrobes.",
              "title": "Builtinwardrobes"
            },
            "description": "Only listings with built-in wardrobes."
          },
          {
            "name": "virtualTour",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Only listings offering a virtual tour.",
              "title": "Virtualtour"
            },
            "description": "Only listings offering a virtual tour."
          },
          {
            "name": "exteriorDomesticSpace",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Only listings with private outdoor space (terrace, patio).",
              "title": "Exteriordomesticspace"
            },
            "description": "Only listings with private outdoor space (terrace, patio)."
          },
          {
            "name": "seasonalRental",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Rent only: keep only seasonal (short-term) rentals. Upstream collapses this and `longTermRental` into a single enum `rentalUsages`; pass `true` to filter to seasonal, leave unset to include both. Passing `false` is a no-op (the upstream UI has no way to exclude seasonal-only).",
              "title": "Seasonalrental"
            },
            "description": "Rent only: keep only seasonal (short-term) rentals. Upstream collapses this and `longTermRental` into a single enum `rentalUsages`; pass `true` to filter to seasonal, leave unset to include both. Passing `false` is a no-op (the upstream UI has no way to exclude seasonal-only)."
          },
          {
            "name": "longTermRental",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Rent only: keep only long-term residential rentals. Upstream collapses this and `seasonalRental` into a single enum `rentalUsages`; pass `true` to filter to long-term, leave unset to include both. Passing `false` is a no-op.",
              "title": "Longtermrental"
            },
            "description": "Rent only: keep only long-term residential rentals. Upstream collapses this and `seasonalRental` into a single enum `rentalUsages`; pass `true` to filter to long-term, leave unset to include both. Passing `false` is a no-op."
          },
          {
            "name": "preservation",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "enum": [
                    "good",
                    "renew"
                  ],
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Property condition: `good` (move-in ready) or `renew` (needs refurbishment).",
              "title": "Preservation"
            },
            "description": "Property condition: `good` (move-in ready) or `renew` (needs refurbishment)."
          },
          {
            "name": "chalet",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Only chalet-type homes.",
              "title": "Chalet"
            },
            "description": "Only chalet-type homes."
          },
          {
            "name": "independentHouse",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Only fully detached houses.",
              "title": "Independenthouse"
            },
            "description": "Only fully detached houses."
          },
          {
            "name": "terracedHouse",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Only terraced (row) houses.",
              "title": "Terracedhouse"
            },
            "description": "Only terraced (row) houses."
          },
          {
            "name": "semidetachedHouse",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Only semi-detached houses.",
              "title": "Semidetachedhouse"
            },
            "description": "Only semi-detached houses."
          },
          {
            "name": "minPublicationDate",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Restrict listings by publication recency. Upstream is an enum, not an ISO date: `Y` (last 48h), `W` (last week), `M` (last month). Internally mapped to `sinceDate`.",
              "title": "Minpublicationdate"
            },
            "description": "Restrict listings by publication recency. Upstream is an enum, not an ISO date: `Y` (last 48h), `W` (last week), `M` (last month). Internally mapped to `sinceDate`."
          },
          {
            "name": "petsAllowed",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Rent only: only listings that allow pets.",
              "title": "Petsallowed"
            },
            "description": "Rent only: only listings that allow pets."
          },
          {
            "name": "bankOffer",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Only bank-owned listings (REO). Applies to both `sale` and `rent`.",
              "title": "Bankoffer"
            },
            "description": "Only bank-owned listings (REO). Applies to both `sale` and `rent`."
          },
          {
            "name": "newDevelopmentInProject",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "description": "`newDevelopments` only: include promotions still in project phase.",
              "title": "Newdevelopmentinproject"
            },
            "description": "`newDevelopments` only: include promotions still in project phase."
          },
          {
            "name": "finished",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "description": "`newDevelopments` only: only promotions already finished/built.",
              "title": "Finished"
            },
            "description": "`newDevelopments` only: only promotions already finished/built."
          },
          {
            "name": "energyCertificate",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "CSV of energy certificate buckets: `high` (A/B), `medium` (C/D), `low` (E/F/G). Example: `high,medium`.",
              "title": "Energycertificate"
            },
            "description": "CSV of energy certificate buckets: `high` (A/B), `medium` (C/D), `low` (E/F/G). Example: `high,medium`."
          },
          {
            "name": "floor",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "CSV of floor levels: `ground` (ground floor), `intermediate` (middle floors), `top` (top floor). For penthouses use `homeSubtype=atticStudio` — upstream treats attic as a subtypology, not a floor.",
              "title": "Floor"
            },
            "description": "CSV of floor levels: `ground` (ground floor), `intermediate` (middle floors), `top` (top floor). For penthouses use `homeSubtype=atticStudio` — upstream treats attic as a subtypology, not a floor."
          },
          {
            "name": "occupationType",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "CSV of occupation status (sale only): `free` (vacant), `tenanted` (rented out), `bareOwnership` (nuda propiedad), `illegallyOccupied` (squatted).",
              "title": "Occupationtype"
            },
            "description": "CSV of occupation status (sale only): `free` (vacant), `tenanted` (rented out), `bareOwnership` (nuda propiedad), `illegallyOccupied` (squatted)."
          },
          {
            "name": "homeSubtype",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "CSV of home subtypes mapped to upstream `subTypology`. Flat/loft family: `apartment`, `loft`, `atticStudio` (buhardilla). House family (chalet subtypes; combine with `chalet=true` for the umbrella flag if wanted): `independentHouse`, `terracedHouse`, `semidetachedHouse`. Other denominations: `casaBaja`, `cortijo`, `stoneHouse`, `villaLabel`. Example: `apartment,loft`.",
              "title": "Homesubtype"
            },
            "description": "CSV of home subtypes mapped to upstream `subTypology`. Flat/loft family: `apartment`, `loft`, `atticStudio` (buhardilla). House family (chalet subtypes; combine with `chalet=true` for the umbrella flag if wanted): `independentHouse`, `terracedHouse`, `semidetachedHouse`. Other denominations: `casaBaja`, `cortijo`, `stoneHouse`, `villaLabel`. Example: `apartment,loft`."
          },
          {
            "name": "X-No-Cache",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Set to 'true' or '1' to bypass the cache read and force an upstream call. The fresh response is still written to cache for subsequent readers.",
              "title": "X-No-Cache"
            },
            "description": "Set to 'true' or '1' to bypass the cache read and force an upstream call. The fresh response is still written to cache for subsequent readers."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/search/filters": {
      "get": {
        "tags": [
          "Search"
        ],
        "summary": "Applicable filters for a search context",
        "description": "Returns the filter blocks applicable to a given operation/propertyType/location combination. Useful to generate a dynamic search UI — each block lists the valid filter keys with their data types and localized labels.",
        "operationId": "getSearchFilters",
        "parameters": [
          {
            "name": "operation",
            "in": "query",
            "required": true,
            "schema": {
              "enum": [
                "sale",
                "rent"
              ],
              "type": "string",
              "description": "Listing operation type: `sale` or `rent`.",
              "title": "Operation"
            },
            "description": "Listing operation type: `sale` or `rent`."
          },
          {
            "name": "propertyType",
            "in": "query",
            "required": true,
            "schema": {
              "enum": [
                "homes",
                "newDevelopments",
                "offices",
                "premises",
                "garages",
                "storageRooms",
                "rooms"
              ],
              "type": "string",
              "description": "Property type the filter blocks should apply to. Same values as `/v1/search`.",
              "title": "Propertytype"
            },
            "description": "Property type the filter blocks should apply to. Same values as `/v1/search`."
          },
          {
            "name": "locationIds",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Location tag. Accepts the id with or without brackets (`[0-EU-ES-28]` or `0-EU-ES-28`). To search several zones at once concatenate them, e.g. `[0-EU-ES-28][0-EU-ES-08]` (Madrid + Barcelona).",
              "examples": [
                "[0-EU-ES-28]",
                "0-EU-ES-28",
                "[0-EU-ES-28][0-EU-ES-08]"
              ],
              "default": "[0-EU-ES-28]",
              "title": "Locationids"
            },
            "description": "Location tag. Accepts the id with or without brackets (`[0-EU-ES-28]` or `0-EU-ES-28`). To search several zones at once concatenate them, e.g. `[0-EU-ES-28][0-EU-ES-08]` (Madrid + Barcelona)."
          },
          {
            "name": "country",
            "in": "query",
            "required": false,
            "schema": {
              "enum": [
                "es",
                "it",
                "pt"
              ],
              "type": "string",
              "description": "Idealista country market to query.",
              "default": "es",
              "title": "Country"
            },
            "description": "Idealista country market to query."
          },
          {
            "name": "locale",
            "in": "query",
            "required": false,
            "schema": {
              "enum": [
                "es",
                "en",
                "ca",
                "it",
                "pt",
                "de",
                "fr",
                "ro",
                "sv",
                "nl",
                "nb",
                "fi",
                "el"
              ],
              "type": "string",
              "description": "Response locale for filter labels.",
              "default": "es",
              "title": "Locale"
            },
            "description": "Response locale for filter labels."
          },
          {
            "name": "X-No-Cache",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Set to 'true' or '1' to bypass the cache read and force an upstream call. The fresh response is still written to cache for subsequent readers.",
              "title": "X-No-Cache"
            },
            "description": "Set to 'true' or '1' to bypass the cache read and force an upstream call. The fresh response is still written to cache for subsequent readers."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchFiltersResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/property/{ad_id}": {
      "get": {
        "tags": [
          "Properties"
        ],
        "summary": "Get full detail for a single property listing",
        "description": "Returns the full detail payload for a single property listing (flat, house, office, garage, etc). `quality=high` returns 1500px images. If the ad has been deactivated the response is HTTP 410 with the deactivation metadata. For promotions use `/v1/promotion/{promotion_id}`.",
        "operationId": "getPropertyDetail",
        "parameters": [
          {
            "name": "ad_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "title": "Ad Id"
            }
          },
          {
            "name": "country",
            "in": "query",
            "required": false,
            "schema": {
              "enum": [
                "es",
                "it",
                "pt"
              ],
              "type": "string",
              "default": "es",
              "title": "Country"
            }
          },
          {
            "name": "locale",
            "in": "query",
            "required": false,
            "schema": {
              "enum": [
                "es",
                "en",
                "ca",
                "it",
                "pt",
                "de",
                "fr",
                "ro",
                "sv",
                "nl",
                "nb",
                "fi",
                "el"
              ],
              "type": "string",
              "default": "es",
              "title": "Locale"
            }
          },
          {
            "name": "quality",
            "in": "query",
            "required": false,
            "schema": {
              "enum": [
                "high",
                "low"
              ],
              "type": "string",
              "default": "high",
              "title": "Quality"
            }
          },
          {
            "name": "X-No-Cache",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Set to 'true' or '1' to bypass the cache read and force an upstream call. The fresh response is still written to cache for subsequent readers.",
              "title": "X-No-Cache"
            },
            "description": "Set to 'true' or '1' to bypass the cache read and force an upstream call. The fresh response is still written to cache for subsequent readers."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PropertyDetail"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/property/{ad_id}/stats": {
      "get": {
        "tags": [
          "Properties"
        ],
        "summary": "Usage stats for a single property",
        "description": "Returns visits, favorites, contacts, publication timeline and other usage analytics for an individual listing.",
        "operationId": "getPropertyStats",
        "parameters": [
          {
            "name": "ad_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "title": "Ad Id"
            }
          },
          {
            "name": "country",
            "in": "query",
            "required": false,
            "schema": {
              "enum": [
                "es",
                "it",
                "pt"
              ],
              "type": "string",
              "default": "es",
              "title": "Country"
            }
          },
          {
            "name": "language",
            "in": "query",
            "required": false,
            "schema": {
              "enum": [
                "es",
                "en",
                "ca",
                "it",
                "pt",
                "de",
                "fr",
                "ro",
                "sv",
                "nl",
                "nb",
                "fi",
                "el"
              ],
              "type": "string",
              "default": "es",
              "title": "Language"
            }
          },
          {
            "name": "X-No-Cache",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Set to 'true' or '1' to bypass the cache read and force an upstream call. The fresh response is still written to cache for subsequent readers.",
              "title": "X-No-Cache"
            },
            "description": "Set to 'true' or '1' to bypass the cache read and force an upstream call. The fresh response is still written to cache for subsequent readers."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AdStats"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/offices": {
      "get": {
        "tags": [
          "Listings"
        ],
        "summary": "List offices for sale or rent",
        "operationId": "listOffices",
        "parameters": [
          {
            "name": "locationIds",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Location tag. Accepts the id with or without brackets (`[0-EU-ES-28]` or `0-EU-ES-28`). To search several zones at once concatenate them, e.g. `[0-EU-ES-28][0-EU-ES-08]` (Madrid + Barcelona).",
              "examples": [
                "[0-EU-ES-28]",
                "0-EU-ES-28",
                "[0-EU-ES-28][0-EU-ES-08]"
              ],
              "title": "Locationids"
            },
            "description": "Location tag. Accepts the id with or without brackets (`[0-EU-ES-28]` or `0-EU-ES-28`). To search several zones at once concatenate them, e.g. `[0-EU-ES-28][0-EU-ES-08]` (Madrid + Barcelona).",
            "example": "[0-EU-ES-28]"
          },
          {
            "name": "operation",
            "in": "query",
            "required": true,
            "schema": {
              "enum": [
                "sale",
                "rent"
              ],
              "type": "string",
              "title": "Operation"
            }
          },
          {
            "name": "numPage",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1,
              "title": "Numpage"
            }
          },
          {
            "name": "maxItems",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 40,
              "minimum": 1,
              "default": 40,
              "title": "Maxitems"
            }
          },
          {
            "name": "order",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "enum": [
                    "publicationDate",
                    "price",
                    "size",
                    "priceDown",
                    "distance",
                    "weigh"
                  ],
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "publicationDate | price | priceDown | size | distance | weigh",
              "title": "Order"
            },
            "description": "publicationDate | price | priceDown | size | distance | weigh"
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "enum": [
                    "asc",
                    "desc"
                  ],
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Sort"
            }
          },
          {
            "name": "country",
            "in": "query",
            "required": false,
            "schema": {
              "enum": [
                "es",
                "it",
                "pt"
              ],
              "type": "string",
              "default": "es",
              "title": "Country"
            }
          },
          {
            "name": "locale",
            "in": "query",
            "required": false,
            "schema": {
              "enum": [
                "es",
                "en",
                "ca",
                "it",
                "pt",
                "de",
                "fr",
                "ro",
                "sv",
                "nl",
                "nb",
                "fi",
                "el"
              ],
              "type": "string",
              "default": "es",
              "title": "Locale"
            }
          },
          {
            "name": "priceFrom",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "number",
                  "minimum": 0
                },
                {
                  "type": "null"
                }
              ],
              "title": "Pricefrom"
            }
          },
          {
            "name": "priceTo",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "number",
                  "minimum": 0
                },
                {
                  "type": "null"
                }
              ],
              "title": "Priceto"
            }
          },
          {
            "name": "sizeFrom",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "integer",
                  "minimum": 0
                },
                {
                  "type": "null"
                }
              ],
              "title": "Sizefrom"
            }
          },
          {
            "name": "sizeTo",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "integer",
                  "minimum": 0
                },
                {
                  "type": "null"
                }
              ],
              "title": "Sizeto"
            }
          },
          {
            "name": "withParking",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Withparking"
            }
          },
          {
            "name": "exterior",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Exterior"
            }
          },
          {
            "name": "X-No-Cache",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Set to 'true' or '1' to bypass the cache read and force an upstream call. The fresh response is still written to cache for subsequent readers.",
              "title": "X-No-Cache"
            },
            "description": "Set to 'true' or '1' to bypass the cache read and force an upstream call. The fresh response is still written to cache for subsequent readers."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/premises": {
      "get": {
        "tags": [
          "Listings"
        ],
        "summary": "List commercial premises (locales) for sale or rent",
        "operationId": "listPremises",
        "parameters": [
          {
            "name": "locationIds",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Location tag. Accepts the id with or without brackets (`[0-EU-ES-28]` or `0-EU-ES-28`). To search several zones at once concatenate them, e.g. `[0-EU-ES-28][0-EU-ES-08]` (Madrid + Barcelona).",
              "examples": [
                "[0-EU-ES-28]",
                "0-EU-ES-28",
                "[0-EU-ES-28][0-EU-ES-08]"
              ],
              "title": "Locationids"
            },
            "description": "Location tag. Accepts the id with or without brackets (`[0-EU-ES-28]` or `0-EU-ES-28`). To search several zones at once concatenate them, e.g. `[0-EU-ES-28][0-EU-ES-08]` (Madrid + Barcelona).",
            "example": "[0-EU-ES-28]"
          },
          {
            "name": "operation",
            "in": "query",
            "required": true,
            "schema": {
              "enum": [
                "sale",
                "rent"
              ],
              "type": "string",
              "title": "Operation"
            }
          },
          {
            "name": "numPage",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1,
              "title": "Numpage"
            }
          },
          {
            "name": "maxItems",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 40,
              "minimum": 1,
              "default": 40,
              "title": "Maxitems"
            }
          },
          {
            "name": "order",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "enum": [
                    "publicationDate",
                    "price",
                    "size",
                    "priceDown",
                    "distance",
                    "weigh"
                  ],
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "publicationDate | price | priceDown | size | distance | weigh",
              "title": "Order"
            },
            "description": "publicationDate | price | priceDown | size | distance | weigh"
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "enum": [
                    "asc",
                    "desc"
                  ],
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Sort"
            }
          },
          {
            "name": "country",
            "in": "query",
            "required": false,
            "schema": {
              "enum": [
                "es",
                "it",
                "pt"
              ],
              "type": "string",
              "default": "es",
              "title": "Country"
            }
          },
          {
            "name": "locale",
            "in": "query",
            "required": false,
            "schema": {
              "enum": [
                "es",
                "en",
                "ca",
                "it",
                "pt",
                "de",
                "fr",
                "ro",
                "sv",
                "nl",
                "nb",
                "fi",
                "el"
              ],
              "type": "string",
              "default": "es",
              "title": "Locale"
            }
          },
          {
            "name": "priceFrom",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "number",
                  "minimum": 0
                },
                {
                  "type": "null"
                }
              ],
              "title": "Pricefrom"
            }
          },
          {
            "name": "priceTo",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "number",
                  "minimum": 0
                },
                {
                  "type": "null"
                }
              ],
              "title": "Priceto"
            }
          },
          {
            "name": "sizeFrom",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "integer",
                  "minimum": 0
                },
                {
                  "type": "null"
                }
              ],
              "title": "Sizefrom"
            }
          },
          {
            "name": "sizeTo",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "integer",
                  "minimum": 0
                },
                {
                  "type": "null"
                }
              ],
              "title": "Sizeto"
            }
          },
          {
            "name": "X-No-Cache",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Set to 'true' or '1' to bypass the cache read and force an upstream call. The fresh response is still written to cache for subsequent readers.",
              "title": "X-No-Cache"
            },
            "description": "Set to 'true' or '1' to bypass the cache read and force an upstream call. The fresh response is still written to cache for subsequent readers."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/garages": {
      "get": {
        "tags": [
          "Listings"
        ],
        "summary": "List garages / parking spots for sale or rent",
        "operationId": "listGarages",
        "parameters": [
          {
            "name": "locationIds",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Location tag. Accepts the id with or without brackets (`[0-EU-ES-28]` or `0-EU-ES-28`). To search several zones at once concatenate them, e.g. `[0-EU-ES-28][0-EU-ES-08]` (Madrid + Barcelona).",
              "examples": [
                "[0-EU-ES-28]",
                "0-EU-ES-28",
                "[0-EU-ES-28][0-EU-ES-08]"
              ],
              "title": "Locationids"
            },
            "description": "Location tag. Accepts the id with or without brackets (`[0-EU-ES-28]` or `0-EU-ES-28`). To search several zones at once concatenate them, e.g. `[0-EU-ES-28][0-EU-ES-08]` (Madrid + Barcelona).",
            "example": "[0-EU-ES-28]"
          },
          {
            "name": "operation",
            "in": "query",
            "required": true,
            "schema": {
              "enum": [
                "sale",
                "rent"
              ],
              "type": "string",
              "title": "Operation"
            }
          },
          {
            "name": "numPage",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1,
              "title": "Numpage"
            }
          },
          {
            "name": "maxItems",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 40,
              "minimum": 1,
              "default": 40,
              "title": "Maxitems"
            }
          },
          {
            "name": "order",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "enum": [
                    "publicationDate",
                    "price",
                    "size",
                    "priceDown",
                    "distance",
                    "weigh"
                  ],
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "publicationDate | price | priceDown | size | distance | weigh",
              "title": "Order"
            },
            "description": "publicationDate | price | priceDown | size | distance | weigh"
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "enum": [
                    "asc",
                    "desc"
                  ],
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Sort"
            }
          },
          {
            "name": "country",
            "in": "query",
            "required": false,
            "schema": {
              "enum": [
                "es",
                "it",
                "pt"
              ],
              "type": "string",
              "default": "es",
              "title": "Country"
            }
          },
          {
            "name": "locale",
            "in": "query",
            "required": false,
            "schema": {
              "enum": [
                "es",
                "en",
                "ca",
                "it",
                "pt",
                "de",
                "fr",
                "ro",
                "sv",
                "nl",
                "nb",
                "fi",
                "el"
              ],
              "type": "string",
              "default": "es",
              "title": "Locale"
            }
          },
          {
            "name": "priceFrom",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "number",
                  "minimum": 0
                },
                {
                  "type": "null"
                }
              ],
              "title": "Pricefrom"
            }
          },
          {
            "name": "priceTo",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "number",
                  "minimum": 0
                },
                {
                  "type": "null"
                }
              ],
              "title": "Priceto"
            }
          },
          {
            "name": "sizeFrom",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "integer",
                  "minimum": 0
                },
                {
                  "type": "null"
                }
              ],
              "title": "Sizefrom"
            }
          },
          {
            "name": "sizeTo",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "integer",
                  "minimum": 0
                },
                {
                  "type": "null"
                }
              ],
              "title": "Sizeto"
            }
          },
          {
            "name": "X-No-Cache",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Set to 'true' or '1' to bypass the cache read and force an upstream call. The fresh response is still written to cache for subsequent readers.",
              "title": "X-No-Cache"
            },
            "description": "Set to 'true' or '1' to bypass the cache read and force an upstream call. The fresh response is still written to cache for subsequent readers."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/storage-rooms": {
      "get": {
        "tags": [
          "Listings"
        ],
        "summary": "List storage rooms (trasteros) for sale or rent",
        "operationId": "listStorageRooms",
        "parameters": [
          {
            "name": "locationIds",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Location tag. Accepts the id with or without brackets (`[0-EU-ES-28]` or `0-EU-ES-28`). To search several zones at once concatenate them, e.g. `[0-EU-ES-28][0-EU-ES-08]` (Madrid + Barcelona).",
              "examples": [
                "[0-EU-ES-28]",
                "0-EU-ES-28",
                "[0-EU-ES-28][0-EU-ES-08]"
              ],
              "title": "Locationids"
            },
            "description": "Location tag. Accepts the id with or without brackets (`[0-EU-ES-28]` or `0-EU-ES-28`). To search several zones at once concatenate them, e.g. `[0-EU-ES-28][0-EU-ES-08]` (Madrid + Barcelona).",
            "example": "[0-EU-ES-28]"
          },
          {
            "name": "operation",
            "in": "query",
            "required": true,
            "schema": {
              "enum": [
                "sale",
                "rent"
              ],
              "type": "string",
              "title": "Operation"
            }
          },
          {
            "name": "numPage",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1,
              "title": "Numpage"
            }
          },
          {
            "name": "maxItems",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 40,
              "minimum": 1,
              "default": 40,
              "title": "Maxitems"
            }
          },
          {
            "name": "order",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "enum": [
                    "publicationDate",
                    "price",
                    "size",
                    "priceDown",
                    "distance",
                    "weigh"
                  ],
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "publicationDate | price | priceDown | size | distance | weigh",
              "title": "Order"
            },
            "description": "publicationDate | price | priceDown | size | distance | weigh"
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "enum": [
                    "asc",
                    "desc"
                  ],
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Sort"
            }
          },
          {
            "name": "country",
            "in": "query",
            "required": false,
            "schema": {
              "enum": [
                "es",
                "it",
                "pt"
              ],
              "type": "string",
              "default": "es",
              "title": "Country"
            }
          },
          {
            "name": "locale",
            "in": "query",
            "required": false,
            "schema": {
              "enum": [
                "es",
                "en",
                "ca",
                "it",
                "pt",
                "de",
                "fr",
                "ro",
                "sv",
                "nl",
                "nb",
                "fi",
                "el"
              ],
              "type": "string",
              "default": "es",
              "title": "Locale"
            }
          },
          {
            "name": "priceFrom",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "number",
                  "minimum": 0
                },
                {
                  "type": "null"
                }
              ],
              "title": "Pricefrom"
            }
          },
          {
            "name": "priceTo",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "number",
                  "minimum": 0
                },
                {
                  "type": "null"
                }
              ],
              "title": "Priceto"
            }
          },
          {
            "name": "sizeFrom",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "integer",
                  "minimum": 0
                },
                {
                  "type": "null"
                }
              ],
              "title": "Sizefrom"
            }
          },
          {
            "name": "sizeTo",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "integer",
                  "minimum": 0
                },
                {
                  "type": "null"
                }
              ],
              "title": "Sizeto"
            }
          },
          {
            "name": "X-No-Cache",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Set to 'true' or '1' to bypass the cache read and force an upstream call. The fresh response is still written to cache for subsequent readers.",
              "title": "X-No-Cache"
            },
            "description": "Set to 'true' or '1' to bypass the cache read and force an upstream call. The fresh response is still written to cache for subsequent readers."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/lands": {
      "get": {
        "tags": [
          "Listings"
        ],
        "summary": "List land / plots for sale",
        "description": "`operation` is fixed to `sale`; land is not available for rent.",
        "operationId": "listLands",
        "parameters": [
          {
            "name": "locationIds",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Location tag. Accepts the id with or without brackets (`[0-EU-ES-28]` or `0-EU-ES-28`). To search several zones at once concatenate them, e.g. `[0-EU-ES-28][0-EU-ES-08]` (Madrid + Barcelona).",
              "examples": [
                "[0-EU-ES-28]",
                "0-EU-ES-28",
                "[0-EU-ES-28][0-EU-ES-08]"
              ],
              "title": "Locationids"
            },
            "description": "Location tag. Accepts the id with or without brackets (`[0-EU-ES-28]` or `0-EU-ES-28`). To search several zones at once concatenate them, e.g. `[0-EU-ES-28][0-EU-ES-08]` (Madrid + Barcelona).",
            "example": "[0-EU-ES-28]"
          },
          {
            "name": "numPage",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1,
              "title": "Numpage"
            }
          },
          {
            "name": "maxItems",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 40,
              "minimum": 1,
              "default": 40,
              "title": "Maxitems"
            }
          },
          {
            "name": "order",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "enum": [
                    "publicationDate",
                    "price",
                    "size",
                    "priceDown",
                    "distance",
                    "weigh"
                  ],
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "publicationDate | price | priceDown | size | distance | weigh",
              "title": "Order"
            },
            "description": "publicationDate | price | priceDown | size | distance | weigh"
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "enum": [
                    "asc",
                    "desc"
                  ],
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Sort"
            }
          },
          {
            "name": "country",
            "in": "query",
            "required": false,
            "schema": {
              "enum": [
                "es",
                "it",
                "pt"
              ],
              "type": "string",
              "default": "es",
              "title": "Country"
            }
          },
          {
            "name": "locale",
            "in": "query",
            "required": false,
            "schema": {
              "enum": [
                "es",
                "en",
                "ca",
                "it",
                "pt",
                "de",
                "fr",
                "ro",
                "sv",
                "nl",
                "nb",
                "fi",
                "el"
              ],
              "type": "string",
              "default": "es",
              "title": "Locale"
            }
          },
          {
            "name": "priceFrom",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "number",
                  "minimum": 0
                },
                {
                  "type": "null"
                }
              ],
              "title": "Pricefrom"
            }
          },
          {
            "name": "priceTo",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "number",
                  "minimum": 0
                },
                {
                  "type": "null"
                }
              ],
              "title": "Priceto"
            }
          },
          {
            "name": "sizeFrom",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "integer",
                  "minimum": 0
                },
                {
                  "type": "null"
                }
              ],
              "title": "Sizefrom"
            }
          },
          {
            "name": "sizeTo",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "integer",
                  "minimum": 0
                },
                {
                  "type": "null"
                }
              ],
              "title": "Sizeto"
            }
          },
          {
            "name": "X-No-Cache",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Set to 'true' or '1' to bypass the cache read and force an upstream call. The fresh response is still written to cache for subsequent readers.",
              "title": "X-No-Cache"
            },
            "description": "Set to 'true' or '1' to bypass the cache read and force an upstream call. The fresh response is still written to cache for subsequent readers."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/buildings": {
      "get": {
        "tags": [
          "Listings"
        ],
        "summary": "List whole buildings for sale",
        "description": "`operation` is fixed to `sale`.",
        "operationId": "listBuildings",
        "parameters": [
          {
            "name": "locationIds",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Location tag. Accepts the id with or without brackets (`[0-EU-ES-28]` or `0-EU-ES-28`). To search several zones at once concatenate them, e.g. `[0-EU-ES-28][0-EU-ES-08]` (Madrid + Barcelona).",
              "examples": [
                "[0-EU-ES-28]",
                "0-EU-ES-28",
                "[0-EU-ES-28][0-EU-ES-08]"
              ],
              "title": "Locationids"
            },
            "description": "Location tag. Accepts the id with or without brackets (`[0-EU-ES-28]` or `0-EU-ES-28`). To search several zones at once concatenate them, e.g. `[0-EU-ES-28][0-EU-ES-08]` (Madrid + Barcelona).",
            "example": "[0-EU-ES-28]"
          },
          {
            "name": "numPage",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1,
              "title": "Numpage"
            }
          },
          {
            "name": "maxItems",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 40,
              "minimum": 1,
              "default": 40,
              "title": "Maxitems"
            }
          },
          {
            "name": "order",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "enum": [
                    "publicationDate",
                    "price",
                    "size",
                    "priceDown",
                    "distance",
                    "weigh"
                  ],
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "publicationDate | price | priceDown | size | distance | weigh",
              "title": "Order"
            },
            "description": "publicationDate | price | priceDown | size | distance | weigh"
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "enum": [
                    "asc",
                    "desc"
                  ],
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Sort"
            }
          },
          {
            "name": "country",
            "in": "query",
            "required": false,
            "schema": {
              "enum": [
                "es",
                "it",
                "pt"
              ],
              "type": "string",
              "default": "es",
              "title": "Country"
            }
          },
          {
            "name": "locale",
            "in": "query",
            "required": false,
            "schema": {
              "enum": [
                "es",
                "en",
                "ca",
                "it",
                "pt",
                "de",
                "fr",
                "ro",
                "sv",
                "nl",
                "nb",
                "fi",
                "el"
              ],
              "type": "string",
              "default": "es",
              "title": "Locale"
            }
          },
          {
            "name": "priceFrom",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "number",
                  "minimum": 0
                },
                {
                  "type": "null"
                }
              ],
              "title": "Pricefrom"
            }
          },
          {
            "name": "priceTo",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "number",
                  "minimum": 0
                },
                {
                  "type": "null"
                }
              ],
              "title": "Priceto"
            }
          },
          {
            "name": "sizeFrom",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "integer",
                  "minimum": 0
                },
                {
                  "type": "null"
                }
              ],
              "title": "Sizefrom"
            }
          },
          {
            "name": "sizeTo",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "integer",
                  "minimum": 0
                },
                {
                  "type": "null"
                }
              ],
              "title": "Sizeto"
            }
          },
          {
            "name": "X-No-Cache",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Set to 'true' or '1' to bypass the cache read and force an upstream call. The fresh response is still written to cache for subsequent readers.",
              "title": "X-No-Cache"
            },
            "description": "Set to 'true' or '1' to bypass the cache read and force an upstream call. The fresh response is still written to cache for subsequent readers."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/new-homes": {
      "get": {
        "tags": [
          "Listings"
        ],
        "summary": "List new-build home promotions",
        "description": "Returns promotions of newly-built homes for a given location. Supports construction-state flags (`newDevelopmentInProject`, `finished`) and standard price, size and room filters. For the individual units inside a promotion use `/v1/promotion/{promotion_id}/units`.",
        "operationId": "listNewHomes",
        "parameters": [
          {
            "name": "locationIds",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Location tag. Accepts the id with or without brackets (`[0-EU-ES-28]` or `0-EU-ES-28`). To search several zones at once concatenate them, e.g. `[0-EU-ES-28][0-EU-ES-08]` (Madrid + Barcelona).",
              "examples": [
                "[0-EU-ES-28]",
                "0-EU-ES-28",
                "[0-EU-ES-28][0-EU-ES-08]"
              ],
              "title": "Locationids"
            },
            "description": "Location tag. Accepts the id with or without brackets (`[0-EU-ES-28]` or `0-EU-ES-28`). To search several zones at once concatenate them, e.g. `[0-EU-ES-28][0-EU-ES-08]` (Madrid + Barcelona).",
            "example": "[0-EU-ES-28]"
          },
          {
            "name": "numPage",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1,
              "title": "Numpage"
            }
          },
          {
            "name": "maxItems",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 40,
              "minimum": 1,
              "default": 40,
              "title": "Maxitems"
            }
          },
          {
            "name": "order",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "enum": [
                    "publicationDate",
                    "price",
                    "size",
                    "priceDown",
                    "distance",
                    "weigh"
                  ],
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "publicationDate | price | priceDown | size | distance | weigh",
              "title": "Order"
            },
            "description": "publicationDate | price | priceDown | size | distance | weigh"
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "enum": [
                    "asc",
                    "desc"
                  ],
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Sort"
            }
          },
          {
            "name": "country",
            "in": "query",
            "required": false,
            "schema": {
              "enum": [
                "es",
                "it",
                "pt"
              ],
              "type": "string",
              "default": "es",
              "title": "Country"
            }
          },
          {
            "name": "locale",
            "in": "query",
            "required": false,
            "schema": {
              "enum": [
                "es",
                "en",
                "ca",
                "it",
                "pt",
                "de",
                "fr",
                "ro",
                "sv",
                "nl",
                "nb",
                "fi",
                "el"
              ],
              "type": "string",
              "default": "es",
              "title": "Locale"
            }
          },
          {
            "name": "priceFrom",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "number",
                  "minimum": 0
                },
                {
                  "type": "null"
                }
              ],
              "title": "Pricefrom"
            }
          },
          {
            "name": "priceTo",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "number",
                  "minimum": 0
                },
                {
                  "type": "null"
                }
              ],
              "title": "Priceto"
            }
          },
          {
            "name": "sizeFrom",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "integer",
                  "minimum": 0
                },
                {
                  "type": "null"
                }
              ],
              "title": "Sizefrom"
            }
          },
          {
            "name": "sizeTo",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "integer",
                  "minimum": 0
                },
                {
                  "type": "null"
                }
              ],
              "title": "Sizeto"
            }
          },
          {
            "name": "bedrooms",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "CSV list, e.g. '2,3,4'",
              "title": "Bedrooms"
            },
            "description": "CSV list, e.g. '2,3,4'"
          },
          {
            "name": "finished",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Finished"
            }
          },
          {
            "name": "X-No-Cache",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Set to 'true' or '1' to bypass the cache read and force an upstream call. The fresh response is still written to cache for subsequent readers.",
              "title": "X-No-Cache"
            },
            "description": "Set to 'true' or '1' to bypass the cache read and force an upstream call. The fresh response is still written to cache for subsequent readers."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/rent-homes": {
      "get": {
        "tags": [
          "Listings"
        ],
        "summary": "List homes available for rent",
        "description": "Returns homes (flats, houses, chalets) available for rent for a given location. Presets `operation=rent` and `propertyType=homes`. In addition to the documented query params, advanced filters (size, rooms, amenities, energy certificate, floor, multimedia, etc.) are accepted at runtime — refer to `/v1/search` for the full list.",
        "operationId": "listRentHomes",
        "parameters": [
          {
            "name": "locationIds",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Location tag. Accepts the id with or without brackets (`[0-EU-ES-28]` or `0-EU-ES-28`). To search several zones at once concatenate them, e.g. `[0-EU-ES-28][0-EU-ES-08]` (Madrid + Barcelona).",
              "examples": [
                "[0-EU-ES-28]",
                "0-EU-ES-28",
                "[0-EU-ES-28][0-EU-ES-08]"
              ],
              "title": "Locationids"
            },
            "description": "Location tag. Accepts the id with or without brackets (`[0-EU-ES-28]` or `0-EU-ES-28`). To search several zones at once concatenate them, e.g. `[0-EU-ES-28][0-EU-ES-08]` (Madrid + Barcelona).",
            "example": "[0-EU-ES-28]"
          },
          {
            "name": "numPage",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1,
              "title": "Numpage"
            }
          },
          {
            "name": "maxItems",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 40,
              "minimum": 1,
              "default": 40,
              "title": "Maxitems"
            }
          },
          {
            "name": "order",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "enum": [
                    "publicationDate",
                    "price",
                    "size",
                    "priceDown",
                    "distance",
                    "weigh"
                  ],
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "publicationDate | price | priceDown | size | distance | weigh",
              "title": "Order"
            },
            "description": "publicationDate | price | priceDown | size | distance | weigh"
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "enum": [
                    "asc",
                    "desc"
                  ],
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Sort"
            }
          },
          {
            "name": "country",
            "in": "query",
            "required": false,
            "schema": {
              "enum": [
                "es",
                "it",
                "pt"
              ],
              "type": "string",
              "default": "es",
              "title": "Country"
            }
          },
          {
            "name": "locale",
            "in": "query",
            "required": false,
            "schema": {
              "enum": [
                "es",
                "en",
                "ca",
                "it",
                "pt",
                "de",
                "fr",
                "ro",
                "sv",
                "nl",
                "nb",
                "fi",
                "el"
              ],
              "type": "string",
              "default": "es",
              "title": "Locale"
            }
          },
          {
            "name": "priceFrom",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "number",
                  "minimum": 0
                },
                {
                  "type": "null"
                }
              ],
              "title": "Pricefrom"
            }
          },
          {
            "name": "priceTo",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "number",
                  "minimum": 0
                },
                {
                  "type": "null"
                }
              ],
              "title": "Priceto"
            }
          },
          {
            "name": "sizeFrom",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "integer",
                  "minimum": 0
                },
                {
                  "type": "null"
                }
              ],
              "title": "Sizefrom"
            }
          },
          {
            "name": "sizeTo",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "integer",
                  "minimum": 0
                },
                {
                  "type": "null"
                }
              ],
              "title": "Sizeto"
            }
          },
          {
            "name": "bedrooms",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "CSV list of bedroom counts, e.g. '2,3,4'",
              "title": "Bedrooms"
            },
            "description": "CSV list of bedroom counts, e.g. '2,3,4'"
          },
          {
            "name": "X-No-Cache",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Set to 'true' or '1' to bypass the cache read and force an upstream call. The fresh response is still written to cache for subsequent readers.",
              "title": "X-No-Cache"
            },
            "description": "Set to 'true' or '1' to bypass the cache read and force an upstream call. The fresh response is still written to cache for subsequent readers."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/locations/autocomplete": {
      "get": {
        "tags": [
          "Locations"
        ],
        "summary": "Free-text location lookup",
        "description": "Resolves a free-text query (city, neighborhood, street) into locationIds. Useful as a first step before hitting `/v1/search`.",
        "operationId": "autocompleteLocations",
        "parameters": [
          {
            "name": "query",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 2,
              "description": "e.g. 'Malasaña'",
              "title": "Query"
            },
            "description": "e.g. 'Malasaña'"
          },
          {
            "name": "operation",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "enum": [
                    "sale",
                    "rent"
                  ],
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Operation"
            }
          },
          {
            "name": "propertyType",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "enum": [
                    "homes",
                    "newDevelopments",
                    "offices",
                    "premises",
                    "garages",
                    "storageRooms",
                    "rooms"
                  ],
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Propertytype"
            }
          },
          {
            "name": "locale",
            "in": "query",
            "required": false,
            "schema": {
              "enum": [
                "es",
                "en",
                "ca",
                "it",
                "pt",
                "de",
                "fr",
                "ro",
                "sv",
                "nl",
                "nb",
                "fi",
                "el"
              ],
              "type": "string",
              "default": "es",
              "title": "Locale"
            }
          },
          {
            "name": "country",
            "in": "query",
            "required": false,
            "schema": {
              "enum": [
                "es",
                "it",
                "pt"
              ],
              "type": "string",
              "default": "es",
              "title": "Country"
            }
          },
          {
            "name": "X-No-Cache",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Set to 'true' or '1' to bypass the cache read and force an upstream call. The fresh response is still written to cache for subsequent readers.",
              "title": "X-No-Cache"
            },
            "description": "Set to 'true' or '1' to bypass the cache read and force an upstream call. The fresh response is still written to cache for subsequent readers."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LocationsResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/locations/by-coordinates": {
      "get": {
        "tags": [
          "Locations"
        ],
        "summary": "Reverse geocode a lat/lng to a location chain",
        "description": "Given a WGS84 coordinate, returns the administrative chain (country → province → municipality → district → neighborhood) as locationIds.",
        "operationId": "reverseGeocodeLocation",
        "parameters": [
          {
            "name": "lat",
            "in": "query",
            "required": true,
            "schema": {
              "type": "number",
              "maximum": 90,
              "minimum": -90,
              "description": "Latitude, WGS84",
              "title": "Lat"
            },
            "description": "Latitude, WGS84"
          },
          {
            "name": "lng",
            "in": "query",
            "required": true,
            "schema": {
              "type": "number",
              "maximum": 180,
              "minimum": -180,
              "description": "Longitude, WGS84",
              "title": "Lng"
            },
            "description": "Longitude, WGS84"
          },
          {
            "name": "country",
            "in": "query",
            "required": false,
            "schema": {
              "enum": [
                "es",
                "it",
                "pt"
              ],
              "type": "string",
              "default": "es",
              "title": "Country"
            }
          },
          {
            "name": "locale",
            "in": "query",
            "required": false,
            "schema": {
              "enum": [
                "es",
                "en",
                "ca",
                "it",
                "pt",
                "de",
                "fr",
                "ro",
                "sv",
                "nl",
                "nb",
                "fi",
                "el"
              ],
              "type": "string",
              "default": "es",
              "title": "Locale"
            }
          },
          {
            "name": "X-No-Cache",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Set to 'true' or '1' to bypass the cache read and force an upstream call. The fresh response is still written to cache for subsequent readers.",
              "title": "X-No-Cache"
            },
            "description": "Set to 'true' or '1' to bypass the cache read and force an upstream call. The fresh response is still written to cache for subsequent readers."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LocationsResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/locations/regions": {
      "get": {
        "tags": [
          "Locations"
        ],
        "summary": "Comunidades autónomas de España y sus provincias",
        "description": "Devuelve las 17 comunidades autónomas más Ceuta y Melilla, cada una con la lista de `locationId` de provincias usables en `/v1/search`. Mapa estático: no hay llamada upstream. Pensado para construir selectores de región en cliente.",
        "operationId": "listSpanishRegions",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SpanishRegionsResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/locations/{location_id}/children": {
      "get": {
        "tags": [
          "Locations"
        ],
        "summary": "Children of a location",
        "description": "Returns provinces→municipalities→districts under a given locationId.",
        "operationId": "listLocationChildren",
        "parameters": [
          {
            "name": "location_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Location Id"
            }
          },
          {
            "name": "country",
            "in": "query",
            "required": false,
            "schema": {
              "enum": [
                "es",
                "it",
                "pt"
              ],
              "type": "string",
              "default": "es",
              "title": "Country"
            }
          },
          {
            "name": "locale",
            "in": "query",
            "required": false,
            "schema": {
              "enum": [
                "es",
                "en",
                "ca",
                "it",
                "pt",
                "de",
                "fr",
                "ro",
                "sv",
                "nl",
                "nb",
                "fi",
                "el"
              ],
              "type": "string",
              "default": "es",
              "title": "Locale"
            }
          },
          {
            "name": "X-No-Cache",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Set to 'true' or '1' to bypass the cache read and force an upstream call. The fresh response is still written to cache for subsequent readers.",
              "title": "X-No-Cache"
            },
            "description": "Set to 'true' or '1' to bypass the cache read and force an upstream call. The fresh response is still written to cache for subsequent readers."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LocationsResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/locations/by-shorturis": {
      "post": {
        "tags": [
          "Locations"
        ],
        "summary": "Resolve short-uri codes to locations",
        "description": "Translates bracketed short codes into full locationIds consumable by `/v1/search`.",
        "operationId": "resolveShortUris",
        "parameters": [
          {
            "name": "country",
            "in": "query",
            "required": false,
            "schema": {
              "enum": [
                "es",
                "it",
                "pt"
              ],
              "type": "string",
              "default": "es",
              "title": "Country"
            }
          },
          {
            "name": "X-No-Cache",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Set to 'true' or '1' to bypass the cache read and force an upstream call. The fresh response is still written to cache for subsequent readers.",
              "title": "X-No-Cache"
            },
            "description": "Set to 'true' or '1' to bypass the cache read and force an upstream call. The fresh response is still written to cache for subsequent readers."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ShortUrisRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LocationsResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/promotion/{promotion_id}": {
      "get": {
        "tags": [
          "Promotions"
        ],
        "summary": "Get full detail for a new-build promotion",
        "description": "Returns the full detail payload for a new-build promotion. Same response schema as `/v1/property/{ad_id}`; the response's `propertyType` is `newDevelopments` and `propertyComment` describes the whole project. For the individual units inside the promotion use `/v1/promotion/{promotion_id}/units`.",
        "operationId": "getPromotionDetail",
        "parameters": [
          {
            "name": "promotion_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "title": "Promotion Id"
            }
          },
          {
            "name": "country",
            "in": "query",
            "required": false,
            "schema": {
              "enum": [
                "es",
                "it",
                "pt"
              ],
              "type": "string",
              "default": "es",
              "title": "Country"
            }
          },
          {
            "name": "locale",
            "in": "query",
            "required": false,
            "schema": {
              "enum": [
                "es",
                "en",
                "ca",
                "it",
                "pt",
                "de",
                "fr",
                "ro",
                "sv",
                "nl",
                "nb",
                "fi",
                "el"
              ],
              "type": "string",
              "default": "es",
              "title": "Locale"
            }
          },
          {
            "name": "quality",
            "in": "query",
            "required": false,
            "schema": {
              "enum": [
                "high",
                "low"
              ],
              "type": "string",
              "default": "high",
              "title": "Quality"
            }
          },
          {
            "name": "X-No-Cache",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Set to 'true' or '1' to bypass the cache read and force an upstream call. The fresh response is still written to cache for subsequent readers.",
              "title": "X-No-Cache"
            },
            "description": "Set to 'true' or '1' to bypass the cache read and force an upstream call. The fresh response is still written to cache for subsequent readers."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PropertyDetail"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/promotion/{promotion_id}/units": {
      "get": {
        "tags": [
          "Promotions"
        ],
        "summary": "List units of a newDevelopment promotion",
        "description": "Anuncios individuales dentro de una promoción obra nueva. Por dentro llama a la búsqueda con `parentPromotionId` y `propertyType=homes`, y acepta el subconjunto curado de filtros que tiene sentido para obra nueva.",
        "operationId": "listPromotionUnits",
        "parameters": [
          {
            "name": "promotion_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Promotion Id"
            }
          },
          {
            "name": "locale",
            "in": "query",
            "required": false,
            "schema": {
              "enum": [
                "es",
                "en",
                "ca",
                "it",
                "pt",
                "de",
                "fr",
                "ro",
                "sv",
                "nl",
                "nb",
                "fi",
                "el"
              ],
              "type": "string",
              "default": "es",
              "title": "Locale"
            }
          },
          {
            "name": "X-No-Cache",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Set to 'true' or '1' to bypass the cache read and force an upstream call. The fresh response is still written to cache for subsequent readers.",
              "title": "X-No-Cache"
            },
            "description": "Set to 'true' or '1' to bypass the cache read and force an upstream call. The fresh response is still written to cache for subsequent readers."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "AdStats": {
        "properties": {
          "views": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/StatValue"
              },
              {
                "type": "null"
              }
            ]
          },
          "favorites": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/StatValue"
              },
              {
                "type": "null"
              }
            ]
          },
          "contactMails": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/StatValue"
              },
              {
                "type": "null"
              }
            ]
          },
          "sentToFriend": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/StatValue"
              },
              {
                "type": "null"
              }
            ]
          },
          "extras": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Extras"
          }
        },
        "additionalProperties": true,
        "type": "object",
        "title": "AdStats",
        "description": "Analytics and usage counters for a single listing."
      },
      "HTTPValidationError": {
        "properties": {
          "detail": {
            "items": {
              "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
          }
        },
        "type": "object",
        "title": "HTTPValidationError"
      },
      "LocationNode": {
        "properties": {
          "locationId": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Locationid"
          },
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "text": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Text"
          },
          "subtext": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Subtext"
          },
          "url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Url"
          },
          "total": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Total"
          },
          "numSubLocations": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Numsublocations"
          }
        },
        "additionalProperties": true,
        "type": "object",
        "title": "LocationNode"
      },
      "LocationsResponse": {
        "properties": {
          "locations": {
            "items": {
              "$ref": "#/components/schemas/LocationNode"
            },
            "type": "array",
            "title": "Locations"
          }
        },
        "additionalProperties": true,
        "type": "object",
        "title": "LocationsResponse"
      },
      "PropertyDetail": {
        "properties": {
          "adid": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Adid"
          },
          "price": {
            "type": "number",
            "title": "Price"
          },
          "operation": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Operation"
          },
          "propertyType": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Propertytype"
          },
          "state": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "State"
          },
          "ubication": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Ubication"
              },
              {
                "type": "null"
              }
            ]
          },
          "country": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Country"
          },
          "propertyComment": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Propertycomment"
          },
          "comments": {
            "anyOf": [
              {},
              {
                "type": "null"
              }
            ],
            "title": "Comments"
          },
          "link": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Link"
          },
          "detailWebLink": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Detailweblink"
          },
          "multimedia": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Multimedia"
          },
          "contactInfo": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Contactinfo"
          },
          "moreCharacteristics": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Morecharacteristics"
          },
          "energyCertification": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Energycertification"
          },
          "has360VHS": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Has360Vhs"
          }
        },
        "additionalProperties": true,
        "type": "object",
        "required": [
          "price"
        ],
        "title": "PropertyDetail"
      },
      "SearchElement": {
        "properties": {
          "propertyCode": {
            "type": "string",
            "title": "Propertycode"
          },
          "price": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Price"
          },
          "propertyType": {
            "type": "string",
            "title": "Propertytype"
          },
          "operation": {
            "type": "string",
            "title": "Operation"
          },
          "thumbnail": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Thumbnail"
          },
          "size": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Size"
          },
          "rooms": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Rooms"
          },
          "bathrooms": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Bathrooms"
          },
          "address": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Address"
          },
          "province": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Province"
          },
          "municipality": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Municipality"
          },
          "district": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "District"
          },
          "neighborhood": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Neighborhood"
          },
          "country": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Country"
          },
          "locationId": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Locationid"
          },
          "latitude": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Latitude"
          },
          "longitude": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Longitude"
          },
          "url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Url"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "numPhotos": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Numphotos"
          },
          "hasVideo": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Hasvideo"
          },
          "hasPlan": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Hasplan"
          },
          "has3DTour": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Has3Dtour"
          },
          "has360": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Has360"
          },
          "newDevelopment": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Newdevelopment"
          },
          "priceInfo": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Priceinfo"
          },
          "multimedia": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Multimedia"
          },
          "contactInfo": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Contactinfo"
          }
        },
        "additionalProperties": true,
        "type": "object",
        "required": [
          "propertyCode",
          "propertyType",
          "operation"
        ],
        "title": "SearchElement"
      },
      "SearchFiltersResponse": {
        "properties": {
          "blocks": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Blocks"
          }
        },
        "additionalProperties": true,
        "type": "object",
        "title": "SearchFiltersResponse",
        "description": "Dynamic list of applicable filters for a given search context."
      },
      "SearchResponse": {
        "properties": {
          "total": {
            "type": "integer",
            "title": "Total"
          },
          "totalPages": {
            "type": "integer",
            "title": "Totalpages"
          },
          "actualPage": {
            "type": "integer",
            "title": "Actualpage"
          },
          "itemsPerPage": {
            "type": "integer",
            "title": "Itemsperpage"
          },
          "elementList": {
            "items": {
              "$ref": "#/components/schemas/SearchElement"
            },
            "type": "array",
            "title": "Elementlist"
          },
          "summary": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Summary"
          },
          "searchTitle": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Searchtitle"
          }
        },
        "additionalProperties": true,
        "type": "object",
        "required": [
          "total",
          "totalPages",
          "actualPage",
          "itemsPerPage"
        ],
        "title": "SearchResponse"
      },
      "ShortUrisRequest": {
        "properties": {
          "operation": {
            "type": "string",
            "enum": [
              "sale",
              "rent"
            ],
            "title": "Operation",
            "default": "sale"
          },
          "propertyType": {
            "type": "string",
            "title": "Propertytype",
            "description": "e.g. homes, newDevelopments, offices, premises",
            "default": "homes"
          },
          "shortUris": {
            "type": "string",
            "title": "Shorturis",
            "description": "Short-uri tag, e.g. '[bd4]'. Accepts a string with bracketed codes, not a JSON array."
          },
          "order": {
            "type": "string",
            "title": "Order",
            "default": "weigh"
          },
          "sort": {
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ],
            "title": "Sort",
            "default": "desc"
          },
          "maxItems": {
            "type": "integer",
            "minimum": 0.0,
            "title": "Maxitems",
            "default": 0
          },
          "locale": {
            "type": "string",
            "enum": [
              "es",
              "en",
              "ca",
              "it",
              "pt",
              "de",
              "fr",
              "ro",
              "sv",
              "nl",
              "nb",
              "fi",
              "el"
            ],
            "title": "Locale",
            "default": "es"
          }
        },
        "type": "object",
        "required": [
          "shortUris"
        ],
        "title": "ShortUrisRequest"
      },
      "SpanishRegion": {
        "properties": {
          "code": {
            "type": "string",
            "title": "Code",
            "description": "ISO 3166-2:ES code, e.g. 'CT', 'MD'."
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "type": {
            "type": "string",
            "enum": [
              "comunidad",
              "ciudad_autonoma"
            ],
            "title": "Type"
          },
          "provinces": {
            "items": {
              "$ref": "#/components/schemas/SpanishRegionProvince"
            },
            "type": "array",
            "title": "Provinces"
          }
        },
        "type": "object",
        "required": [
          "code",
          "name",
          "type",
          "provinces"
        ],
        "title": "SpanishRegion"
      },
      "SpanishRegionProvince": {
        "properties": {
          "locationId": {
            "type": "string",
            "title": "Locationid"
          },
          "name": {
            "type": "string",
            "title": "Name"
          }
        },
        "type": "object",
        "required": [
          "locationId",
          "name"
        ],
        "title": "SpanishRegionProvince"
      },
      "SpanishRegionsResponse": {
        "properties": {
          "regions": {
            "items": {
              "$ref": "#/components/schemas/SpanishRegion"
            },
            "type": "array",
            "title": "Regions"
          }
        },
        "type": "object",
        "required": [
          "regions"
        ],
        "title": "SpanishRegionsResponse"
      },
      "StatValue": {
        "properties": {
          "value": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Value"
          },
          "text": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Text"
          }
        },
        "additionalProperties": true,
        "type": "object",
        "title": "StatValue",
        "description": "A stat counter: numeric `value` plus a localized human-readable `text`."
      },
      "Ubication": {
        "properties": {
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Title"
          },
          "latitude": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Latitude"
          },
          "longitude": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Longitude"
          },
          "hasHiddenAddress": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Hashiddenaddress"
          },
          "locationId": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Locationid"
          },
          "locationName": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Locationname"
          }
        },
        "additionalProperties": true,
        "type": "object",
        "title": "Ubication"
      },
      "ValidationError": {
        "properties": {
          "loc": {
            "items": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "integer"
                }
              ]
            },
            "type": "array",
            "title": "Location"
          },
          "msg": {
            "type": "string",
            "title": "Message"
          },
          "type": {
            "type": "string",
            "title": "Error Type"
          },
          "input": {
            "title": "Input"
          },
          "ctx": {
            "type": "object",
            "title": "Context"
          }
        },
        "type": "object",
        "required": [
          "loc",
          "msg",
          "type"
        ],
        "title": "ValidationError"
      }
    },
    "securitySchemes": {
      "RapidAPIKey": {
        "type": "apiKey",
        "in": "header",
        "name": "X-RapidAPI-Key",
        "description": "RapidAPI subscription key. Requests must also include the X-RapidAPI-Host header: idealista-real-estate.p.rapidapi.com"
      }
    }
  },
  "tags": [
    {
      "name": "Search",
      "description": "Generic listing search and dynamic filter discovery. Use `searchListings` for arbitrary combinations of operation/propertyType and `getSearchFilters` to learn which filters apply in a given context."
    },
    {
      "name": "Listings",
      "description": "Shortcut endpoints that preset `propertyType` per vertical (new homes, used homes, rent homes, offices, premises, garages, storage rooms, lands, buildings). Useful for consumers who want ergonomic, self-documenting URLs without learning the search parameters."
    },
    {
      "name": "Properties",
      "description": "Detailed record and usage analytics for a single property listing, addressed by its numeric ad id."
    },
    {
      "name": "Promotions",
      "description": "New-build promotions: the promotion-level detail and the individual units that belong to each promotion."
    },
    {
      "name": "Locations",
      "description": "Helpers to discover, resolve and navigate the location identifiers used throughout the search endpoints."
    }
  ],
  "security": [
    {
      "RapidAPIKey": []
    }
  ]
}
