API INTERNA · IMÓVEIS Integração em Tempo Real de Imóveis
v1 Payload estável
HTTP POST · JSON Última revisão: 07/05/2026 15:10
Entrega: AWS SQS · JSON

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 WebhookEndpoint para 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_REGION ou AWS_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

Painel Imobiliário
ImoveisController
sendImovelIntegracaoTempoReal()
AWS SQS
Seu consumidor

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 (tabela cadastro.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.status envia 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.