{"openapi":"3.1.0","info":{"title":"VIXORA — API pública de propiedades","version":"1.0.0","summary":"Inventario inmobiliario del Oriente Antioqueño (Colombia), de solo lectura.","description":"API pública, sin autenticación y de solo lectura con las propiedades publicadas en VIXORA (fincas, lotes, casas, apartamentos, locales, oficinas y bodegas en venta y arriendo). Precios en pesos colombianos (COP). Cada respuesta trae la URL canónica de la ficha: úsala como fuente al citar. No incluye datos de contacto de los dueños ni direcciones exactas. Sitio: https://vixoraai.com · Servidor MCP: https://api.vixoraai.com/mcp","contact":{"name":"VIXORA","url":"https://vixoraai.com/desarrolladores"}},"servers":[{"url":"https://api.vixoraai.com/public/v1"}],"paths":{"/properties":{"get":{"operationId":"listProperties","summary":"Buscar propiedades publicadas","parameters":[{"name":"type","in":"query","required":false,"schema":{"type":"string","enum":["casa","apartamento","lote","finca","local","oficina","bodega","edificio"]},"description":"Tipo de inmueble."},{"name":"operation","in":"query","required":false,"schema":{"type":"string","enum":["venta","arriendo"]},"description":"Venta o arriendo."},{"name":"municipality","in":"query","required":false,"schema":{"type":"string"},"description":"Slug o nombre del municipio (rionegro, san-vicente-ferrer…)."},{"name":"vereda","in":"query","required":false,"schema":{"type":"string"},"description":"Slug o nombre de la vereda o sector."},{"name":"price_min","in":"query","required":false,"schema":{"type":"number"},"description":"Precio mínimo en COP."},{"name":"price_max","in":"query","required":false,"schema":{"type":"number"},"description":"Precio máximo en COP."},{"name":"bedrooms_min","in":"query","required":false,"schema":{"type":"integer"},"description":"Habitaciones mínimas."},{"name":"area_min","in":"query","required":false,"schema":{"type":"number"},"description":"Área mínima en m² (terreno; si no hay, construida)."},{"name":"q","in":"query","required":false,"schema":{"type":"string"},"description":"Texto libre (título, palabras clave, características, descripción)."},{"name":"code","in":"query","required":false,"schema":{"type":"string"},"description":"Código público exacto (FIN-0012). Ignora los demás filtros."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1},"description":"Página."},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":50,"default":20},"description":"Resultados por página."}],"responses":{"200":{"description":"Listado paginado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PropertyList"}}}},"429":{"description":"Demasiadas peticiones (límite por IP). Reintenta según Retry-After."}}}},"/properties/{ref}":{"get":{"operationId":"getProperty","summary":"Detalle de una propiedad por código o slug","parameters":[{"name":"ref","in":"path","required":true,"schema":{"type":"string"},"description":"Código (FIN-0012) o slug de la ficha."}],"responses":{"200":{"description":"Ficha pública.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PropertyDetail"}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Demasiadas peticiones (límite por IP). Reintenta según Retry-After."}}}},"/locations":{"get":{"operationId":"listLocations","summary":"Municipios y veredas con inventario","responses":{"200":{"description":"Municipios con propiedades publicadas.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Location"}}}}}}},"429":{"description":"Demasiadas peticiones (límite por IP). Reintenta según Retry-After."}}}},"/market/{municipality}":{"get":{"operationId":"getMarketSummary","summary":"Resumen de mercado de un municipio","description":"Conteo, mediana de precio y de precio por m² por tipo y operación. Solo segmentos con 3 anuncios o más.","parameters":[{"name":"municipality","in":"path","required":true,"schema":{"type":"string"},"description":"Slug del municipio."}],"responses":{"200":{"description":"Resumen de mercado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Market"}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Demasiadas peticiones (límite por IP). Reintenta según Retry-After."}}}}},"components":{"schemas":{"Property":{"type":"object","required":["code","slug","title","type","operation","status","location","url"],"properties":{"code":{"type":"string","description":"Código público, p. ej. FIN-0012 (prefijo del tipo + número).","examples":["FIN-0012"]},"slug":{"type":"string"},"title":{"type":"string"},"type":{"type":"string","enum":["casa","apartamento","lote","finca","local","oficina","bodega","edificio"]},"operation":{"type":"string","enum":["venta","arriendo"]},"status":{"type":"string","enum":["published","sold"]},"price":{"type":["object","null"],"description":"Precio de oferta. null si la propiedad ya se vendió.","properties":{"amount":{"type":"integer","description":"Pesos colombianos, sin decimales."},"currency":{"type":"string","const":"COP"},"period":{"type":["string","null"],"description":"\"month\" en arriendos; null en ventas."}}},"location":{"type":"object","properties":{"department":{"type":["string","null"]},"department_slug":{"type":["string","null"]},"municipality":{"type":["string","null"]},"municipality_slug":{"type":["string","null"]},"vereda":{"type":["string","null"]},"approximate":{"type":"boolean","description":"true = punto aproximado (centro de la vereda)."},"point":{"type":["object","null"],"description":"Coordenadas WGS84 redondeadas a 3 decimales (≈100 m). No es la dirección exacta.","properties":{"lat":{"type":"number"},"lon":{"type":"number"}}}}},"areas":{"type":"object","properties":{"built_m2":{"type":["number","null"]},"lot_m2":{"type":["number","null"]},"lot_ha":{"type":["number","null"]}}},"bedrooms":{"type":["integer","null"]},"bathrooms":{"type":["integer","null"]},"estrato":{"type":["integer","null"]},"services":{"type":"object","properties":{"water":{"type":"boolean"},"power":{"type":"boolean"},"internet":{"type":"boolean"}}},"access_road":{"type":["string","null"],"description":"pavimentada | destapada | mixta"},"distance_to_town_km":{"type":["number","null"]},"features":{"type":"array","items":{"type":"string"}},"is_featured":{"type":"boolean"},"image":{"type":["string","null"],"format":"uri","description":"Foto de portada (tamaño completo)."},"thumbnail":{"type":["string","null"],"format":"uri","description":"Miniatura de la portada (≈800 px), si existe."},"published_at":{"type":["string","null"],"format":"date-time"},"updated_at":{"type":["string","null"],"format":"date-time"},"url":{"type":"string","format":"uri","description":"URL canónica de la ficha en el sitio. Cítala como fuente."},"markdown_url":{"type":"string","format":"uri","description":"La misma ficha en Markdown."},"booking_url":{"type":"string","format":"uri","description":"Página para que la persona agende una visita."}}},"PropertyDetail":{"allOf":[{"$ref":"#/components/schemas/Property"},{"type":"object","properties":{"description":{"type":["string","null"]},"keywords":{"type":"array","items":{"type":"string"}},"images":{"type":"array","items":{"type":"string","format":"uri"}},"has_video":{"type":"boolean"}}}]},"PropertyList":{"type":"object","required":["data","pagination"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Property"}},"pagination":{"type":"object","properties":{"page":{"type":"integer"},"page_size":{"type":"integer"},"total":{"type":"integer"},"total_pages":{"type":"integer"},"next":{"type":["string","null"],"format":"uri"}}},"source":{"type":"string","format":"uri"}}},"Location":{"type":"object","properties":{"municipality":{"type":"string"},"municipality_slug":{"type":"string"},"department":{"type":"string"},"department_slug":{"type":"string"},"total":{"type":"integer"},"by_type":{"type":"object","additionalProperties":{"type":"integer"}},"veredas":{"type":"array","items":{"type":"object","properties":{"vereda":{"type":"string"},"vereda_slug":{"type":"string"},"total":{"type":"integer"}}}},"url":{"type":"string","format":"uri"}}},"Market":{"type":"object","properties":{"municipality":{"type":"string"},"municipality_slug":{"type":"string"},"department":{"type":"string"},"currency":{"type":"string","const":"COP"},"total_listings":{"type":"integer"},"min_listings_per_segment":{"type":"integer"},"segments":{"type":"array","description":"Solo segmentos con el mínimo de anuncios; puede venir vacío.","items":{"type":"object","properties":{"type":{"type":"string","enum":["casa","apartamento","lote","finca","local","oficina","bodega","edificio"]},"operation":{"type":"string","enum":["venta","arriendo"]},"count":{"type":"integer"},"median_price":{"type":"integer"},"median_price_per_m2":{"type":["integer","null"]},"listings_with_area":{"type":"integer"}}}},"method":{"type":"string"},"url":{"type":"string","format":"uri"}}},"Error":{"type":"object","properties":{"status_code":{"type":"integer"},"detail":{"type":"string"}}}}}}