Ver operadores del turno
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:
404shift_not_found: el turno no es uno de los tuyos.
Parámetros de ruta
El ID del turno.
Cuerpo de la respuesta
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/v1/shifts/0/operators"[ { "operatorId": 1063, "firstName": "Ana", "lastName": "Ruiz", "start": "2026-10-12T06:00:00Z", "end": "2026-10-12T10:00:00Z" }]Asignar operador a turno POST
Asigna un operador a un turno por su ID (el que devuelve GET /v1/shifts), incluso en turnos que ya terminaron. Sin start, el operador toma la máquina desde el inicio del turno. Cómo se suman las asignaciones de operador. Cada turno guarda una línea de tiempo de quién operó la máquina. Una asignación significa "a partir de start, este operador opera la máquina": dura hasta el final del turno, o hasta la siguiente asignación. La única excepción es la primera asignación del turno, que también cubre el tiempo antes de start. * Primera asignación. Si el turno todavía no tiene a nadie asignado, el operador cubre el turno completo, desde su primer minuto, aunque start sea posterior. Ese tiempo anterior le queda atribuido de forma definitiva: después no se puede dejar sin asignar ni dárselo a otra persona, porque cualquier start posterior que sea anterior al suyo se rechaza. Para dejárselo a otro operador, asigna primero a ese operador, desde el inicio del turno. * Asignaciones posteriores. Cada una divide la línea de tiempo en start: quien tenía la máquina la conserva hasta start, y el nuevo operador la toma desde start hasta el final del turno. * El orden importa. Envía las asignaciones en orden cronológico. Un start anterior al último cambio del turno se rechaza con 400, así que después no puedes insertar un operador en medio. Un start igual al último cambio reemplaza al operador que tomó la máquina en ese momento. * Los reintentos no siempre son seguros. Enviar la misma asignación otra vez no cambia nada solo si ninguna otra asignación llegó al turno entre tanto. Si no, el reintento puede deshacer un relevo posterior: si se asigna al operador A desde las 10:00 y luego al operador B desde las 10:00, enviar otra vez la solicitud de A reemplaza a B por A. Antes de reintentar una solicitud cuyo resultado no conoces, como una que agotó el tiempo de espera, revisa que no se haya hecho ninguna asignación posterior al turno, y no dejes que dos sistemas asignen operadores al mismo turno. * start se redondea hacia abajo al minuto, así que dos valores de start en el mismo minuto cuentan como el mismo cambio. Por ejemplo, para un turno Morning de 06:00 a 14:00 sin nadie asignado todavía: | Solicitud | Línea de tiempo después | | --- | --- | | operador 1063 desde las 10:00 | 1063 06:00–14:00 (la primera asignación cubre el turno completo) | | operador 2071 desde las 10:00 | 1063 06:00–10:00, 2071 10:00–14:00 | | operador 3300 desde las 12:00 | 1063 06:00–10:00, 2071 10:00–12:00, 3300 12:00–14:00 | | operador 4410 desde las 08:00 | Rechazada con 400: las 08:00 son antes del último cambio, a las 12:00 | Para registrar un turno que tuvo varios operadores, envía el primero desde el inicio del turno y luego los demás en el orden en que tomaron la máquina. GET /v1/shifts/{shift_id}/operators devuelve la línea de tiempo tal como está, así que puedes revisar el resultado, o lo que ya tiene un turno antes de reintentar. Las métricas de operador del turno se recalculan en segundo plano, así que los reportes pueden tardar un momento en mostrar el cambio. Los errores llevan un code estable (consulta las respuestas abajo): * 400 shift_not_found: ningún turno coincide. * 400 invalid_start: start está fuera del turno, en el futuro, o antes del último cambio de operador del turno. * 403 shift_locked: el turno tiene producción marcada como revisada, lo que lo bloquea. * 404 operator_not_found: el operador no existe en tu empresa.
Ver defectos del turno GET
Devuelve los registros de producción de defectos de un turno (su ID, el que devuelve GET /v1/shifts), del más antiguo al más reciente, con la misma forma que devuelven las rutas POST de defectos. Lista cada registro defects de la máquina del turno que cae dentro del turno, incluso los creados con POST /v1/production-logs para una parte del turno, así que los defectos del turno son la suma de los valores de quantity. Úsalo para revisar lo que ya tiene un turno antes de agregar más, por ejemplo antes de reenviar sin su Idempotency-Key una solicitud cuyo resultado no conoces. Se devuelve la lista completa, sin paginar. Errores: * 404 shift_not_found: el turno no es uno de los tuyos.