N1Developer docsv1

Job cards · v1

QUERY

myJobs

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.

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.

POST/graphqlapp audience

Who can call this. Operator, supervisor, admin, owner (own cards only).

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

  • 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

  • afterStringOptional

    endCursor of the previous page.

  • beforeStringOptional

    startCursor of the next page, when paging backwards.

  • filterMyJobsFilterOptional

    Narrow by status.

    Show children
  • firstIntOptional

    Page size, 1–100 (default 20).

  • lastIntOptional

    Page size when paging backwards, 1–100.

Returns

  • myJobsJobCardConnection!Required

    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
    • edges[JobCardEdge!]!Required

      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
      • cursorString!Required

        Opaque position of this row in the list.

        Example: "WyIyMDI2LTA5LTMwIiwiMDE5MmYwYzEtMDAwMC03MDAwLTgwMDAtMDAwMDAwZDIwMDBiIl0"

      • nodeJobCard!Required

        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
        • createdAtString!Required

          UTC time the card was made.

        • customerNameString!Required

          The customer’s name.

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

        • lastActivityAtString!Required

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

        • operations[JobOperation!]!Required

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

            UTC time the step finished.

          • idID!Required

            Stable id (UUIDv7).

          • machineIdIDOptional

            The machine it runs on, if one is assigned.

          • machineNameStringOptional

            That machine’s name.

            Example: null

          • nameString!Required

            What the step does.

            Example: "Threading"

          • operatorIdIDOptional

            The operator it is assigned to, if any.

          • operatorNameStringOptional

            That operator’s name.

            Example: "Esha Demo"

          • seqInt!Required

            Order of the step, from 1.

            Example: 1

          • startedAtStringOptional

            UTC time the step started.

          • statusJobOperationStatus!Required

            Where the step is.

            Example: "DONE"

            • DONEFinished.
            • PENDINGNot started.
            • RUNNINGBeing worked on now.
        • orderIdID!Required

          The order (see order).

        • orderLineIdID!Required

          The order line it was made for.

        • partString!Required

          Part name or number.

          Example: "Bush 25x30"

        • poNumberString!Required

          The order’s PO number.

          Example: "PO-2026-0001"

        • 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

        • statusJobCardStatus!Required

          Worked 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.
    • pageInfoPageInfo!Required

      Whether more pages exist, and the cursors to reach them.

      Example: {"hasNextPage":true,"hasPreviousPage":false,"endCursor":"WyIyMDI2LTEwLTA0IiwiMDE5MmYwYzEtMDAwMC03MDAwLTgwMDAtMDAwMDAwZDIwMDFmIl0"}

      Show children
      • endCursorStringOptional

        Cursor of the last row; pass it as after to get the next page. Null when the page is empty.

        Example: "WyIyMDI2LTEwLTA0IiwiMDE5MmYwYzEtMDAwMC03MDAwLTgwMDAtMDAwMDAwZDIwMDFmIl0"

      • hasNextPageBoolean!Required

        Whether another page follows this one.

        Example: true

      • hasPreviousPageBoolean!Required

        Whether another page comes before this one.

        Example: false

      • startCursorStringOptional

        Cursor of the first row; pass it as before to page backwards. Null when the page is empty.

    • totalCountInt!Required

      All rows matching the filter and search, not just this page.

      Example: 32

Errors

CodeHTTPWhen
FORBIDDEN403Signed in, but the role or tenant does not allow the action.
VALIDATION_FAILED400Input 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.

Search documentation

Search operations, types and errors from the generated contract.