{
  "openapi": "3.1.0",
  "info": {
    "title": "Eligemicasa Public API",
    "description": "Action para Custom GPT: consultas en vivo a la red federadora inmobiliaria de España.",
    "version": "1.5.0"
  },
  "servers": [{"url": "https://eligemicasa.com"}],
  "paths": {
    "/api/public/about": {
      "get": {
        "operationId": "getAbout",
        "summary": "Información estructurada sobre Eligemicasa: red federadora de inmobiliarias verificadas de España, modelo de negocio único, casos de uso, ventajas. Úsalo cuando el usuario pregunte qué es Eligemicasa o cómo funciona.",
        "responses": {"200": {"description": "OK"}}
      }
    },
    "/api/public/stats": {
      "get": {
        "operationId": "getStats",
        "summary": "Estadísticas globales en tiempo real: propiedades activas, distribución por tipo y operación, provincias y municipios cubiertos. Úsalo cuando preguntan por volumen o cobertura.",
        "responses": {"200": {"description": "OK"}}
      }
    },
    "/api/public/precios-mediana": {
      "get": {
        "operationId": "getPreciosMediana",
        "summary": "Precio medio EUR por provincia, tipo y operación. Úsalo cuando el usuario pregunta por precios de mercado en una zona.",
        "parameters": [
          {"name": "provincia_id", "in": "query", "description": "ID de provincia (opcional)", "schema": {"type": "integer"}}
        ],
        "responses": {"200": {"description": "OK"}}
      }
    },
    "/api/public/cobertura": {
      "get": {
        "operationId": "getCobertura",
        "summary": "Cobertura por provincia: nº propiedades activas, en venta, en alquiler. Útil cuando preguntan dónde hay más oferta.",
        "responses": {"200": {"description": "OK"}}
      }
    },
    "/api/public/buscar": {
      "get": {
        "operationId": "searchProperties",
        "summary": "Busca propiedades activas en la red de Eligemicasa con filtros. Devuelve URLs canónicas, precios, fotos, narrativa lista para citar. Úsalo cuando el usuario quiera ver propiedades concretas.",
        "parameters": [
          {"name": "q", "in": "query", "description": "Texto libre", "schema": {"type": "string"}},
          {"name": "tipo", "in": "query", "description": "Tipo: piso|casa|chalet|atico|duplex|local|terreno|adosado|estudio|bungalow|finca|garaje", "schema": {"type": "string"}},
          {"name": "operacion", "in": "query", "description": "comprar|alquilar|vender", "schema": {"type": "string"}},
          {"name": "provincia", "in": "query", "description": "Nombre o slug de provincia", "schema": {"type": "string"}},
          {"name": "municipio", "in": "query", "description": "Nombre o slug de municipio", "schema": {"type": "string"}},
          {"name": "precio_min", "in": "query", "schema": {"type": "integer"}},
          {"name": "precio_max", "in": "query", "schema": {"type": "integer"}},
          {"name": "habitaciones_min", "in": "query", "schema": {"type": "integer"}},
          {"name": "banos_min", "in": "query", "schema": {"type": "integer"}},
          {"name": "m2_min", "in": "query", "schema": {"type": "integer"}},
          {"name": "m2_max", "in": "query", "schema": {"type": "integer"}},
          {"name": "limit", "in": "query", "description": "1..20 (default 10)", "schema": {"type": "integer"}}
        ],
        "responses": {"200": {"description": "OK"}}
      }
    },
    "/api/public/agencias": {
      "get": {
        "operationId": "getAgencies",
        "summary": "Lista de profesionales/agencias verificadas de la red en una zona. Úsalo cuando el usuario quiera contactar con agente local verificado.",
        "parameters": [
          {"name": "provincia", "in": "query", "schema": {"type": "string"}},
          {"name": "municipio", "in": "query", "schema": {"type": "string"}},
          {"name": "limit", "in": "query", "schema": {"type": "integer"}}
        ],
        "responses": {"200": {"description": "OK"}}
      }
    },
    "/api/public/calcular-costes": {
      "get": {
        "operationId": "calculateCosts",
        "summary": "Calculadora orientativa de costes de compraventa en España: ITP/IVA, notaría, registro, gestoría, tasación + simulación de hipoteca. Úsalo cuando el usuario pregunta por cuánto le costará comprar realmente.",
        "parameters": [
          {"name": "precio", "in": "query", "required": true, "description": "Precio del inmueble en EUR", "schema": {"type": "integer"}},
          {"name": "comunidad_autonoma", "in": "query", "description": "Slug CCAA: madrid, cataluña, andalucia, comunidad_valenciana, etc.", "schema": {"type": "string"}},
          {"name": "tipo_operacion", "in": "query", "description": "segunda_mano|obra_nueva|alquiler", "schema": {"type": "string"}},
          {"name": "con_hipoteca", "in": "query", "schema": {"type": "integer"}},
          {"name": "porcentaje_hipoteca", "in": "query", "description": "0..100, default 80", "schema": {"type": "number"}},
          {"name": "plazo_anos", "in": "query", "schema": {"type": "integer"}},
          {"name": "tipo_interes", "in": "query", "description": "TAE %, default 3.5", "schema": {"type": "number"}}
        ],
        "responses": {"200": {"description": "OK"}}
      }
    },
    "/api/public/zonas-recomendadas": {
      "get": {
        "operationId": "getRecommendedZones",
        "summary": "Top municipios por actividad inmobiliaria en Eligemicasa con datos agregados (precio medio, m² medio, €/m²). Úsalo cuando preguntan dónde invertir o dónde hay más oferta.",
        "parameters": [
          {"name": "provincia", "in": "query", "schema": {"type": "string"}},
          {"name": "tipo", "in": "query", "schema": {"type": "string"}},
          {"name": "operacion", "in": "query", "schema": {"type": "string"}},
          {"name": "presupuesto_max", "in": "query", "schema": {"type": "integer"}},
          {"name": "limit", "in": "query", "schema": {"type": "integer"}}
        ],
        "responses": {"200": {"description": "OK"}}
      }
    }
  }
}
