Job cards · v1
saveJobCardRawMaterial
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.
Record the raw material for a job card
Record the raw material for a job card (the fields live on its order). Owner, admin and supervisor. JOB_CARD_NOT_FOUND for an unknown card.
/graphqlapp audienceWho can call this. Owner, admin, supervisor.
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/jsonA key you generate once per user action (a UUID). Retrying with the same key never applies the change twice.
Example:
0192f0c1-9b2a-7d40-8c3e-1f5a6b7c8d9eYour 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
The job card.
Example:
"0192f0c1-0000-7000-8000-000000d2000b"The material.
Example:
{"rawMaterialGrade":"EN8","heatNumber":"HT-24019","rawMaterialSize":"Ø45 x 3000","rmPartNumber":"RM-EN8-45","materialSource":"BOUGHT_OUT"}Show children
Heat number.
Bought out or in house.
Grade.
Size.
Raw material part number.
Returns
Record the raw material for a job card (the fields live on its order). Owner, admin and supervisor.
JOB_CARD_NOT_FOUNDfor an unknown card.Show children
Whether the job has been invoiced.
INVOICEDAn invoice exists for the job.NOT_INVOICEDNo invoice yet.
The label on the paper card (“JOB1”).
Example:
"JOB1"UTC time the card was made.
Example:
"2026-09-03T05:00:00.000Z"The customer (see
customer).Example:
"0192f0c1-0000-7000-8000-0000000c0001"The customer’s name.
Example:
"Alpha Auto Components 1"Whether the drawing is approved. Work is ready only once it is.
Example:
"APPROVED"APPROVEDThe design is approved.PENDINGWaiting for a decision.REJECTEDThe design was rejected.
The drawing.
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"Job name.
Example:
"Flange 120 batch"UTC time anything on the card last moved. “Stuck” is measured from here.
Example:
"2026-10-12T04:30:00.000Z"Material.
Example:
"SS304"The incoming material check. Work is ready only once it is accepted.
Example:
"PENDING"ACCEPTEDPassed.PENDINGWaiting for a decision.REJECTEDFailed.
Where the material comes from; null until it is recorded.
Example:
"BOUGHT_OUT"BOUGHT_OUTBought from a supplier.IN_HOUSECut from the shop’s own stock.
The steps, in order.
Example:
[{"id":"0192f0c1-0000-7000-8000-000000d3006f","seq":1,"name":"Drilling","status":"PENDING","operatorId":null,"operatorName":null,"machineId":null,"machineName":null,"startedAt":null,"completedAt":null},{"id":"0192f0c1-0000-7000-8000-000000d30070","seq":2,"name":"Deburring","status":"PENDING","operatorId":null,"operatorName":null,"machineId":null,"machineName":null,"startedAt":null,"completedAt":null},{"id":"0192f0c1-0000-7000-8000-000000d30071","seq":3,"name":"Finishing","status":"PENDING","operatorId":null,"operatorName":null,"machineId":null,"machineName":null,"startedAt":null,"completedAt":null}]Show children
UTC time the step finished.
Example:
nullStable id (UUIDv7).
Example:
"0192f0c1-0000-7000-8000-000000d3006f"The machine it runs on, if one is assigned.
Example:
nullThat machine’s name.
Example:
nullWhat the step does.
Example:
"Drilling"The operator it is assigned to, if any.
Example:
nullThat operator’s name.
Example:
nullOrder of the step, from 1.
Example:
1UTC time the step started.
Example:
nullWhere the step is.
Example:
"PENDING"COMPLETEDFinished.PAUSEDStopped part-way.PENDINGNot started.RUNNINGBeing worked on now.
The work order (see
order).Example:
"0192f0c1-0000-7000-8000-000000d00001"Part name.
Example:
"Flange 120"The order’s PO number.
Example:
"PO-2026-0001"The order’s priority.
Example:
"HIGH"HIGHAhead of other orders.LOWFill gaps in the schedule.MEDIUMThe default.
Every check made on this card, oldest first.
Show children
Stable id (UUIDv7).
Inspector’s name.
The job card checked.
The step checked; null for a raw material check.
What was checked.
MACHINEA finished operation.RMThe raw material, before the first operation.
What the step does; null for a raw material check.
The job card’s QR text.
UTC time the check was recorded.
Who made the check (
User.id).That person’s name.
Set on a raw material rejection.
Inspector’s remark.
The inspection report.
The outcome.
ACCEPTEDRaw material accepted.FAILEDOperation failed.PASSEDOperation passed.REJECTEDRaw material rejected.
Label shown in the app: “Incoming inspection”, “In-process QC” or “Final QC”.
The text printed as a QR code on the card. Unique in the shop;
jobCardByQrresolves it.Example:
"JC-00001"Pieces to make.
Example:
40Whether the customer accepted the quotation behind this job.
ACCEPTEDPassed.PENDINGWaiting for a decision.REJECTEDFailed.
Worked out from the operations.
Example:
"NOT_STARTED"COMPLETEDEvery operation is done.IN_PROGRESSAt least one operation has started and not every one is done.NOT_STARTEDNo operation has started.PAUSEDAn operation is paused and none is running.
Errors
| Code | HTTP | When |
|---|---|---|
JOB_CARD_NOT_FOUND | 404 | The id or QR value is unknown in this shop (another shop's answer the same). |
VALIDATION_FAILED | 400 | Input failed Zod or route schema validation. details lists each field path and problem. |
FORBIDDEN | 403 | Signed in, but the role or tenant does not allow the action. |
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.