Create work orders
Create one or many work orders. The body is a JSON array, even for a single record. Creation is idempotent by name: names are trimmed and de-duplicated, a work order that already exists is returned as-is, and one that was deleted is restored rather than duplicated.
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
curl -X POST "https://example.com/v1/simple-work-orders" \ -H "Content-Type: application/json" \ -d '[ { "name": "WO-2024-001" } ]'[ { "id": "36f7b519-d93e-4ec8-8245-7f4b8c123456", "company": { "id": 1, "name": "Company 1" }, "name": "WO-2024-001", "createdAt": "2024-01-01T00:00:00.000Z", "updatedAt": "2024-01-01T00:00:00.000Z" }]Read signal data GET
Return aggregated raw sensor points for one signal. Samples are bucketed before they are returned. The bucket width is `agg_period` x `agg_unit` (`agg_period=15`, `agg_unit=m` is a 15-minute bucket) and `agg_function` is how samples inside a bucket are reduced. By default points are returned as a `data` list of `{timestamp, value}` objects. Pass `transpose=true` to get two arrays of equal length instead, `timestamps` and `values`, where `values[i]` belongs to `timestamps[i]`. It carries the same points in a smaller body. Two limits are enforced and both reject the request rather than truncating the response: the window between `start_time` and `end_time` may not exceed **7 days**, and a query may not produce more than **12,000 points**. The defaults (`agg_unit=s`, `agg_period=1`) reach the point ceiling after under three and a half hours, so most callers set them explicitly.
Search work orders POST
Search work orders, or page through them with `{}`. Results are ordered by name. `simpleWorkOrders` accepts `include` / `exclude` by id. `names.search` is a SQL `LIKE` pattern: use `%` as the wildcard, for example `WO-2024%`.