Quotes · v1
updateQuote
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.
Change a draft quote and re-price it
Change a DRAFT quote and re-price it. Owner, admin, accountant and supervisor. QUOTE_NOT_FOUND for an unknown id; QUOTE_NOT_EDITABLE once it is sent or converted; VALIDATION_FAILED when no field is given.
/graphqlapp audienceWho can call this. Owner, admin, accountant, 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 quote id.
Example:
"0192f0c1-0000-7000-8000-000000b00002"The changes.
Example:
{"quantity":200,"gstRate":12}Show children
New GST percentage, 0–28.
The full set of operations, 1–30 lines.
New material.
New part name or number.
New quantity, 1–1,000,000.
Returns
Change a DRAFT quote and re-price it. Owner, admin, accountant and supervisor.
QUOTE_NOT_FOUNDfor an unknown id;QUOTE_NOT_EDITABLEonce it is sent or converted;VALIDATION_FAILEDwhen no field is given.Show children
UTC time the quote was made.
Example:
"2026-08-29T04:30:00.000Z"The customer (see
customer).Example:
"0192f0c1-0000-7000-8000-0000000c0002"The customer’s name, so a list needs no second call.
Example:
"Bharat Hydraulics 2"The GST percentage asked for. The rate applied is
totals.gstRate.Example:
12Stable id (UUIDv7).
Example:
"0192f0c1-0000-7000-8000-000000b00002"The priced operations, in the order given.
Example:
[{"id":"0192f0c1-0000-7000-8000-000000b30015","operation":"Turning","description":"Pulley 90","minutesPerPiece":2.5,"setupMinutes":30,"ratePerMinute":800,"amount":424000},{"id":"0192f0c1-0000-7000-8000-000000b30016","operation":"Finishing","description":"","minutesPerPiece":0.5,"setupMinutes":0,"ratePerMinute":600,"amount":60000}]Show children
Integer paise: (quantity × minutesPerPiece + setupMinutes) × ratePerMinute, rounded half up to a whole paisa. Computed by the server.
Example:
424000Free text for the customer; empty when none was given.
Example:
"Pulley 90"Stable id (UUIDv7).
Example:
"0192f0c1-0000-7000-8000-000000b30015"Machine minutes for one piece.
Example:
2.5The operation priced, such as Turning.
Example:
"Turning"Paise per machine minute.
Example:
800One-off machine minutes to set up, charged once per line.
Example:
30
Material to use.
Example:
"EN8"The quote number, such as
QTN/26-27/0001. Assigned by the server.Example:
"QTN/26-27/0002"The order made from this quote; null until converted (see
order).Example:
nullPart name or number.
Example:
"Pulley 90"Pieces quoted.
Example:
200DRAFT 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.
Subtotal, GST and total, all in paise, worked out by the server.
Example:
{"subtotal":484000,"discount":0,"taxable":484000,"gstRate":12,"supply":"INTER","cgst":0,"sgst":0,"igst":58080,"gst":58080,"total":542080}Show children
Central GST; 0 unless
supplyis INTRA.Example:
0The discount applied. Never more than the subtotal.
Example:
0Total GST: cgst + sgst + igst.
Example:
58080The GST percentage applied; 0 when
supplyis NONE.Example:
12Integrated GST; 0 unless
supplyis INTER.Example:
58080State GST; 0 unless
supplyis INTRA.Example:
0Sum of the line amounts.
Example:
484000Whether 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.
Subtotal less discount.
Example:
484000Taxable plus GST.
Example:
542080
UTC time of the last change.
Example:
"2026-10-12T04:30:00.000Z"
Errors
| Code | HTTP | When |
|---|---|---|
QUOTE_NOT_FOUND | 404 | The id is unknown in this shop (another shop's quote answers the same). |
QUOTE_NOT_EDITABLE | 409 | updateQuote on a quote that is already sent or has become an order. |
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.