> 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/defense-ia/introducao-a-api-defense-ia.md).

# Introdução a API Defense IA

**Bem-vindo à documentação da API da Plataforma Defense IA** [**Intelbras**](https://www.intelbras.com/pt-br/)**.**

Esta documentação tem como objetivo fornecer informações e orientações sobre como integrar sistemas externos com os dispositivos de vídeo e segurança da Intelbras, de forma padronizada e eficiente.

Nossos equipamentos de vídeo e controle de acesso contam com interfaces HTTP baseadas em CGI (para câmeras IP e gravadores) e REST (para o Defense IA), permitindo comunicação direta via rede TCP/IP (Ethernet). Isso torna a integração simples, independente do sistema operacional ou linguagem de programação utilizada pelo desenvolvedor.

***

## Dispositivos compatíveis com API

Tipo de Dispositivo

* Suporte à API HTTP/CGI

Câmeras IP Intelbras\
✅ `/cgi-bin/snapshot.cgi`, `/cgi-bin/configManager.cgi`, etc.

Gravadores NVR/DVR Intelbras\
✅ `/cgi-bin/configManager.cgi`, `/cgi-bin/systeminfo.cgi`, etc.

Plataforma Defense IA (VMS, Reconhecimento Facial, Controle de Acesso)\
✅ REST `/api/*` via JSON

***

## Estrutura das APIs

### Defense IA – API REST

A plataforma Defense IA oferece uma API REST estruturada, utilizando JSON e autenticação via token JWT.

Exemplo de chamada:

{% code title="Requisição: Autorizar (exemplo)" %}

```http
POST http://{{host}}/brms/api/v1.0/accounts/authorize
Content-Type: application/json

{
    "userName": "{{username}}",
    "ipAddress": "",
    "clientType": "WINPC_V2"
}
```

{% endcode %}

Resposta de exemplo que fornece dados (incluindo chave pública, realm, etc.):

{% code title="Resposta: Autorizar (exemplo)" %}

```json
{
  "realm": "f689ed8c43530d68bf7d6e95a62f7f87",
  "randomKey": "1dcfae055eff497c",
  "encryptType": "MD5",
  "publickey": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAkRvB/GTshOcJ3+O5oKB853ZQ6F84DsXoCxgNDZwBLANEkkfGFser3RUBOOLwWj+QxB6/VdO9UbS7xqdeouqnumtfYUfcyssFX+TxNiq612anUaLj8RwcYd0P5FO73fyZJfD4NA0Aez92TtQffVbwJQMgg1QaTcG1X0mTOzQjC/jT3srIseg/2BnUlyWYDZx0H6EtBU8630g0MgNqMId9A3HniMfhIHlQB4WUL4gmXpxPyEUOLwV2qJBhQkO/m+x67xtw8UZVYMU+Yn9A2rBkcqgcgqYOu0CAKaf9HOBZtiS439s0t5shdjZeIwt0r6wED8x/Os9k1uGKqRjxTQQWbwIDAQAB"
}
```

{% endcode %}

### Usando o Postman

A collection do Postman está anexa à documentação e pode ser utilizada como material de apoio e facilitador no processo de desenvolvimento, auxiliando na compreensão dos endpoints, testes das requisições e validação das integrações de forma mais prática.

**Como importar a collection no Postman:**

{% file src="/files/vFPiP6ErhSCI4ijoqaTS" %}

1. Faça download dos arquivos.
2. Abra o **Postman**.
3. Na tela inicial, clique em **Import** no canto superior esquerdo.
4. Na janela que será aberta, selecione a opção **Upload Files**.
5. Localize no seu computador o arquivo da **collection** que foi disponibilizado junto à documentação.
6. Selecione o arquivo e clique em **Abrir**.
7. Aguarde a importação ser concluída. Após isso, a collection aparecerá no menu lateral esquerdo do Postman, dentro da área de **Collections**.
8. Clique sobre a collection importada para visualizar as requisições disponíveis.
9. Antes de executar as chamadas, revise se as variáveis necessárias, como **URL/base path**, credenciais ou parâmetros de autenticação, estão corretamente preenchidas conforme orientado na documentação.
10. Com isso, a collection já poderá ser utilizada como apoio para testes e desenvolvimento das integrações.

<figure><img src="https://3558738335-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fu2gr1s2Izdazx5BlQHLu%2Fuploads%2FMwuosuUGg8X9QpvgHKJc%2FDefense%20Postman%20Collection(2).gif?alt=media&amp;token=c70d1fa7-d48f-4ef5-a6d6-00124abba96b" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
**Aviso:** a collection realiza a autenticação a geração de token no Defense, porém não faz a manutenção automática dos tokens de autenticação. Assim, sempre que necessário, será preciso gerar ou atualizar manualmente os tokens durante o uso.
{% endhint %}

***

## Formato de Respostas

As APIs utilizam os códigos de status HTTP padrão:

|                     Código | Significado                                                     |
| -------------------------: | --------------------------------------------------------------- |
|                     200 OK | Requisição executada com sucesso                                |
|           401 Unauthorized | Falha de autenticação (usuário/senha ou token ausente/inválido) |
|              404 Not Found | Caminho ou recurso inexistente                                  |
| 415 Unsupported Media Type | Content-Type inválido                                           |
|  500 Internal Server Error | Erro interno no dispositivo                                     |

As respostas podem ser:

* Um objeto JSON
* Texto plano (`OK`, `ERROR`, etc.)
* Arquivos binários (ex: imagem JPEG de snapshot)
* Multipart (em respostas com stream ou dados combinados)

***

## Autenticação

### Defense IA

Utiliza autenticação baseada em **token JWT** (Bearer Token).\
O processo segue:

{% stepper %}
{% step %}

### Obter autorização

Enviar usuário em `POST /brms/api/v1.0/accounts/authorize`.

Exemplo de requisição:

{% code title="POST /brms/api/v1.0/accounts/authorize" %}

```http
POST http://{{host}}/brms/api/v1.0/accounts/authorize
Content-Type: application/json

{
    "userName": "{{username}}",
    "ipAddress": "",
    "clientType": "WINPC_V2"
}
```

{% endcode %}
{% endstep %}

{% step %}

### Receber token

Receber token JWT na resposta (veja exemplo de resposta na seção "Defense IA – API REST").
{% endstep %}

{% step %}

### Usar token nas requisições seguintes

Incluir o token no header `Authorization` em todas as requisições seguintes, no formato:

Authorization: Bearer
{% endstep %}
{% endstepper %}

***

## Exemplo de Integração

### Login na API Defense IA

{% code title="Exemplo: Login" %}

```http
POST /brms/api/v1.0/accounts/authorize
{
	"userName":	"system",
	"ipAddress":	"",
	"clientType":	"WINPC_V2"
}
```

{% endcode %}

### Liberar porta de acesso

Requisição exemplo para controlar uma porta de acesso:

{% code title="POST /obms/api/v1.0/accessControl/door/control (curl exemplo)" %}

```bash
curl --location 'http://Server/obms/api/v1.0/accessControl/door/control' \
--header 'X-Subject-Token: 1b90ee2b0a5f4f7cb44149bbbb5f973f' \
--header 'Content-Type: application/json;charset=UTF-8' \
--header 'Connection: close' \
--data '{
    "status": "1",
    "channelId": "1000006$7$0$0"
}
'
```

{% endcode %}

***

{% hint style="info" %}
Esta documentação é voltada a desenvolvedores que desejam integrar suas aplicações com o Software Defense Intelbras, utilizando interfaces de rede padronizadas. Recomendamos sempre testar os endpoints em ambiente controlado e manter o Software atualizados com a última versão disponível.
{% endhint %}


---

# 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/defense-ia/introducao-a-api-defense-ia.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.
