# Ver defeitos do turno (https://docs.pulsarml.com/pt/v1/api-reference/shifts/get-shifts-shift_id-defects)

**Scope necessário:** `shifts.read`.

Devolve os registos de produção de defeitos de um turno (o seu ID, tal como devolvido por `GET /v1/shifts`), do mais antigo para o mais recente, com a mesma forma que as rotas `POST` de defeitos devolvem. Lista todos os registos `defects` na máquina do turno que ficam dentro do turno, incluindo os criados através de `POST /v1/production-logs` para parte do turno, por isso os defeitos do turno são a soma dos valores de `quantity`.

Use-o para verificar o que um turno já tem antes de adicionar mais, por exemplo antes de reenviar um pedido sem `Idempotency-Key` cujo resultado desconhece. É devolvida a lista completa, sem paginação.

Erros:

* `404` `shift_not_found`: o turno não é um dos seus.

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

Base URLs:
- `https://draco.prod.pulsarml.com` — Produção
- `https://draco.stage.pulsarml.com` — Sandbox (staging)

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

### Path parameters

- `shift_id` (integer, required) — O ID do turno.

### Responses

#### 200 — Os registos de produção de defeitos do turno, do mais antigo para o mais recente

Type: array of object

- `id` (string, required, e.g. `"5b0f6a52-3c1e-4d5b-9f0e-8a7c6d5e4f3a"`) — O ID do registo de produção de defeitos. Passe-o a `DELETE /v1/production-logs/{id}` para anular a chamada que o criou.
- `shiftId` (integer, required, e.g. `48213`) — O turno a que os defeitos pertencem.
- `machineId` (integer, required, e.g. `12`) — A máquina a que o turno pertence.
- `quantity` (integer, required, e.g. `3`) — Quantas unidades defeituosas o registo contém.
- `start` (string (date-time), required, e.g. `"2026-10-12T06:00:00Z"`) — Quando o registo começa. Os defeitos adicionados através de `/v1/shifts` cobrem o turno completo, por isso é o início do turno.
- `end` (string (date-time), required, e.g. `"2026-10-12T14:00:00Z"`) — Quando o registo termina; o fim do turno para os defeitos adicionados através de `/v1/shifts`.
- `sku` (object, required) — O SKU dos defeitos, tal como resolvido a partir do `id` ou do `name` do pedido. Estes endpoints nunca criam um SKU.
  - `id` (string, required, e.g. `"9ce2c6b4-a1f4-4bf2-b5c8-10436d1018cc"`) — O `id` do SKU, tal como devolvido por `/v1/skus`.
  - `name` (string, required, e.g. `"SKU-1042"`) — O nome do SKU.

#### 401 — * `unauthenticated`: as credenciais estão em falta, são inválidas ou expiraram.

#### 403 — * `missing_scope`: as credenciais são válidas, mas não têm o scope que este endpoint requer.

#### 404 — * `shift_not_found`: nenhum dos seus turnos corresponde ao pedido.

Type: object (`ErrorResponse`)

- `code` (string, required, e.g. `"shift_not_found"`) — Identificador estável do erro, como `shift_not_found`; cada endpoint lista os seus códigos. Use-o para decidir o que fazer; podem ser acrescentados códigos novos ao longo do tempo, por isso trate um código desconhecido pelo seu estado HTTP.
- `detail` (string, required) — Explicação legível por pessoas. Pode mudar; não a analise no seu código.

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

#### 429 — * `rate_limited`: a chave de API excedeu o seu limite de pedidos. Tente novamente após `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>'
```