> ## Documentation Index
> Fetch the complete documentation index at: https://docs.nekt.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Imoview as a data source

> Bring data from Imoview to Nekt.

Imoview is a property management and real estate CRM platform that supports rental and sale workflows, tenant and guarantor contracts, inspections, condominiums, and client (user) data. Data is extracted via the Imoview API using an API key (chave) and optional email/senha for app endpoints that require user context.

<img width="200" src="https://mintcdn.com/nekt/ylM2TSR4x_yk9Bs6/assets/logo/logo-imoview.png?fit=max&auto=format&n=ylM2TSR4x_yk9Bs6&q=85&s=ad76f408fe969ddd884aef4db97502c8" data-path="assets/logo/logo-imoview.png" />

## Configuring Imoview as a Source

In the [Sources](https://app.nekt.ai/sources) tab, click on the "Add source" button located on the top right of your screen. Then, select the **Imoview** option from the list of connectors.

Click **Next** and you'll be prompted to add your access.

### 1. Add account access

You'll need to provide your Imoview API credentials so Nekt can access your data.

The following configurations are available:

* **API key**: API key (chave) for the Imoview API. The access key is provided by **UNIVERSAL SOFTWARE**.

* **Email**: Imoview user email. When provided together with **Password**, Nekt uses it to obtain `codigoacesso` and `codigoUsuario` via the app validation endpoint. This is required for streams that use App\_ endpoints (e.g. **client\_companies**, **rental\_contracts**).

* **Password**: Imoview user password. Used with **Email** to authenticate and retrieve app credentials for App\_ endpoints.

* **Start date**: Records created or updated after the start date will be extracted from the source. Used for the first full sync and for incremental syncs when supported by the stream.

Once you're done, click **Next**.

### 2. Select streams

Choose which data streams you want to sync. For faster extractions, select only the streams that are relevant to your analysis. You can select entire groups of streams or pick specific ones.

> Tip: The stream can be found more easily by typing its name.

Select the streams and click **Next**.

### 3. Configure data streams

Customize how you want your data to appear in your catalog. Select the desired layer where the data will be placed, a folder to organize it inside the layer, a name for each table (which will effectively contain the fetched data), and the type of sync.

* **Layer**: Choose between the existing layers on your catalog. This is where you will find your new extracted tables as the extraction runs successfully.
* **Folder**: A folder can be created inside the selected layer to group all tables being created from this new data source.
* **Table name**: We suggest a name, but feel free to customize it. You have the option to add a **prefix** to all tables at once and make this process faster!
* **Sync Type**: You can choose between INCREMENTAL and FULL\_TABLE.
  * **Incremental**: Every time the extraction happens, we'll get only the new or updated data. Supported for **clients**, **rental\_contracts**, and **condominiums** where the API supports replication by date.
  * **Full table**: Every time the extraction happens, we'll get the current state of the data.

Once you are done configuring, click **Next**.

### 4. Configure data source

Describe your data source for easy identification within your organization, not exceeding 140 characters.

To define your [Trigger](https://docs.nekt.com/get-started/core-concepts/triggers), consider how often you want data to be extracted from this source. This decision usually depends on how frequently you need the new table data updated (every day, once a week, or only at specific times).

Optionally, you can define some additional settings:

* Configure Delta Log Retention and determine for how long we should store old states of this table as it gets updated. Read more about this resource [here](https://docs.nekt.com/get-started/core-concepts/resource-control).
* Determine when to execute an **Additional [Full Sync](https://docs.nekt.com/get-started/core-concepts/types-of-sync#additional-full-sync)**.

Once you are ready, click **Next** to finalize the setup.

### 5. Check your new source

You can view your new source on the [Sources](https://app.nekt.ai/sources) page. If needed, manually trigger the source extraction by clicking on the arrow button. Once executed, your data will appear in your Catalog.

<Warning>For you to be able to see it on your [Catalog](https://app.nekt.ai/catalog), you need at least one successful source run.</Warning>

# Streams and Fields

Below you'll find all available data streams from Imoview and their corresponding fields:

<AccordionGroup>
  <Accordion title="Clients">
    Stream for clients (locador, locatário, proprietário, comprador, fiador). Source: RetornarTipo3.

    | Field                              | Type     | Description                                        |
    | :--------------------------------- | :------- | :------------------------------------------------- |
    | `codigo`                           | Integer  | Código do cliente                                  |
    | `nome`                             | String   | Nome do cliente                                    |
    | `cpfoucnpj`                        | String   | CPF ou CNPJ do cliente                             |
    | `telefones`                        | String   | Telefones do cliente                               |
    | `email`                            | String   | E-mail do cliente                                  |
    | `endereco`                         | String   | Endereço do cliente                                |
    | `locatario`                        | Boolean  | Indica se o cliente é locatário                    |
    | `comprador`                        | Boolean  | Indica se o cliente é comprador                    |
    | `locador`                          | Boolean  | Indica se o cliente é locador                      |
    | `vendedor`                         | Boolean  | Indica se o cliente é vendedor                     |
    | `fiador`                           | Boolean  | Indica se o cliente é fiador                       |
    | `parceiro`                         | Boolean  | Indica se o cliente é parceiro                     |
    | `quantidadeimoveislocador`         | Integer  | Quantidade de imóveis do locador                   |
    | `quantidadeimoveisvendedor`        | Integer  | Quantidade de imóveis do vendedor                  |
    | `quantidadecontratoslocatario`     | Integer  | Quantidade de contratos do locatário               |
    | `quantidadeboletosativoslocatario` | Integer  | Quantidade de boletos ativos do locatário          |
    | `senhacadastrada`                  | Boolean  | Indica se o cliente possui senha cadastrada        |
    | `emailcadastrado`                  | Boolean  | Indica se o cliente possui e-mail cadastrado       |
    | `temvistoria`                      | Boolean  | Indica se o cliente possui vistoria                |
    | `temesteira`                       | Boolean  | Indica se o cliente possui esteira                 |
    | `naoexigircpf`                     | Boolean  | Indica se não exige CPF                            |
    | `anosdisponiveis`                  | Array    | Anos disponíveis para o cliente                    |
    | `diasminimoavisodesocupacao`       | Integer  | Dias mínimos de aviso de desocupação               |
    | `temcashgo`                        | Boolean  | Indica se o cliente possui CashGo                  |
    | `naoexibiravisodesocupacao`        | Boolean  | Indica se não exibe aviso de desocupação           |
    | `whatsappbotiniciarConversa`       | Integer  | Configuração do bot WhatsApp para iniciar conversa |
    | `datainclusao`                     | Date     | Data de inclusão do cliente                        |
    | `dataultimaalteracao`              | DateTime | Data da última alteração do cliente                |
  </Accordion>

  <Accordion title="Rental Contracts">
    Stream for rental contracts. Source: Locacao/RetornarContratos.

    | Field                   | Type     | Description                   |
    | :---------------------- | :------- | :---------------------------- |
    | `codigo`                | String   | Código do contrato            |
    | `codigoauxiliar`        | String   | Código auxiliar               |
    | `unidadecodigo`         | String   | Código da unidade             |
    | `unidade`               | String   | Nome da unidade               |
    | `locatariocodigo`       | String   | Código do locatário           |
    | `locatarionome`         | String   | Nome do locatário             |
    | `locatariotelefone1`    | String   | Telefone 1 do locatário       |
    | `locatariotelefone2`    | String   | Telefone 2 do locatário       |
    | `locatarioemail`        | String   | E-mail do locatário           |
    | `locatariocpf`          | String   | CPF do locatário              |
    | `situacao`              | String   | Situação do contrato          |
    | `status`                | String   | Status do contrato            |
    | `motivostatus`          | String   | Motivo do status              |
    | `valoraluguel`          | Number   | Valor do aluguel              |
    | `taxaadministracao`     | Number   | Taxa de administração         |
    | `tipotaxaadministracao` | String   | Tipo da taxa de administração |
    | `taxaintermediacao`     | Number   | Taxa de intermediação         |
    | `tipotaxaintermediacao` | String   | Tipo da taxa de intermediação |
    | `datainclusao`          | DateTime | Data de inclusão              |
    | `dataultimaalteracao`   | DateTime | Data da última alteração      |
    | `dataativacao`          | DateTime | Data de ativação              |
    | `datainicio`            | Date     | Data de início                |
    | `datafim`               | Date     | Data de fim                   |
    | `dataproximoreajuste`   | Date     | Data do próximo reajuste      |
    | `dataproximoaluguel`    | Date     | Data do próximo aluguel       |
    | `dataproximorepasse`    | Date     | Data do próximo repasse       |
    | `diavencimento`         | Integer  | Dia de vencimento             |
    | `diarepasse`            | Integer  | Dia de repasse                |
    | `diavencimentoaluguel`  | Integer  | Dia de vencimento do aluguel  |
    | `diavencimentorepasse`  | Integer  | Dia de vencimento do repasse  |
    | `dataavisodesocupacao`  | Date     | Data de aviso de desocupação  |
    | `dataprevisaorescisao`  | Date     | Data de previsão de rescisão  |
    | `datarescisao`          | Date     | Data de rescisão              |
    | `motivorescisao`        | String   | Motivo da rescisão            |
    | `complementomotivo`     | String   | Complemento do motivo         |
    | `formacobranca`         | String   | Forma de cobrança             |
    | `formarecebimento`      | String   | Forma de recebimento          |
    | `comofazerrepasse`      | String   | Como fazer repasse            |
    | `destinacao`            | String   | Destinação                    |
    | `ramoatividade`         | String   | Ramo de atividade             |
    | `indicereajuste`        | String   | Índice de reajuste            |
    | `garantido`             | Boolean  | Indica se é garantido         |
    | `tipogarantido`         | String   | Tipo de garantia              |
    | `quantosmesesgarantido` | Integer  | Quantos meses garantido       |
    | `responsavel`           | String   | Responsável                   |
    | `advogadoresponsavel`   | String   | Advogado responsável          |
    | `resumo`                | String   | Resumo                        |
    | `contratosassinado`     | Array    | Contratos assinados           |
    | `vistoriasassinado`     | Array    | Vistorias assinadas           |
    | `imoveis`               | Array    | Array de imóveis              |
    | `seguroincendio`        | Object   | Seguro incêndio               |
    | `garantialocaticia`     | Object   | Garantia locatícia            |
  </Accordion>

  <Accordion title="Client Companies">
    Stream for companies from Imoview CRM. Source: Cliente/App\_RetornarEmpresas. Requires email and senha for app credentials.

    | Field      | Type    | Description       |
    | :--------- | :------ | :---------------- |
    | `codigo`   | Integer | Código da empresa |
    | `nome`     | String  | Nome da empresa   |
    | `telefone` | String  | Telefone          |
    | `email1`   | String  | E-mail principal  |
  </Accordion>

  <Accordion title="Condominiums">
    Stream for available condominiums. Source: Imovel/RetornarCondominiosDisponiveis (POST).

    | Field                     | Type     | Description                     |
    | :------------------------ | :------- | :------------------------------ |
    | `codigo`                  | String   | Código do condomínio            |
    | `nome`                    | String   | Nome do condomínio              |
    | `codigodestinacao`        | String   | Código da destinação            |
    | `destinacao`              | String   | Destinação                      |
    | `tipo`                    | String   | Tipo                            |
    | `formacobranca`           | String   | Forma de cobrança               |
    | `construtora`             | String   | Construtora                     |
    | `anoconstrucao`           | Integer  | Ano de construção               |
    | `arealote`                | Number   | Área do lote                    |
    | `datahoracadastro`        | DateTime | Data e hora de cadastro         |
    | `datahoraultimaalteracao` | DateTime | Data e hora da última alteração |
    | `descricao`               | String   | Descrição                       |
    | `codigobairro`            | String   | Código do bairro                |
    | `bairro`                  | String   | Bairro                          |
    | `codigocidade`            | String   | Código da cidade                |
    | `cidade`                  | String   | Cidade                          |
    | `estado`                  | String   | Estado                          |
    | `codigoregiao`            | String   | Código da região                |
    | `regiao`                  | String   | Região                          |
    | `codigosubregiao`         | String   | Código da sub-região            |
    | `subregiao`               | String   | Sub-região                      |
    | `cep`                     | String   | CEP                             |
    | `endereco`                | String   | Endereço                        |
    | `numero`                  | String   | Número                          |
    | `complemento`             | String   | Complemento                     |
    | `pontoreferencia`         | String   | Ponto de referência             |
    | `melhoracesso`            | String   | Melhor acesso                   |
    | `latitude`                | Number   | Latitude                        |
    | `longitude`               | Number   | Longitude                       |
    | `numerovagavisitante`     | Integer  | Número de vagas para visitante  |
    | `tipovagavisitante`       | String   | Tipo de vaga para visitante     |
    | `numeroelevador`          | Integer  | Número de elevadores            |
    | `numerotorres`            | Integer  | Número de torres                |
    | `numeroandares`           | Integer  | Número de andares               |
    | `unidadesporandar`        | Integer  | Unidades por andar              |
    | `totalunidades`           | Integer  | Total de unidades               |
    | `cartorio`                | String   | Cartório                        |
    | `matriculacartorio`       | String   | Matrícula do cartório           |
    | `livrocartorio`           | String   | Livro do cartório               |
    | `folhacartorio`           | String   | Folha do cartório               |
    | `valorcondominio`         | Number   | Valor do condomínio             |
    | `valorfundoreserva`       | Number   | Valor do fundo de reserva       |
    | `valoraluguel`            | Number   | Valor do aluguel                |
    | `valoralugado`            | Number   | Valor alugado                   |
    | `valorvenda`              | Number   | Valor de venda                  |
    | `valorvendido`            | Number   | Valor vendido                   |
    | `areainterna`             | Number   | Área interna                    |
    | `areaexterna`             | Number   | Área externa                    |
    | `numeroquartos`           | Integer  | Número de quartos               |
    | `numerobanhos`            | Integer  | Número de banheiros             |
    | `numerosuites`            | Integer  | Número de suítes                |
    | `numerovagas`             | Integer  | Número de vagas                 |
    | `primeiroquartilaluguel`  | Number   | Primeiro quartil de aluguel     |
    | `medianaquartilaluguel`   | Number   | Mediana do quartil de aluguel   |
    | `terceiroquartilaluguel`  | Number   | Terceiro quartil de aluguel     |
    | `primeiroquartilvenda`    | Number   | Primeiro quartil de venda       |
    | `medianaquartilvenda`     | Number   | Mediana do quartil de venda     |
    | `terceiroquartilvenda`    | Number   | Terceiro quartil de venda       |
    | `aguaindividual`          | Boolean  | Água individual                 |
    | `alarme`                  | Boolean  | Alarme                          |
    | `piscina`                 | Boolean  | Piscina                         |
    | `academia`                | Boolean  | Academia                        |
    | `churrasqueira`           | Boolean  | Churrasqueira                   |
    | `portaria24horas`         | Boolean  | Portaria 24 horas               |
    | `urlfotoprincipal`        | String   | URL da foto principal           |
    | `urlvideo`                | String   | URL do vídeo                    |
    | `fotos`                   | Array    | Fotos                           |
    | `fotos360`                | Array    | Fotos 360                       |
    | `extras`                  | Object   | Extras                          |
    | `extras2`                 | Object   | Extras 2                        |
    | `unidadesaluguel`         | Array    | Unidades de aluguel             |
    | `unidadesvenda`           | Array    | Unidades de venda               |
  </Accordion>

  <Accordion title="Properties Rent">
    Stream for available rental properties (finalidade=1). Source: Imovel/RetornarImoveisDisponiveis (POST).

    | Field                     | Type     | Description                     |
    | :------------------------ | :------- | :------------------------------ |
    | `codigo`                  | String   | Código do imóvel                |
    | `codigomae`               | String   | Código mãe                      |
    | `emdesocupacao`           | Boolean  | Em desocupação                  |
    | `empreendimento`          | String   | Empreendimento                  |
    | `empreendimentofilho`     | String   | Empreendimento filho            |
    | `nomeempreendimento`      | String   | Nome do empreendimento          |
    | `siteempreendimento`      | String   | Site do empreendimento          |
    | `codigocondominio`        | String   | Código do condomínio            |
    | `nomecondominio`          | String   | Nome do condomínio              |
    | `titulo`                  | String   | Título                          |
    | `metadescription`         | String   | Meta descrição                  |
    | `codigoauxiliar`          | String   | Código auxiliar                 |
    | `unidade`                 | String   | Unidade                         |
    | `nomeunidade`             | String   | Nome da unidade                 |
    | `telefoneunidade`         | String   | Telefone da unidade             |
    | `emaileunidade`           | String   | E-mail da unidade               |
    | `finalidade`              | String   | Finalidade                      |
    | `codigodestinacao`        | String   | Código da destinação            |
    | `destinacao`              | String   | Destinação                      |
    | `codigotipo`              | String   | Código do tipo                  |
    | `tipo`                    | String   | Tipo                            |
    | `codigotipo2`             | String   | Código do tipo 2                |
    | `tipo2`                   | String   | Tipo 2                          |
    | `situacao`                | String   | Situação                        |
    | `valor`                   | Number   | Valor                           |
    | `valoranterior`           | Number   | Valor anterior                  |
    | `valorm2`                 | Number   | Valor por m²                    |
    | `valorcondominio`         | Number   | Valor do condomínio             |
    | `valoriptu`               | Number   | Valor do IPTU                   |
    | `codigobairro`            | String   | Código do bairro                |
    | `bairro`                  | String   | Bairro                          |
    | `codigocidade`            | String   | Código da cidade                |
    | `cidade`                  | String   | Cidade                          |
    | `estado`                  | String   | Estado                          |
    | `codigoregiao`            | String   | Código da região                |
    | `regiao`                  | String   | Região                          |
    | `cep`                     | String   | CEP                             |
    | `endereco`                | String   | Endereço                        |
    | `numero`                  | String   | Número                          |
    | `complemento`             | String   | Complemento                     |
    | `numeroquartos`           | Integer  | Número de quartos               |
    | `numerobanhos`            | Integer  | Número de banheiros             |
    | `numerovagas`             | Integer  | Número de vagas                 |
    | `numerosuites`            | Integer  | Número de suítes                |
    | `areaprincipal`           | Number   | Área principal                  |
    | `areainterna`             | Number   | Área interna                    |
    | `areaexterna`             | Number   | Área externa                    |
    | `latitude`                | Number   | Latitude                        |
    | `longitude`               | Number   | Longitude                       |
    | `descricao`               | String   | Descrição                       |
    | `aceitafinanciamento`     | Boolean  | Aceita financiamento            |
    | `aceitapermuta`           | Boolean  | Aceita permuta                  |
    | `datahoracadastro`        | DateTime | Data e hora de cadastro         |
    | `datahoraultimaalteracao` | DateTime | Data e hora da última alteração |
    | `datahoraultimavalidacao` | DateTime | Data e hora da última validação |
    | `urlfotoprincipal`        | String   | URL da foto principal           |
    | `urlpublica`              | String   | URL pública                     |
    | `anexos`                  | Array    | Anexos                          |
    | `proprietarios`           | Array    | Proprietários                   |
    | `fotos`                   | Array    | Fotos                           |
  </Accordion>

  <Accordion title="Properties Sale">
    Stream for available properties for sale (finalidade=2). Same endpoint as Properties Rent with finalidade=2.

    **Key Fields:** Same structure as Properties Rent (codigo, condomínio, título, tipo, situação, valor, endereço, quartos, áreas, datas, fotos, etc.).
  </Accordion>
</AccordionGroup>

# Data Model

The following diagram illustrates the relationships between the data streams in Imoview. **Clients** is the main entity; **rental\_contracts** are filtered by client role (locatário). **Client companies**, **condominiums**, **properties\_rent**, and **properties\_sale** are independent streams.

```mermaid theme={null}
graph TD;
    Clients("Clients");
    RentalContracts("Rental Contracts");
    ClientCompanies("Client Companies");
    Condominiums("Condominiums");
    PropertiesRent("Properties Rent");
    PropertiesSale("Properties Sale");

    RentalContracts -- "codigoCliente / locatário" --> Clients;
```

# Implementation Notes

### Authentication

* For **client\_companies** and **rental\_contracts**, the tap calls the app validation endpoint with **email** and **senha** (MD5) to obtain `codigoacesso` and `codigoUsuario`, which are then sent in headers or params as required by the API.

### Replication

* **Clients** supports incremental sync via `dataultimaalteracao` (filter `dataHoraInicialUltimaAlteracao`).
* **Rental contracts** and **condominiums** support replication by their respective date fields where the API allows.

### Pagination

* Streams use page-based pagination (`numeroPagina` / `numeroRegistros`). Page size is 100 for all streams.

### Resilience

* The connector implements retry logic for transient errors and unauthorized responses.
* App credentials are automatically refreshed when needed with a 30-minute TTL.
* Record cleansing is applied to ensure data consistency with day-first date format.

## Skills for agents

<Snippet file="agent-skills-intro.mdx" />

<Card title="Download Imoview skills file" icon="wand-magic-sparkles" href="/sources/imoview.md">
  Imoview connector documentation as plain markdown, for use in AI agent contexts.
</Card>
