Add shift defects

Add defective units of a SKU to a shift by its id (as returned by GET /v1/shifts), including shifts that have already ended.

How defects add up. Unlike operators, defects have no timeline and no order. Each call adds a new defects production log of quantity units of the SKU, covering the whole shift, and the shift's Quality and OEE count it in the background. Calls never replace earlier ones:

  • Sending quantity: 2 and then quantity: 3 records 5 defects.
  • Sending the same request twice records the defects twice, so retry only requests that failed.
  • To undo a call, delete the log it returned with DELETE /v1/production-logs/{id}. To see what a shift already has, list its logs with POST /v1/production-logs/filters.

Defects are not attributed to any operator, and they can be added to past shifts, including ones whose production was reviewed. The SKU is given by id or by name; an unknown name creates a new SKU, so check the spelling.

Errors:

  • 400: no shift matches, the shift has not started yet, or the shift does not have enough production of that SKU to hold the defects.
  • 404: sku.id is not one of your SKUs.

Path Parameters

shift_id*Shift Id

The shift ID.

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

Try it live
POST
/v1/shifts/{shift_id}/defects

This endpoint requires authentication — paste a token in the Authorization section below.

curl -X POST "https://example.com/v1/shifts/0/defects" \  -H "Content-Type: application/json" \  -d '{    "sku": {}  }'
{  "id": "5b0f6a52-3c1e-4d5b-9f0e-8a7c6d5e4f3a",  "shiftId": 48213,  "machineId": 12,  "quantity": 3,  "start": "2026-10-12T06:00:00Z",  "end": "2026-10-12T14:00:00Z"}

Add defects by time POST

Add defective units of a SKU to the shift that machine `machineId` was running at `time`, including shifts that have already ended. Use it when you know the machine and roughly when the defects were found, but not the shift id. **How defects add up.** Unlike operators, defects have no timeline and no order. Each call adds a new defects production log of `quantity` units of the SKU, covering the whole shift, and the shift's Quality and OEE count it in the background. Calls never replace earlier ones: * Sending `quantity: 2` and then `quantity: 3` records 5 defects. * Sending the same request twice records the defects twice, so retry only requests that failed. * To undo a call, delete the log it returned with `DELETE /v1/production-logs/{id}`. To see what a shift already has, list its logs with `POST /v1/production-logs/filters`. Defects are not attributed to any operator, and they can be added to past shifts, including ones whose production was reviewed. The SKU is given by `id` or by `name`; an unknown name creates a new SKU, so check the spelling. Errors: * `400`: no shift matches, the shift has not started yet, or the shift does not have enough production of that SKU to hold the defects. * `404`: `sku.id` is not one of your SKUs.

List a machine's signals GET

Return the raw sensor signals a machine exposes, with the `public_id` needed to read samples. A signal is one sensor channel read by the machine, named after the physical quantity it carries (`current`, `count`, `product_count`, `cycle`, `energy`, `temperature`, `pressure`, ...). A machine can expose several signals with the same `name`; their `display_name` tells them apart. Soft-deleted signals and signals without a kind are not listed. `description` is in English by default; pass `language=es` for Spanish. A description with no translation in the requested language is returned in English.