N1Developer docsv1

Job cards · v1

MUTATION

saveJobCardRawMaterial

Mock

Mock. 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.

POST/graphqlapp audience

Who can call this. Owner, admin, supervisor.

Headers

  • AuthorizationstringRequired

    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…

  • Content-TypestringRequired

    Always application/json. Only POST is accepted.

    Example: application/json

  • Idempotency-KeystringRequired

    A key you generate once per user action (a UUID). Retrying with the same key never applies the change twice.

    Example: 0192f0c1-9b2a-7d40-8c3e-1f5a6b7c8d9e

  • X-Request-IdstringOptional

    Your 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

  • idID!Required

    The job card.

    Example: "0192f0c1-0000-7000-8000-000000d2000b"

  • inputRawMaterialInput!Required

    The material.

    Example: {"rawMaterialGrade":"EN8","heatNumber":"HT-24019","rawMaterialSize":"Ø45 x 3000","rmPartNumber":"RM-EN8-45","materialSource":"BOUGHT_OUT"}

    Show children
    • heatNumberStringOptional

      Heat number.

    • materialSourceMaterialSourceOptional

      Bought out or in house.

    • rawMaterialGradeStringOptional

      Grade.

    • rawMaterialSizeStringOptional

      Size.

    • rmPartNumberStringOptional

      Raw material part number.

Returns

  • saveJobCardRawMaterialJobCard!Required

    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.

    Show children
    • billingJobCardBilling!Required

      Whether the job has been invoiced.

      • INVOICEDAn invoice exists for the job.
      • NOT_INVOICEDNo invoice yet.
    • codeString!Required

      The label on the paper card (“JOB1”).

      Example: "JOB1"

    • createdAtString!Required

      UTC time the card was made.

      Example: "2026-09-03T05:00:00.000Z"

    • customerIdID!Required

      The customer (see customer).

      Example: "0192f0c1-0000-7000-8000-0000000c0001"

    • customerNameString!Required

      The customer’s name.

      Example: "Alpha Auto Components 1"

    • designApprovalDesignApproval!Required

      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.
    • designFileAppFileReferenceOptional

      The drawing.

      Show children
      • idID!Required

        File id; obtain authorised download URL from files API.

      • kindStringOptional

        Document category.

      • nameString!Required

        Display filename.

      • sizeBytesFloat!Required

        Size in bytes, safe integer.

    • dueDateString!Required

      The order’s promised date, YYYY-MM-DD in the shop’s timezone.

      Example: "2026-09-30"

    • idID!Required

      Stable id (UUIDv7).

      Example: "0192f0c1-0000-7000-8000-000000d2000b"

    • jobNameStringOptional

      Job name.

      Example: "Flange 120 batch"

    • lastActivityAtString!Required

      UTC time anything on the card last moved. “Stuck” is measured from here.

      Example: "2026-10-12T04:30:00.000Z"

    • materialStringOptional

      Material.

      Example: "SS304"

    • materialQcAcceptance!Required

      The incoming material check. Work is ready only once it is accepted.

      Example: "PENDING"

      • ACCEPTEDPassed.
      • PENDINGWaiting for a decision.
      • REJECTEDFailed.
    • materialSourceMaterialSourceOptional

      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.
    • operations[JobOperation!]!Required

      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
      • completedAtStringOptional

        UTC time the step finished.

        Example: null

      • idID!Required

        Stable id (UUIDv7).

        Example: "0192f0c1-0000-7000-8000-000000d3006f"

      • machineIdIDOptional

        The machine it runs on, if one is assigned.

        Example: null

      • machineNameStringOptional

        That machine’s name.

        Example: null

      • nameString!Required

        What the step does.

        Example: "Drilling"

      • operatorIdIDOptional

        The operator it is assigned to, if any.

        Example: null

      • operatorNameStringOptional

        That operator’s name.

        Example: null

      • seqInt!Required

        Order of the step, from 1.

        Example: 1

      • startedAtStringOptional

        UTC time the step started.

        Example: null

      • statusJobOperationStatus!Required

        Where the step is.

        Example: "PENDING"

        • COMPLETEDFinished.
        • PAUSEDStopped part-way.
        • PENDINGNot started.
        • RUNNINGBeing worked on now.
    • orderIdID!Required

      The work order (see order).

      Example: "0192f0c1-0000-7000-8000-000000d00001"

    • partNameString!Required

      Part name.

      Example: "Flange 120"

    • poNumberString!Required

      The order’s PO number.

      Example: "PO-2026-0001"

    • priorityOrderPriority!Required

      The order’s priority.

      Example: "HIGH"

      • HIGHAhead of other orders.
      • LOWFill gaps in the schedule.
      • MEDIUMThe default.
    • qcHistory[QcRecord!]!Required

      Every check made on this card, oldest first.

      Show children
      • idID!Required

        Stable id (UUIDv7).

      • inspectorStringOptional

        Inspector’s name.

      • jobCardIdID!Required

        The job card checked.

      • jobOperationIdIDOptional

        The step checked; null for a raw material check.

      • kindQcKind!Required

        What was checked.

        • MACHINEA finished operation.
        • RMThe raw material, before the first operation.
      • operationNameStringOptional

        What the step does; null for a raw material check.

      • qrValueString!Required

        The job card’s QR text.

      • recordedAtString!Required

        UTC time the check was recorded.

      • recordedByIdID!Required

        Who made the check (User.id).

      • recordedByNameString!Required

        That person’s name.

      • rejectedMaterialRejectedMaterialOptional

        Set on a raw material rejection.

        Show children
        • gradeString!Required

          Raw material grade.

        • heatNumberString!Required

          Heat number.

        • sizeString!Required

          Raw material size.

      • remarkStringOptional

        Inspector’s remark.

      • reportAppFileReferenceOptional

        The inspection report.

        Show children
        • idID!Required

          File id; obtain authorised download URL from files API.

        • kindStringOptional

          Document category.

        • nameString!Required

          Display filename.

        • sizeBytesFloat!Required

          Size in bytes, safe integer.

      • resultQcResult!Required

        The outcome.

        • ACCEPTEDRaw material accepted.
        • FAILEDOperation failed.
        • PASSEDOperation passed.
        • REJECTEDRaw material rejected.
      • stageString!Required

        Label shown in the app: “Incoming inspection”, “In-process QC” or “Final QC”.

    • qrValueString!Required

      The text printed as a QR code on the card. Unique in the shop; jobCardByQr resolves it.

      Example: "JC-00001"

    • quantityInt!Required

      Pieces to make.

      Example: 40

    • quotationAcceptance!Required

      Whether the customer accepted the quotation behind this job.

      • ACCEPTEDPassed.
      • PENDINGWaiting for a decision.
      • REJECTEDFailed.
    • statusJobCardStatus!Required

      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

CodeHTTPWhen
JOB_CARD_NOT_FOUND404The id or QR value is unknown in this shop (another shop's answer the same).
VALIDATION_FAILED400Input failed Zod or route schema validation. details lists each field path and problem.
FORBIDDEN403Signed 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.

Search documentation

Search operations, types and errors from the generated contract.