Data types and limits
Data types
Besides the standard GraphQL types, the API uses three scalars:
| Scalar | JSON representation |
|---|---|
timestamptz | ISO 8601 timestamp string with a time zone offset, for example 2026-10-13T14:02:11.52+00:00. |
numeric | A JSON number. |
jsonb | Any JSON value. Used for the raw tool payload (formattedValue) and the trace curve (allValues). |
A trace's allValues is an object with two arrays of equal length, sampled along the tightening curve:
{ "angle": [0, 1, 2, 3], "torque": [0, 10, 18, 25] }
Limits and good practice
- The API is read-only. It has queries only: no mutations or subscriptions.
- Requests time out after 30 seconds. Page through large result sets with
limit,offset, and a stableorderBy(see Example queries), and requesttraces/allValuesonly when you need the curves. - Column names in
distinctOnuse snake case. TheTorqueResultSelectColumnandTorqueTraceSelectColumnvalues (for examplecreated_at,serial_number) are column names, not the camelCase field names used everywhere else. - Errors come back in the standard GraphQL
errorsarray. Invalid queries return a descriptive message; unexpected server errors return a generic message.
Schema
The full schema is in the Reference section. You can also download it as GraphQL SDL to load into your GraphQL tooling or generate a typed client.