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

Define la meta de producción de turnos existentes, para días próximos o pasados. El cuerpo es un **arreglo** JSON de hasta 1,000 filas, así que un plan completo (o su exportación a CSV) cabe en una sola llamada.

Cada fila indica un turno por su máquina (`uuid` o `name`), la fecha (`date`) en que empieza en la zona horaria de la empresa, y su nombre (`title`, por ejemplo `Morning`). Enviar los mismos valores otra vez no causa problemas: la meta se sobrescribe, no se suma.

Cada fila regresa con un `status`, y solo las filas `updated` cambiaron algo:

* `updated`: la meta del turno ahora es `targetQuantity`.
* `machineNotFound` / `ambiguousMachine`: ninguna máquina, o más de una, coincide con `machine`.
* `shiftNotFound` / `ambiguousShift`: la máquina no tiene ningún turno, o tiene más de uno, con ese nombre que empiece en esa fecha.
* `duplicateShift`: otra fila de la misma solicitud apunta al mismo turno, así que no se aplicó ninguna de las dos.

Las metas se leen en vivo del turno, así que las vistas de tiempo real y de turnos muestran el nuevo valor de inmediato. No se recalcula nada: la meta no interviene en el OEE.

## `PUT /v1/shifts/targets`

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.

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

Type: array of object

- `machine` (object, required) — La máquina a la que pertenece el turno.
  - `uuid` (string (uuid), optional, nullable, e.g. `"0190c1c2-7a3e-7cc1-9b2f-1d2e3f4a5b6c"`) — El `uuid` de la máquina, tal como lo devuelve `GET /v1/machines`.
  - `name` (string, optional, nullable, min length 1, e.g. `"Line 1"`) — El nombre de la máquina (o su nombre externo), con coincidencia exacta y sin distinguir mayúsculas de minúsculas.
- `date` (string (date), required, e.g. `"2026-10-12"`) — La fecha en que empieza el turno, en la zona horaria de la empresa (`YYYY-MM-DD`). Un turno nocturno que empieza a las 22:00 del día 12 y termina el 13 se indica con el 12.
- `title` (string, required, min length 1, e.g. `"Morning"`) — El nombre del turno, con coincidencia exacta y sin distinguir mayúsculas de minúsculas.
- `targetQuantity` (integer, required, >= 0, e.g. `1200`) — La meta de producción del turno, en unidades.

### Responses

#### 200 — Un resultado por fila, en el orden de la solicitud

Type: array of object

- `machine` (object, required) — La máquina a la que pertenece el turno.
  - `uuid` (string (uuid), optional, nullable, e.g. `"0190c1c2-7a3e-7cc1-9b2f-1d2e3f4a5b6c"`) — El `uuid` de la máquina, tal como lo devuelve `GET /v1/machines`.
  - `name` (string, optional, nullable, min length 1, e.g. `"Line 1"`) — El nombre de la máquina (o su nombre externo), con coincidencia exacta y sin distinguir mayúsculas de minúsculas.
- `date` (string (date), required, e.g. `"2026-10-12"`) — La fecha en que empieza el turno, en la zona horaria de la empresa (`YYYY-MM-DD`). Un turno nocturno que empieza a las 22:00 del día 12 y termina el 13 se indica con el 12.
- `title` (string, required, min length 1, e.g. `"Morning"`) — El nombre del turno, con coincidencia exacta y sin distinguir mayúsculas de minúsculas.
- `targetQuantity` (integer, required, >= 0, e.g. `1200`) — La meta de producción del turno, en unidades.
- `status` ("updated" | "machineNotFound" | "ambiguousMachine" | "shiftNotFound" | "ambiguousShift" | "duplicateShift", required, e.g. `"updated"`) — Qué pasó con esta fila. Solo las filas `updated` cambiaron un turno; consulta la descripción del endpoint para las demás.
- `machineId` (integer, optional, nullable, e.g. `12`) — El ID de la máquina que corresponde a la fila, cuando corresponde a exactamente una.
- `shiftId` (integer, optional, nullable, e.g. `48213`) — El ID del turno que corresponde a la fila, cuando corresponde a exactamente uno.

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

### 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
    }
  ]'
```