# Relatório de métricas (https://docs.pulsarml.com/pt/v1/api-reference/reports/post-reports-metrics)

Devolve o OEE, a disponibilidade, a qualidade e os minutos perdidos por máquina e turno.

Cada linha traz os indicadores do turno (tempo disponível, tempo de paragem separado por causa) juntamente com as métricas de produção derivadas: `availability`, `effectiveness`, `quality`, `oee` e `netOee`, além dos minutos perdidos por baixa velocidade e por baixa qualidade.

É um `POST` que só lê: basta o scope `reports.read`. É preferível a calcular o OEE a partir dos registos de produção: os limites dos turnos, a classificação das paragens e os fatores de contagem já estão aplicados.

## `POST /v1/reports/metrics`

Base URLs:
- `https://draco.prod.pulsarml.com` — Produção
- `https://draco.dev.pulsarml.com` — Desenvolvimento (sandbox)

Authentication: send your API key in the `x-api-key` header.

### Request body (`application/json`, required)

Type: object (`GetMetricsReportRequestV1`)

- `page` (integer, optional, default `1`, > 0, e.g. `1`) — O número da página
- `limit` (integer, optional, default `10`, > 0, e.g. `10`) — O número de elementos por página
- `machines` (object, optional, nullable) — Critérios de filtro para máquinas
  - `search` (string, optional, nullable) — Termo de pesquisa para máquinas
  - `include` (array of integer, optional, nullable) — Elementos a incluir, por ID
  - `exclude` (array of integer, optional, nullable) — Elementos a excluir, por ID
- `startDate` (object, optional, nullable) — Critérios de filtro para a data de início
  - `after` (string (date-time), optional, nullable) — Filtra por data posterior a
  - `before` (string (date-time), optional, nullable) — Filtra por data anterior a
  - `between` (object, optional, nullable) — Filtra por intervalo de datas
    - `start` (string (date-time), optional, nullable, e.g. `"2024-01-01T00:00:00.000Z"`) — Data de início do intervalo
    - `end` (string (date-time), optional, nullable, e.g. `"2024-01-31T23:59:59.000Z"`) — Data de fim do intervalo
  - `equal` (string (date-time), optional, nullable) — Filtra por data exata
- `endDate` (object, optional, nullable) — Critérios de filtro para a data de fim
  - `after` (string (date-time), optional, nullable) — Filtra por data posterior a
  - `before` (string (date-time), optional, nullable) — Filtra por data anterior a
  - `between` (object, optional, nullable) — Filtra por intervalo de datas
    - `start` (string (date-time), optional, nullable, e.g. `"2024-01-01T00:00:00.000Z"`) — Data de início do intervalo
    - `end` (string (date-time), optional, nullable, e.g. `"2024-01-31T23:59:59.000Z"`) — Data de fim do intervalo
  - `equal` (string (date-time), optional, nullable) — Filtra por data exata

### Responses

#### 200 — Uma página de métricas por máquina e turno

Type: object (`GetMetricsReportResponseV1`)

- `totalCount` (integer, optional, default `100`) — O número total de elementos
- `totalPages` (integer, optional, default `10`) — O número total de páginas
- `currentPage` (integer, optional, default `1`) — A página atual
- `metrics` (array of object, required)
  - `company` (object, required) — A empresa do relatório de métricas.
    - `id` (integer, required, e.g. `1`) — O identificador único da empresa.
    - `name` (string, required, e.g. `"company 1"`) — O nome da empresa.
  - `machine` (object, required) — A máquina do relatório de métricas.
    - `id` (integer, required, e.g. `1`) — O identificador único da máquina.
    - `name` (string, required, e.g. `"machine 1"`) — O nome da máquina.
  - `shift` (object, required) — O turno do relatório de métricas.
    - `id` (integer, required, e.g. `1`) — O identificador único do turno.
    - `name` (string, required, e.g. `"shift 1"`) — O nome do turno.
    - `startTime` (string (date-time), required, e.g. `"2024-01-01T08:00:00.000Z"`) — A hora de início do turno.
    - `endTime` (string (date-time), required, e.g. `"2024-01-01T16:00:00.000Z"`) — A hora de fim do turno.
    - `isActive` (boolean, required, e.g. `true`) — Se o turno está ativo neste momento.
  - `shiftIndicators` (object, required) — Informação do indicador do turno.
    - `indicatorId` (integer, optional, nullable, e.g. `1`) — O identificador único do indicador.
    - `annotatedDowntime` (number, optional, nullable, e.g. `0`) — Tempo de paragem anotado, em minutos.
    - `availability` (number, optional, nullable, e.g. `100`) — Percentagem de disponibilidade.
    - `availableTime` (number, optional, nullable, e.g. `1`) — Tempo disponível, em minutos.
    - `earlyStopTime` (number, optional, nullable, e.g. `0`) — Tempo de paragem antecipada, em minutos.
    - `lateStartTime` (number, optional, nullable, e.g. `0`) — Tempo de início tardio, em minutos.
    - `netAvailability` (number, optional, nullable, e.g. `100`) — Percentagem de disponibilidade líquida.
    - `noDataTime` (number, optional, nullable, e.g. `0`) — Tempo sem dados, em minutos.
    - `nonProgrammedDowntime` (number, optional, nullable, e.g. `0`) — Tempo de paragem não programada, em minutos.
    - `programmedDowntime` (number, optional, nullable, e.g. `0`) — Tempo de paragem programada, em minutos.
    - `otherStopsTime` (number, optional, nullable, e.g. `0`) — Tempo de outras paragens, em minutos.
    - `unavailableTime` (number, optional, nullable, e.g. `0`) — Tempo indisponível, em minutos.
  - `productionMetrics` (object, required) — Informação das métricas de produção.
    - `availability` (number, optional, nullable, e.g. `100`) — Percentagem de disponibilidade.
    - `netAvailability` (number, optional, nullable, e.g. `100`) — Percentagem de disponibilidade líquida.
    - `oee` (number, optional, nullable, e.g. `100`) — Eficácia global do equipamento (OEE).
    - `netOee` (number, optional, nullable, e.g. `100`) — OEE líquido.
    - `quality` (number, optional, nullable, e.g. `100`) — Percentagem de qualidade.
    - `effectiveness` (number, optional, nullable, e.g. `100`) — Percentagem de eficácia.
    - `minutesLostByLowQuality` (number, optional, nullable, e.g. `0`) — Minutos perdidos por baixa qualidade.
    - `minutesLostByLowSpeed` (number, optional, nullable, e.g. `0`) — Minutos perdidos por baixa velocidade.

#### 422 — Erro de validação

Type: object (`HTTPValidationError`)

- `detail` (array of object, optional)
  - `loc` (array of string | integer, required)
  - `msg` (string, required)
  - `type` (string, required)
  - `input` (any, optional)
  - `ctx` (object, optional)

### Example request

```bash
curl -X POST 'https://draco.prod.pulsarml.com/v1/reports/metrics' \
  -H 'x-api-key: <YOUR_API_KEY>' \
  -H 'Content-Type: application/json' \
  -d '{
    "page": 1,
    "limit": 10,
    "machines": {
      "exclude": [
        1
      ],
      "include": [
        1
      ],
      "search": "machine 1"
    }
  }'
```