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

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

Devuelve quién operó la máquina durante un turno (su ID, el que devuelve `GET /v1/shifts`), después de todas las asignaciones hasta ahora: una entrada por tramo, del más antiguo al más reciente, cada una con el operador y cuándo tomó y entregó la máquina. Una vez que alguien está asignado, las entradas normalmente cubren el turno completo. Un tramo sin operador tiene `operatorId: null`, y un turno al que nadie fue asignado devuelve una lista vacía.

Para el ejemplo de la mañana de `POST /v1/shifts/{shift_id}/operator`, después de las tres asignaciones aceptadas devuelve a 1063 de 06:00 a 10:00, a 2071 de 10:00 a 12:00 y a 3300 de 12:00 a 14:00.

Errores:

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

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

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 — La línea de tiempo de operadores del turno, del más antiguo al más reciente

Type: array of object

- `operatorId` (integer, required, nullable, e.g. `1063`) — El operador que tenía la máquina, tal como lo devuelve `/v1/operators`; `null` en un tramo sin operador.
- `firstName` (string, required, nullable, e.g. `"Ana"`) — El nombre del operador.
- `lastName` (string, required, nullable, e.g. `"Ruiz"`) — El apellido del operador.
- `start` (string (date-time), required, e.g. `"2026-10-12T06:00:00Z"`) — Cuándo tomó la máquina el operador.
- `end` (string (date-time), required, e.g. `"2026-10-12T10:00:00Z"`) — Cuándo entregó la máquina el operador, o el final del turno.

#### 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>/operators' \
  -H 'x-api-key: <YOUR_API_KEY>'
```