PROD

Este serviço retorna o design que o cliente configurou na sua conta —cores, tipografia, logo, favicon, slides, chamadas para ação, responsável do rodapé e redes sociais— em um formato pronto para consumir.

A diferença em relação a settings-v2 é o formato: lá o design chega misturado com o resto da configuração, como uma lista plana de pares nome/valor com a nomenclatura interna da Mapaprop; aqui chega agrupado por seção e, principalmente, as imagens vêm já resolvidas, não como fragmentos que você precisa montar. Para o design, este é o serviço recomendado.

Informação do recurso
AutenticaçãoObrigatória (Token de API, Bearer)
Scopeexpress-base
Método HTTPGET
RespostaJSON
Versão1

URL do recurso

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

Código de exemplo

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}

O título aceita várias linhas: chega com quebras de linha (\n) exatamente como o cliente digitou, porque o design do site as usa para compor o título em duas ou três linhas. Se você renderizar em HTML, converta as quebras — ignorá-las deixa o título em uma única linha.

Resposta

Um documento JSON com seis seções. As seis vêm sempre, mas dentro de cada uma só viajam os campos que o cliente configurou: os vazios são omitidos. Um cliente que só preencheu Instagram e Facebook recebe um social com essas duas chaves e nada mais.

Por isso convém ler cada campo com um valor padrão do seu lado (design.social.youtube ?? "") em vez de supor que a chave está lá.

ObjetoCampoTipoObrigatórioDescrição
ResponsecolorsColorsyesA paleta do site
typographyTypographyyesA tipografia escolhida
imagesImagesyesLogo, favicon e slides
callToActionsArray of CallToActionyesOs três blocos de chamada para ação
footerFooteryesDados do rodapé
socialSocialyesAs redes sociais da imobiliária
ColorsprimarystringyesCor principal, no formato #rrggbb
primaryTextstringyesCor do texto sobre a cor principal
secondarystringyesCor secundária
secondaryTextstringyesCor do texto sobre a cor secundária
TypographyfontFamilystringyesNome da família tipográfica (por exemplo Poppins)
ImageslogostringnoURL do logo. Ausente se o cliente não carregou nenhum
faviconstringnoURL do favicon. Ausente se o cliente não carregou nenhum
slidesArray of SlideyesOs três slides do carrossel da página inicial
SlideimagestringnoURL da imagem do slide. Ausente se não há imagem carregada
urlstringnoPara onde o slide leva ao clicar
titlestringnoTítulo exibido sobre a foto. Ausente se o cliente não escreveu nenhum
subtitlestringnoTexto secundário, abaixo do título. Ausente se não foi escrito
CallToActionindexnumberyesPosição do bloco: 1, 2 ou 3
enabledbooleanyesSe o cliente ativou este bloco
titlestringnoTítulo do bloco
descriptionstringnoTexto do bloco
buttonTextstringnoTexto do botão
buttonLinkstringnoDestino do botão
FooterresponsiblestringnoTexto livre com o responsável pela imobiliária (titular, matrícula, empresa)
SocialinstagramstringnoURL do perfil do Instagram
facebookstringnoURL do perfil do Facebook
twitterstringnoURL do perfil do X (Twitter)
linkedinstringnoURL do perfil do LinkedIn
tiktokstringnoURL do perfil do TikTok
youtubestringnoURL do canal do YouTube

A regra é simples: os textos vazios não viajam, os números e os booleanos sim. Um bloco de chamada para ação que o cliente não configurou chega como {"index": 2, "enabled": false} —com a sua posição e o seu estado, sem os textos—. Um campo ausente significa que o cliente não o preencheu, não que houve um erro: é aí que entra o seu próprio valor padrão.

As imagens

logo, favicon e slides[].image vêm resolvidos: se o cliente carregou a imagem a partir da sua conta, chegam como URL absoluta pronta para usar. Use-a como está, sem acrescentar nenhum domínio nem reconstruir o caminho.

Quando o cliente substitui uma imagem, essa URL pode vir com um parâmetro ?v= no final. Isso é intencional: força o navegador a baixar a imagem nova em vez de continuar mostrando a anterior. Mantenha a URL completa, com esse parâmetro incluído.

Há um caso em que o valor não é uma URL absoluta: se começa com / (por exemplo /styles/customers/1687/logo.png), é uma imagem antiga que vive dentro do template do site hospedado pela Mapaprop, e a partir do seu próprio domínio ela não vai resolver. A solução é de um clique e quem a faz é o cliente: carregar essa imagem em Site > Design na sua conta. A partir daí ela chega como URL absoluta. Se quiser cobrir o caso mesmo assim, verifique se o valor começa com http antes de usá-lo.

Os três blocos e os três slides vêm sempre

callToActions traz sempre três elementos e slides sempre três, estejam configurados ou não. Os blocos trazem enabled para que você saiba quais mostrar; os slides sem imagem chegam com image vazio. Assim você pode percorrer as listas por posição sem se preocupar com o comprimento delas.

Com que frequência pedi-lo

O design muda pouco: é configurado uma vez e ajustado de vez em quando. A resposta fica em cache por uma hora, então não faz sentido pedi-la a cada visita — peça-a ao construir a página ou guarde-a do lado do seu servidor.

Resposta de exemplo

{
  "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": "Encontre seu próximo lar",
        "subtitle": "Mais de 400 imóveis"
      },
      {
        "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"
  }
}