API · Documentación técnica

Endpoints públicos del sitio de D.C Colombia. Base URL: https://dc.paulovila.org. Respuestas en JSON salvo donde se indique.

El inventario se origina en Wasi y se sincroniza a esta API. Para integraciones de alto volumen, contáctanos.

Properties

GET/api/properties

Lista inmuebles activos con filtros opcionales. Devuelve hasta 200 resultados.

ParámetroTipoDescripción
operationsale | rentOperación (venta o arriendo)
citytextoCiudad o barrio (acento-insensible)
property_typeapartment | house | office | commercial | lot | warehouse | farmTipo de inmueble
random1Orden 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"
    }
  ]
}
GET/inmuebles.csv

Descarga el catálogo activo en CSV (UTF-8 con BOM, abre en Excel).

GET/inmuebles.xlsx

Descarga 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.

Contacto y publicación

POST/api/leads

Registra un lead (solicitud de contacto). Body application/x-www-form-urlencoded.

CampoReq.
name, phone
email, message, property_id, operation, cityno
{ "ok": true }
POST/api/publicar

Publica 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" }
POST/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 }

Asistente

POST/api/chat

Conversa con Juanpa (asistente IA). Body JSON: { "message": "...", "messages": [...], "page_url": "..." }. Busca en el catálogo real.

{ "reply": "Tenemos un apartamento en arriendo en Chapinero..." }
POST/api/tts

Texto a voz (Juanpa). Body JSON { "text": "..." }. Devuelve audio/mpeg.

GET/api/me

Estado de la sesión actual.

{ "authenticated": false, "admin": false, "name": "anónimo" }
ESEN