# Ver defectos del turno (https://docs.pulsarml.com/es/v1/api-reference/shifts/get-shifts-shift_id-defects)

**Scope requerido:** `shifts.read`.

Devuelve los registros de producción de defectos de un turno (su ID, el que devuelve `GET /v1/shifts`), del más antiguo al más reciente, con la misma forma que devuelven las rutas `POST` de defectos. Lista cada registro `defects` de la máquina del turno que cae dentro del turno, incluso los creados con `POST /v1/production-logs` para una parte del turno, así que los defectos del turno son la suma de los valores de `quantity`.

Úsalo para revisar lo que ya tiene un turno antes de agregar más, por ejemplo antes de reenviar sin su `Idempotency-Key` una solicitud cuyo resultado no conoces. Se devuelve la lista completa, sin paginar.

Errores:

* `404` `shift_not_found`: el turno no es uno de los tuyos.

## `GET /v1/shifts/{shift_id}/defects`

Base URLs:
- `https://draco.prod.pulsarml.com` — Producción
- `https://draco.stage.pulsarml.com` — Sandbox (staging)

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

### Path parameters

- `shift_id` (integer, required) — El ID del turno.

### Responses

#### 200 — Los registros de producción de defectos del turno, del más antiguo al más reciente

Type: array of object

- `id` (string, required, e.g. `"5b0f6a52-3c1e-4d5b-9f0e-8a7c6d5e4f3a"`) — El ID del registro de producción de defectos. Pásalo a `DELETE /v1/production-logs/{id}` para deshacer la llamada que lo creó.
- `shiftId` (integer, required, e.g. `48213`) — El turno al que pertenecen los defectos.
- `machineId` (integer, required, e.g. `12`) — La máquina a la que pertenece el turno.
- `quantity` (integer, required, e.g. `3`) — Cuántas unidades defectuosas tiene el registro.
- `start` (string (date-time), required, e.g. `"2026-10-12T06:00:00Z"`) — Cuándo empieza el registro. Los defectos agregados con `/v1/shifts` cubren el turno completo, así que es el inicio del turno.
- `end` (string (date-time), required, e.g. `"2026-10-12T14:00:00Z"`) — Cuándo termina el registro; el fin del turno para los defectos agregados con `/v1/shifts`.
- `sku` (object, required) — El SKU de los defectos, tal como se resolvió a partir del `id` o el `name` de la solicitud. Estos endpoints nunca crean un SKU.
  - `id` (string, required, e.g. `"9ce2c6b4-a1f4-4bf2-b5c8-10436d1018cc"`) — El `id` del SKU, tal como lo devuelve `/v1/skus`.
  - `name` (string, required, e.g. `"SKU-1042"`) — El nombre del SKU.

#### 401 — * `unauthenticated`: Las credenciales faltan, no son válidas o expiraron.

#### 403 — * `missing_scope`: Las credenciales son válidas, pero no tienen el scope que requiere este endpoint.

#### 404 — * `shift_not_found`: Ninguno de tus turnos coincide con la solicitud.

Type: object (`ErrorResponse`)

- `code` (string, required, e.g. `"shift_not_found"`) — Identificador estable del error, como `shift_not_found`; cada endpoint lista sus códigos. Decide con base en él; con el tiempo pueden agregarse códigos nuevos, así que trata uno desconocido según su estado HTTP.
- `detail` (string, required) — Explicación legible para personas. Puede cambiar; no la analices.

#### 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)

#### 429 — * `rate_limited`: La API key superó su límite de solicitudes. Reintenta después de `Retry-After` segundos.

### Example request

```bash
curl -X GET 'https://draco.prod.pulsarml.com/v1/shifts/<shift_id>/defects' \
  -H 'x-api-key: <YOUR_API_KEY>'
```