Visão geral
Sempre que um imóvel é criado, atualizado ou excluído no Painel Imobiliário, publicamos um evento em uma fila AWS SQS contendo o estado do imóvel, sua galeria de fotos e as características associadas. Esta página documenta o formato exato desse payload.
Quando um evento é enviado?
Um evento é enviado para a SQS nas seguintes situações:
data.action = "created": após a criação bem-sucedida de um imóvel.data.action = "updated": após atualização de um imóvel existente.data.action = "deleted": após exclusão de um imóvel.
Condições adicionais de envio
Para evitar ruído, só enviamos eventos quando:
Cadastro.integracao_tempo_real == 1- Existe ao menos um endpoint ativo e realtime em
WebhookEndpointpara o cliente. imovel.nao_publicar_site == 0
Se qualquer uma dessas condições falhar, nenhum evento é publicado na fila.
Configuração de ambiente
As credenciais e a fila usada pela integração são definidas via variáveis de ambiente:
AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY,AWS_SESSION_TOKEN(opcional)AWS_REGIONouAWS_DEFAULT_REGION(ex.:us-east-1)AWS_QUEUE_URL(URL da fila SQS que recebe os eventos)
Protocolo de entrega
O payload documentado nesta página é enviado como corpo de uma requisição HTTP
POST, com cabeçalho Content-Type: application/json, para o serviço
que estiver ouvindo/consumindo a integração.
Fluxo técnico resumido
O método sendImovelIntegracaoTempoReal($Cadastro, $imovel, $action) é chamado
após operações de criação, atualização ou exclusão de imóveis e publica um
JSON por evento na fila SQS configurada.
Estrutura de alto nível
{
"customer_id": 1234,
"webhook_url": "https://exemplo.com/webhook-final",
"data": {
"action": "updated", // created | updated | deleted
"imovel": { ... } // ver abaixo
}
}
Campos de topo:
customer_id: ID do cliente no Painel Imobiliário (tabelacadastro.id).webhook_url: URL configurada pelo cliente para receber notificações.data.action: tipo do evento ("created","updated"ou"deleted").
Bloco data.imovel · created / updated
Para ações created e updated, o objeto imovel contém
um subconjunto de campos do nosso modelo interno. Exemplos:
- Identificação:
id,active,status,categoria,codigo_interno,finalidade,tipo_predio,situacao_imovel,situacao_imovel_codigos,situacao_imovel_labels. - Localização:
endereco,numero,bairro,cep,cidade,estado,latitude,longitude. - Valores:
valor_corrigido,valor_incc,valor_condominio,valor_iptu,exibir_valor, etc. - Dimensões:
area_total,area_privativa,area_terreno, etc. - Composição:
dormitorios,qtd_suites,qtd_banheiros,qtd_vagas_estacionamento, etc. - Destaques:
minha_casa_minha_vida,imovel_alto_padrao,imovel_litoral,lancamentos, etc. - Descrição e mídia:
resumo,descricao,video,tour_virtual.
Campos solicitados: resumo e video
Estes campos são enviados em data.imovel para eventos created e updated:
"resumo": "Venda - Apartamentos - Botafogo - Bento Gonçalves - RS",
"video": "https://www.youtube.com/watch?v=SEU_VIDEO"
resumo e video podem vir vazios ("") quando não preenchidos no cadastro do imóvel.
Semântica de active e status
imovel.statusenvia o valor real do banco (1, 2, 3, 4, 5, 6).imovel.activeé derivado do status para facilitar consumo:
status 1 (ativo) => active = true
status 6 (negociando) => active = true
status 0,2,3,4,5 => active = false
situacao_imovel (situação do imóvel no formulário)
O campo imovel.situacao_imovel repete o valor salvo no banco, no mesmo formato do painel:
códigos separados por vírgula (ex.: "L,PL"), correspondentes ao multi-select
situacao_imovel[].
Campos adicionais derivados:
situacao_imovel_codigos: lista dos códigos (ex.:["L","PL"]).situacao_imovel_labels: rótulos na mesma ordem (ex.:["Lançamento","Pré-Lançamento"]).
Tabela de códigos (valor do option → texto exibido):
A => Alugado
C => Em construção
E => Em vistoria
P => Imóvel na planta
L => Lançamento
N => Novo
PL => Pré-Lançamento
M => Pronto para Morar
U => Usado
S => Semi-Novo
PC => Pronto para Construção
IL => Imóvel para Leilão
ENT => Entregue
Galeria de fotos
O campo imovel.galeria traz todas as fotos associadas ao imóvel.
"galeria": [
{
"id": 1,
"nome": "https://pibr.nyc3.cdn.digitaloceanspaces.com/6585/property/2819590/large-original--699e0645804d1.webp",
"url_externa": null,
"ordem": 1,
"legenda": "Sala de estar"
}
]
Características
O campo imovel.caracteristicas lista todas as características marcadas no imóvel.
"caracteristicas": [
{
"id": 10,
"tipo": "A",
"caracteristica": "Piscina"
}
]
O id corresponde ao identificador interno da característica; o consumidor
pode utilizar somente o texto caracteristica se preferir.
Exemplo de payload completo (updated)
Abaixo um exemplo real do corpo JSON publicado em um evento updated:
{
"action": "updated",
"data": {
"property": {
"id": "3062273",
"active": true,
"status": 1,
"categoria": "Apartamento",
"sala_comercial_terrea": "0",
"link_imovel": "",
"aceita_airbnb": "0",
"link_airbnb": "",
"situacao_imovel": "L,PL",
"situacao_imovel_codigos": ["L", "PL"],
"situacao_imovel_labels": ["Lançamento", "Pré-Lançamento"],
"minha_casa_minha_vida": "1",
"imovel_alto_padrao": "1",
"imovel_litoral": "1",
"imovel_rural": "0",
"imovel_exclusivo": "0",
"imovel_decorado": "0",
"imovel_universitarios": "0",
"imovel_bem_localizado": "0",
"imovel_descanso": "0",
"pronto_para_morar": "0",
"lancamentos": "0",
"aceita_animais": "",
"codigo_interno": "LAERV30",
"finalidade": "Venda",
"tipo_predio": "",
"situacao_locacao": "",
"resumo": "Venda - Apartamentos - Botafogo - Bento Gonçalves - RS",
"descricao": "",
"endereco": "Travessa Natal",
"numero": "",
"complemento": "",
"exibir_endereco": "0",
"ponto_referencia": "",
"bairro": "Botafogo",
"cep": "95700-500",
"cidade": "Bento Gonçalves",
"estado": "RS",
"valor_corrigido": "700000.00",
"valor_incc": "0.000",
"exibir_valor": "1",
"valor_condominio": "",
"valor_seguro": "",
"taxa_mudanca": "",
"valor_iptu": "",
"obs_iptu": "",
"situacao_iptu": "",
"nao_exibir_valor_condominio": "0",
"nao_exibir_valor_iptu": "0",
"quem_paga_iptu": "",
"quem_paga_seguro": "",
"tem_garantia": "0",
"forma_pagamento": "",
"aceita_troca": "0",
"dormitorios": "4",
"qtd_vagas_estacionamento": "",
"box_garagem": "2",
"numeros_box_garagem": "",
"matricula_box_garagem": "",
"box_pref": "",
"box_pref_sub": "",
"box_pref_nr": "",
"area_box": "",
"area_privativa_box": "",
"area_comum_box": "",
"qtd_banheiros": "",
"qtd_lavabos": "",
"qtd_suites": "",
"qtd_sacadas": "",
"qtd_area_servico": "",
"posicao_solar": "",
"posicao_solar_nao_mostrar": "0",
"posicao_imovel": "",
"periodo_sol": "",
"nome_predio": "",
"nao_exbir_caract_condominio": "0",
"nao_exbir_caract_imovel": "0",
"nao_exbir_adicionais": "0",
"nao_exibir_descricao": "0",
"estado_edificio": "",
"data_estimada_entrega": "",
"andares": "",
"aptos_andar": "",
"qtde_elevadores": "",
"condominio_fechado": "0",
"estado_apto": "",
"numero_apartamento": "",
"nr_andar": "",
"mobiliado": "",
"area_frente": "0",
"area_fundos": "0",
"area_esquerdo": "0",
"area_direito": "0",
"area_terreno": "0",
"area_total": "",
"area_privativa": "",
"nao_exibir_area_imovel": "0",
"mapa": "https://www.google.com/maps?q=-29.1762493,-51.5160627&z=20",
"latitude": "-29.1762493",
"longitude": "-51.5160627",
"ocultar_mapa": "0",
"video": "",
"tour_virtual": "",
"matricula_imovel": "",
"setor": "",
"lotesub": "",
"observacoes": "",
"imovel_original": "0",
"observacoes_valores": "",
"aceita_troca_por": "",
"imovel_estudante": "0",
"ano_construcao": "",
"valor_periodicidade": "",
"imovel_investidor": "0",
"imovel_loteamento": "0",
"importadoFred": "0",
"data_proprietario_imovel": "",
"zona": "",
"torre": "",
"construtora": "",
"manter_imovel_site": "",
"nome_condominio": "",
"imovel_comercial": "0",
"tipo_forma_pagamento": "",
"quadra": "",
"lote": "",
"ocupacao": "",
"galeria": [
{
"id": "3",
"nome": "https://pibr.nyc3.cdn.digitaloceanspaces.com/6585/property/3062273/large--696e682dbafca.webp",
"url_externa": "",
"ordem": "0",
"legenda": ""
},
{
"id": "4",
"nome": "https://pibr.nyc3.cdn.digitaloceanspaces.com/6585/property/3062273/large--6971214e22046.webp",
"url_externa": "",
"ordem": "1",
"legenda": ""
},
{
"id": "5",
"nome": "https://pibr.nyc3.cdn.digitaloceanspaces.com/6585/property/3062273/large--6972043c324e3.webp",
"url_externa": "",
"ordem": "2",
"legenda": ""
},
{
"id": "6",
"nome": "https://pibr.nyc3.cdn.digitaloceanspaces.com/6585/property/3062273/large--69720ec58e626.webp",
"url_externa": "",
"ordem": "3",
"legenda": ""
}
],
"caracteristicas": [
{
"id": "21",
"tipo": "I",
"caracteristica": "Ar Central"
},
{
"id": "162",
"tipo": "I",
"caracteristica": "Automação Residencial"
}
]
}
}
}
Bloco data.imovel · deleted
Para ações deleted, o payload é minimalista:
{
"customer_id": 1234,
"webhook_url": "https://exemplo.com/webhook-final",
"data": {
"action": "deleted",
"imovel": {
"id": 2819590,
"active": false,
"codigo_interno": "ABC123",
"status": 0
}
}
}
Seu serviço deve usar esses identificadores para apagar o imóvel da sua base/índice. Nenhuma informação adicional do imóvel é enviada nesse tipo de evento.