# Definir objetivos de turnos (https://docs.pulsarml.com/pt/v1/api-reference/shifts/put-shifts-targets)

Define o objetivo de produção de turnos existentes, para dias futuros ou passados. O corpo é um **array** JSON de até 1000 linhas, por isso um plano completo (ou a sua exportação para CSV) cabe numa única chamada.

Cada linha indica um turno pela sua máquina (`uuid` ou `name`), pela data (`date`) em que começa no fuso horário da empresa, e pelo seu nome (`title`, por exemplo `Morning`). Enviar os mesmos valores outra vez não causa problemas: o objetivo é substituído, não somado.

Cada linha é devolvida com um `status`, e só as linhas `updated` alteraram alguma coisa:

* `updated`: o objetivo do turno passa a ser `targetQuantity`.
* `machineNotFound` / `ambiguousMachine`: nenhuma máquina, ou mais do que uma, corresponde a `machine`.
* `shiftNotFound` / `ambiguousShift`: a máquina não tem nenhum turno, ou tem mais do que um, com esse nome que comece nessa data.
* `duplicateShift`: outra linha do mesmo pedido aponta para o mesmo turno, por isso nenhuma das duas foi aplicada.

Os objetivos são lidos em direto do turno, por isso as vistas de tempo real e de turnos mostram o novo valor de imediato. Nada é recalculado: o objetivo não entra no cálculo do OEE.

## `PUT /v1/shifts/targets`

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.

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

Type: array of object

- `machine` (object, required) — A máquina a que o turno pertence.
  - `uuid` (string (uuid), optional, nullable, e.g. `"0190c1c2-7a3e-7cc1-9b2f-1d2e3f4a5b6c"`) — O `uuid` da máquina, tal como devolvido por `GET /v1/machines`.
  - `name` (string, optional, nullable, min length 1, e.g. `"Line 1"`) — O nome da máquina (ou o seu nome externo), com correspondência exata e sem distinguir maiúsculas de minúsculas.
- `date` (string (date), required, e.g. `"2026-10-12"`) — A data em que o turno começa, no fuso horário da empresa (`YYYY-MM-DD`). Um turno da noite que começa às 22:00 do dia 12 e termina no dia 13 é indicado com o dia 12.
- `title` (string, required, min length 1, e.g. `"Morning"`) — O nome do turno, com correspondência exata e sem distinguir maiúsculas de minúsculas.
- `targetQuantity` (integer, required, >= 0, e.g. `1200`) — O objetivo de produção do turno, em unidades.

### Responses

#### 200 — Um resultado por linha, pela ordem do pedido

Type: array of object

- `machine` (object, required) — A máquina a que o turno pertence.
  - `uuid` (string (uuid), optional, nullable, e.g. `"0190c1c2-7a3e-7cc1-9b2f-1d2e3f4a5b6c"`) — O `uuid` da máquina, tal como devolvido por `GET /v1/machines`.
  - `name` (string, optional, nullable, min length 1, e.g. `"Line 1"`) — O nome da máquina (ou o seu nome externo), com correspondência exata e sem distinguir maiúsculas de minúsculas.
- `date` (string (date), required, e.g. `"2026-10-12"`) — A data em que o turno começa, no fuso horário da empresa (`YYYY-MM-DD`). Um turno da noite que começa às 22:00 do dia 12 e termina no dia 13 é indicado com o dia 12.
- `title` (string, required, min length 1, e.g. `"Morning"`) — O nome do turno, com correspondência exata e sem distinguir maiúsculas de minúsculas.
- `targetQuantity` (integer, required, >= 0, e.g. `1200`) — O objetivo de produção do turno, em unidades.
- `status` ("updated" | "machineNotFound" | "ambiguousMachine" | "shiftNotFound" | "ambiguousShift" | "duplicateShift", required, e.g. `"updated"`) — O que aconteceu a esta linha. Só as linhas `updated` alteraram um turno; consulte a descrição do endpoint para as restantes.
- `machineId` (integer, optional, nullable, e.g. `12`) — O ID da máquina que corresponde à linha, quando corresponde a exatamente uma.
- `shiftId` (integer, optional, nullable, e.g. `48213`) — O ID do turno que corresponde à linha, quando corresponde a exatamente um.

#### 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 PUT 'https://draco.prod.pulsarml.com/v1/shifts/targets' \
  -H 'x-api-key: <YOUR_API_KEY>' \
  -H 'Content-Type: application/json' \
  -d '[
    {
      "machine": {
        "uuid": "0190c1c2-7a3e-7cc1-9b2f-1d2e3f4a5b6c",
        "name": "Line 1"
      },
      "date": "2026-10-12",
      "title": "Morning",
      "targetQuantity": 1200
    }
  ]'
```