Endpoints públicos del sitio de D.C Colombia. Base URL: https://dc.paulovila.org. Respuestas en JSON salvo donde se indique.
/api/propertiesLista inmuebles activos con filtros opcionales. Devuelve hasta 200 resultados.
| Parámetro | Tipo | Descripción |
|---|---|---|
| operation | sale | rent | Operación (venta o arriendo) |
| city | texto | Ciudad o barrio (acento-insensible) |
| property_type | apartment | house | office | commercial | lot | warehouse | farm | Tipo de inmueble |
| random | 1 | Orden aleatorio (destacados primero) |
GET /api/properties?operation=rent&city=chapinero
{
"properties": [
{
"slug": "wasi-10018216", "title": "APARTAMENTO EN VENTA...",
"operation": "rent", "property_type": "apartment", "is_featured": false,
"lat": 4.6462, "lng": -74.1556, "neighborhood": "Chapinero", "city": "Bogotá D.C.",
"bedrooms": 3, "bathrooms": 2, "parking_spots": 0, "area": 79,
"price_sale": null, "price_rent": 2800000, "cover": "/img/w302383203.jpg"
}
]
}
/inmuebles.csvDescarga el catálogo activo en CSV (UTF-8 con BOM, abre en Excel).
/inmuebles.xlsxDescarga el Excel maestro de inmuebles (mirror del archivo que el cliente actualiza los viernes en su Drive). Si el mirror aún no se ha generado, redirige al CSV.
/api/leadsRegistra un lead (solicitud de contacto). Body application/x-www-form-urlencoded.
| Campo | Req. |
|---|---|
| name, phone | sí |
| email, message, property_id, operation, city | no |
{ "ok": true }
/api/publicarPublica un inmueble (queda pending hasta aprobación). Campos: name, phone, email, operation, property_type, city, neighborhood, address, area, price, bedrooms, bathrooms, description.
{ "ok": true, "slug": "propio-3836" }
/api/upload/{slug}Sube una foto (bytes crudos en el body, Content-Type: image/jpeg|png|webp) para el inmueble. Máx 20 MB.
{ "ok": true }/api/chatConversa con Juanpa (asistente IA). Body JSON: { "message": "...", "messages": [...], "page_url": "..." }. Busca en el catálogo real.
{ "reply": "Tenemos un apartamento en arriendo en Chapinero..." }
/api/ttsTexto a voz (Juanpa). Body JSON { "text": "..." }. Devuelve audio/mpeg.
/api/meEstado de la sesión actual.
{ "authenticated": false, "admin": false, "name": "anónimo" }