Skip to main content

Visão Geral

O webhook de Enriquecimento de Imóvel é disparado pela Morada.ai quando o processo automático de enriquecimento de dados de um imóvel é concluído. Inclui informações como nome do local, descrição, pontos de interesse próximos e mídias associadas.
Este webhook é específico para parceiros que utilizam o módulo de enriquecimento de propriedades (Enri). Consulte o suporte para verificar a disponibilidade.

Payload

{
  "source": {
    "id": "a1b2c3d4-5678-90ab-cdef-1234567890ab",
    "name": "Edifício Aurora Torre A",
    "external_id": "EMP-12345"
  },
  "enrichment": {
    "place_name": "Edifício Aurora",
    "meta": {
      "description": "Empreendimento residencial de alto padrão localizado na Zona Sul de São Paulo, próximo ao Parque do Ibirapuera. Oferece apartamentos de 2 e 3 dormitórios com varanda gourmet."
    },
    "points_of_interest": [
      { "name": "Metrô Brigadeiro" },
      { "name": "Shopping Ibirapuera" },
      { "name": "Parque do Ibirapuera" },
      { "name": "Hospital São Luiz" }
    ],
    "media": [
      {
        "url": "https://storage.morada.ai/media/foto-fachada.jpg",
        "group": "facade",
        "description": "Fachada principal do empreendimento"
      },
      {
        "url": "https://storage.morada.ai/media/foto-lazer.jpg",
        "group": "common_area",
        "description": "Área de lazer com piscina e churrasqueira"
      }
    ]
  },
  "metadata": {
    "timestamp": "2026-05-13T18:30:00.000Z",
    "eventType": "property_enrichment"
  }
}

Campos

source

CampoTipoDescrição
source.idstringID interno do enriquecimento
source.namestringNome do imóvel/empreendimento
source.external_idstringID do imóvel no sistema do parceiro

enrichment

CampoTipoDescrição
enrichment.place_namestring | nullNome do local identificado
enrichment.meta.descriptionstring | nullDescrição gerada automaticamente sobre o imóvel e região
enrichment.points_of_interestarray | nullLista de pontos de interesse próximos
enrichment.points_of_interest[].namestringNome do ponto de interesse
enrichment.mediaarrayLista de mídias associadas ao imóvel
enrichment.media[].urlstringURL da mídia
enrichment.media[].groupstringCategoria da mídia (ex: facade, common_area, floor_plan, interior)
enrichment.media[].descriptionstringDescrição da mídia

metadata

CampoTipoDescrição
metadata.timestampstringData/hora do envio do webhook (ISO 8601)
metadata.eventTypestringSempre "property_enrichment"

Exemplo de uso

app.post("/webhook/morada", (req, res) => {
  const { source, enrichment } = req.body;

  console.log(`Enriquecimento concluído: ${source.name} (${source.external_id})`);

  if (enrichment.place_name) {
    console.log(`Local: ${enrichment.place_name}`);
  }

  if (enrichment.points_of_interest) {
    const pois = enrichment.points_of_interest.map(p => p.name).join(", ");
    console.log(`Pontos de interesse: ${pois}`);
  }

  console.log(`Mídias: ${enrichment.media.length} arquivo(s)`);

  // Atualizar ficha do imóvel no seu sistema

  res.status(200).json({ received: true });
});

Resposta esperada

Retorne um status HTTP 200 para confirmar o recebimento:
{
  "received": true
}
Se o seu endpoint retornar um status diferente de 2xx ou não responder dentro do timeout, a Morada.ai poderá tentar reenviar o evento. Implemente idempotência para lidar com entregas duplicadas.