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
| Campo | Tipo | Descrição |
|---|
source.id | string | ID interno do enriquecimento |
source.name | string | Nome do imóvel/empreendimento |
source.external_id | string | ID do imóvel no sistema do parceiro |
enrichment
| Campo | Tipo | Descrição |
|---|
enrichment.place_name | string | null | Nome do local identificado |
enrichment.meta.description | string | null | Descrição gerada automaticamente sobre o imóvel e região |
enrichment.points_of_interest | array | null | Lista de pontos de interesse próximos |
enrichment.points_of_interest[].name | string | Nome do ponto de interesse |
enrichment.media | array | Lista de mídias associadas ao imóvel |
enrichment.media[].url | string | URL da mídia |
enrichment.media[].group | string | Categoria da mídia (ex: facade, common_area, floor_plan, interior) |
enrichment.media[].description | string | Descrição da mídia |
| Campo | Tipo | Descrição |
|---|
metadata.timestamp | string | Data/hora do envio do webhook (ISO 8601) |
metadata.eventType | string | Sempre "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:
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.