> For the complete documentation index, see [llms.txt](https://portal-integracao.intelbras.com.br/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://portal-integracao.intelbras.com.br/cameras-and-gravadores/integracao-api-cftvip-e-mibo/cameras-e-gravadores/gestao-de-configuracoes.md).

# Gestão de Configurações

Integração de gestão de configurações via /cgi-bin/configManager.cgi: getConfig/setConfig/addConfig/removeConfig, restore e restoreExcept. Inclui exemplos por name e retorno OK.

## Dicas & Boas Práticas <a href="#dicas-and-boas-praticas" id="dicas-and-boas-praticas"></a>

* Prefira sempre o **modo Webhook (Push ativo)** quando disponível.
* Utilize **HTTPS** em conjunto com **HTTP Digest Authentication** para maior segurança nas integrações.
* Trate corretamente os **eventos**, **imagens** e **payloads JSON** recebidos, validando estrutura e conteúdo.
* Monitore eventos de **Heartbeat (KeepAlive)** para validar a disponibilidade e o estado do dispositivo.
* Evite o uso de ferramentas como **Postman** ou **Insomnia** para eventos em tempo real, pois não suportam conexões persistentes.
* Implemente tratamento de **exceções**, **timeouts** e **reenvio de eventos** para garantir estabilidade e confiabilidade do sistema.

***

### O que é URL Encoding?

É o processo de converter caracteres especiais para um formato válido em URL.

#### Exemplos comuns:

| Caractere | Codificação |
| --------- | ----------- |
| Espaço    | `%20`       |
| &         | `%26`       |
| =         | `%3D`       |
| +         | `%2B`       |
| #         | `%23`       |

#### Exemplo de URL

Original:

```
General.MachineAddress=Rua São José 123
```

Correta:

```
General.MachineAddress=Rua%20São%20José%20123
```

***

### Impacto das Alterações de Configuração

As operações `setConfig`, `addConfig`, `removeConfig`, `restore` e `restoreExcept` podem causar impacto operacional imediato.

### Possíveis efeitos:

* Reinício automático de serviços internos
* Interrupção de stream RTSP ativo
* Reinicialização de módulos de vídeo
* Queda temporária da interface web
* Reinicialização completa do equipamento (dependendo da configuração alterada)

***

### Estrutura de Resposta (Padrão table)

As respostas do `getConfig` seguem o padrão:

```
table.<NomeConfig>.<Campo>=Valor
```

#### Estrutura:

| Parte       | Significado          |
| ----------- | -------------------- |
| table       | Prefixo fixo         |
| General     | Nome da configuração |
| MachineID   | Campo                |
| 20832748927 | Valor                |

#### Exemplo com Array:

Algumas configurações retornam múltiplos índices:

```
table.UPnP[0].Enable=true
table.UPnP[0].Port=8080
```

#### Estrutura:

| Parte    | Significado            |
| -------- | ---------------------- |
| UPnP\[0] | Índice da configuração |
| Enable   | Campo                  |
| true     | Valor                  |

***

### Obter Configuração <a href="#dicas-and-boas-praticas" id="dicas-and-boas-praticas"></a>

**Tópico:** Obtenha detalhes de configuração por nome.&#x20;

* Método: `GET /cgi-bin/configManager.cgi?action=getConfig`

**Exemplo**:

```http
http://<ip>/cgi-bin/configManager.cgi?action=getConfig&name=General
```

**Resposta:**

```
table.General.MachineID=20832748927 
table.General.MachineName=DVR001 
table.General.MachineAddress=XXX Road 
… 
```

### Definir Configurações

**Tópico**: Defina o detalhe de configuração pelo nome.

* Método: `GET /cgi-bin/configManager.cgi?action=setConfig`

<table><thead><tr><th width="292.33331298828125">Parâmetro</th><th>Valor</th></tr></thead><tbody><tr><td><code>table.General.LocalNo</code></td><td><code>8</code></td></tr><tr><td><code>table.General.LockLoginEnable</code></td><td><code>true</code></td></tr><tr><td><code>table.General.LockLoginTimes</code></td><td><code>5</code></td></tr><tr><td><code>table.General.LoginFailLockTime</code></td><td><code>300</code></td></tr><tr><td><code>table.General.MachineName</code></td><td><code>OPA0000997675</code></td></tr><tr><td><code>table.General.MaxOnlineTime</code></td><td><code>3600</code></td></tr></tbody></table>

**Exemplo**:

```http
http://<ip>/cgi-bin/configManager.cgi?action=setConfig&General.MachineID=20832748927&
General.MachineName=DVR001&General.MachineAddress=XXX%20Road
```

**Resposta:**

```
OK
```

### Adicionar Configuração

**Tópico:** O nome da configuração é colocado na URL na forma de chave-valor; o campo de configuração específico pode ser obtido através do getConfig.

* Método: `GET /cgi-bin/configManager.cgi?action=addConfig`

**Exemplo**:

```http
http://<ip>/cgi-bin/configManager.cgi?action=addConfig&General.MachineAddress=XXX%20
Road
```

**Resposta:**

```
OK
```

### Remover Configuração

**Tópico:** Campos de configuração específicos podem ser obtidos através de getConfig. Apenas campos de configuração podem ser excluídos, não itens de configuração.

* Método: `GET /cgi-bin/configManager.cgi?action=removeConfig`

**Exemplo**:

```http
http://<ip>/cgi-bin/configManager.cgi?action=removeConfig&name=General.MachineAddress
```

**Resposta:**

```
OK
```

### Restaurar Configuração

**Tópico:** Restaurar as configurações especificadas para os valores padrão.

* Método: `GET /cgi-bin/configManager.cgi?action=restore`

**Exemplo**:

```http
http://<ip>/cgi-bin/configManager.cgi?action=restore&names[0]=General&names[1]=UPnP
```

**Resposta:**

```
OK
```

### Restaurar o Sistema Mantendo as Configurações

**Tópico:** Restaurar todas as outras configurações, exceto as configurações especificadas, para os valores padrão.

* Método: `GET /cgi-bin/configManager.cgi?action=restoreExcept`

**Exemplo**:

```http
http://<ip>/cgi-bin/configManager.cgi?action=restoreExcept&names[0]=General&names[1]=UPnP
```

**Resposta:**

```
OK
```

***

### Considerações Técnicas Importantes

* Todas as requisições exigem autenticação via **HTTP Digest Authentication**.
* Recomenda-se uso exclusivo de **HTTPS**.
* Parâmetros enviados devem estar devidamente **URL Encoded**.
* Alterações podem:
  * Interromper streams ativos
  * Reiniciar serviços internos
  * Exigir reboot do equipamento
* Sempre validar:
  * Permissões do usuário
  * Impacto em ambiente produtivo
  * Dependências entre configurações

***

Notas finais:

* Todas as operações de configuração utilizam o endpoint\
  `/cgi-bin/configManager.cgi` com diferentes valores para o parâmetro `action`.
* Os métodos `getConfig`, `setConfig`, `addConfig` e `removeConfig` operam sobre **nomes de configuração**, e cada nome possui campos e estruturas próprias.
* Campos válidos para adição, alteração ou remoção podem ser obtidos previamente por meio do método `getConfig`.
* Todas as requisições retornam **`OK`** no corpo da resposta quando executadas com sucesso.
* Recomenda-se validar permissões, autenticação e impacto das alterações antes de aplicar configurações em ambientes de produção.

***


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://portal-integracao.intelbras.com.br/cameras-and-gravadores/integracao-api-cftvip-e-mibo/cameras-e-gravadores/gestao-de-configuracoes.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
