QC · v1
recordQc
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 a quality check; the operation leaves the queue
Record a check on a job operation; it leaves the queue. Owner, admin, supervisor and QC. VALIDATION_FAILED for a FAIL without a reason, for a step that is not finished, or for a stage other than the one the step is due (raw material on the first step, final on the last, in process between). JOB_OPERATION_NOT_FOUND for an unknown step.
/graphqlapp audienceWho can call this. Owner, admin, supervisor, QC.
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 check.
Example:
{"jobOperationId":"0192f0c1-0000-7000-8000-000000d3058d","stage":"RAW_MATERIAL","result":"PASS","measurements":[{"name":"Outer diameter","value":40.01,"unit":"mm"}]}Show children
The step checked (
JobOperation.id).The readings taken, up to 30.
Why it failed. Required when the result is FAIL.
The outcome.
When the check was made.
Returns
Record a check on a job operation; it leaves the queue. Owner, admin, supervisor and QC.
VALIDATION_FAILEDfor a FAIL without a reason, for a step that is not finished, or for astageother than the one the step is due (raw material on the first step, final on the last, in process between).JOB_OPERATION_NOT_FOUNDfor an unknown step.Show children
Stable id (UUIDv7).
Example:
"0192f0c1-0000-7000-8000-e00000000001"The job card checked.
Example:
"0192f0c1-0000-7000-8000-000000d2008e"The step checked.
Example:
"0192f0c1-0000-7000-8000-000000d3058d"The readings taken.
Example:
[{"name":"Outer diameter","value":40.01,"unit":"mm"}]What the step does.
Example:
"Drilling"The job card’s QR text.
Example:
"JC-00028"Why it failed. Always set for FAIL.
Example:
nullUTC time the check was recorded.
Example:
"2026-10-12T04:30:00.000Z"Who made the check (
User.id).Example:
"0192f0c1-0000-7000-8000-0000000000a1"That person’s name.
Example:
"Asha Demo"The outcome.
Example:
"PASS"FAILOut of tolerance. A reason is required.PASSWithin tolerance.
When the check was made.
Example:
"RAW_MATERIAL"FINALOn the finished part.IN_PROCESSBetween operations.RAW_MATERIALOn the material before work starts.
Errors
| Code | HTTP | When |
|---|---|---|
VALIDATION_FAILED | 400 | Input failed Zod or route schema validation. details lists each field path and problem. |
JOB_OPERATION_NOT_FOUND | 404 | The operation id is unknown in this shop (another shop's ids answer the same). |
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.