> 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/registro-de-transito.md).

# Registro de Trânsito

Integração de registros de trânsito via CGI: gerencie TrafficBlackList/TrafficRedList (insert/update/remove/find), importe/exporte listas em CSV e faça exportação assíncrona com status + download.

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

* Utilize **apenas um tipo de fonte por tarefa** (LocalStream, RemoteStream, VideoFile ou PictureFile) para evitar conflitos de processamento.
* Endpoints com **streaming multipart** mantêm conexão persistente, o cliente deve suportar leitura contínua de dados.
* Sempre trate o **Heartbeat** para manter sessões vivas e evitar timeout.
* Teste regras, filtros e modelagens em **ambiente controlado** antes de produção.
* Libere recursos encerrando pesquisas com **stopFind** após uso do token.
* Operações assíncronas (multiAppend, reAbstract, groupReAbstract) devem ser acompanhadas por **status/token**.
* Verifique **capacidade de armazenamento** antes de importar grandes volumes de imagens.
* Padronize timestamps em **UTC** para evitar divergências de busca.
* Garanta qualidade/dimensões adequadas das imagens, modelagem falha é frequentemente causada por resolução inválida.

***

### Inserir Registro na BlockList / AllowList

Permite inserir uma placa de veículo na:

* **TrafficBlackList** → Lista de bloqueio
* **TrafficRedList** → Lista de permissão

A placa deve ser única no banco de dados.

**Métodos:** `GET /cgi-bin/recordUpdater.cgi?action=insert`

### Parâmetros do Evento

<table><thead><tr><th>Nome</th><th>Tipo</th><th width="86.888916015625">Obrigatório</th><th>Descrição</th></tr></thead><tbody><tr><td>name</td><td>string</td><td>R</td><td>"TrafficBlackList" ou "TrafficRedList"</td></tr><tr><td>PlateNumber</td><td>string</td><td>R</td><td>Número da placa (máx. 31 caracteres, único)</td></tr><tr><td>MasterOfCar</td><td>string</td><td>O</td><td>Nome do proprietário</td></tr><tr><td>PlateColor</td><td>string</td><td>O</td><td>Cor da placa</td></tr><tr><td>PlateType</td><td>string</td><td>O</td><td>Tipo da placa</td></tr><tr><td>VehicleType</td><td>string</td><td>O</td><td>Tipo do veículo</td></tr><tr><td>VehicleColor</td><td>string</td><td>O</td><td>Cor do veículo</td></tr><tr><td>BeginTime</td><td>string</td><td>O</td><td>Data início validade</td></tr><tr><td>CancelTime</td><td>string</td><td>O</td><td>Data fim validade</td></tr><tr><td>AuthorityList.OpenGate</td><td>bool</td><td>O</td><td>Somente para AllowList</td></tr></tbody></table>

**Exemplo Requisição**

```http
http://<ip>/cgi-bin/recordUpdater.cgi?action=insert&name=TrafficBlackList&PlateNumber=AC
00001&MasterOfCar=ZhangSan&PlateColor=Yellow&VehicleColor=Blue&BeginTime=2011-01-01%201
2:00:00&CancelTime=2011-01-10%2012:00:00
```

**Exemplo Resposta (Sucesso):**

Formato: key=value

| Campo | Tipo | Descrição                              |
| ----- | ---- | -------------------------------------- |
| RecNo | int  | ID do novo registro (-1 se assíncrono) |

Exemplo:

```
RecNo=12345
```

***

### Atualizar Registro

**Tópico**: Atualiza registro existente na BlockList ou AllowList.

**Métodos:** `GET /cgi-bin/recordUpdater.cgi?action=update`

### Parâmetros do Evento

Mesmo conjunto da inserção + campo obrigatório:

| Nome  | Tipo | Obrigatório |
| ----- | ---- | ----------- |
| recno | int  | Sim         |

**Exemplo Requisição**

```http
http://<ip>/cgi-bin/recordUpdater.cgi?action=update&name=TrafficBlackList&recno=12345&Pl
ateNumber=AC00001&MasterOfCar=ZhangSan&PlateColor=Yellow&VehicleColor=Blue&BeginTime=2
011-01-01%2012:00:00&CancelTime=2011-01-10%2012:00:00
```

**Exemplo Resposta (Sucesso):**

```
OK
```

***

### Remover Registro

**Tópico:** Remove um registro existente da BlockList ou AllowList com base no identificador único `RecNo`.\
A operação exclui permanentemente o registro do banco de dados do dispositivo.

**Métodos:** `GET /cgi-bin/recordUpdater.cgi?action=remove`

### Parâmetros do Evento

| Nome  | Tipo   | Obrigatório |
| ----- | ------ | ----------- |
| name  | string | Sim         |
| recno | int    | Sim         |

**Exemplo Requisição**

```http
http://<ip>/cgi-bin/recordUpdater.cgi?action=remove&name=TrafficBlackList&recno=12345
```

**Exemplo Resposta (Sucesso):**

```
OK
```

***

### Consultar Registro&#x20;

**Tópico:** Realiza consulta de registros armazenados na BlockList ou AllowList com base em filtros opcionais como número da placa e intervalo de tempo.\
A operação suporta paginação e retorna múltiplos registros estruturados.

**Métodos:** `GET /cgi-bin/recordFinder.cgi?action=find`

### Parâmetros do Evento

| Nome                       | Tipo   | Obrigatório | Descrição                          |
| -------------------------- | ------ | ----------- | ---------------------------------- |
| name                       | string | R           | TrafficBlackList ou TrafficRedList |
| count                      | int    | O           | Máximo de registros                |
| StartTime                  | string | O           | Filtro por data inicial            |
| EndTime                    | string | O           | Filtro por data final              |
| condition.PlateNumber      | string | O           | Busca exata                        |
| condition.PlateNumberVague | string | O           | Busca parcial                      |
| condition.QueryCount       | int    | O           | Limite de retorno                  |
| condition.QueryResultBegin | int    | O           | Offset                             |

**Exemplo Requisição**&#x20;

```http
http://<ip>/cgi-bin/recordFinder.cgi?action=find&name=TrafficBlackList&condition.PlateNumb
er=AC00001&StartTime=123456700&EndTime=123456800&count=100
```

**Exemplo Resposta (Sucesso):**

```powershell
totalCount=1000 
found=100 
records[0].RecNo=12345 
records[0].CreateTime=123456789 
records[0].PlateNumber=AC00001 
records[0].MasterOfCar=ZhangSan 
… 
records[1].RecNo=13579 
records[1].CreateTime=123456799 
records[1].PlateNumber=AC00001 
records[1].MasterOfCar=LiSi 
… 
```

| Campo      | Tipo   | Descrição          |
| ---------- | ------ | ------------------ |
| totalCount | int    | Total encontrado   |
| found      | int    | Total retornado    |
| records\[] | object | Lista de registros |

**Estrutura de cada registro:**

| Campo       | Tipo              |
| ----------- | ----------------- |
| RecNo       | int               |
| CreateTime  | int               |
| PlateNumber | string            |
| MasterOfCar | string            |
| ...         | conforme inserção |

***

### RemoveEx (Remoção por Placa)

**Tópico:** Permite remover registro pelo número da placa.

**Método:** `GET /cgi-bin/recordUpdater.cgi?action=removeEx`

### Parâmetros do Evento

| Nome        | Tipo   | Obrigatório |
| ----------- | ------ | ----------- |
| name        | string | Sim         |
| PlateNumber | string | Opcional    |
| recno       | int    | Opcional    |

**Exemplo Requisição**

```http
http://<ip>/cgi-bin/recordUpdater.cgi?action=removeEx&name=TrafficBlackList&PlateNumber
=AC00001
```

**Exemplo Resposta (Sucesso):**

```
OK
```

***

### Importar BlockList / AllowList

**Tópico:** Permite enviar arquivo CSV contendo múltiplos registros.

**Método**: `POST /cgi-bin/trafficRecord.cgi?action=uploadFile`

### Parâmetros (URL)

| Nome   | Tipo   | Obrigatório                                  |
| ------ | ------ | -------------------------------------------- |
| Type   | string | Sim ("TrafficBlackList" ou "TrafficRedList") |
| format | string | Sim (CSV)                                    |
| code   | string | Sim ("utf-8" ou "GB2312")                    |

**Exemplo Requisição**

```powershell
POST http://192.168.1.108/cgi-bin/trafficRecord.cgi?action=uploadFile&Type=TrafficBlackList&format=
CSV&code=utf-8 HTTP/1.1 
User-Agent: Client/1.0 
Content-Type: multipart/form-data; boundary=<boundary> 
Content-Length:XXXX 
<File data….> --<boundary>-- --<boundary> 
Content-Disposition: form-data; name="blackfile"; filename="TrafficBlackList.CSV" 
Content-Type: application/vnd.ms-excel
```

**Exemplo Resposta (Sucesso):**

```
OK
```

***

### Exportar BlockList / AllowList (Assíncrono)

#### 1. Iniciar Exportação

```
GET /cgi-bin/recordUpdater.cgi?action=exportAsyncFile
```

Parâmetros:

| Nome     | Obrigatório |
| -------- | ----------- |
| name     | Sim         |
| filename | Opcional    |
| format   | Sim (CSV)   |
| code     | Sim         |

**Exemplo Requisição**

```http
http://<ip>/cgi-bin/recordUpdater.cgi?action=exportAsyncFile&name=TrafficBlackList&filename=Re
cordFile01&format=CSV&code=utf-8
```

**Exemplo Resposta (Sucesso):**

```
OK
```

***

#### 2. Verificar Status

```
GET /cgi-bin/recordUpdater.cgi?action=getFileExportState
```

**Exemplo Requisição**

```http
http://<ip>/cgi-bin/recordUpdater.cgi?action=getFileExportState&name=TrafficBlackList
```

**Exemplo Resposta (Sucesso):**

```
state=0 
```

Resposta:

| state | Significado          |
| ----- | -------------------- |
| 0     | Sucesso              |
| 1     | Falha                |
| 2     | Em execução          |
| 3     | Arquivo inválido     |
| 4     | Arquivo muito grande |
| 5     | Dados duplicados     |

***

#### 3. Download

```
GET /cgi-bin/trafficRecord.cgi?action=downloadFile
```

**Exemplo Requisição**

```http
http://<ip>/cgi-bin/trafficRecord.cgi?action=downloadFile&Type=TrafficBlackList&filename=RecordF
ile01
```

Exemplo Resposta (Sucesso):

Retorna arquivo binário.

```
HTTP/1.1 200 OK 
Server: Device/1.0 
Content-Type: application/octet-stream 
Content-Length: xxx 
 
<File Data…> 
```

***

### Exportar Registros de TrafficFlow

**Método**: `GET /cgi-bin/recordUpdater.cgi?action=exportAsyncFile&name=TrafficFlow`

**Exemplo Requisição**

```http
http://<ip>/cgi-bin/recordUpdater.cgi?action=exportAsyncFile&name=TrafficFlow&filename=Record
File01&format=CSV&code=utf-8
```

**Exemplo Resposta (Sucesso):**

```
OK
```

Processo idêntico ao export da lista, porém:

| name        | Valor fixo |
| ----------- | ---------- |
| TrafficFlow | Sim        |

Fluxo:

1. exportAsyncFile
2. getFileExportState
3. downloadFile

***

### Exportar Traffic Snap Event Info

**Tópico**: Exporta registros de eventos de snapshot com base em período específico.

#### 1. Iniciar Exportação

```
GET /cgi-bin/recordUpdater.cgi?action=exportAsyncFileByConditon
```

**Exemplo Requisição**

```http
http://<ip>/cgi-bin/recordUpdater.cgi?action=getFileExportState&name=TrafficFlow 
```

**Exemplo Resposta (Sucesso):**

```
state=0 
```

### Parâmetros

| Nome                | Tipo   | Obrigatório                  |
| ------------------- | ------ | ---------------------------- |
| name                | string | Sim ("TrafficSnapEventInfo") |
| filename            | string | Opcional                     |
| format              | string | Sim (CSV)                    |
| code                | string | Sim                          |
| condition.startTime | string | Sim (UTC segundos)           |
| condition.endTime   | string | Sim                          |

***

#### 2. Verificar Status

**Método: `GET`**` ``/cgi-bin/trafficRecord.cgi?action=downloadFile&Type=TrafficFlow`

**Exemplo Requisição**

```http
http://<ip>/cgi-bin/trafficRecord.cgi?action=downloadFile&Type=TrafficFlow&filename=RecordFile0
1
```

**Exemplo Resposta (Sucesso):**

```json
HTTP/1.1 200 OK 
Server: Device/1.0 
Content-Type: application/octet-stream 
Content-Length: xxx 
<File Data…>
```

Mesmo endpoint getFileExportState.

***

#### 3. Download

```
GET /cgi-bin/trafficRecord.cgi?action=downloadFile
```

Retorno binário.

***

#### Fluxo Geral de Exportação Assíncrona

1. Solicitar exportação
2. Receber OK
3. Consultar status até state=0
4. Realizar download
5. Validar arquivo

***

Notas Finais:

* Validar unicidade da placa antes de inserir.
* Implementar logs detalhados para auditoria.
* Utilizar ambiente de homologação antes de produção.
* Monitorar integridade dos arquivos exportados.
* Garantir conformidade com políticas internas de segurança.
* Documentar versões da API utilizadas.
* Testar cenários de falha (timeout, perda de conexão, erro de disco).

***


---

# 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/registro-de-transito.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.
