# Listar turnos (https://docs.pulsarml.com/es/v1/api-reference/shifts/get-shifts)

Lista tus turnos que se traslapan con un rango de tiempo, pasados o próximos, para encontrar el `id` que reciben `POST /v1/shifts/{shift_id}/operator` y `POST /v1/shifts/{shift_id}/defects`.

Un turno se devuelve cuando alguna parte de él cae entre `from` y `to`: termina después de `from` y empieza antes de `to`. Así, un turno de noche de 22:00 a 06:00 aparece en un rango que cubra cualquiera de los dos días. El rango puede abarcar como máximo **31 días**; recorre los periodos más largos con rangos consecutivos. Los turnos se devuelven ordenados por `start` y luego por máquina.

Acota la lista con `machineId`, repetido para varias máquinas:

```
GET /v1/shifts?from=2026-10-12T00:00:00Z&to=2026-10-13T00:00:00Z&machineId=12
```

Los turnos excluidos de las métricas también se listan, con `isConsidered: false`.

## `GET /v1/shifts`

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.

### Query parameters

- `from` (string (date-time), required, e.g. `"2026-10-12T00:00:00Z"`) — Devuelve los turnos que terminan después de este momento. Una hora sin desfase UTC se interpreta como UTC.
- `to` (string (date-time), required, e.g. `"2026-10-13T00:00:00Z"`) — Devuelve los turnos que empiezan antes de este momento, como máximo 31 días después de `from`. Una hora sin desfase UTC se interpreta como UTC.
- `machineId` (array of integer, optional, nullable) — Solo los turnos de estas máquinas, tal como las devuelve `GET /v1/machines`. Repítelo para varias máquinas (`machineId=12&machineId=13`). Si se omite, todas tus máquinas.

### Responses

#### 200 — Los turnos que se traslapan con el rango, ordenados por inicio

Type: array of object

- `id` (integer, required, e.g. `48213`) — El ID del turno, para `POST /v1/shifts/{shift_id}/operator` y `POST /v1/shifts/{shift_id}/defects`.
- `machineId` (integer, required, e.g. `12`) — La máquina a la que pertenece el turno.
- `title` (string, required, e.g. `"Morning"`) — El nombre del turno.
- `start` (string (date-time), required, e.g. `"2026-10-12T06:00:00Z"`) — Cuándo empieza el turno.
- `end` (string (date-time), required, e.g. `"2026-10-12T14:00:00Z"`) — Cuándo termina el turno.
- `targetQuantity` (integer, required, e.g. `1200`) — La meta de producción del turno, en unidades, tal como la define `PUT /v1/shifts/targets`.
- `isConsidered` (boolean, required, e.g. `true`) — Si el turno cuenta para las métricas. Los turnos excluidos también se listan, con `false`.

#### 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)
  - `input` (any, optional)
  - `ctx` (object, optional)

### Example request

```bash
curl -X GET 'https://draco.prod.pulsarml.com/v1/shifts?from=2026-10-12T00%3A00%3A00Z&to=2026-10-13T00%3A00%3A00Z' \
  -H 'x-api-key: <YOUR_API_KEY>'
```