Job cards · v1
myJobs
MockMock. This operation is part of the approved contract but its module is not built yet. Run Core with N1_API_MODE=mock N1_DEV_AUTH=stub to get deterministic demo-shop data from it. The real server answers NOT_IMPLEMENTED until it ships; the schema and examples here will not change when it does.
The signed-in operator’s own job cards
The signed-in operator’s job cards: only cards with a step assigned to them, soonest due first. Never returns anyone else’s work. Operators use it daily; owner, admin and supervisor can call it for their own cards.
/graphqlapp audienceWho can call this. Operator, supervisor, admin, owner (own cards only).
Headers
Bearer <token>, issued for this endpoint's audience. The token decides the shop and roles; nothing in the request body can change them.Example:
Bearer eyJhbGciOiJFZERTQSJ9…Always
application/json. Only POST is accepted.Example:
application/jsonYour id for this request (8–128 characters of A–Z a–z 0–9 . _ : -). Echoed back in the response header and in every error, so you can quote it when reporting a problem. Core makes one if you send none.
Example:
app-7f3c2a9e-checkout
Arguments
endCursor of the previous page.
startCursor of the next page, when paging backwards.
Narrow by status.
Show children
Only cards in this state.
Page size, 1–100 (default 20).
Page size when paging backwards, 1–100.
Returns
The signed-in operator’s job cards: only cards with a step assigned to them, soonest due first. Never returns anyone else’s work. Operators use it daily; owner, admin and supervisor can call it for their own cards.
Show children
The rows on this page, in order.
Example:
[{"cursor":"WyIyMDI2LTA5LTMwIiwiMDE5MmYwYzEtMDAwMC03MDAwLTgwMDAtMDAwMDAwZDIwMDBiIl0","node":{"id":"0192f0c1-0000-7000-8000-000000d2000b","qrValue":"JC-00001","poNumber":"PO-2026-0001","part":"Bush 25x30","quantity":40,"dueDate":"2026-09-30","status":"IN_PROGRESS","operations":[{"seq":1,"name":"Threading","status":"DONE","operatorName":"Esha Demo","machineName":null},{"seq":2,"name":"Milling","status":"RUNNING","operatorName":"Esha Demo","machineName":"Lathe 1"},{"seq":3,"name":"Finishing","status":"PENDING","operatorName":"Esha Demo","machineName":null}]}},{"cursor":"WyIyMDI2LTEwLTAyIiwiMDE5MmYwYzEtMDAwMC03MDAwLTgwMDAtMDAwMDAwZDIwMDE2Il0","node":{"id":"0192f0c1-0000-7000-8000-000000d20016","qrValue":"JC-00004","poNumber":"PO-2026-0002","part":"Spindle Nut","quantity":100,"dueDate":"2026-10-02","status":"DONE","operations":[{"seq":1,"name":"Drilling","status":"DONE","operatorName":"Esha Demo","machineName":null},{"seq":2,"name":"Milling","status":"DONE","operatorName":"Esha Demo","machineName":null},{"seq":3,"name":"Finishing","status":"DONE","operatorName":"Esha Demo","machineName":null}]}},{"cursor":"WyIyMDI2LTEwLTAyIiwiMDE5MmYwYzEtMDAwMC03MDAwLTgwMDAtMDAwMDAwZDIwMDE3Il0","node":{"id":"0192f0c1-0000-7000-8000-000000d20017","qrValue":"JC-00005","poNumber":"PO-2026-0002","part":"Valve Body","quantity":140,"dueDate":"2026-10-02","status":"QUEUED","operations":[{"seq":1,"name":"Threading","status":"PENDING","operatorName":"Esha Demo","machineName":null},{"seq":2,"name":"Deburring","status":"PENDING","operatorName":null,"machineName":null},{"seq":3,"name":"Finishing","status":"PENDING","operatorName":null,"machineName":null}]}},{"cursor":"WyIyMDI2LTEwLTA0IiwiMDE5MmYwYzEtMDAwMC03MDAwLTgwMDAtMDAwMDAwZDIwMDFmIl0","node":{"id":"0192f0c1-0000-7000-8000-000000d2001f","qrValue":"JC-00006","poNumber":"PO-2026-0003","part":"Spindle Nut","quantity":80,"dueDate":"2026-10-04","status":"DONE","operations":[{"seq":1,"name":"Drilling","status":"DONE","operatorName":"Esha Demo","machineName":null},{"seq":2,"name":"Milling","status":"DONE","operatorName":"Esha Demo","machineName":null},{"seq":3,"name":"Finishing","status":"DONE","operatorName":"Esha Demo","machineName":null}]}}]Show children
Opaque position of this row in the list.
Example:
"WyIyMDI2LTA5LTMwIiwiMDE5MmYwYzEtMDAwMC03MDAwLTgwMDAtMDAwMDAwZDIwMDBiIl0"The JobCard.
Example:
{"id":"0192f0c1-0000-7000-8000-000000d2000b","qrValue":"JC-00001","poNumber":"PO-2026-0001","part":"Bush 25x30","quantity":40,"dueDate":"2026-09-30","status":"IN_PROGRESS","operations":[{"seq":1,"name":"Threading","status":"DONE","operatorName":"Esha Demo","machineName":null},{"seq":2,"name":"Milling","status":"RUNNING","operatorName":"Esha Demo","machineName":"Lathe 1"},{"seq":3,"name":"Finishing","status":"PENDING","operatorName":"Esha Demo","machineName":null}]}Show children
UTC time the card was made.
The customer’s name.
The order’s promised date, YYYY-MM-DD in the shop’s timezone.
Example:
"2026-09-30"Stable id (UUIDv7).
Example:
"0192f0c1-0000-7000-8000-000000d2000b"UTC time anything on the card last moved. “Stuck” is measured from here.
The steps, in order.
Example:
[{"seq":1,"name":"Threading","status":"DONE","operatorName":"Esha Demo","machineName":null},{"seq":2,"name":"Milling","status":"RUNNING","operatorName":"Esha Demo","machineName":"Lathe 1"},{"seq":3,"name":"Finishing","status":"PENDING","operatorName":"Esha Demo","machineName":null}]Show children
UTC time the step finished.
Stable id (UUIDv7).
The machine it runs on, if one is assigned.
That machine’s name.
Example:
nullWhat the step does.
Example:
"Threading"The operator it is assigned to, if any.
That operator’s name.
Example:
"Esha Demo"Order of the step, from 1.
Example:
1UTC time the step started.
Where the step is.
Example:
"DONE"DONEFinished.PENDINGNot started.RUNNINGBeing worked on now.
The order (see
order).The order line it was made for.
Part name or number.
Example:
"Bush 25x30"The order’s PO number.
Example:
"PO-2026-0001"The text printed as a QR code on the card. Unique in the shop;
jobCardByQrresolves it.Example:
"JC-00001"Pieces to make.
Example:
40Worked out from the operations.
Example:
"IN_PROGRESS"DONEEvery operation is done.IN_PROGRESSAt least one operation has started and not every one is done.QUEUEDNo operation has started.
Whether more pages exist, and the cursors to reach them.
Example:
{"hasNextPage":true,"hasPreviousPage":false,"endCursor":"WyIyMDI2LTEwLTA0IiwiMDE5MmYwYzEtMDAwMC03MDAwLTgwMDAtMDAwMDAwZDIwMDFmIl0"}Show children
Cursor of the last row; pass it as
afterto get the next page. Null when the page is empty.Example:
"WyIyMDI2LTEwLTA0IiwiMDE5MmYwYzEtMDAwMC03MDAwLTgwMDAtMDAwMDAwZDIwMDFmIl0"Whether another page follows this one.
Example:
trueWhether another page comes before this one.
Example:
falseCursor of the first row; pass it as
beforeto page backwards. Null when the page is empty.
All rows matching the filter and search, not just this page.
Example:
32
Errors
| Code | HTTP | When |
|---|---|---|
FORBIDDEN | 403 | Signed in, but the role or tenant does not allow the action. |
VALIDATION_FAILED | 400 | Input failed Zod or route schema validation. details lists each field path and problem. |
Every error has the same body. See Errors.
Rate limit tier
Tier: per user. Over the limit you get RATE_LIMITED (HTTP 429) with a Retry-After header. See Response handling.