> ## 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.

# Mais Controle as a data source

> Bring data from Mais Controle ERP to Nekt.

Mais Controle is a Brazilian ERP for the construction industry, covering budgets, schedules, projects (obras), billing, payments, and financial management. This connector extracts your operational data through the Mais Controle **API para Relatórios** (Reports API), landing projects, financial entries, payments, billing, receipts, schedules, budget items, and proposals in your Catalog.

## Configuring Mais Controle 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 Mais Controle option from the list of connectors.

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

### 1. Add account access

Mais Controle uses a dedicated API credential (HTTP Basic authentication). You first need to enable the Reports API inside Mais Controle, then copy the generated credential into Nekt.

**Enable the API in Mais Controle** (a key user / *usuário-chave* must do this):

1. Log in to Mais Controle and go to **Configurações → Integração**.
2. On **API para Relatórios**, click **Configurar**, then **Ativar API para Relatórios** (the free tier updates data once a week).
3. The screen shows an **API login (e-mail)** and an **API password ("Senha da API")**. Use the copy button to grab the full password — it is shown only once.

<Warning>
  The **API Password** is the "Senha da API" generated on that activation screen. It is **not** your Mais Controle account/login password. Copy it with the copy button (the displayed value is truncated) right after activation, since it is shown only once.
</Warning>

Back in Nekt, provide:

* **API Login (e-mail)**: the API login shown on the activation screen.
* **API Password**: the "Senha da API" copied from that same screen.

Optionally, under advanced settings you can define:

* **CSV Delimiter**: override the delimiter used to parse the API's CSV responses. Leave empty to auto-detect (`;` or `,`).
* **Request Timeout (seconds)**: HTTP timeout for each report download (default `300`).

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**.

<Note>
  Some routines depend on the modules your account has contracted. If a module is not enabled (for example, Medições), that stream's report returns an error and the connector skips it, so it produces no rows.
</Note>

### 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**: every stream is extracted as **FULL\_TABLE** — each run fetches the current full report for the routine.

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/runs/scheduling-and-triggers), consider how often you want data to be extracted from this source.

<Warning>
  On the **free** Reports API tier, Mais Controle refreshes the exported data **once a week** and limits how many requests you can make per period (exceeding it returns HTTP 429). Schedule this source no more frequently than your contracted update cadence (weekly, daily, or hourly) to avoid quota errors and redundant runs.
</Warning>

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 Mais Controle and their corresponding fields. Each report is delivered as a CSV export and synced as **FULL\_TABLE** (no primary key or incremental filter).

<Note>
  All fields are extracted as **strings**. Mais Controle returns Brazilian-formatted values — decimals use a comma (`1.234,56`) and dates use `dd/mm/yyyy` — which are not valid numeric/date types. Cast them downstream (for example in a Query) when you need typed values.
</Note>

<AccordionGroup>
  <Accordion title="obras">
    Construction projects registry (*Cadastro de Obras*). **Sync:** Full table.

    * `id` - Project (obra) ID
    * `nome` - Project name
    * `status_obra` - Project status
    * `codigo_obra` - Project code
    * `tipo_obra` - Project type
    * `responsavel_obra` - Project owner
    * `responsavel_tecnico` - Technical lead
    * `area_total` - Total area
    * `unidade_area_total` - Total area unit
    * `cliente` - Client
  </Accordion>

  <Accordion title="lancamentos">
    Financial entries (*Lançamentos*). **Sync:** Full table.

    * `id_lancamento` - Entry ID
    * `id_obra` - Related project (obra) ID
    * `centro_de_custo` - Cost center
    * `fornecedor` - Supplier
    * `descricao` - Description
    * `numero_documento` - Document number
    * `data_competencia` - Accrual date
    * `valor_total_lancamento` - Total entry amount
    * `conta_bancaria` - Bank account
    * `categoria` - Category
    * `condicao_pagamento` - Payment terms
    * `numero_parcela` - Installment number
    * `valor_parcela` - Installment amount
    * `data_vencimento` - Due date
    * `indice_item_orcamento` - Linked budget item index
    * `possui_vinculo_estoque` - Whether it is linked to inventory
    * `ordem_de_compra` - Purchase order
    * `data_lancamento` - Entry date
  </Accordion>

  <Accordion title="pagamentos">
    Payments made against payables (*Pagamentos*). **Sync:** Full table.

    * `id_lancamento` - Related entry ID
    * `data_competencia` - Accrual date
    * `data_vencimento` - Due date
    * `data_pagamento` - Payment date
    * `numero_parcela` - Installment number
    * `valor_parcela` - Installment amount
    * `valor_pago` - Amount paid
    * `valor_desconto` - Discount amount
    * `valor_juros_e_multa` - Interest and penalty amount
    * `fornecedor` - Supplier
    * `descricao` - Description
    * `numero_documento` - Document number
    * `categoria` - Category
    * `grupo` - Group
    * `plano_de_conta` - Chart-of-accounts entry
    * `condicao_pagamento` - Payment terms
    * `forma_pagamento` - Payment method
    * `quem_paga` - Who pays
    * `conta_bancaria` - Bank account
    * `id_obra` - Project (obra) ID
    * `centro_de_custo` - Cost center
    * `indice_item_orcamento` - Linked budget item index
    * `ordem_de_compra` - Purchase order
  </Accordion>

  <Accordion title="faturamentos">
    Billing (*Faturamentos*). **Sync:** Full table.

    * `id_faturamento` - Billing ID
    * `id_obra` - Project (obra) ID
    * `centro_de_custo` - Cost center
    * `cliente` - Client
    * `descricao` - Description
    * `data_competencia` - Accrual date
    * `valor_bruto` - Gross amount
    * `impostos` - Taxes
    * `valor_liquido` - Net amount
    * `numero_parcela` - Installment number
    * `valor_parcela` - Installment amount
    * `data_vencimento` - Due date
    * `conta_bancaria` - Bank account
    * `natureza` - Nature
    * `condicao_recebimento` - Receipt terms
    * `numero_documento` - Document number
    * `vendedor` - Salesperson
    * `calculo_reajuste_acumulado` - Accumulated adjustment calculation
    * `tipo` - Type
    * `valor` - Amount
    * `tabela_reajuste` - Adjustment table
    * `reajuste` - Adjustment
    * `reajuste_acumulado` - Accumulated adjustment
    * `data_faturamento` - Billing date
  </Accordion>

  <Accordion title="recebimentos">
    Receipts against billing (*Recebimentos*). **Sync:** Full table.

    * `id_faturamento` - Related billing ID
    * `data_competencia` - Accrual date
    * `data_vencimento` - Due date
    * `data_recebimento` - Receipt date
    * `numero_parcela` - Installment number
    * `valor_parcela` - Installment amount
    * `valor_recebido` - Amount received
    * `valor_desconto` - Discount amount
    * `valor_juros_e_multa` - Interest and penalty amount
    * `id_obra` - Project (obra) ID
    * `centro_de_custo` - Cost center
    * `cliente` - Client
    * `descricao` - Description
    * `numero_documento` - Document number
    * `condicao_recebimento` - Receipt terms
    * `conta_bancaria` - Bank account
    * `forma_recebimento` - Receipt method
    * `natureza` - Nature
  </Accordion>

  <Accordion title="cronogramas">
    Project schedules (*Cronogramas*). **Sync:** Full table.

    * `id_obra` - Project (obra) ID
    * `obra` - Project name
    * `indice` - Item index
    * `etapa_item` - Stage / item
    * `descricao` - Description
    * `dias_uteis_desconsiderar` - Business days to disregard
    * `dias_uteis_planejado` - Planned business days
    * `dias_corridos_planejado` - Planned calendar days
    * `data_inicio_planejado` - Planned start date
    * `data_fim_planejado` - Planned end date
    * `dias_uteis_realizado` - Actual business days
    * `dias_corridos_realizado` - Actual calendar days
    * `data_inicio_realizado` - Actual start date
    * `data_fim_realizado` - Actual end date
  </Accordion>

  <Accordion title="items_orcamentos">
    Budget items (*Orçamentos*). **Sync:** Full table.

    * `id_obra` - Project (obra) ID
    * `obra` - Project name
    * `indice` - Item index
    * `etapa_item` - Stage / item
    * `codigo_item` - Item code
    * `base` - Reference base (e.g. SINAPI)
    * `tipo` - Type
    * `descricao` - Description
    * `unid` - Unit
    * `qtde` - Quantity
    * `custo_unitario_mao_de_obra` - Unit labor cost
    * `custo_unitario_material` - Unit material cost
    * `custo_unitario_equipamento` - Unit equipment cost
    * `custo_unitario_outros` - Unit other cost
    * `custo_unitario_item` - Unit item cost
    * `custo_total_mao_de_obra` - Total labor cost
    * `custo_total_material` - Total material cost
    * `custo_total_equipamento` - Total equipment cost
    * `custo_total_outros` - Total other cost
    * `custo_total_item` - Total item cost
    * `bdi_item` - Item BDI (markup)
    * `preco_unitario_mao_de_obra` - Unit labor price
    * `preco_unitario_material` - Unit material price
    * `preco_unitario_equipamento` - Unit equipment price
    * `preco_unitario_outros` - Unit other price
    * `preco_unitario_item` - Unit item price
    * `preco_total_mao_de_obra` - Total labor price
    * `preco_total_material` - Total material price
    * `preco_total_equipamento` - Total equipment price
    * `preco_total_outros` - Total other price
    * `preco_total_item` - Total item price
  </Accordion>

  <Accordion title="propostas">
    Proposals (*Propostas*). **Sync:** Full table.

    * `id_obra` - Project (obra) ID
    * `obra` - Project name
    * `cod_orcamento` - Budget code
    * `cliente` - Client
    * `status_proposta` - Proposal status
    * `data_criacao` - Creation date
    * `data_entrega` - Delivery date
    * `data_venda` - Sale date
    * `responsavel` - Owner
    * `cond_pgto` - Payment terms
    * `desconto` - Discount
    * `preco_total_com_desconto` - Total price with discount
  </Accordion>

  <Accordion title="medicoes">
    Measurements (*Medições*). **Sync:** Full table.

    Requires the **Medições** module. If your account has not contracted it, the report returns an error and the stream is skipped. When available, the fields are read directly from the report's CSV header.
  </Accordion>
</AccordionGroup>
