# Reporte de paros (https://docs.pulsarml.com/es/v1/api-reference/reports/post-reports-stops)

Devuelve los paros individuales de las máquinas con su duración, causa y clasificación.

Es el detalle detrás de los totales de tiempo muerto del reporte de métricas. `stopId` acepta la gramática de comparación completa, así que se puede obtener directamente un paro específico o un rango de ellos.

## `POST /v1/reports/stops`

Base URLs:
- `https://draco.prod.pulsarml.com` — Producción
- `https://draco.dev.pulsarml.com` — Desarrollo (sandbox)

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

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

Type: object (`GetStopsReportRequestV1`)

- `page` (integer, optional, default `1`, > 0, e.g. `1`) — El número de página
- `limit` (integer, optional, default `10`, > 0, e.g. `10`) — La cantidad de elementos por página
- `machines` (object, optional, nullable) — Criterios de filtro para máquinas
  - `search` (string, optional, nullable) — Término de búsqueda 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
- `stopId` (object, optional, nullable) — Criterios de filtro 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
  - `greaterThan` (number, optional, nullable, e.g. `1`) — Mayor que
  - `greaterThanOrEqual` (number, optional, nullable, e.g. `1`) — Mayor o igual que
  - `lessThan` (number, optional, nullable, e.g. `1`) — Menor que
  - `lessThanOrEqual` (number, optional, nullable, e.g. `1`) — Menor o igual que
  - `equal` (number, optional, nullable, e.g. `1`) — Igual a
  - `notEqual` (number, optional, nullable, e.g. `1`) — Distinto de
- `startDate` (object, optional, nullable) — Criterios de filtro para la fecha de inicio
  - `after` (string (date-time), optional, nullable) — Filtra por fecha posterior a
  - `before` (string (date-time), optional, nullable) — Filtra por fecha anterior a
  - `between` (object, optional, nullable) — Filtra por rango de fechas
    - `start` (string (date-time), optional, nullable, e.g. `"2024-01-01T00:00:00.000Z"`) — Fecha de inicio del rango
    - `end` (string (date-time), optional, nullable, e.g. `"2024-01-31T23:59:59.000Z"`) — Fecha de fin del rango
  - `equal` (string (date-time), optional, nullable) — Filtra por fecha exacta
- `endDate` (object, optional, nullable) — Criterios de filtro para la fecha de fin
  - `after` (string (date-time), optional, nullable) — Filtra por fecha posterior a
  - `before` (string (date-time), optional, nullable) — Filtra por fecha anterior a
  - `between` (object, optional, nullable) — Filtra por rango de fechas
    - `start` (string (date-time), optional, nullable, e.g. `"2024-01-01T00:00:00.000Z"`) — Fecha de inicio del rango
    - `end` (string (date-time), optional, nullable, e.g. `"2024-01-31T23:59:59.000Z"`) — Fecha de fin del rango
  - `equal` (string (date-time), optional, nullable) — Filtra por fecha exacta

### Responses

#### 200 — Una página de paros con su causa y clasificación

Type: object (`GetStopsReportResponseV1`)

- `totalCount` (integer, optional, default `100`) — La cantidad total de elementos
- `totalPages` (integer, optional, default `10`) — La cantidad total de páginas
- `currentPage` (integer, optional, default `1`) — La página actual
- `stops` (array of object, required)
  - `classification` (object, required) — La clasificación del paro.
    - `id` (integer, required, nullable, e.g. `"9ce2c6b4-a1f4-4bf2-b5c8-10436d1018cc"`) — El identificador único de la clasificación.
    - `createdAt` (string (date-time), required, nullable, e.g. `"2025-11-01T00:00:00"`) — Fecha y hora de creación de la clasificación.
    - `updatedAt` (string (date-time), required, nullable, e.g. `"2025-11-01T00:00:00"`) — Fecha y hora de la última actualización de la clasificación.
    - `component` (object, required) — El componente asociado al paro.
      - `id` (string (uuid), optional, nullable, e.g. `"51d34e1b-a294-4246-8c86-4f9acfe94367"`) — El identificador único.
      - `name` (string, optional, nullable, e.g. `"a simple cause"`) — El nombre de la causa o el componente.
    - `specificCause` (object, required) — La causa específica del paro.
      - `id` (string (uuid), optional, nullable, e.g. `"51d34e1b-a294-4246-8c86-4f9acfe94367"`) — El identificador único.
      - `name` (string, optional, nullable, e.g. `"a simple cause"`) — El nombre de la causa o el componente.
    - `generalCause` (object, required) — La causa general del paro.
      - `id` (string (uuid), optional, nullable, e.g. `"51d34e1b-a294-4246-8c86-4f9acfe94367"`) — El identificador único.
      - `name` (string, optional, nullable, e.g. `"a simple cause"`) — El nombre de la causa o el componente.
    - `description` (string, optional, nullable, e.g. `"a simple description"`) — Una descripción de la clasificación.
  - `company` (object, required) — La empresa asociada al paro.
    - `id` (integer, required, e.g. `1`) — El identificador único de la empresa.
    - `name` (string, required, e.g. `"company 1"`) — El nombre de la empresa.
  - `machine` (object, required) — La máquina del paro.
    - `id` (integer, required, e.g. `1`) — El identificador único de la máquina.
    - `name` (string, required, e.g. `"machine 1"`) — El nombre de la máquina.
  - `shift` (object, required) — El turno del paro.
    - `id` (integer, required, e.g. `1`) — El identificador único del turno.
    - `name` (string, required, e.g. `"shift 1"`) — El nombre del turno.
    - `startTime` (string (date-time), required, e.g. `"2024-01-01T08:00:00.000Z"`) — La hora de inicio del turno.
    - `endTime` (string (date-time), required, e.g. `"2024-01-01T16:00:00.000Z"`) — La hora de fin del turno.
    - `isActive` (boolean, required, e.g. `true`) — Si el turno está activo actualmente.
  - `stop` (object, required) — Información del paro.
    - `id` (integer, required, e.g. `1`) — El identificador único del paro.
    - `startTime` (string (date-time), required, e.g. `"2025-11-01T00:00:00"`) — La hora de inicio del paro.
    - `endTime` (string (date-time), required, nullable, e.g. `"2025-11-01T00:00:00"`) — La hora de fin del paro.
    - `isProgrammed` (boolean, required, e.g. `true`) — Indica si el paro estaba programado.
    - `isIncludedInAvailability` (boolean, required, e.g. `true`) — Indica si el paro afecta el cálculo de disponibilidad.
    - `isIncludedInStops` (boolean, required, e.g. `true`) — Indica si el paro cuenta como paro de producción.
    - `isManual` (boolean, required, e.g. `true`) — Indica si el paro se registró manualmente.
    - `createdAt` (string (date-time), required, nullable, e.g. `"2025-11-01T00:00:00"`) — Fecha y hora de creación del registro del paro.
    - `updatedAt` (string (date-time), required, nullable, e.g. `"2025-11-01T00:00:00"`) — Fecha y hora de la última actualización del registro del paro.
    - `deletedAt` (string (date-time), optional, nullable, e.g. `"2025-11-01T00:00:00"`) — Fecha y hora de eliminación del registro del paro, si aplica.
    - `durationInMinutes` (number, required, e.g. `30`) — La duración del paro, en minutos.

#### 422 — Error de validación

Type: object (`HTTPValidationError`)

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

### Example request

```bash
curl -X POST 'https://draco.prod.pulsarml.com/v1/reports/stops' \
  -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"
    },
    "stopId": {
      "equal": 1,
      "exclude": [
        1
      ],
      "greaterThan": 1,
      "greaterThanOrEqual": 1,
      "include": [
        1
      ],
      "lessThan": 1,
      "lessThanOrEqual": 1,
      "notEqual": 1
    }
  }'
```