# Adicionar defeitos ao turno (https://docs.pulsarml.com/pt/v1/api-reference/shifts/post-shifts-shift_id-defects)

Adiciona unidades defeituosas de um SKU a um turno pelo seu ID (o que é devolvido por `GET /v1/shifts`), mesmo em turnos que já terminaram.

**Como os defeitos se somam.** Ao contrário dos operadores, os defeitos não têm cronologia nem ordem. Cada chamada adiciona um novo registo de produção de defeitos de `quantity` unidades do SKU, que cobre o turno completo, e a Qualidade e o OEE do turno contabilizam-no em segundo plano. Uma chamada nunca substitui as anteriores:

* Enviar `quantity: 2` e depois `quantity: 3` regista 5 defeitos.
* Enviar o mesmo pedido duas vezes regista os defeitos duas vezes, por isso repita apenas os pedidos que falharam.
* Para anular uma chamada, elimine o registo que ela devolveu com `DELETE /v1/production-logs/{id}`. Para ver o que um turno já tem, liste os seus registos com `POST /v1/production-logs/filters`.

Os defeitos não são atribuídos a nenhum operador, e podem ser adicionados a turnos passados, incluindo aqueles cuja produção foi revista. O SKU é indicado por `id` ou por `name`; um nome desconhecido cria um SKU novo, por isso verifique a ortografia.

Erros:

* `400`: nenhum turno corresponde, o turno ainda não começou, ou o turno não tem produção suficiente desse SKU para comportar os defeitos.
* `404`: `sku.id` não é um dos seus SKUs.

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

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.

### Path parameters

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

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

Type: object (`AddDefectsToShiftRequestV1`)

- `sku` (object, required) — O SKU a que pertencem as unidades defeituosas.
  - `id` (string, optional, nullable, min length 1, e.g. `"9ce2c6b4-a1f4-4bf2-b5c8-10436d1018cc"`) — O `id` do SKU, tal como devolvido por `/v1/skus`. Um ID que não seja um dos seus SKUs é rejeitado.
  - `name` (string, optional, nullable, min length 1, e.g. `"SKU-1042"`) — O nome do SKU, comparado de forma exata. Um nome que não corresponda a nenhum dos seus SKUs cria um SKU novo com esse nome, tal como nos registos de produção.
- `quantity` (integer, optional, default `1`, >= 1, e.g. `3`) — Quantas unidades defeituosas adicionar. Por predefinição, 1.

### Responses

#### 200 — O registo de produção de defeitos que foi criado

Type: object (`ShiftDefectsDtoV1`)

- `id` (string, required, e.g. `"5b0f6a52-3c1e-4d5b-9f0e-8a7c6d5e4f3a"`) — O ID do registo de produção de defeitos que foi criado. Passe-o a `DELETE /v1/production-logs/{id}` para anular a chamada.
- `shiftId` (integer, required, e.g. `48213`) — O turno ao qual os defeitos foram adicionados.
- `machineId` (integer, required, e.g. `12`) — A máquina a que o turno pertence.
- `quantity` (integer, required, e.g. `3`) — Quantas unidades defeituosas foram adicionadas.
- `start` (string (date-time), required, e.g. `"2026-10-12T06:00:00Z"`) — O início do turno. Os defeitos cobrem sempre o turno completo.
- `end` (string (date-time), required, e.g. `"2026-10-12T14:00:00Z"`) — O fim do turno.

#### 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/shifts/<shift_id>/defects' \
  -H 'x-api-key: <YOUR_API_KEY>' \
  -H 'Content-Type: application/json' \
  -d '{
    "sku": {
      "id": "9ce2c6b4-a1f4-4bf2-b5c8-10436d1018cc",
      "name": "SKU-1042"
    },
    "quantity": 3
  }'
```