> 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/frequencia.md).

# Frequência

Guia de endpoints de Frequência (Attendance): relatórios paginados de leitura de cartão, presença, anomalias, horas extras e saídas, com exemplos curl e convenções.

### Como usar:

* Substitua as variáveis `{{host}}`, `{{loginToken}}` e demais identificadores pelos valores reais do ambiente.
* Utilize variáveis globais do seu projeto quando disponíveis para evitar hardcode.
* Ajuste parâmetros de query conforme o cenário (paginação, filtros, IDs).
* Campos JSON opcionais podem ser removidos ou adicionados sem alterar a estrutura base.
* Sempre valide os tipos esperados pelo backend antes de enviar requisições em lote.

***

### 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}}/iams/api/v1.1`

***

### Erros comuns (modelo):

| Situação                   |                       Sintoma | Como resolver                             |
| -------------------------- | ----------------------------: | ----------------------------------------- |
| Token ausente/expirado     |                         `401` | Refaça login e atualize `X-Subject-Token` |
| Content-Type incorreto     |  `415 Unsupported Media Type` | Use `application/json;charset=UTF-8`      |
| Campos obrigatórios vazios | `400` / mensagem de validação | Revise a seção **Parâmetros** do endpoint |

***

### Obter Registros de Leitura de Cartão em Páginas

**Tópico**: Consulta os registros de leitura de cartão dentro de um intervalo de tempo específico. O endpoint retorna uma lista **paginada** contendo os eventos encontrados.

* Método: `GET /brms/api/v1.0/attendance/swiping-card-report/page`
* Headers: `X-Subject-Token`, `Content-Type`

Exemplo (curl):

```bash
curl --location 'https://{{Host}}/brms/api/v1.0/attendance/swiping-card-report/page?startTime=2023-07-12%2000%3A00%3A00&endTime=2023-07-12%2023%3A59%3A59&personName=&personId=&deptId=001&eventType=0&page=1&pageSize=20&displayServerTimezoneOffset=0&currentPage=&splitId=&splitTime=' 
--header 'X-Subject-Token: 8B730A96BA004A9Ca10d5856c5fd8363' 
--header 'Cookie: Path=/'
```

Resposta (modelo – sucesso):

```json
{
    "code": 1000,
    "desc": "Success",
    "data": {
        "pageData": [],
        "totalCount": "0"
    }
}
```

### Pesquisar Relatórios de Frequência em Páginas

**Tópico**: Consulta relatórios de frequência dentro de um intervalo de tempo específico. O endpoint retorna uma lista **paginada** contendo os registros consolidados de presença.

* Método: `GET /brms/api/v1.0/attendance/record-info-report/page`
* Headers: `X-Subject-Token`, `Content-Type`

Exemplo (curl):

```bash
curl --location 'https://{{Host}}brms/api/v1.0/attendance/record-info-report/page?startTime=2023-07-12%2000%3A00%3A00&endTime=2023-07-12%2023%3A59%3A59&personName=&personId=&deptId=001&page=1&pageSize=20' 
--header 'X-Subject-Token: 8B730A96BA004A9Ca10d5856c5fd8363' 
--header 'Cookie: Path=/'
```

Resposta (modelo – sucesso):

```json
{
    "code": 1000,
    "desc": "Success",
    "data": {
        "pageData": [],
        "totalCount": "0"
    }
}
```

### Pesquisar Registros de Frequência Anormal em Páginas

**Tópico**: Consulta registros de frequência **anormal** dentro de um intervalo de tempo específico. O endpoint retorna uma lista **paginada** contendo eventos de irregularidade.

* Método: `GET /brms/api/v1.0/attendance/abnormal-report/page`
* Headers: `X-Subject-Token`, `Content-Type`

Exemplo (curl):

```bash
curl --location 'http://{{Host}}/brms/api/v1.0/attendance/abnormal-report/page?startTime=2023-07-12%2000%3A00%3A00&endTime=2023-07-12%2023%3A59%3A59&personName=&personId=&deptId=001&eventType=0&page=1&pageSize=20' 
--header 'X-Subject-Token: 8B730A96BA004A9Ca10d5856c5fd8363'
```

Resposta (modelo – sucesso):

```json
{
    "code": 1000,
    "desc": "Success",
    "data": {
        "pageData": [],
        "totalCount": "0"
    }
}
```

### Pesquisar Registros de Horas Extras em Páginas

**Tópico**: Consulta registros de **horas extras** dentro de um intervalo de tempo específico. O endpoint retorna uma lista **paginada** contendo os registros de overtime.

* Método: `GET /brms/api/v1.0/attendance/work-overtime-report/page`
* Headers: `X-Subject-Token`, `Content-Type`

Exemplo (curl):

```bash
curl --location 'https://{{Host}}/brms/api/v1.0/attendance/work-overtime-report/page?startTime=2023-07-12%2000%3A00%3A00&endTime=2023-07-12%2023%3A59%3A59&keyword=4562&deptId=001001&workOverType=0&page=1&pageSize=20' 
--header 'X-Subject-Token: 8B730A96BA004A9Ca10d5856c5fd8363' 
--header 'Cookie: Path=/'
```

Resposta (modelo – sucesso):

```json
{
    "code": 1000,
    "desc": "Success",
    "data": {
        "pageData": [],
        "totalCount": "0"
    }
}
```

### Obter Registros de Saídas em Páginas

**Tópico**: Consulta registros de **saídas externas (outing)** dentro de um intervalo de tempo específico. O endpoint retorna uma lista **paginada** contendo os registros de saída.

* Método: `GET /brms/api/v1.0/attendance/outing-report/page`
* Headers: `X-Subject-Token`, `Content-Type`

Exemplo (curl):

```bash
curl --location 'https://{{Host}}/brms/api/v1.0/attendance/outing-report/page?startTime=2023-07-12%2000%3A00%3A00&endTime=2023-07-12%2023%3A59%3A59&personId=&personName=&deptId=001&local=zh&page=1&pageSize=20' 
--header 'X-Subject-Token: 8B730A96BA004A9Ca10d5856c5fd8363' 
--header 'Cookie: Path=/'
```

Resposta (modelo – sucesso):

```json
    "code": 1000,
    "desc": "Success",
    "data": {
        "pageData": [],
        "totalCount": "0"
    }
}
```

***

Notas Finais:

* Todos os endpoints de **attendance** seguem o mesmo padrão estrutural de resposta:
  * `code`: código do resultado da operação.
  * `desc`: descrição do status da requisição.
  * `data.pageData`: lista paginada de registros retornados.
  * `data.totalCount`: total de registros encontrados para os filtros aplicados.
* O código `1000` indica sucesso na requisição.\
  Sempre valide o campo `code` antes de processar o conteúdo retornado.
* Caso `pageData` esteja vazio (`[]`), significa que não há registros para os filtros informados, não necessariamente erro.
* Todos os endpoints utilizam método **GET** com parâmetros enviados via **query string**.
* O controle de paginação é obrigatório na maioria dos relatórios:
  * `page` → número da página
  * `pageSize` → quantidade de registros por página\
    Recomenda-se limitar `pageSize` (ex.: máximo 100) para evitar sobrecarga.
* Datas devem ser enviadas no formato:

  ```
  YYYY-MM-DD HH:mm:ss
  ```

  devidamente codificadas em URL (`%20` para espaço).
* Sempre valide:
  * Token ativo antes da requisição.
  * Permissões do usuário para acesso ao módulo de Attendance.
  * Formato correto de datas e tipos numéricos.
* Para ambientes produtivos:
  * Utilize **HTTPS**.
  * Evite hardcode de token e host.
  * Implemente tratamento de timeout e retry controlado.
  * Registre logs de requisição e resposta para auditoria.
* Caso o sistema utilize múltiplos fusos horários, valide o offset do servidor ou utilize parâmetros específicos quando disponíveis.

***


---

# 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/frequencia.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.
