Stops report
Required scope: reports.read.
Return individual machine stops with their duration, cause and classification.
This is the drill-down behind the downtime totals in the metrics report. stopId accepts
the full comparison grammar, so a specific stop or a range of them can be pulled directly.
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/v1/reports/stops" \ -H "Content-Type: application/json" \ -d '{}'{ "totalCount": 100, "totalPages": 10, "currentPage": 1, "stops": [ { "classification": { "component": { "id": "3e8e81cf-7521-4ef9-b6c9-40074aa764c5", "name": "a simple component" }, "createdAt": "2025-11-01T00:00:00", "description": "a simple description", "generalCause": { "id": "d56aece5-a92a-462e-b275-919e15446bba", "name": "a simple general cause" }, "id": 1, "specificCause": { "id": "f89b5866-2d26-45a1-8cfc-8295557594d8", "name": "a simple specific cause" }, "updatedAt": "2025-11-01T00:00:00" }, "company": { "id": 1, "name": "a simple company" }, "machine": { "id": 1, "name": "a simple machine" }, "shift": { "endTime": "2025-11-10T00:00:00", "id": 1, "isActive": true, "name": "morning", "startTime": "2025-11-01T00:00:00" }, "stop": { "createdAt": "2025-11-01T00:00:00", "deletedAt": "2025-11-10T00:00:00", "durationInMinutes": 30, "endTime": "2025-11-10T00:00:00", "id": 1, "isIncludedInAvailability": true, "isIncludedInStops": true, "isManual": true, "isProgrammed": true, "startTime": "2025-11-01T00:00:00", "updatedAt": "2025-11-01T00:00:00" } } ]}Metrics report POST
Return OEE, availability, quality and lost minutes per machine and shift. Each row carries the shift indicators (available time, downtime split by cause) together with the derived production metrics: availability, effectiveness, quality, oee and netOee, plus minutes lost to low speed and to low quality. A POST that only reads — the reports.read scope is sufficient. Prefer this over deriving OEE from production logs: shift boundaries, downtime classification and counting factors are already applied.
List shifts GET
List machine shifts that overlap a time range, past or upcoming. Use each shift's id to assign operators or record defective units. A shift is returned when any part of it falls between from and to: it ends after from and starts before to. So a night shift from 22:00 to 06:00 shows up in a range covering either day. to must be after from, and the range may span at most 31 days. The response is the whole list, not paginated, ordered by start, then by machine. Covering a longer period. Split it into consecutive ranges (to of one is from of the next) and add match=start, which returns only the shifts that start in the range (from <= start < to). Each shift then comes back exactly once. With the default match=overlap, a shift that crosses the boundary between two ranges is returned by both, so deduplicate by id before acting on the results; adding defects twice records them twice. ` GET /v1/shifts?from=2026-10-01T00:00:00Z&to=2026-11-01T00:00:00Z&match=start GET /v1/shifts?from=2026-11-01T00:00:00Z&to=2026-12-01T00:00:00Z&match=start ` Narrow the list with machineId, repeated for several machines: ` GET /v1/shifts?from=2026-10-12T00:00:00Z&to=2026-10-13T00:00:00Z&machineId=12 ` Shifts excluded from metrics are listed too, with isConsidered: false.