# Crear registros de producción (https://docs.pulsarml.com/es/v1/api-reference/production-logs/post-production-logs)

Crea uno o varios registros de producción. El cuerpo es un **arreglo** JSON, incluso para un solo registro.

Este es el endpoint que usa un MES, ERP o terminal de planta para enviar producción a Pulsar. `machine` y `sku` son referencias que aceptan un `id` o un `name`, así que un sistema que solo conoce nombres de línea y códigos de producto no tiene que resolver primero los IDs de Pulsar.

Un registro de producción describe un intervalo cerrado: `start` y `end` son obligatorios. Para registrar lo que pasa en el turno que una máquina está corriendo ahora, usa los endpoints de tiempo real.

## `POST /v1/production-logs`

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

- `type` ("correct" | "defects" | "total", optional, default `"total"`, e.g. `"correct"`) — El tipo de registro de producción (correctas, defectos, etc.)
- `count` (integer, required, e.g. `1000`) — La cantidad total de piezas producidas en este registro de producción
- `nominalSpeed` (number, required, e.g. `60`) — La velocidad nominal de la máquina durante este registro de producción (número decimal)
- `start` (string (date-time), required, e.g. `"2024-01-01T08:00:00"`) — La hora de inicio del registro de producción
- `end` (string (date-time), required, e.g. `"2024-01-01T16:00:00"`) — La hora de fin del registro de producción
- `machine` (object, required) — La máquina asociada al registro de producción
  - `id` (integer, optional, nullable, > 0, e.g. `1`) — El ID de la máquina
  - `name` (string, optional, nullable, e.g. `"Machine 1"`) — El nombre de la máquina
- `sku` (object, required) — El SKU asociado al registro de producción
  - `id` (string, optional, nullable, e.g. `"9ce2c6b4-a1f4-4bf2-b5c8-10436d1018cc"`) — El ID del SKU
  - `name` (string, optional, nullable, e.g. `"sku 1"`) — El nombre del SKU
- `operator` (object, optional, nullable) — El operador que participó en este registro de producción
  - `firstName` (string, required, e.g. `"Pérez"`) — El nombre del operador
  - `lastName` (string, required, e.g. `"Sánchez"`) — El apellido del operador
- `workOrder` (string, optional, nullable, e.g. `"work order 1"`) — El nombre de la orden de trabajo asociada a este registro de producción

### Responses

#### 200 — Los registros de producción que se crearon

Type: array of object

- `id` (string, required, e.g. `"36f7b519-d93e-4ec8-8245-7f4b8c123456"`) — El identificador único del registro de producción
- `type` ("correct" | "defects" | "total", required, e.g. `"correct"`) — El tipo de registro de producción
- `sensorCount` (number, required, e.g. `500`) — El conteo del sensor registrado en este registro
- `count` (number, required, e.g. `1000`) — La cantidad total de piezas producidas en este registro
- `nominalSpeed` (number, required, e.g. `60`) — La velocidad nominal de la máquina durante este registro
- `countingFactor` (number, optional, nullable, e.g. `1`) — El factor de conteo de la máquina durante este registro
- `start` (string (date-time), required, e.g. `"2024-01-01T00:00:00"`) — La hora de inicio del registro de producción
- `end` (string (date-time), required, e.g. `"2024-01-01T08:00:00"`) — La hora de fin del registro de producción
- `isReviewed` (boolean, required, e.g. `true`) — Indica si el registro de producción fue revisado
- `isAutomated` (boolean, required, e.g. `true`) — Indica si el registro de producción fue automático
- `machineId` (integer, required, e.g. `12`) — El ID de la máquina del registro de producción
- `createdAt` (string (date-time), required) — La fecha y hora en que se creó el registro de producción
- `updatedAt` (string (date-time), required) — La fecha y hora de la última actualización del registro de producción
- `deletedAt` (string (date-time), optional, nullable) — La fecha y hora en que se eliminó el registro de producción, si aplica
- `live` (boolean, required, e.g. `true`) — Indica si el registro de producción está en curso
- `machine` (object, required) — La máquina del registro de producción
  - `id` (integer, required) — El ID de la máquina
  - `name` (string, required) — El nombre de la máquina
  - `isCountEnabled` (boolean, required) — Indica si el conteo está habilitado
  - `externalName` (string, optional, nullable) — El nombre externo de la máquina
- `company` (object, required) — La empresa del registro de producción
  - `id` (integer, required) — El ID de la empresa
  - `name` (string, required) — El nombre de la empresa
  - `timezone` (string, required) — La zona horaria de la empresa (por ejemplo, "America/Mexico_City")
- `shift` (object, required) — El turno en que se registró la producción
  - `id` (integer, required) — El ID del turno
  - `name` (string, required) — El nombre del turno
  - `start` (string (date-time), required) — La hora de inicio del turno
  - `end` (string (date-time), required) — La hora de fin del turno
  - `isConsidered` (boolean, required) — Indica si el turno se toma en cuenta para las métricas
- `operator` (object, optional) — El usuario que revisó el registro de producción
  - `id` (integer, required) — El ID del usuario u operador
  - `firstName` (string, optional, nullable) — El nombre del operador
  - `lastName` (string, optional, nullable) — El apellido del operador
  - `email` (string, optional, nullable) — El correo electrónico del operador
- `sku` (object, required) — El SKU producido en el registro de producción
  - `id` (string, required) — El UUID del SKU
  - `name` (string, required) — El nombre del SKU
  - `description` (string, optional, nullable) — La descripción del SKU
  - `unit` (string, required) — La unidad de medida del SKU
- `workOrder` (object | object (any keys), required) — La orden de trabajo asociada al registro de producción
  - when it is `WorkOrderDetailsDtoV1`:
    - `id` (string, required) — El UUID de la orden de trabajo
    - `name` (string, required) — El nombre de la orden de trabajo
    - `description` (string, required) — La descripción de la orden de trabajo
    - `status` ("InProgress" | "Completed" | "Canceled", required) — El estado de la orden de trabajo
- `simpleWorkOrder` (object | object (any keys), required) — La orden de trabajo simple asociada al registro de producción
  - when it is `SimpleWorkOrderDetailsDtoV1`:
    - `id` (string, required) — El UUID de la orden de trabajo simple
    - `name` (string, required) — El nombre de la orden de trabajo simple

#### 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 POST 'https://draco.prod.pulsarml.com/v1/production-logs' \
  -H 'x-api-key: <YOUR_API_KEY>' \
  -H 'Content-Type: application/json' \
  -d '[
    {
      "type": "correct",
      "count": 1000,
      "nominalSpeed": 60,
      "start": "2024-01-01T08:00:00",
      "end": "2024-01-01T16:00:00",
      "machine": {
        "id": 1,
        "name": "Machine 1"
      },
      "sku": {
        "id": "9ce2c6b4-a1f4-4bf2-b5c8-10436d1018cc",
        "name": "sku 1"
      },
      "workOrder": "work order 1"
    }
  ]'
```