PROD

Este servicio devuelve el diseño que el cliente configuró en su cuenta —colores, tipografía, logo, favicon, slides, llamados a la acción, responsable del pie de página y redes sociales— en una forma lista para consumir.

La diferencia con settings-v2 es la forma: ahí el diseño llega mezclado con el resto de la configuración, como una lista plana de pares nombre/valor con la nomenclatura interna de Mapaprop; acá llega agrupado por sección y, sobre todo, las imágenes vienen ya resueltas, no como fragmentos que haya que componer. Para el diseño, este es el servicio recomendado.

Información del recurso
AutenticaciónRequerida (Token de API, Bearer)
Scopeexpress-base
Método HTTPGET
RespuestaJSON
Versión1

URL del recurso

https://mapaprop.app/api/action/express-v1/design

Código de ejemplo

GET /api/action/express-v1/design HTTP/1.1
Host: mapaprop.app
Content-Type: application/x-www-form-urlencoded
Content-Length: 0
Authorization: Bearer {access_token}

Respuesta

Un documento JSON con seis secciones. Las seis vienen siempre, pero dentro de cada una sólo viajan los campos que el cliente configuró: los vacíos se omiten. Un cliente que sólo cargó Instagram y Facebook recibe un social con esas dos claves y nada más.

Por eso conviene leer cada campo con un valor por defecto de tu lado (design.social.youtube ?? "") en vez de asumir que la clave está.

ObjetoCampoTipoRequeridoDescripción
ResponsecolorsColorsyesLa paleta del sitio
typographyTypographyyesLa tipografía elegida
imagesImagesyesLogo, favicon y slides
callToActionsArray of CallToActionyesLos tres bloques de llamado a la acción
footerFooteryesDatos del pie de página
socialSocialyesLas redes sociales de la inmobiliaria
ColorsprimarystringyesColor principal, en formato #rrggbb
primaryTextstringyesColor del texto sobre el color principal
secondarystringyesColor secundario
secondaryTextstringyesColor del texto sobre el color secundario
TypographyfontFamilystringyesNombre de la familia tipográfica (por ejemplo Poppins)
ImageslogostringnoURL del logo. Ausente si el cliente no cargó ninguno
faviconstringnoURL del favicon. Ausente si el cliente no cargó ninguno
slidesArray of SlideyesLos tres slides del carrusel de la portada
SlideimagestringnoURL de la imagen del slide. Ausente si no hay imagen cargada
urlstringnoAdónde lleva el slide al hacer clic
titlestringnoTítulo que se muestra sobre la foto. Ausente si el cliente no escribió ninguno
subtitlestringnoTexto secundario, debajo del título. Ausente si no se escribió
CallToActionindexnumberyesPosición del bloque: 1, 2 o 3
enabledbooleanyesSi el cliente activó este bloque
titlestringnoTítulo del bloque
descriptionstringnoTexto del bloque
buttonTextstringnoTexto del botón
buttonLinkstringnoDestino del botón
FooterresponsiblestringnoTexto libre con el responsable de la inmobiliaria (titular, matrícula, empresa)
SocialinstagramstringnoURL del perfil de Instagram
facebookstringnoURL del perfil de Facebook
twitterstringnoURL del perfil de X (Twitter)
linkedinstringnoURL del perfil de LinkedIn
tiktokstringnoURL del perfil de TikTok
youtubestringnoURL del canal de YouTube

La regla es simple: los textos vacíos no viajan, los números y los booleanos sí. Un bloque de llamado a la acción que el cliente no configuró llega como {"index": 2, "enabled": false} —con su posición y su estado, sin los textos—. Que un campo no esté significa que el cliente no lo cargó, no que haya un error: ahí va tu propio valor por defecto.

El título admite varios renglones: llega con saltos de línea (\n) tal como el cliente lo escribió, porque el diseño de su sitio los usa para componer el titular en dos o tres líneas. Si lo renderizás en HTML, convertí los saltos — si los ignorás, el título sale en un solo renglón.

Las imágenes

logo, favicon y slides[].image vienen resueltos: si el cliente subió la imagen desde su cuenta, llegan como URL absoluta lista para usar. Usala tal cual, sin anteponerle ningún dominio ni reconstruir la ruta.

Cuando el cliente reemplaza una imagen, esa URL puede venir con un parámetro ?v= al final. Es intencional: obliga al navegador a bajar la imagen nueva en lugar de seguir mostrando la anterior. Conservá la URL completa, con ese parámetro incluido.

Hay un caso en que el valor no es una URL absoluta: si empieza con / (por ejemplo /styles/customers/1687/logo.png), es una imagen antigua que vive dentro de la plantilla del sitio alojado por Mapaprop, y desde tu propio dominio no va a resolver. La solución es de un clic y la hace el cliente: subir esa imagen desde Sitio Web > Diseño en su cuenta. A partir de ahí llega como URL absoluta. Si querés cubrir el caso igual, chequeá si el valor arranca con http antes de usarlo.

Los tres bloques y los tres slides vienen siempre

callToActions trae siempre tres elementos y slides siempre tres, estén configurados o no. Los bloques traen enabled para que sepas cuáles mostrar; los slides sin imagen llegan con image vacío. Así podés recorrer las listas por posición sin preocuparte por su longitud.

Cada cuánto conviene pedirlo

El diseño cambia poco: se configura una vez y se ajusta de vez en cuando. La respuesta se cachea una hora, así que no tiene sentido pedirla en cada visita — pedila al construir la página o guardala del lado de tu servidor.

Respuesta de ejemplo

{
  "colors": {
    "primary": "#195fa9",
    "primaryText": "#ffffff",
    "secondary": "#4a7fe8",
    "secondaryText": "#ffffff"
  },
  "typography": {
    "fontFamily": "Poppins"
  },
  "images": {
    "logo": "https://images.mapaprop.app/website-images/4069/963/logo.png?v=1786500000",
    "favicon": "https://images.mapaprop.app/website-images/4069/963/favicon.png?v=1786500000",
    "slides": [
      {
        "image": "https://images.mapaprop.app/website-images/4069/963/slide1.jpg",
        "url": "/propiedades",
        "title": "Encontrá tu próximo hogar",
        "subtitle": "Más de 400 propiedades"
      },
      {
        "image": "https://images.mapaprop.app/website-images/4069/963/slide2.jpg",
        "url": "/contacto"
      },
      {}
    ]
  },
  "callToActions": [
    {
      "index": 1,
      "enabled": true,
      "title": "Tasación sin cargo",
      "description": "Conocé el valor de tu propiedad hoy.",
      "buttonText": "Solicitar tasación",
      "buttonLink": "/contacto"
    },
    {
      "index": 2,
      "enabled": false
    },
    {
      "index": 3,
      "enabled": false
    }
  ],
  "footer": {
    "responsible": "Responsable: Omar Gazze — Matrícula 59"
  },
  "social": {
    "instagram": "https://instagram.com/inmobiliaria",
    "facebook": "https://facebook.com/inmobiliaria"
  }
}