N1Developer docsv1

Quotes · v1

MUTATION

createQuote

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.

Price a part and number the quote

Make a DRAFT quote and give it the next number in the quote series. Owner, admin, accountant and supervisor. CUSTOMER_NOT_FOUND for an unknown customer; VALIDATION_FAILED for an inactive one.

POST/graphqlapp audience

Who can call this. Owner, admin, accountant, 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

  • inputQuoteInput!Required

    The quote.

    Example: {"customerId":"0192f0c1-0000-7000-8000-0000000c0002","part":"Shaft 40x200","quantity":120,"material":"EN8","gstRate":18,"lines":[{"operation":"Turning","description":"Rough and finish","minutesPerPiece":4.5,"setupMinutes":30,"ratePerMinute":1200},{"operation":"Drilling","minutesPerPiece":1.5,"ratePerMinute":900}]}

    Show children
    • customerIdID!Required

      The customer.

    • gstRateFloat!Required

      GST percentage, 0–28. Ignored when the shop has no GSTIN.

    • The operations to price, 1–30 lines.

    • materialStringOptional

      Material to use.

    • partString!Required

      Part name or number.

    • quantityInt!Required

      Pieces quoted, 1–1,000,000.

Returns

  • createQuoteQuote!Required

    Make a DRAFT quote and give it the next number in the quote series. Owner, admin, accountant and supervisor. CUSTOMER_NOT_FOUND for an unknown customer; VALIDATION_FAILED for an inactive one.

    Show children
    • createdAtString!Required

      UTC time the quote was made.

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

    • customerIdID!Required

      The customer (see customer).

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

    • customerNameString!Required

      The customer’s name, so a list needs no second call.

      Example: "Bharat Hydraulics 2"

    • gstRateFloat!Required

      The GST percentage asked for. The rate applied is totals.gstRate.

      Example: 18

    • idID!Required

      Stable id (UUIDv7).

      Example: "0192f0c1-0000-7000-8000-b00000000003"

    • lines[BillingLine!]!Required

      The priced operations, in the order given.

      Example: [{"id":"0192f0c1-0000-7000-8000-b00000000001","operation":"Turning","description":"Rough and finish","minutesPerPiece":4.5,"setupMinutes":30,"ratePerMinute":1200,"amount":684000},{"id":"0192f0c1-0000-7000-8000-b00000000002","operation":"Drilling","description":"","minutesPerPiece":1.5,"setupMinutes":0,"ratePerMinute":900,"amount":162000}]

      Show children
      • amountFloat!Required

        Integer paise: (quantity × minutesPerPiece + setupMinutes) × ratePerMinute, rounded half up to a whole paisa. Computed by the server.

        Example: 684000

      • descriptionString!Required

        Free text for the customer; empty when none was given.

        Example: "Rough and finish"

      • idID!Required

        Stable id (UUIDv7).

        Example: "0192f0c1-0000-7000-8000-b00000000001"

      • minutesPerPieceFloat!Required

        Machine minutes for one piece.

        Example: 4.5

      • operationString!Required

        The operation priced, such as Turning.

        Example: "Turning"

      • ratePerMinuteInt!Required

        Paise per machine minute.

        Example: 1200

      • setupMinutesFloat!Required

        One-off machine minutes to set up, charged once per line.

        Example: 30

    • materialStringOptional

      Material to use.

      Example: "EN8"

    • numberString!Required

      The quote number, such as QTN/26-27/0001. Assigned by the server.

      Example: "QTN/26-27/0011"

    • orderIdIDOptional

      The order made from this quote; null until converted (see order).

      Example: null

    • partString!Required

      Part name or number.

      Example: "Shaft 40x200"

    • quantityInt!Required

      Pieces quoted.

      Example: 120

    • statusQuoteStatus!Required

      DRAFT or SENT. Whether it became an order is orderId.

      Example: "DRAFT"

      • DRAFTBeing prepared; it can still be edited.
      • SENTSent to the customer; no longer editable.
    • totalsTotals!Required

      Subtotal, GST and total, all in paise, worked out by the server.

      Example: {"subtotal":846000,"discount":0,"taxable":846000,"gstRate":18,"supply":"INTER","cgst":0,"sgst":0,"igst":152280,"gst":152280,"total":998280}

      Show children
      • cgstFloat!Required

        Central GST; 0 unless supply is INTRA.

        Example: 0

      • discountFloat!Required

        The discount applied. Never more than the subtotal.

        Example: 0

      • gstFloat!Required

        Total GST: cgst + sgst + igst.

        Example: 152280

      • gstRateFloat!Required

        The GST percentage applied; 0 when supply is NONE.

        Example: 18

      • igstFloat!Required

        Integrated GST; 0 unless supply is INTER.

        Example: 152280

      • sgstFloat!Required

        State GST; 0 unless supply is INTRA.

        Example: 0

      • subtotalFloat!Required

        Sum of the line amounts.

        Example: 846000

      • supplyGstSupply!Required

        Whether CGST + SGST or IGST applies.

        Example: "INTER"

        • INTERDifferent states: IGST.
        • INTRAShop and customer are in the same state: CGST + SGST.
        • NONEThe shop has no GSTIN, so no GST is charged.
      • taxableFloat!Required

        Subtotal less discount.

        Example: 846000

      • totalFloat!Required

        Taxable plus GST.

        Example: 998280

    • updatedAtString!Required

      UTC time of the last change.

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

Errors

CodeHTTPWhen
CUSTOMER_NOT_FOUND404The id is unknown in this shop (another shop's ids answer the same).
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.