> 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/defense-ia-and-lite/readme/gestao-de-dispositivos.md).

# Gestão de dispositivos

Guia de endpoints de Dispositivos: detalhes, listagem paginada, catálogo de tipos, Status de conexão e log de offline, status em lote e árvores de dispositivos, com exemplos curl.

### Como usar:

* Substitua variáveis `{{host}}`, `{{loginToken}}`, `{{newPersonId}}` pelos valores reais do seu ambiente ou utilize variáveis que tenham esses valores.
* Copie e cole os blocos por endpoint e mantenha a estrutura “Tópico / Fonte / Resposta / Exemplo”.
* Adicione/oculte campos de corpo (JSON) conforme a necessidade do seu caso, mantendo o padrão do projeto.

***

### Convenções e autenticação

* Códigos de resultado (padrão): `code: 1000` indica sucesso
* Content-Type: `application/json;charset=UTF-8`
* Idioma (opcional): `Accept-Language: en`
* Autenticação: header `X-Subject-Token: {{loginToken}}` (obtenha o token no seu fluxo de login do projeto)
* Base URL: `http://{{host}}/brms/api/v1.1`

***

### Erros comuns (modelo):

<table><thead><tr><th>Situação</th><th width="225.59246826171875" align="right">Sintoma</th><th width="237.333251953125">Como resolver</th></tr></thead><tbody><tr><td>Token ausente/expirado</td><td align="right"><code>401</code></td><td>Refaça login e atualize <code>X-Subject-Token</code></td></tr><tr><td>Content-Type incorreto</td><td align="right"><code>415 Unsupported Media Type</code></td><td>Use <code>application/json;charset=UTF-8</code></td></tr><tr><td>Campos obrigatórios vazios</td><td align="right"><code>400</code> / mensagem de validação</td><td>Revise a seção <strong>Parâmetros</strong> do endpoint</td></tr></tbody></table>

***

### Obter detalhes do dispositivo

**Tópico**: Retorna todas as **informações detalhadas** de um dispositivo específico.

* Método: `PUT /brms/api/v1.1/device/{deviceCode}`
* Headers: `X-Subject-Token`, `Content-Type`

Exemplo (curl):

```bash
curl --location 'https://{{Host}}/brms/api/v1.1/device/1000001' 
--header 'X-Subject-Token: 92BB3920E6014238b5de0edaa913827d' 
--header 'Cookie: Path=/'
```

Resposta (modelo – sucesso): `deviceName`, `deviceIP`, `registerIp`, `status`, `deviceModel`, `devicetype`, `manuFacturerName`, `orgName`, `serverCode`, `domain`, `deviceCategory`, `createTime` ... etc

```json
{
  "code": 1000,
  "msg": "success",
  "data": {
    "deviceCode": "1000001",
    "deviceName": "Camera Portaria Principal",
    "deviceIP": "192.162.1.108",
    "registerIP": "192.168.1.1",
    "status": "online",
    "deviceModel": "VIP",
    "deviceType": "Camera",
    "manuFacturerName": "intelbras",
    "orgName": "Matriz São Paulo",
    "serverCode": "SRV-A01",
    "domain": "Segurança Patrimonial",
    "deviceCategory": "Video Surveillance",
    "firmwareVersion": "V5.7.12",
    "createTime": "2024-11-19 09:22:14",
    "lastOnlineTime": "2026-01-06 13:47:03",
    "location": "Entrada Principal - Portaria",
    "remark": "Dispositivo monitorando acesso principal",
    "enable": true,
    "port": 8000,
    "protocol": "RTSP",
    "streamingURL": "rtsp://10.100.61.55:554/Streaming/Channels/101"
  }
}

```

### Obter a lista de dispositivos em páginas

**Tópico**: Retorna uma **lista paginada** de **dispositivos cadastrados no sistema.**

* Método: `PUT /brms/api/v1.1/device/page`
* Headers: `X-Subject-Token`, `Content-Type`

Exemplo (curl):

```bash
curl --location 'https://{{Host}}/brms/api/v1.1/device/page?page=1&pageSize=20&orderType=&orderDirection=&orgCode=001&deviceCategory=&deviceType=&status=&keyword=&permitted=&domain=&sourceType=' 
--header 'X-Subject-Token: 92BB3920E6014238b5de0edaa913827d' 
--header 'Cookie: Path=/'
```

Resposta (modelo – sucesso): `totalCount`, `pageData`, `deviceCode`, `deviceName`, `deviceIP`, `registerIP`, `status`, `deviceModel`, `orgName`, `serverCode`, `deviceType`, `manuFacturerName` ... etc

```json
{
  "code": 1000,
  "desc": "Success",
  "data": {
    "totalCount": 24,
    "pageData": [
      {
        "deviceCode": "1000033",
        "deviceName": "SS 3532 MF W",
        "deviceIp": "192.168.1.108",
        "status": "offline",
        "deviceModel": "VIP",
        "orgCode": "001007",
        "orgName": "CA",
        "serverName": "10.100.68.100",
        "deviceCategoryName": "Access Control",
        "deviceTypeName": "Access Control Recognition Terminal",
        "manufacturerName": "Intelbras",
        "protocolTypeName": "Intelbras",
        "offlineReason": "Abnormal network"
      },
      {
        "deviceCode": "1000031",
        "deviceName": "iNVD 9216 PE FT",
        "deviceIp": "10.100.70.87",
        "status": "online",
        "deviceModel": "iNVD 9216 PE FT",
        "orgCode": "001004",
        "orgName": "NVRs e Gravadores",
        "serverName": "10.100.61.138",
        "deviceCategoryName": "Encoder",
        "deviceTypeName": "NVR/iNVD",
        "manufacturerName": "Intelbras",
        "protocolTypeName": "Intelbras"
      }
    ]
  }
}

```

### Obter a lista dos tipos de dispositivos

**Tópico**: Retorna o catálogo completo de **categorias de dispositivos** e seus respectivos **tipos**, com códigos padronizados para uso em filtros, cadastro e relatórios.

* Método: `PUT /brms/api/v1.1/definition/device-type/list`
* Headers: `X-Subject-Token`, `Content-Type`

Exemplo (curl):

```bash
curl --location 'https://{{Host}}/brms/api/v1.1/definition/device-type/list' 
--header 'X-Subject-Token: 9A4C27ED710A4DB591b56a04c7cf86b4'
```

Resposta (modelo– sucesso): `deviceCategory`, `deviceCategoryName`, `deviceType`, `deviceTypeNames`, `source` ... etc

```json
{
    "code": 1000,
    "desc": "Success",
    "data": {
        "results": [
            {
                "deviceCategory": "1",
                "deviceCategoryName": "Encoder",
                "deviceTypes": [
                    {
                        "deviceType": "1",
                        "deviceTypeName": "DVR/iMHDX",
                        "source": "1"
                    },
                    {
                        "deviceType": "2",
                        "deviceTypeName": "IP Camera",
                        "source": "1"
                    },
```

### Consultar os motivos de indisponibilidade do dispositivo

**Tópico**: Retorna os motivos pelos quais um ou mais dispositivos encontram-se offline.

* Método: `PUT /brms/api/v1.0/devicesManager/devices/offlineReasons`
* Headers: `X-Subject-Token`, `Content-Type`

Exemplo (curl):

```bash
curl --location 'https://{{Host}}/brms/api/v1.0/devicesManager/devices/offlineReasons?deviceCodes=1000004' 
--header 'X-Subject-Token: 0F4E4220B2754793a01a1b4fa521e04d'
```

Resposta (modelo – sucesso):

```json
{
    "code": 1000,
    "desc": "Success",
    "data": {
        "offlineReasons": []
    }
}
```

### Obter o status dos dispositivos e canais em lotes

**Tópico**: Consulta o **status atual** de múltiplos dispositivos e de seus respectivos **canais**, permitindo monitoramento em massa.

* Método: `PUT /brms/api/v1.1/device/status/fetch/batch/list`
* Headers: `X-Subject-Token`, `Content-Type`

Exemplo (curl):

```bash
curl --location 'http://{{Host}}/brms/api/v1.1/device/status/fetch/batch/list' 
--header 'X-Subject-Token: 59EBFEC6DC2C49AC8aa49bd93136fb9d' 
--header 'Content-Type: application/json' 
--data '{
    "deviceCodes": [
        "1000001",
        "1000002"
    ]
}'
```

Resposta (modelo – sucesso): `deviceCode`, `status`, `sleepStatus`, `channels`, `channelId` ...etc

```json
{
    "code": 1000,
    "desc": "Success",
    "data": {
        "results": [
            {
                "deviceCode": "1000002",
                "status": 1,
                "sleepStatus": 0,
                "channels": [
                    {
                        "channelId": "1000002$1$0$0",
                        "status": 1
                    },
                    {
                        "channelId": "1000002$1$0$1",
                        "status": 0
                    },
```

### Obter estrutura de todos os dispositivos

Descrição: Retorna a **estrutura completa dos dispositivos**, incluindo suas configurações, status, unidades internas e canais, permitindo a construção de árvores de dispositivos, painéis de controle e mapas de monitoramento.

* Método: `PUT /brms/api/v1.0/tree/devices`
* Headers: `X-Subject-Token`, `Content-Type`

Exemplo (curl):

```bash
curl --location 'http://{{Host}}/brms/api/v1.0/tree/devices' 
--header 'X-Subject-Token: 6E24730787AB43CA9e159d1d35d222ca' 
--header 'Content-Type: application/json' 
--data '{
    "deviceCodes": [],
    "categories": [],
    "containVirtualDevice": "1",
    "sourceTypes": []
}'
```

Resposta (modelo – sucesso): `alarmRecordPosition`, `associatedId`, `buildingEnable`, `callNumber`, `capability`, `category`, `code`, `deviceIp`, `deviceModelStr`, `devicePort`, `domainId`, `dstBeginTime`, `time`, `name`, `orgCode`, `password`, ... etc

```json
{
    "code": 1000,
    "data": {
        "devices": [
            {
                "alarmRecordPosition": "3",
                "associateId": "",
                "buildingEnable": "0",
                "callNumber": "0",
                "capability": "7410",
                "category": "1",
                "code": "1000000",
                "deviceIp": "192.168.1.108",
                "deviceModelStr": "VIP",
                "devicePort": "37777",
                "domainId": "",
                "dstBeginTime": {
                    "day": "1",
                    "month": "1",
                    "time": "00:00",
                    "week": "1"
                },
                "dstEndTime": {
                    "day": "2",
                    "month": "1",
                    "time": "00:00",
                    "week": "1"
                },
                "dstType": "2",
                "enableDst": "0",
                "liftEnable": "0",
                "loginType": "0",
                "manufacturer": "1",
                "model": "0",
                "modifyTime": "",
                "name": "Ultra_Mesa_test_reproduc",
                "offlineReason": "0",
                "orgCode": "001003",
                "password": "...",
                "protocol": "1",
                "proxyPort": "",
                "registId": "",
                "serverCode": "video#local",
                "sipId": "",
                "sipPwd": "",
                "sn": "A00M190004176",
                "sourceType": "1",
                "status": "1",
                "timezoneDesc": "Brasilia",
                "timezoneId": "35",
                "timezoneName": "timezone.text.America.Sao_Paulo",
                "timezoneOffset": "-03:00",
                "type": "2",
                "unitEnable": "0",
                "units": [
                    {
                        "accessControl": false,
                        "alarmInput": false,
                        "alarmOutput": false,
                        "assistStream": "2",
                        "box": false,
                        "channels": [
                            {
                                "cameraFunctions": "0",
                                "cameraType": "1",
                                "capability": "459685",
                                "channelCode": "1000000$1$0$0",
                                "channelName": "VIP Intelbras",
                                "channelSeq": 0,
                                "channelSubtype": "0",
                                "channelType": "1",
                                "db33Code": "",
                                "domainId": "",
                                "faceFunctions": "0",
                                "floorInfos": [],
                                "floorNum": "",
                                "intelliState": "",
                                "keyCode": "",
                                "remoteType": "0",
                                "sn": "",
                                "status": "1",
                                "streamType": "3",
                                "targetDetection": "0"
                            }
```

### Estrutura de Classificação Organizacional dos Dispositivos

**Tópico**: Retorna a **árvore organizacional de classificação dos dispositivos**, permitindo filtrar por categorias, tipos, unidades e canais, para fins de organização, monitoramento e controle de acesso.

* Método: `POST /brms/api/v1.1/tree/grade-device-tree`
* Headers: `X-Subject-Token`, `Content-Type`

Exemplo (curl):

```bash
curl --location 'http://{{Host}}/brms/api/v1.1/tree/grade-device-tree' 
--header 'X-Subject-Token: 15A3CEB2A8084901b96d5f58f5d14af6' 
--header 'Content-Type: application/json' 
--data '{
    "mapId": null,
    "orgCode": "001",
    "treeType": "2",
    "domain": "0",
    "filterEmptyDevice": "",
    "assistFindSize": "",
    "conditions": [
        {
            "deviceCategories": [
                "1",
                "5",
                "7",
                "8",
                "34",
                "45"
            ],
            "unitTypes": [
                "1",
                "16"
            ],
            "channelRemoteTypes": [
                "0",
                "2",
                "4"
            ],
            "excludeDeviceCategories": [
                "1"
            ],
            "excludeDeviceTypes": [
                "5",
                "9"
            ]
        },
        {
            "deviceCategories": [
                "1",
                "5",
                "7",
                "8",
                "34",
                "45",
                "50"
            ],
            "unitTypes": [
                "3",
                "17"
            ],
            "excludeDeviceCategories": [
                "1"
            ],
            "excludeDeviceTypes": [
                "5",
                "9"
            ]
        },
        {
            "deviceCategories": [
                "1",
                "3",
                "5",
                "7",
                "8",
                "21",
                "34",
                "45"
            ],
            "unitTypes": [
                "4",
                "26"
            ],
            "excludeDeviceCategories": [
                "1"
            ],
            "excludeDeviceTypes": [
                "5",
                "9"
            ]
        },
        {
            "deviceCategories": [
                "3"
            ],
            "deviceTypes": [
                "1"
            ],
            "unitTypes": [
                "3"
            ]
        },
        {
            "deviceCategories": [
                "1",
                "7"
            ],
            "deviceTypes": [
                "6",
                "42"
            ],
            "unitTypes": [
                "21"
            ]
        },
        {
            "deviceCategories": [
                "8"
            ],
            "unitTypes": [
                "7"
            ]
        },
        {
            "deviceCategories": [
                "50"
            ],
            "unitTypes": [
                "50"
            ]
        },
        {
            "deviceCategories": [
                "43"
            ],
            "unitTypes": [
                "12"
            ]
        },
        {
            "deviceCategories": [
                "21"
            ],
            "unitTypes": [
                "1",
                "16"
            ],
            "channelRemoteTypes": [
                "0",
                "2",
                "4"
            ],
            "deviceTypes": [
                "2",
                "5"
            ]
        },
        {
            "deviceCategories": [
                "21"
            ],
            "unitTypes": [
                "3",
                "17"
            ]
        },
        {
            "deviceCategories": [
                "21"
            ],
            "unitTypes": [
                "7"
            ]
        }
    ]
}'
```

Resposta (modelo – sucesso): `orgCode`, `orgName`, `domainId`, `sourceType`, `sourceId`, `associateId`, `piD`, ...etc

```json
{
    "code": 1000,
    "desc": "Success",
    "data": {
        "orgCode": "001",
        "orgName": "Current Site",
        "domainId": "0",
        "sourceType": "1",
        "sourceId": null,
        "associateId": null,
        "organizations": [
            {
                "orgCode": "001001",
                "pId": "001",
                "orgName": "Dispositivos_de_Mesa",
                "checked": "",
                "domainId": "",
                "sourceType": "1",
                "sourceId": null,
                "associateId": "",
                "hasChild": "",
                "autoAuthorize": ""
            },
            {
                "orgCode": "001002",
                "pId": "001",
                "orgName": "LPR",
                "checked": "",
                "domainId": "",
                "sourceType": "1",
                "sourceId": null,
                "associateId": "",
                "hasChild": "",
                "autoAuthorize": ""
            }
```

***

Notas finais:

* **Segurança:** proteja o *X-Subject-Token* e utilize sempre HTTPS.
* **Padrão:** todas as respostas seguem `code: 1000` para sucesso.
* **Estrutura:** mantenha o formato padrão dos endpoints.
* **Testes:** valide sempre em ambiente de homologação antes da produção.
* **Manutenção:** revise a documentação sempre que a API for atualizada.
* **Confiabilidade:** em caso de divergência, prevalece a resposta real da API.

***


---

# 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/defense-ia-and-lite/readme/gestao-de-dispositivos.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.
