> 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/analise-de-video.md).

# Análise de Vídeo

Eventos de análise de vídeo via assinatura com snapshot: stream HTTP multipart (Start/Stop/Pulse), códigos e parâmetros para detecções (linha/região, objetos, fila, fumaça, incêndio).

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

* Mantenha a conexão HTTP de assinatura **sempre ativa**, garantindo que o cliente esteja preparado para reconexão automática em caso de queda de rede.
* Utilize o campo **EventBaseInfo.Code** para identificar o tipo de evento e implementar tratamentos específicos para cada código no sistema assinante.
* Sempre valide o campo **EventBaseInfo.Action** (`Start`, `Stop` ou `Pulse`) antes de processar o evento, evitando interpretações incorretas do ciclo do evento.
* Ao lidar com múltiplos eventos simultâneos, utilize **GroupID**, **CountInGroup** e **IndexInGroup** para correlacionar corretamente eventos pertencentes ao mesmo grupo.

***

### O que é snap subscription?

Todos esses eventos só aparecem se você fizer uma **assinatura de eventos com snapshot**.

Enquanto a conexão estiver aberta:

* A câmera envia eventos
* Envia imagens
* Envia Start / Stop / Pulse

### Tipos de Event Action&#x20;

| Action | Significado                  |
| ------ | ---------------------------- |
| Start  | Evento começou               |
| Stop   | Evento terminou              |
| Pulse  | Evento pontual (sem duração) |

### Como Realizar o Teste?

#### Passo 1 — Habilitar no dispositivo

No **web da câmera ou NVR**:

* Ativar o tipo de análise (linha, região, EPI, etc.)
* Configurar:
  * Região
  * Linha
  * Tempo
  * Sensibilidade
* Ativar **Snapshot**

#### Passo 2 — Fazer a assinatura de eventos

Você precisa de um cliente que **aguente stream HTTP**.

Funciona:

* `curl -N`
* Python (`requests` com `stream=True`)
* Aplicação backend (Java, Go, Node)

Exemplo:

```http
curl -N -X POST http://CAMERA_IP/api/event/subscribe \  -H "X-Subject-Token: TOKEN"
```

#### Passo 3 — Provocar o evento

Nesta etapa, o objetivo é **criar no vídeo uma condição que corresponda à regra configurada**, para que o mecanismo de análise de vídeo gere a notificação.

1. **Garantir que a cena esteja estável**
   * Câmera fixa
   * Iluminação constante
   * Área de análise corretamente delimitada
2. **Introduzir um elemento na cena**
   * Pode ser um objeto ou uma pessoa
   * O elemento deve permanecer visível por tempo suficiente para ser reconhecido pelo algoritmo
3. **Modificar o estado da cena**
   * Alterar a posição, presença ou comportamento do elemento
   * A mudança deve estar de acordo com a condição definida na regra de análise
4. **Manter a alteração por tempo mínimo configurado**
   * Muitos eventos dependem de temporização
   * Mudanças rápidas podem não gerar detecção
5. **Observar o retorno da assinatura de eventos**
   * Recebimento do evento com `Action=Start`
   * Recebimento posterior de `Action=Stop`, quando aplicável

#### Passo 4 — Verificar o retorno

Você deve receber:

```json
Events[0].EventBaseInfo.Code=XXXEvents[0].EventBaseInfo.Action=StartEvents[0].Object.BoundingBox[...]
```

Logo depois:

```json
Content-Type: image/jpeg
```

***

### Objeto Abandonado

**Tópico:** Detectar quando um objeto previamente presente na cena monitorada deixa de estar visível e notificar o sistema assinante.

**Código do evento:**\
`LeftDetection`

**Ação do evento:**\
(`Start` / `Stop`)

#### Parâmetros do Evento

| Nome               | Tipo       | R/O | Descrição                                                                                                                         |
| ------------------ | ---------- | --- | --------------------------------------------------------------------------------------------------------------------------------- |
| Object             | object     | R   | Elemento associado ao evento                                                                                                      |
| Object.BoundingBox | uint16\[4] | R   | Coordenadas do retângulo do elemento detectado. Os valores representam `[x1, y1, x2, y2]`, normalizados no intervalo de `0–8192`. |

**Formato da Resposta**

O evento é enviado por meio de uma conexão HTTP persistente, no formato **multipart**, contendo:

* Uma parte textual (`key=value`) com os dados do evento

**Exemplo de Resposta**

```http
--<boundary> 
Content-Type: text/plain 
Content-Length: <length> 
Events[0].EventBaseInfo.Code=LeftDetection 
Events[0].EventBaseInfo.Action=Start 
Events[0].EventBaseInfo.Index=0 
Events[0].Object.BoundingBox[0]= 4392 
Events[0].Object.BoundingBox[1]=4136 
Events[0].Object.BoundingBox[2]=6960 
Events[0].Object.BoundingBox[3]=6512 
…… --<boundary> 
Content-Type: image/jpeg 
Content-Length: <image size> 
<Jpeg image data> --<boundary>
```

***

### Detecção de Remoção

**Tópico:** Evento gerado quando um elemento previamente presente na cena monitorada é identificado como removido, conforme as regras de análise configuradas.

**Código do evento:**\
`TakenAwayDetection`

**Ação do evento:**\
`Start` / `Stop`

#### Parâmetros do Evento

| Nome               | Tipo       | R/O | Descrição                                                                                                                       |
| ------------------ | ---------- | --- | ------------------------------------------------------------------------------------------------------------------------------- |
| Object             | object     | R   | Elemento associado ao evento                                                                                                    |
| Object.BoundingBox | uint16\[4] | R   | Retângulo delimitador do elemento detectado. Representa `[x1, y1, x2, y2]`, com coordenadas normalizadas no intervalo `0–8192`. |

**Exemplo de Resposta**

```http
--<boundary> 
Content-Type: text/plain 
Content-Length: <length> 
Events[0].EventBaseInfo.Code=LeftDetection 
Events[0].EventBaseInfo.Action=Start 
Events[0].EventBaseInfo.Index=0 
Events[0].Object.BoundingBox[0]= 4392 
Events[0].Object.BoundingBox[1]=4136 
Events[0].Object.BoundingBox[2]=6960 
Events[0].Object.BoundingBox[3]=6512 
…… --<boundary> 
Content-Type: image/jpeg 
Content-Length: <image size> 
<Jpeg image data> --<boundary> 
```

***

### Detecção de Deslocamento

**Tópico:** Evento gerado quando um elemento apresenta comportamento de deslocamento contínuo dentro da região configurada de análise.

**Código do evento:**\
`WanderDetection`

**Ação do evento:**\
`Start` / `Stop`

#### Parâmetros do Evento

| Nome                   | Tipo            | R/O | Descrição                                                                                                    |
| ---------------------- | --------------- | --- | ------------------------------------------------------------------------------------------------------------ |
| Objects                | object\[]       | R   | Lista de elementos detectados                                                                                |
| Objects\[].BoundingBox | uint16\[4]      | R   | Retângulo delimitador do elemento detectado, normalizado de `0–8192`.                                        |
| Tracks                 | int\[]\[20]\[2] | O   | Trilhas de deslocamento dos elementos, representadas por polilinhas. Cada ponto contém coordenadas `[x, y]`. |
| DetectRegion           | int\[20]\[2]    | R   | Região de detecção configurada, representada por até 20 pontos `[x, y]`.                                     |

**Exemplo de Resposta**

```http
--<boundary> 
Content-Type: text/plain 
Content-Length: <length> 
Events[0].EventBaseInfo.Code=TakenAwayDetection 
Events[0].EventBaseInfo.Action=Start 
Events[0].EventBaseInfo.Index=0 
Events[0].Object.BoundingBox[0]= 4392 
Events[0].Object.BoundingBox[1]=4136 
Events[0].Object.BoundingBox[2]=6960 
Events[0].Object.BoundingBox[3]=6512 
…… --<boundary> 
Content-Type: image/jpeg 
Content-Length: <image size> 
<Jpeg image data> --<boundary> 
```

### Detecção de Permanência Prolongada

**Tópico :** Evento gerado quando um elemento apresenta comportamento de permanência contínua dentro da região configurada de análise.

**Código do evento:**\
`WanderDetection`

**Ação do evento:**\
`Start` / `Stop`

#### Parâmetros do Evento

| Nome                   | Tipo            | R/O | Descrição                                                                                                    |
| ---------------------- | --------------- | --- | ------------------------------------------------------------------------------------------------------------ |
| Objects                | object\[]       | R   | Lista de elementos detectados                                                                                |
| Objects\[].BoundingBox | uint16\[4]      | R   | Retângulo delimitador do elemento detectado, normalizado de `0–8192`.                                        |
| Tracks                 | int\[]\[20]\[2] | O   | Trilhas de deslocamento dos elementos, representadas por polilinhas. Cada ponto contém coordenadas `[x, y]`. |
| DetectRegion           | int\[20]\[2]    | R   | Região de detecção configurada, representada por até 20 pontos `[x, y]`.                                     |

**Exemplo de Resposta**

```http
--<boundary> 
Content-Type: text/plain 
Content-Length: <length> 
 
Events[0].EventBaseInfo.Code=WanderDetection 
Events[0].EventBaseInfo.Action=Start 
Events[0].EventBaseInfo.Index=0 
Events[0].Objects[0].BoundingBox[0]= 4392 
Events[0].Objects[0].BoundingBox[1]=4136 
Events[0].Objects[0].BoundingBox[2]=6960 
Events[0].Objects[0].BoundingBox[3]=6512 
Events[0].Tracks[0][0][0]=23 
Events[0].Tracks[0][0][1]=23 
Events[0].Tracks[0][1][0]=500 
Events[0].Tracks[0][1][1]=401 
Events[0].Tracks[0][2][0]=1003 
Events[0].Tracks[0][2][1]=192 
… 
Events[0].DetectRegion[0][0]=192 
Events[0].DetectRegion[0][1]=192 
Events[0].DetectRegion[1][0]=562 
Events[0].DetectRegion[1][1]=552 
Events[0].DetectRegion[2][0]=600 
Events[0].DetectRegion[2][1]=733 
Events[0].DetectRegion[3][0]=200 
Events[0].DetectRegion[3][1]=270 
… --<boundary> 
Content-Type: image/jpeg 
Content-Length: <image size> 
 
<Jpeg image data> --<boundary>
```

***

### Detecção de Permanência

**Tópico:** Evento gerado quando um elemento permanece dentro de uma região definida por um período superior ao configurado.

**Código do evento:**\
`StayDetection`

**Ação do evento:**\
`Start` / `Stop`

#### Parâmetros do Evento

| Nome                   | Tipo         | R/O | Descrição                                     |
| ---------------------- | ------------ | --- | --------------------------------------------- |
| Object                 | object       | R   | Elemento principal associado ao evento        |
| Object.BoundingBox     | uint16\[4]   | R   | Retângulo delimitador do elemento detectado   |
| Objects                | object\[]    | R   | Lista de elementos detectados simultaneamente |
| Objects\[].BoundingBox | uint16\[4]   | R   | Retângulo delimitador de cada elemento        |
| DetectRegion           | int\[20]\[2] | R   | Região configurada para detecção              |
| AreaID                 | int          | O   | Identificador da área (inicia em 1)           |
| PresetID               | int          | O   | Identificador do preset associado             |

**Exemplo de Resposta**

```http
--<boundary> 
Content-Type: text/plain 
Content-Length: <length> 
 
Events[0].EventBaseInfo.Code=StayDetection 
Events[0].EventBaseInfo.Action=Start 
Events[0].EventBaseInfo.Index=0 
Events[0].Object.BoundingBox[0]= 4392 
Events[0].Object.BoundingBox[1]=4136 
Events[0].Object.BoundingBox[2]=6960 
Events[0].Object.BoundingBox[3]=6512 
Events[0].Objects[0].BoundingBox[0]= 4392 
Events[0].Objects[0].BoundingBox[1]=4136 
Events[0].Objects[0].BoundingBox[2]=6960 
Events[0].Objects[0].BoundingBox[3]=6512 
Events[0].DetectRegion[0][0]=192 
Events[0].DetectRegion[0][1]=192 
Events[0].DetectRegion[1][0]=562 
Events[0].DetectRegion[1][1]=552 
Events[0].DetectRegion[2][0]=600 
Events[0].DetectRegion[2][1]=733 
Events[0].DetectRegion[3][0]=200 
Events[0].DetectRegion[3][1]=270 
… 
Events[0].AreaID=2 
Events[0].PresetID=1 --<boundary> 
Content-Type: image/jpeg 
Content-Length: <image size> 
<Jpeg image data> --<boundary> 
```

***

### Traço Humano

**Tópico:** Evento pontual gerado quando atributos humanos são identificados no elemento detectado.

**Código do evento:**\
`HumanTrait`

**Ação do evento:**\
`Pulse`

**Índice do evento:**\
Canal associado ao evento, iniciando em `0`.

#### Parâmetros do Evento

**HumanAttributes**

| Nome                          | Tipo    | R/O | Descrição                                     |
| ----------------------------- | ------- | --- | --------------------------------------------- |
| BoundingBox                   | int\[4] | O   | Retângulo delimitador do corpo humano         |
| Sex                           | string  | O   | Sexo identificado (`Man`, `Woman`, `Unknown`) |
| Age                           | int     | O   | Idade estimada                                |
| CoatColor                     | string  | O   | Cor do vestuário superior                     |
| CoatType                      | int     | O   | Tipo do vestuário superior                    |
| TrousersColor                 | string  | O   | Cor da vestimenta inferior                    |
| HasHat / HasBag / HasUmbrella | int     | O   | Indicadores de acessórios                     |

**FaceAttributes (quando disponíveis)**

| Nome                               | Tipo       | R/O | Descrição                      |
| ---------------------------------- | ---------- | --- | ------------------------------ |
| BoundingBox                        | int\[4]    | O   | Retângulo delimitador do rosto |
| Sex                                | string     | O   | Sexo                           |
| Age                                | int        | O   | Idade                          |
| Feature                            | char\[]\[] | O   | Características faciais        |
| Eye / Mouth / Mask / Beard / Glass | int        | O   | Estados faciais detectados     |

**Exemplo de Resposta**

```http
--<boundary> 
Content-Type: text/plain 
Content-Length: <length> 
 
Events[0].EventBaseInfo.Code=HumanTrait 
Events[0].EventBaseInfo.Action=Pulse 
Events[0].EventBaseInfo.Index=0 
Events[0].HumanAttributes.BoundingBox[0]=1341 
Events[0].HumanAttributes.BoundingBox[1]=2451 
Events[0].HumanAttributes.BoundingBox[2]=4513 
Events[0].HumanAttributes.BoundingBox[3]=4135 
Events[0].HumanAttributes.Sex=Man 
Events[0].HumanAttributes.Age=30 
Events[0].HumanAttributes.CoatColor=White 
Events[0].HumanAttributes.CoatType=1 
Events[0].HumanAttributes.TrousersColor=Black 
Events[0].HumanAttributes.TrousersType=1 
Events[0].HumanAttributes.HasHat=1 
Events[0].HumanAttributes.HasBag=2 
Events[0].FaceAttributes.BoundingBox[0]=1341 
Events[0].FaceAttributes.BoundingBox[1]=2451 
Events[0].FaceAttributes.BoundingBox[2]=4513 
Events[0].FaceAttributes.BoundingBox[3]=4135 
Events[0].FaceAttributes.Sex=Man 
Events[0].FaceAttributes.Age=30 
Events[0].FaceAttributes.Feature[0]=Smile 
Events[0].FaceAttributes.Eye=2 
Events[0].FaceAttributes.Mouth=1 
Events[0].FaceAttributes.Glass=1 --<boundary> 
Content-Type: image/jpeg 
Content-Length: <image size> 
<Jpeg image data> --<boundary> 
```

### Detecção De Linha Cruzada

**Tópico:** Enviado quando um objeto cruza uma linha configurada.

**Código do Evento:**\
`CrossLineDetection`

**Ação do Evento:**\
`Start` / `Stop`

#### Parâmetros do Evento

| Nome             | Tipo               | R/O | Descrição              |
| ---------------- | ------------------ | --- | ---------------------- |
| Object / Objects | object / object\[] | R/O | Objeto(s) detectado(s) |
| DetectLine       | int\[20]\[2]       | R   | Linha de detecção      |
| Direction        | string             | O   | Direção do cruzamento  |

**Exemplo de Resposta**

```http
--<boundary> 
Content-Type: text/plain 
Content-Length: <length> 
 
Events[0].EventBaseInfo.Code=CrossLineDetection 
Events[0].EventBaseInfo.Action=Start 
Events[0].EventBaseInfo.Index=0 
Events[0].Object.BoundingBox[0]= 4392 
Events[0].Object.BoundingBox[1]=4136 
Events[0].Object.BoundingBox[2]=6960 
Events[0].Object.BoundingBox[3]=6512 
Events[0].Objects[0].BoundingBox[0]= 4392 
Events[0].Objects[0].BoundingBox[1]=4136 
Events[0].Objects[0].BoundingBox[2]=6960 
Events[0].Objects[0].BoundingBox[3]=6512 
Events[0].DetectLine[0][0]=192 
Events[0].DetectLine[0][1]=192 
Events[0].DetectLine[1][0]=562 
Events[0].DetectLine[1][1]=552 
Events[0].DetectLine[2][0]=600 
Events[0].DetectLine[2][1]=733 
Events[0].DetectLine[3][0]=200 
Events[0].DetectLine[3][1]=270 
… 
Events[0].Direction=LeftToRight 
… --<boundary> 
Content-Type: image/jpeg 
Content-Length: <image size> 
 
<Jpeg image data> --<boundary> 
```

***

### Detecção Entre Regiões

**Tópico:** Enviado quando um objeto entra, sai ou cruza uma região configurada.

**Código do Evento:**\
`CrossRegionDetection`

**Ação do Evento:**\
`Start` / `Stop`

#### Parâmetros do Evento

| Nome             | Tipo               | R/O | Descrição                           |
| ---------------- | ------------------ | --- | ----------------------------------- |
| Object / Objects | object / object\[] | R/O | Objeto(s) detectado(s)              |
| DetectRegion     | int\[20]\[2]       | R   | Região de detecção                  |
| Action           | string             | R   | Appear / Disappear / Cross / Inside |
| Direction        | string             | O   | Direção do movimento                |

**Exemplo de Resposta**

```http
--<boundary> 
Content-Type: text/plain 
Content-Length: <length> 
Events[0].EventBaseInfo.Code=CrossLineDetection 
Events[0].EventBaseInfo.Action=Start 
Events[0].EventBaseInfo.Index=0 
Events[0].Object.BoundingBox[0]= 4392 
Events[0].Object.BoundingBox[1]=4136 
Events[0].Object.BoundingBox[2]=6960 
Events[0].Object.BoundingBox[3]=6512 
Events[0].Objects[0].BoundingBox[0]= 4392 
Events[0].Objects[0].BoundingBox[1]=4136 
Events[0].Objects[0].BoundingBox[2]=6960 
Events[0].Objects[0].BoundingBox[3]=6512 
Events[0].DetectRegion[0][0]=192 
Events[0].DetectRegion[0][1]=192 
Events[0].DetectRegion[1][0]=562 
Events[0].DetectRegion[1][1]=552 
Events[0].DetectRegion[2][0]=600 
Events[0].DetectRegion[2][1]=733 
Events[0].DetectRegion[3][0]=200 
Events[0].DetectRegion[3][1]=270 
… 
Events[0].Action=Disappear 
Events[0].Direction=LeftToRight 
… --<boundary> 
Content-Type: image/jpeg 
Content-Length: <image size> 
<Jpeg image data> --<boundary> 
```

***

### Detecção De Permanência Na Fila (Queue)

**Tópico:** Enviado quando o tempo de permanência em fila excede o limite configurado.

**Código do Evento:**\
`QueueStayDetection`

**Ação do Evento:**\
`Start` / `Stop`

#### Parâmetros do evento

<table><thead><tr><th>Nome</th><th width="114.6666259765625">Tipo</th><th>R/O</th><th>Descrição</th></tr></thead><tbody><tr><td>Object</td><td>object</td><td>R</td><td>Elemento principal associado ao evento</td></tr><tr><td>Objects</td><td>object[]</td><td>R</td><td>Lista de elementos detectados simultaneamente</td></tr><tr><td>DetectRegion</td><td>int[20][2]</td><td>R</td><td>Região configurada para detecção</td></tr><tr><td>AreaID</td><td>int</td><td>O</td><td>Identificador da área (inicia em 1)</td></tr><tr><td>PresetID</td><td>int</td><td>O</td><td>Identificador do preset associado</td></tr></tbody></table>

**Exemplo de Resposta**

```http
--<boundary> 
Content-Type: text/plain 
Content-Length: <length> 
Events[0].EventBaseInfo.Code=QueueStayDetection 
Events[0].EventBaseInfo.Action=Start 
Events[0].EventBaseInfo.Index=0 
Events[0].Object.BoundingBox[0]= 4392 
Events[0].Object.BoundingBox[1]=4136 
Events[0].Object.BoundingBox[2]=6960 
Events[0].Object.BoundingBox[3]=6512 
Events[0].Objects[0].BoundingBox[0]= 4392 
Events[0].Objects[0].BoundingBox[1]=4136 
Events[0].Objects[0].BoundingBox[2]=6960 
Events[0].Objects[0].BoundingBox[3]=6512 
Events[0].DetectRegion[0][0]=192 
Events[0].DetectRegion[0][1]=192 
Events[0].DetectRegion[1][0]=562 
Events[0].DetectRegion[1][1]=552 
Events[0].DetectRegion[2][0]=600 
Events[0].DetectRegion[2][1]=733 
Events[0].DetectRegion[3][0]=200 
Events[0].DetectRegion[3][1]=270 
… 
Events[0].AreaID=2 
Events[0].PresetID=1 --<boundary> 
Content-Type: image/jpeg 
Content-Length: <image size> 
<Jpeg image data> --<boundary> 
```

***

### Detecção De Número Na Fila (Queue)

**Tópico:** Enviado quando o número de pessoas em fila excede o limite.

**Código do Evento:**\
`QueueNumDetection`

**Ação do Evento:**\
`Pulse`

#### Parâmetros do Evento

| Nome     | Tipo      | R/O | Descrição                   |
| -------- | --------- | --- | --------------------------- |
| ManList  | object\[] | O   | Lista de pessoas detectadas |
| AreaID   | int       | O   | Área associada              |
| PresetID | int       | O   | Preset associado            |

**Exemplo de Resposta**

```http
--<boundary> 
Content-Type: text/plain 
Content-Length: <length> 
Events[0].EventBaseInfo.Code=QueueNumDetection 
Events[0].EventBaseInfo.Action=Pulse 
Events[0].EventBaseInfo.Index=0 
Events[0].ManList[0].BoundingBox[0]= 4392 
Events[0].ManList[0].BoundingBox[1]=4136 
Events[0].ManList[0].BoundingBox[2]=6960 
Events[0].ManList[0].BoundingBox[3]=6512 
Events[0].ManList[0].Stature =176 
Events[0].ManList[1].BoundingBox[0]= 275 
… 
Events[0].AreaID=2 
Events[0].PresetID=1 --<boundary> 
Content-Type: image/jpeg 
Content-Length: <image size> 
<Jpeg image data> --<boundary> 
```

***

### Detecção De EPI e Vestimentas de Trabalho

**Tópico:** Evento de detecção de EPI e vestimentas de trabalho, aplicável a ambientes industriais.

**Código do Evento:**\
`WorkClothesDetection`

**Ação do Evento:**\
`Start` / `Stop`

**Índice do evento:**\
Canal de vídeo

#### Parâmetros do Evento

| Campo                        | Tipo       | R/O | Descrição                                                                           |
| ---------------------------- | ---------- | --- | ----------------------------------------------------------------------------------- |
| Nome do Evento               | string     | R   | Identificação do evento: `TakenAwayDetection`.                                      |
| Descrição                    | string     | R   | Evento enviado quando um objeto que estava presente na cena deixa de ser detectado. |
| Código do Evento             | string     | R   | `TakenAwayDetection`.                                                               |
| Ação do Evento               | string     | R   | Estado do evento: `Start` (início) ou `Stop` (fim).                                 |
| Índice do Evento             | int        | R   | Índice do evento. Valor fixo: `0`.                                                  |
| Objeto                       | object     | R   | Estrutura que representa o objeto removido.                                         |
| Objeto.BoundingBox\[0]       | uint16     | R   | Coordenada X do canto superior esquerdo do objeto.                                  |
| Objeto.BoundingBox\[1]       | uint16     | R   | Coordenada Y do canto superior esquerdo do objeto.                                  |
| Objeto.BoundingBox\[2]       | uint16     | R   | Coordenada X do canto inferior direito do objeto.                                   |
| Objeto.BoundingBox\[3]       | uint16     | R   | Coordenada Y do canto inferior direito do objeto.                                   |
| Sistema de Coordenadas       | string     | R   | Coordenadas remapeadas para o intervalo `0–8192`.                                   |
| Formato da Resposta          | string     | R   | Resposta no formato `multipart`, com campos `key=value` e dados binários.           |
| Tipo de Conteúdo (Metadados) | text/plain | R   | Parte textual do evento contendo os campos do evento.                               |
| Tipo de Conteúdo (Imagem)    | image/jpeg | O   | Imagem associada ao evento, enviada no corpo binário.                               |
| Imagem                       | binary     | O   | Dados binários da imagem JPEG capturada no momento do evento.                       |

**Exemplo de Resposta**

```http
--<boundary> 
Content-Type: text/plain 
Content-Length: <length> 
 
Events[0].EventBaseInfo.Code=WorkClothesDetection 
Events[0].EventBaseInfo.Action=Start 
Events[0].EventBaseInfo.Index=0 
Events[0].Name=WorkClothesDetection1 
Events[0].Class=OperateMonitor or ProtectiveSuit 
Events[0].Type=Helmet 
Events[0].ObjectID=12345 
Events[0].UTC=1465389120 
Events[0].UTCMS=123 
Events[0].EventID=5864 
Events[0].RuleID=1 
Events[0].SourceID=022019030714003000001 
Events[0].GroupID=123 
Events[0].CountInGroup=1 
Events[0].IndexInGroup=1 
Events[0].HumanImage.IndexInData=0 
Events[0].HumanImage.Offset=0 
Events[0].HumanImage.Length=100000 
Events[0].HumanImage.Width=1920 
Events[0].HumanImage.Height=1080 
Events[0].SceneImage.IndexInData=0 
Events[0].SceneImage.Offset=100000 
Events[0].SceneImage.Length=52000 
Events[0].SceneImage.Width=1920 
Events[0].SceneImage.Height=1080 
Events[0].Helmet.HasHelmet=2 
Events[0].Helmet.HelmetColor=Red 
Events[0].Helmet.HelmetFlag=1 
Events[0].Helmet.ReportFlag=1 
Events[0].Helmet.HasLegalHat=0 
Events[0].Clothes.HasClothes=2 
Events[0].Clothes.HasLegalClothes=2 
Events[0].Clothes.ClothesColor=Red 
Events[0].Clothes.LinkGroupName=Group1 
Events[0].Clothes.LinkGroupID=1 
Events[0].Clothes.CutoutPolicy=0 
Events[0].Clothes.LinkGroupInfo[0].GroupID=123 
Events[0].Clothes.LinkGroupInfo[0].FeatureName=feature_1 
Events[0].Clothes.LinkGroupInfo[0].Similarity=22 
Events[0].Clothes.LinkGroupInfo[0].SampleAttributes=0 
Events[0].Clothes.LinkGroupInfo[0].GroupName=Group1 
… 
Events[0].Clothes.TrousersColor=Red 
Events[0].WorkPants.HasPants=2 
Events[0].WorkPants.PantsColor=Red 
Events[0].AlarmType=1 
Events[0].SafetyRope.CompliantType=1 
Events[0].Hardhat.HasHat=2 
Events[0].Hardhat.HatColor=Red 
Events[0].Ushanka.HasHat=2 
Events[0].Ushanka.HatColor=Red 
Events[0].Prohelmet.HasHat=2 
Events[0].Prohelmet.HatColor=Red 
Events[0].NormalHat.HasHat=0 
Events[0].NormalHat.HasLegalHat=0 
Events[0].Mask.HasMask=0 
Events[0].Mask.HasLegalMask=0 
Events[0].Apron.HasApron=0 
Events[0].Apron.HasLegalApron=0 
Events[0].Glove.HasGlove=0 
Events[0].Glove.HasLegalGlove=0 
Events[0].Boot.HasBoot=0 
Events[0].Boot.HasLegalBoot=0 
Events[0].ShoesCover.HasCover=0 
Events[0].ShoesCover.HasLegalCover=0 
Events[0].NoHat.HasHat=0 
Events[0].NoHat.HasLegalHat=0 
Events[0].PTS=150.0 
Events[0].ProtectiveSuit.HasProtectiveSuit=2 
Events[0].ProtectiveSuit.ProtectiveSuitColor=Red 
Events[0].FireProofClothes.HasFireProofClothes=2 
Events[0].FireProofClothes.FireProofClothesColor=Red 
Events[0].DetectRegion[0][0]= 
… 
Events[0].Objects[0]= 
… 
Events[0].Uniform.HasUniform=1 
Events[0].Uniform.UniformColor=Red 
Events[0].Multimeter.HasMultimeter=0 
Events[0].Multimeter.HasLegalHat=0 
Events[0].BreathingMask.HasBreathingMask=0 
Events[0].BreathingMask.HasLegalBreathingMask=0 
Events[0].Glasses.GlassesType=0 
Events[0].Glasses.GlassesLegalMask=0 
Events[0].LegalAlarmType=0 
Events[0].SafeBelt.HasSafeBelt=0 
Events[0].SafeBelt.HasLegalSafeBelt=0 
Events[0].Vest.HasVest=0 
Events[0].Vest.HasLegalVest=0 
Events[0].SafetyShoes.HasSafetyShoes=0 
Events[0].SafetyShoes.HasLegalSafetyShoes=0 
Events[0].WristGuard.HasWristGuard=0 
Events[0].WristGuard.HasLegalWristGuard=0 
Events[0].Hood.HasLegalHood=0 --<boundary> 
Content-Type: image/jpeg 
Content-Length: <image size> 
<Jpeg image data> --<boundary> 
```

***

### Detecção de Fumaça

**Tópico**: Enviado quando o sistema detecta fumaça na cena monitorada.

**Código do Evento:**\
`SmokeDetection`

**Ação do Evento:**\
`Start` / `Stop`

#### Parâmetros do Evento

| Nome         | Tipo         | R/O | Descrição                                    |
| ------------ | ------------ | --- | -------------------------------------------- |
| Name         | char\[128]   | O   | Nome do evento                               |
| Class        | char\[16]    | O   | Classe da detecção (`Normal` ou `SmokeFire`) |
| GroupID      | int          | O   | Identificador do grupo do evento             |
| CountInGroup | int          | O   | Quantidade de capturas no grupo              |
| IndexInGroup | int          | O   | Índice da captura no grupo (inicia em 1)     |
| PTS          | double       | O   | Timestamp relativo do evento (ms)            |
| UTC          | uint32       | O   | Horário do evento em UTC (segundos)          |
| UTCMS        | uint32       | O   | Horário do evento em milissegundos           |
| EventID      | uint32       | O   | Identificador único do evento                |
| RuleID       | uint         | O   | Identificador da regra que disparou o evento |
| Object       | object       | O   | Ponto único de detecção de fumaça            |
| Objects      | object\[]    | O   | Lista de pontos de detecção de fumaça        |
| DetectRegion | int\[20]\[2] | O   | Região configurada para detecção             |
| SmokeColor   | enum\[]      | O   | Cor da fumaça detectada                      |
| PresetID     | int          | O   | Identificador do preset                      |
| MisReport    | bool         | O   | Indica possível falso positivo               |

**Exemplo de Resposta**

```http
--<boundary> 
Content-Type: text/plain 
Content-Length: <length> 
 
Events[0].EventBaseInfo.Code=WorkClothesDetection 
Events[0].EventBaseInfo.Action=Start 
Events[0].EventBaseInfo.Index=0 
Events[0].Name=WorkClothesDetection1 
Events[0].Class=OperateMonitor or ProtectiveSuit 
Events[0].Type=Helmet 
Events[0].ObjectID=12345 
Events[0].UTC=1465389120 
Events[0].UTCMS=123 
Events[0].EventID=5864 
Events[0].RuleID=1 
Events[0].SourceID=022019030714003000001 
Events[0].GroupID=123 
Events[0].CountInGroup=1 
Events[0].IndexInGroup=1 
Events[0].HumanImage.IndexInData=0 
Events[0].HumanImage.Offset=0 
Events[0].HumanImage.Length=100000 
Events[0].HumanImage.Width=1920 
Events[0].HumanImage.Height=1080 
Events[0].SceneImage.IndexInData=0 
Events[0].SceneImage.Offset=100000 
Events[0].SceneImage.Length=52000 
Events[0].SceneImage.Width=1920 
Events[0].SceneImage.Height=1080 
Events[0].Helmet.HasHelmet=2 
Events[0].Helmet.HelmetColor=Red 
Events[0].Helmet.HelmetFlag=1 
Events[0].Helmet.ReportFlag=1 
Events[0].Helmet.HasLegalHat=0 
Events[0].Clothes.HasClothes=2 
Events[0].Clothes.HasLegalClothes=2 
Events[0].Clothes.ClothesColor=Red 
Events[0].Clothes.LinkGroupName=Group1 
Events[0].Clothes.LinkGroupID=1 
Events[0].Clothes.CutoutPolicy=0 
Events[0].Clothes.LinkGroupInfo[0].GroupID=123 
Events[0].Clothes.LinkGroupInfo[0].FeatureName=feature_1 
Events[0].Clothes.LinkGroupInfo[0].Similarity=22 
Events[0].Clothes.LinkGroupInfo[0].SampleAttributes=0 
Events[0].Clothes.LinkGroupInfo[0].GroupName=Group1 
… 
Events[0].Clothes.TrousersColor=Red 
Events[0].WorkPants.HasPants=2 
Events[0].WorkPants.PantsColor=Red 
Events[0].AlarmType=1 
Events[0].SafetyRope.CompliantType=1 
Events[0].Hardhat.HasHat=2 
Events[0].Hardhat.HatColor=Red 
Events[0].Ushanka.HasHat=2 
Events[0].Ushanka.HatColor=Red 
Events[0].Prohelmet.HasHat=2 
Events[0].Prohelmet.HatColor=Red 
Events[0].NormalHat.HasHat=0 
Events[0].NormalHat.HasLegalHat=0 
Events[0].Mask.HasMask=0 
Events[0].Mask.HasLegalMask=0 
Events[0].Apron.HasApron=0 
Events[0].Apron.HasLegalApron=0 
Events[0].Glove.HasGlove=0 
Events[0].Glove.HasLegalGlove=0 
Events[0].Boot.HasBoot=0 
Events[0].Boot.HasLegalBoot=0 
Events[0].ShoesCover.HasCover=0 
Events[0].ShoesCover.HasLegalCover=0 
Events[0].NoHat.HasHat=0 
Events[0].NoHat.HasLegalHat=0 
Events[0].PTS=150.0 
Events[0].ProtectiveSuit.HasProtectiveSuit=2 
Events[0].ProtectiveSuit.ProtectiveSuitColor=Red 
Events[0].FireProofClothes.HasFireProofClothes=2 
Events[0].FireProofClothes.FireProofClothesColor=Red 
Events[0].DetectRegion[0][0]= 
… 
Events[0].Objects[0]= 
… 
Events[0].Uniform.HasUniform=1 
Events[0].Uniform.UniformColor=Red 
Events[0].Multimeter.HasMultimeter=0 
Events[0].Multimeter.HasLegalHat=0 
Events[0].BreathingMask.HasBreathingMask=0 
Events[0].BreathingMask.HasLegalBreathingMask=0 
Events[0].Glasses.GlassesType=0 
Events[0].Glasses.GlassesLegalMask=0 
Events[0].LegalAlarmType=0 
Events[0].SafeBelt.HasSafeBelt=0 
Events[0].SafeBelt.HasLegalSafeBelt=0 
Events[0].Vest.HasVest=0 
Events[0].Vest.HasLegalVest=0 
Events[0].SafetyShoes.HasSafetyShoes=0 
Events[0].SafetyShoes.HasLegalSafetyShoes=0 
Events[0].WristGuard.HasWristGuard=0 
Events[0].WristGuard.HasLegalWristGuard=0 
Events[0].Hood.HasLegalHood=0 --<boundary> 
Content-Type: image/jpeg 
Content-Length: <image size> 
<Jpeg image data> --<boundary> 
```

***

### Detecção de Incêndio

**Tópico**: Enviado quando o sistema detecta a presença de fogo na cena monitorada.

**Código do Evento:**\
`FireDetection`

**Ação do Evento:**\
`Start` / `Stop`

#### Parâmetros do Evento

| Nome                | Tipo            | R/O | Descrição                                     |
| ------------------- | --------------- | --- | --------------------------------------------- |
| Name                | char\[128]      | O   | Nome do evento                                |
| Class               | char\[16]       | O   | Classe do evento                              |
| GroupID             | int             | O   | Identificador do grupo                        |
| CountInGroup        | int             | O   | Quantidade de capturas no grupo               |
| IndexInGroup        | int             | O   | Índice da captura no grupo                    |
| PTS                 | double          | O   | Timestamp relativo do evento (ms)             |
| UTC                 | uint32          | O   | Horário UTC do evento (s)                     |
| UTCMS               | uint32          | O   | Horário UTC do evento (ms)                    |
| EventID             | uint32          | O   | Identificador único do evento                 |
| Vehicle             | object          | O   | Informações do veículo (se existir)           |
| Object              | object          | O   | Objeto detectado                              |
| TriggerType         | enumint         | O   | Tipo de disparo (dispositivo, radar ou vídeo) |
| Mark                | int             | O   | Marca de frame capturado                      |
| Source              | int             | O   | Fonte dos dados de análise                    |
| FrameSequence       | int             | O   | Número do frame                               |
| Sequence            | int             | O   | Sequência de captura                          |
| DetectRegion        | uint16\[20]\[2] | O   | Região de detecção                            |
| Count               | int             | O   | Quantidade de violações                       |
| PresetID            | uint16          | O   | Identificador do preset                       |
| Position            | int\[]          | O   | Posição e zoom do preset                      |
| Distance            | float\[2]       | O   | Distância do fogo em relação ao centro        |
| SceneImage          | object          | O   | Imagem panorâmica                             |
| CommInfo            | object          | O   | Informações de comunicação                    |
| TrafficCar          | object          | O   | Informações de tráfego                        |
| MisReport           | bool            | O   | Indica possível falso alarme                  |
| RuleType            | char\[32]       | O   | Tipo da regra                                 |
| ViolationSnapSource | enumint         | O   | Fonte da captura                              |
| RuleID              | uint32          | O   | Identificador da regra                        |
| DSTTune             | uint8           | O   | Indicador de horário de verão                 |
| TimeZone            | uint8           | O   | Fuso horário                                  |
| RealUTC             | uint32          | O   | UTC real sem ajuste                           |

**Exemplo de resposta**&#x20;

```http
--<boundary> 
Content-Type: text/plain 
Content-Length: <length> 
 
Events[0].EventBaseInfo.Code=FireDetection 
Events[0].EventBaseInfo.Action=Start 
Events[0].EventBaseInfo.Index=0 
Events[0].Name=FireDetection1 
Events[0].Class=Normal 
Events[0].GroupID=123 
Events[0].CountInGroup=3 
Events[0].IndexInGroup=1 
Events[0].PTS=150.0 
Events[0].UTC=152463285 
Events[0].UTCMS=123 
Events[0].EventID=5864 
Events[0].Vehicle= 
Events[0].Object= 
Events[0].TriggerType=0 
Events[0].Mark=10 
Events[0].Source=5678 
Events[0].FrameSequence=1234 
Events[0].Sequence=3 
Events[0].DetectRegion[0][0]= 
… 
Events[0].Count=100 
Events[0].PresetID=1 
Events[0].Position[0]= 
… 
Events[0].Distance[0]= 
… 
Events[0].SceneImage.IndexInData=0 
Events[0].SceneImage.Offset=100000 
Events[0].SceneImage.Length=52000 
Events[0].SceneImage.Width=100 
Events[0].SceneImage.Height=50 
Events[0].SceneImage.FilePath=/var/local/1.jpg 
Events[0].CommInfo= 
Events[0].TrafficCar= 
Events[0].MisReport=false 
Events[0].RuleType=FireDetection 
Events[0].ViolationSnapSource=0 
Events[0].RuleID=1 
Events[0].DSTTune=0 
Events[0].TimeZone=8 
Events[0].RealUTC=1678151817 --<boundary> 
Content-Type: image/jpeg 
Content-Length: <image size> 
<Jpeg image data> --<boundary> 
```

***

### Entrada e Saída de Veículo

**Tópico**: Enviado quando um veículo entra ou sai de uma área monitorada.

**Código do Evento:**\
`CarDrivingInOut`

**Ação do Evento:**\
`Pulse`

#### Dados do Evento

| Nome             | Tipo       | R/O | Descrição               |
| ---------------- | ---------- | --- | ----------------------- |
| Name             | char\[128] | R   | Nome do evento          |
| GroupID          | int        | O   | Identificador do grupo  |
| CountInGroup     | int        | O   | Quantidade no grupo     |
| IndexInGroup     | int        | O   | Índice da captura       |
| PTS              | double     | O   | Timestamp relativo      |
| UTC              | uint32     | O   | Horário UTC             |
| UTCMS            | uint32     | O   | Horário UTC em ms       |
| EventID          | uint32     | O   | Identificador do evento |
| Object           | object     | O   | Informações da placa    |
| Vehicle          | object     | O   | Informações do veículo  |
| FrameSequence    | int        | R   | Número do frame         |
| Sequence         | int        | R   | Sequência da captura    |
| DrivingDirection | enumint    | R   | Direção do veículo      |
| GlobalScene      | object     | O   | Imagem geral            |
| ParkingImage     | object     | O   | Imagem da vaga          |
| ParkingNum       | char\[32]  | R   | Número da vaga          |

**Exemplo de Resposta**

```http
--<boundary> 
Content-Type: text/plain 
Content-Length: <length> 
Events[0].EventBaseInfo.Code=CarDrivingInOut 
Events[0].EventBaseInfo.Action=Pulse 
Events[0].EventBaseInfo.Index=0 
Events[0].Name=CarDrivingInOut 
Events[0].GroupID=123 
Events[0].CountInGroup=3 
Events[0].IndexInGroup=1 
Events[0].PTS=150.0 
Events[0].UTC=1465389120 
Events[0].UTCMS=123 
Events[0].EventID=5864 
Events[0].FrameSequence=12345 
Events[0].Sequence=1 
Events[0].DrivingDirection=0 
Events[0].GlobalScene.IndexInData=0 
Events[0].GlobalScene.Length=1000 
Events[0].GlobalScene.Offset=0 
Events[0].GlobalScene.Width=100 
Events[0].GlobalScene.Height=50 
Events[0].ParkingImage.IndexInData=0 
Events[0].ParkingImage.Length=1000 
Events[0].ParkingImage.Offset=0 
Events[0].ParkingImage.Width=100 
Events[0].ParkingImage.Height=50 
Events[0].ParkingNum=A101 --<boundary> 
Content-Type: image/jpeg 
Content-Length: <image size> 
<Jpeg image data> --<boundary> 
```

***

### Status da Vaga de Estacionamento

**Tópico**: Enviado quando há alteração no status de uma vaga de estacionamento.

**Código do Evento:**\
`ParkingSpaceStatus`

**Ação do Evento:**\
`Pulse`

#### Dados do Evento

| Nome                | Tipo        | R/O | Descrição               |
| ------------------- | ----------- | --- | ----------------------- |
| Name                | char\[128]  | R   | Nome do evento          |
| GroupID             | int         | O   | Identificador do grupo  |
| CountInGroup        | int         | O   | Quantidade no grupo     |
| IndexInGroup        | int         | O   | Índice da captura       |
| PTS                 | double      | R   | Timestamp relativo      |
| UTC                 | uint32      | R   | Horário UTC             |
| UTCMS               | uint32      | O   | Horário UTC em ms       |
| EventID             | uint32      | R   | Identificador do evento |
| Mark                | int         | R   | Marca do frame          |
| Source              | int         | R   | Fonte do vídeo          |
| FrameSequence       | int         | R   | Número do frame         |
| ParkingSpaceStatus  | int         | O   | Status da vaga          |
| CarDoorState        | int         | O   | Estado da porta         |
| WorkerNum           | int         | O   | Número de pessoas       |
| BoxcarDetectRegion  | int\[4]\[2] | O   | Região de detecção      |
| ParkingNum          | char\[32]   | R   | Número da vaga          |
| Text                | char\[32]   | O   | Placa                   |
| LoadingRate         | int         | O   | Taxa de carregamento    |
| UnLoadLength        | int         | O   | Comprimento de descarga |
| PersonIntrudeStatus | int         | O   | Intrusão de pessoas     |

**Exemplo de Resposta**

```http
Content-Type: text/plain 
Content-Length: <length> 
Events[0].EventBaseInfo.Code=ParkingSpaceStatus 
Events[0].EventBaseInfo.Action=Pulse 
Events[0].EventBaseInfo.Index=0 
Events[0].Name=ParkingSpaceStatus1 
Events[0].GroupID=123 
Events[0].CountInGroup=3 
Events[0].IndexInGroup=1 
Events[0].PTS=150.0 
Events[0].UTC=1538920142 
Events[0].UTCMS=123 
Events[0].EventID=5864 
Events[0].Mark=10 
Events[0].Source=5678 
Events[0].FrameSequence=12345 
Events[0].ParkingSpaceStatus=0 
Events[0].CarDoorState=1 
Events[0].WorkerNum=5 
Events[0].BoxcarDetectRegion[0][0]= 
… 
Events[0].ParkingNum=A101 
Events[0].Text=沪 DP4719 
Events[0].LoadingRate=50 
Events[0].UnLoadLength=150 
Events[0].PersonIntrudeStatus=1 --<boundary> 
Content-Type: image/jpeg 
Content-Length: <image size> 
<Jpeg image data> --<boundary> 
```

***

### Aparição de Objeto

**Tópico**: Enviado quando um novo objeto aparece na cena monitorada.

**Código do Evento:**\
`ObjectAppearDetection`

**Ação do Evento:**\
`Start` / `Stop`

#### Parâmetros do Evento

| Nome          | Tipo       | R/O | Descrição               |
| ------------- | ---------- | --- | ----------------------- |
| Name          | char\[128] | R   | Nome do evento          |
| Class         | char\[16]  | R   | Classe do evento        |
| RuleID        | uint       | R   | Identificador da regra  |
| PTS           | double     | R   | Timestamp relativo      |
| UTC           | uint32     | R   | Horário UTC             |
| UTCMS         | uint32     | R   | Horário UTC em ms       |
| EventID       | uint32     | O   | Identificador do evento |
| Sequence      | uint       | O   | Número da sequência     |
| FrameSequence | int        | O   | Número do frame         |
| GroupID       | int        | O   | Identificador do grupo  |
| CountInGroup  | int        | O   | Quantidade no grupo     |
| IndexInGroup  | int        | O   | Índice da captura       |
| SceneImage    | object     | O   | Imagem panorâmica       |
| Objects       | object\[]  | O   | Objetos detectados      |
| RealUTC       | uint32     | O   | UTC real                |
| AlgId         | uint32     | O   | ID do algoritmo         |
| AlgName       | char\[128] | O   | Nome do algoritmo       |
| AlarmId       | uint32     | O   | ID do alarme            |

**Exemplo de Resposta**

```http
Content-Type: text/plain 
Content-Length: <length> 
Events[0].EventBaseInfo.Code=ParkingSpaceStatus 
Events[0].EventBaseInfo.Action=Pulse 
Events[0].EventBaseInfo.Index=0 
Events[0].Name=ParkingSpaceStatus1 
Events[0].GroupID=123 
Events[0].CountInGroup=3 
Events[0].IndexInGroup=1 
Events[0].PTS=150.0 
Events[0].UTC=1538920142 
Events[0].UTCMS=123 
Events[0].EventID=5864 
Events[0].Mark=10 
Events[0].Source=5678 
Events[0].FrameSequence=12345 
Events[0].ParkingSpaceStatus=0 
Events[0].CarDoorState=1 
Events[0].WorkerNum=5 
Events[0].BoxcarDetectRegion[0][0]= 
… 
Events[0].ParkingNum=A101 
Events[0].Text=沪 DP4719 
Events[0].LoadingRate=50 
Events[0].UnLoadLength=150 
Events[0].PersonIntrudeStatus=1 --<boundary> 
Content-Type: image/jpeg 
Content-Length: <image size> 
<Jpeg image data> --<boundary>
```

***

### Desaparecimento de Objeto

**Tópico**: Enviado quando um objeto previamente detectado deixa de aparecer na cena.

**Código do Evento:**\
`ObjectDisappearDetection`

**Ação do Evento:**\
`Start` / `Stop`

#### Parâmetros do Evento

<table><thead><tr><th>Nome</th><th>Tipo</th><th width="117.77783203125">R/O</th><th>Descrição</th></tr></thead><tbody><tr><td>Name</td><td>char[128]</td><td>R</td><td>Nome do evento</td></tr><tr><td>Class</td><td>char[16]</td><td>R</td><td>Classe do evento</td></tr><tr><td>RuleID</td><td>uint</td><td>O</td><td>Identificador da regra</td></tr><tr><td>GroupID</td><td>int</td><td>O</td><td>Identificador do grupo</td></tr><tr><td>CountInGroup</td><td>int</td><td>O</td><td>Quantidade no grupo</td></tr><tr><td>IndexInGroup</td><td>int</td><td>O</td><td>Índice da captura</td></tr><tr><td>PTS</td><td>double</td><td>O</td><td>Timestamp relativo</td></tr><tr><td>UTC</td><td>uint32</td><td>O</td><td>Horário UTC</td></tr><tr><td>UTCMS</td><td>uint32</td><td>O</td><td>Horário UTC em ms</td></tr><tr><td>EventID</td><td>uint32</td><td>O</td><td>Identificador do evento</td></tr><tr><td>Sequence</td><td>uint</td><td>O</td><td>Sequência</td></tr><tr><td>FrameSequence</td><td>int</td><td>O</td><td>Número do frame</td></tr><tr><td>DetectRegion</td><td>uint16[20][2]</td><td>O</td><td>Região de detecção</td></tr><tr><td>SceneImage</td><td>object</td><td>O</td><td>Imagem panorâmica</td></tr><tr><td>Objects</td><td>object[]</td><td>O</td><td>Objetos detectados</td></tr><tr><td>RealUTC</td><td>uint32</td><td>O</td><td>UTC real</td></tr><tr><td>AlgId</td><td>uint32</td><td>O</td><td>ID do algoritmo</td></tr><tr><td>AlgName</td><td>char[128]</td><td>O</td><td>Nome do algoritmo</td></tr><tr><td>AlarmId</td><td>uint32</td><td>O</td><td>ID do alarme</td></tr></tbody></table>

**Exemplo de Resposta**

```http
--<boundary> 
Content-Type: text/plain 
Content-Length: <length> 
 
Code=ObjectDisappearDetection；action=Start;index=0;data={ 
       "Name": "ObjectDisappearDetection", 
        "Class": "ChangeDetection", 
        "RuleID": 1, 
        "GroupID": 1, 
        "CountInGroup": 1, 
        "IndexInGroup": 1, 
        "PTS": 150, 
        "UTC": 152463285, 
        "UTCMS": 123, 
        "EventID": 5864, 
        "Sequence": 3, 
        "FrameSequence": 12345, 
        "DetectRegion": null, 
        "SceneImage": { 
            "IndexInData": 0, 
            "Offset": 0, 
            "Length": 52000, 
            "Width": 1920, 
            "Height": 1080 
        }, 
        "Objects": null, 
        "RealUTC": 6538920  
} --<boundary>
```

***

### Detecção de Estado do Objeto

**Tópico**: Enviado quando o estado de um objeto é avaliado como normal ou anormal.

**Código do Evento:**\
`ObjectStateDetection`

**Ação do Evento:**\
`Start` / `Stop`

#### Parâmetros do Evento

| Nome          | Tipo            | R/O | Descrição               |
| ------------- | --------------- | --- | ----------------------- |
| Name          | char\[128]      | R   | Nome do evento          |
| Class         | char\[16]       | R   | Classe do evento        |
| RuleID        | uint            | O   | Identificador da regra  |
| GroupID       | int             | O   | Identificador do grupo  |
| CountInGroup  | int             | O   | Quantidade no grupo     |
| IndexInGroup  | int             | O   | Índice da captura       |
| PTS           | double          | O   | Timestamp relativo      |
| UTC           | uint32          | O   | Horário UTC             |
| UTCMS         | uint32          | O   | Horário UTC em ms       |
| EventID       | uint32          | O   | Identificador do evento |
| Sequence      | uint            | O   | Sequência               |
| FrameSequence | int             | O   | Número do frame         |
| DetectRegion  | uint16\[20]\[2] | O   | Região de detecção      |
| SceneImage    | object          | O   | Imagem panorâmica       |
| Objects       | object\[]       | O   | Objetos detectados      |
| ObjectStatus  | uint8           | O   | Estado do objeto        |
| RealUTC       | uint32          | O   | UTC real                |
| AlgId         | uint32          | O   | ID do algoritmo         |
| AlgName       | char\[128]      | O   | Nome do algoritmo       |
| AlarmId       | uint32          | O   | ID do alarme            |

**Exemplo de Resposta**

```http
--<boundary> 
Content-Type: text/plain 
Content-Length: <length> 
 
Code=ObjectStateDetection；action=Start;index=0;data={ 
       "Name": " ObjectStateDetection ", 
        "Class": "ChangeDetection", 
        "RuleID": 1, 
        "GroupID": 1, 
        "CountInGroup": 1, 
        "IndexInGroup": 1, 
        "PTS": 150, 
        "UTC": 152463285, 
        "UTCMS": 123, 
        "EventID": 5864, 
        "Sequence": 3, 
        "FrameSequence": 12345, 
        "DetectRegion": null, 
        "SceneImage": { 
            "IndexInData": 0, 
            "Offset": 0, 
            "Length": 52000, 
            "Width": 1920, 
            "Height": 1080 
        }, 
        "Objects": null, 
        "RealUTC": 6538920  
} --<boundary>
```

***

### Detecção de Mudança

**Tópico**: Enviado quando ocorre qualquer alteração detectável na cena monitorada.

**Código do Evento:**\
`ChangeDetection`

**Ação do Evento:**\
`Start` / `Stop`

#### Parâmetros do Evento

<table><thead><tr><th>Nome</th><th>Tipo</th><th width="91.111083984375">R/O</th><th>Descrição</th></tr></thead><tbody><tr><td>Name</td><td>char[128]</td><td>O</td><td>Nome do evento</td></tr><tr><td>Class</td><td>char[16]</td><td>O</td><td>Classe do evento</td></tr><tr><td>PTS</td><td>double</td><td>O</td><td>Timestamp relativo do evento (ms)</td></tr><tr><td>UTC</td><td>uint32</td><td>O</td><td>Horário UTC do evento (segundos)</td></tr><tr><td>UTCMS</td><td>uint32</td><td>O</td><td>Horário UTC do evento (milissegundos)</td></tr><tr><td>EventID</td><td>uint32</td><td>O</td><td>Identificador único do evento</td></tr><tr><td>GroupID</td><td>int32</td><td>O</td><td>Identificador do grupo do evento</td></tr><tr><td>CountInGroup</td><td>int32</td><td>O</td><td>Quantidade de capturas no grupo</td></tr><tr><td>IndexInGroup</td><td>int32</td><td>O</td><td>Índice da captura no grupo</td></tr><tr><td>Objects</td><td>object[]</td><td>O</td><td>Lista de objetos detectados</td></tr></tbody></table>

**Exemplo de Resposta**

```http
--<boundary> 
Content-Type: text/plain 
Content-Length: <length> 
 
Code=ChangeDetection；action=Start;index=0;data={ 
       "Name": "ChangeDetection1", 
        "Class": "Normal", 
        "PTS": 150, 
        "UTC": 152463285, 
        "UTCMS": 300, 
        "EventID": 1, 
        "GroupID": 123, 
        "CountInGroup": 1, 
        "IndexInGroup": 1, 
        "Objects": null 
} --<boundary>
```

***

### Detecção de Estado da Porta

**Tópico**: Enviado quando o estado de uma porta é detectado ou alterado.

**Código do Evento:**\
`DoorStateDetection`

**Ação do Evento:**\
`Start` / `Stop`

#### Parâmetros do Evento

<table><thead><tr><th>Nome</th><th>Tipo</th><th width="102.962890625">R/O</th><th>Descrição</th></tr></thead><tbody><tr><td>Name</td><td>char[128]</td><td>R</td><td>Nome do evento</td></tr><tr><td>Class</td><td>char[16]</td><td>R</td><td>Classe do evento</td></tr><tr><td>RuleId</td><td>uint</td><td>O</td><td>Identificador da regra</td></tr><tr><td>GroupID</td><td>int</td><td>O</td><td>Identificador do grupo</td></tr><tr><td>CountInGroup</td><td>int</td><td>O</td><td>Quantidade de eventos no grupo</td></tr><tr><td>IndexInGroup</td><td>int32</td><td>O</td><td>Índice do evento no grupo</td></tr><tr><td>PTS</td><td>double</td><td>O</td><td>Timestamp relativo (ms)</td></tr><tr><td>UTC</td><td>uint32</td><td>O</td><td>Horário UTC do evento</td></tr><tr><td>UTCMS</td><td>uint16</td><td>O</td><td>Horário UTC em ms</td></tr><tr><td>EventID</td><td>uint32</td><td>R</td><td>Identificador único do evento</td></tr><tr><td>PresetID</td><td>uint16</td><td>O</td><td>Identificador do preset</td></tr><tr><td>SceneImage</td><td>object</td><td>O</td><td>Imagem panorâmica</td></tr><tr><td>DetectRegion</td><td>uint16[20][2]</td><td>R</td><td>Região de detecção</td></tr><tr><td>AlarmType</td><td>char[32]</td><td>O</td><td>Tipo de alarme</td></tr><tr><td>DoorState</td><td>uint8</td><td>O</td><td>Estado da porta</td></tr></tbody></table>

**Exemplo de Resposta**

```http
--<boundary> 
Content-Type: text/plain 
Content-Length: <length> 
 
Events[0].EventBaseInfo.Code=DoorStateDetection 
Events[0].EventBaseInfo.Action=Start 
Events[0].EventBaseInfo.Index=0 
Events[0].Name=DoorStateDetection 
Events[0].Class=DoorStateDetect 
Events[0].RuleId=1 
Events[0].GroupID=123 
Events[0].CountInGroup=3 
Events[0].IndexInGroup=1 
Events[0].PTS=150.0 
Events[0].UTC=6538920 
Events[0].UTCMS=123 
Events[0].EventID=5864 
Events[0].PresetID=1 
Events[0].SceneImage.IndexInData=0 
Events[0].SceneImage.Width=100 
Events[0].SceneImage.Height=50 
Events[0].DetectRegion[0][0]= 
… 
Events[0].AlarmType=DoorStateAbnormal 
Events[0].DoorStateAbnormal.DSTimeSection=TimeSchedule 
Events[0].DoorStateAbnormal.DoorState=1 
Events[0].OpenDoorAbnormal.ODTimeSection=TimeSchedule 
Events[0].OpenDoorAbnormal.LongTime=6 
Events[0].DoorState= 
… --<boundary> 
Content-Type: image/jpeg 
Content-Length: <image size> 

```

***

### Informações de Funcionamento do Elevador

**Tópico**: Enviado com informações operacionais do elevador.

**Código do Evento:**\
`ElevatorWorkInfo`

**Ação do Evento:**\
`Start` / `Stop`

#### Parâmetros do Evento

| Nome              | Tipo       | R/O | Descrição               |
| ----------------- | ---------- | --- | ----------------------- |
| Name              | char\[128] | R   | Nome do evento          |
| Class             | char\[32]  | O   | Classe do evento        |
| PTS               | double     | R   | Timestamp relativo (ms) |
| UTC               | uint32     | R   | Horário UTC             |
| RealUTC           | uint32     | O   | Horário UTC real        |
| UTCMS             | uint16     | O   | Horário UTC em ms       |
| EventID           | uint32     | O   | Identificador do evento |
| Sequence          | uint       | O   | Número de sequência     |
| RuleID            | uint       | O   | Identificador da regra  |
| ElevatorFloor     | char\[32]  | O   | Andar do elevador       |
| ElevatorWorkState | uint32     | O   | Estado de operação      |
| ElevatorWorkSpeed | uint32     | O   | Velocidade do elevador  |
| DoorState         | uint32     | O   | Estado da porta         |
| CurrentNumber     | uint32     | O   | Número de pessoas       |
| SceneImage        | object     | O   | Imagem panorâmica       |
| Brightness        | char\[32]  | O   | Nível de iluminação     |

#### Exemplo de Resposta

```http
--<boundary> 
Content-Type: text/plain 
Content-Length: <length> 
 
Events[0].EventBaseInfo.Code=ElevatorWorkInfo 
Events[0].EventBaseInfo.Action=Start 
Events[0].EventBaseInfo.Index=0 
Events[0].Name=ElevatorWorkInfo1 
Events[0].Class=ElevatorAccessControl 
Events[0].PTS=150.0 
Events[0].UTC=1465389120 
Events[0].RealUTC=6538920 
Events[0].UTCMS=123 
Events[0].EventID=5864 
Events[0].Sequence=956u 
Events[0].RuleID=1 
Events[0].ElevatorFloor=20 
Events[0].ElevatorWorkState=1 
Events[0].ElevatorWorkSpeed=20 
Events[0].IsCheckFloor=true 
Events[0].Temperature=20.3 
Events[0].TemperatureUnit=Centigrade 
Events[0].AlarmButtonStat=0 
Events[0].DoorState=1 
Events[0].CurrentNumber=6 
Events[0].LevelingStat=1 
… 
Events[0].SceneImage.IndexInData=0 
Events[0].SceneImage.Offset=100000 
Events[0].SceneImage.Length=52000 
Events[0].SceneImage.Width=1920 
Events[0].SceneImage.Height=1080 
Events[0].SceneImage.FilePath=/var/local/1.jpg 
Events[0].Brightness=Strong --<boundary> 
Content-Type: image/jpeg 
Content-Length: <image size> 
<Jpeg imag
```

***

### Detecção de Pessoas Presas no Elevador

**Tópico**: Enviado quando pessoas permanecem presas no elevador por tempo configurado.

**Código do Evento:**\
`TrappedInLiftDetection`

**Ação do Evento:**\
`Start` / `Stop`

#### Parâmetros do Evento

<table><thead><tr><th>Nome</th><th>Tipo</th><th width="100">R/O</th><th>Descrição</th></tr></thead><tbody><tr><td>Name</td><td>char[128]</td><td>R</td><td>Nome do evento</td></tr><tr><td>Class</td><td>char[16]</td><td>R</td><td>Classe do evento</td></tr><tr><td>RuleId</td><td>uint</td><td>O</td><td>Identificador da regra</td></tr><tr><td>GroupID</td><td>int</td><td>O</td><td>Identificador do grupo</td></tr><tr><td>CountInGroup</td><td>int</td><td>O</td><td>Quantidade de eventos</td></tr><tr><td>IndexInGroup</td><td>int32</td><td>O</td><td>Índice do evento</td></tr><tr><td>PTS</td><td>double</td><td>O</td><td>Timestamp relativo</td></tr><tr><td>UTC</td><td>uint32</td><td>O</td><td>Horário UTC</td></tr><tr><td>RealUTC</td><td>uint32</td><td>O</td><td>Horário UTC real</td></tr><tr><td>TrappedTime</td><td>uint</td><td>O</td><td>Tempo mínimo preso</td></tr><tr><td>CurrentNumber</td><td>uint32</td><td>O</td><td>Pessoas no elevador</td></tr><tr><td>ElevatorWorkState</td><td>uint32</td><td>O</td><td>Estado do elevador</td></tr><tr><td>ElevatorFloor</td><td>char[32]</td><td>O</td><td>Andar atual</td></tr></tbody></table>

**Exemplo de Resposta**

```http
Content-Type: text/plain 
Content-Length: <length> 
Events[0].EventBaseInfo.Code=TrappedInLiftDetection 
Events[0].EventBaseInfo.Action=Start 
Events[0].EventBaseInfo.Index=0 
Events[0].Name=TrappedInLiftDetection 
Events[0].Class=DoorStateDetect 
Events[0].RuleId=1 
Events[0].GroupID=123 
Events[0].CountInGroup=3 
Events[0].IndexInGroup=1 
Events[0].PTS=150.0 
Events[0].UTC=6538920 
Events[0].RealUTC=6538920 
Events[0].UTCMS=123 
Events[0].EventID=5864 
Events[0].PresetID=1 
Events[0].SceneImage.IndexInData=0 
Events[0].SceneImage.Width=100 
Events[0].SceneImage.Height=50 
Events[0].DetectRegion[0][0]= 
… 
Events[0].TrappedTime=10 
Events[0].CurrentNumber=6 
Events[0].ElevatorWorkState=1 
Events[0].ElevatorFloor=20 
… --<boundary> 
Content-Type: image/jpeg 
Content-Length: <image size> 
<Jpeg image data> --<boundary> 
```

***

### Detecção de Abertura e Fechamento de Porta

**Tópico**: Enviado quando ocorre abertura e fechamento repetido da porta.

**Código do Evento:**\
`OpenCloseDoorDetection`

**Ação do Evento:**\
`Start` / `Stop`

#### Parâmetros do Evento

| Nome           | Tipo            | R/O | Descrição               |
| -------------- | --------------- | --- | ----------------------- |
| Name           | char\[128]      | R   | Nome do evento          |
| Class          | char\[16]       | R   | Classe do evento        |
| RuleId         | uint            | O   | Identificador da regra  |
| GroupID        | int             | O   | Identificador do grupo  |
| CountInGroup   | int             | O   | Quantidade no grupo     |
| IndexInGroup   | int32           | O   | Índice do evento        |
| PTS            | double          | O   | Timestamp relativo      |
| UTC            | uint32          | O   | Horário UTC             |
| PresetID       | uint16          | O   | Identificador do preset |
| DetectRegion   | uint16\[20]\[2] | R   | Região de detecção      |
| OpenCloseCount | int32           | O   | Número de ciclos        |

**Exemplo de Resposta**

```http
--<boundary> 
Content-Type: text/plain 
Content-Length: <length> 
 
Events[0].EventBaseInfo.Code=OpenCloseDoorDetection 
Events[0].EventBaseInfo.Action=Start 
Events[0].EventBaseInfo.Index=0 
Events[0].Name=DoorStateDetection 
Events[0].Class=DoorStateDetect 
Events[0].RuleId=1 
Events[0].GroupID=123 
Events[0].CountInGroup=3 
Events[0].IndexInGroup=1 
Events[0].PTS=150.0 
Events[0].UTC=6538920 
Events[0].UTCMS=123 
Events[0].EventID=5864 
Events[0].PresetID=1 
Events[0].SceneImage.IndexInData=0 
Events[0].SceneImage.Width=100 
Events[0].SceneImage.Height=50 
Events[0].DetectRegion[0][0]= 
… 
Events[0].OpenCloseCount=5 --<boundary> 
Content-Type: image/jpeg 
Content-Length: <image size> 
<Jpeg image data> --<boundary> 
```

***

### Detecção de Instrumentos

**Tópico**: Enviado quando instrumentos ou medidores são detectados e analisados.

**Código do Evento:**\
`DialRecognition`

**Ação do Evento:**\
`Pulse`

#### Parâmetros do Evento

| Nome           | Tipo          | R/O | Descrição               |
| -------------- | ------------- | --- | ----------------------- |
| Channel        | uint32        | O   | Canal de vídeo          |
| PresetID       | uint32        | O   | Identificador do preset |
| TaskID         | char\[64]     | O   | Identificador da tarefa |
| Type           | char\[32]     | O   | Tipo de instrumento     |
| ImageInfo      | object\[]     | O   | Informações da imagem   |
| DialResult     | char\[2048]   | O   | Resultado da leitura    |
| AlarmType      | uint32        | O   | Tipo de alarme          |
| UpperThreshold | float         | O   | Limite superior         |
| LowerThreshold | float         | O   | Limite inferior         |
| BoundingBox    | uint16\[]\[4] | O   | Caixa delimitadora      |
| Confidence     | int\[]        | O   | Nível de confiança      |

**Exemplo de Resposta**

```http
--<boundary> 
Content-Type: text/plain 
Content-Length: <length> 
 
Events[0].EventBaseInfo.Code=DialRecognition 
Events[0].EventBaseInfo.Action=Pulse 
Events[0].EventBaseInfo.Index=0 
Events[0].Channel=0 
Events[0].PresetID=1 
Events[0].TaskID=11233 
Events[0].Type=State 
Events[0].ImageInfo[0].IndexInData=0 
Events[0].ImageInfo[0].PicType=0 
Events[0].ImageInfo[0].Offset=0 
Events[0].ImageInfo[0].Length=123 
Events[0].ImageInfo[0].FilePath=/tmp/1.jpg 
… 
Events[0].DialResult=1;2;3;4 
Events[0].OriginalImageInfo.Offset=0 
Events[0].OriginalImageInfo.Length=123 
Events[0].AlarmType=1 
Events[0].DialSubType=StressMeter 
Events[0].UpperThreshold=10.0 
Events[0].LowerThreshold=1.0 
Events[0].BoundingBox[0][0]=0 
Events[0].BoundingBox[0][1]=0 
Events[0].BoundingBox[0][2]=8192 
Events[0].BoundingBox[0][3]=8192 
… 
Events[0].RegionID[0]=0 
Events[0].RegionID[1]=1 
… 
Events[0].GWDialType=switch 
Events[0].Angle=23.0 
Events[0].Unit=cm 
Events[0].AlarmColor=Blue 
Events[0].DialCustomResult=Close the circuit 
Events[0].Confidence[0]=0 
Events[0].Confidence[1]=100 
… 
Events[0].DialObjects[0].ObjectType=State 
Events[0].DialObjects[0].ObjectBoundingBox[0]=0 
Events[0].DialObjects[0].ObjectBoundingBox[1]=0 
Events[0].DialObjects[0].ObjectBoundingBox[2]=8192 
Events[0].DialObjects[0].ObjectBoundingBox[3]=8192 
… 
Events[0].DialObjects[0].ObjectConfidence=100 
Events[0].DialObjects[0].ObjectDialResult=1 
… --<boundary> 
Content-Type: image/jpeg 
Content-Length: <image size> 
<Jpeg image data> --<boundary>
```

***

Notas finais:&#x20;

* Os eventos descritos nesta documentação seguem o modelo de **assinatura de eventos (Event Subscription)**, exigindo uma conexão HTTP persistente para o correto recebimento das notificações.
* As respostas de eventos podem ser enviadas no formato **multipart**, contendo:
  * Dados textuais no formato `key=value` ou JSON (dependendo do evento);
  * Dados binários, como imagens JPEG associadas ao evento.
* Cada evento é identificado principalmente pelos campos:
  * **EventBaseInfo.Code**: código do evento;
  * **EventBaseInfo.Action**: ação do evento (`Start`, `Stop` ou `Pulse`);
  * **EventBaseInfo.Index**: índice do evento no conjunto retornado.
* Campos marcados como **R (Read-only)** são preenchidos exclusivamente pelo dispositivo e não devem ser alterados pelo sistema assinante.
* Campos marcados como **O (Optional)** podem ou não estar presentes, dependendo da configuração do evento, do tipo de dispositivo e do cenário de detecção.
* Quando imagens são incluídas na resposta:
  * As informações da imagem (offset, tamanho, índice, largura e altura) são informadas nos campos correspondentes;
  * Os dados binários da imagem são enviados em um bloco separado dentro do mesmo `multipart`.

***


---

# 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/analise-de-video.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.
