Estimating quotes

Quotes from the Estimating module. A different thing from an AR quote, which is an order with status quote - see the orders resource. ordertype 2 is a rental order, not a quote.

Licensed feature

This resource needs either of the Printshop_pricelist or Printshop_std features active on the install you are calling. Without that every endpoint here answers 403 with feature_not_licensed - that is a licensing answer, not a permissions one, so check the company's features before the token's scopes.

The object#

FieldTypeDescription
idread-onlyintegerNolaPro id.
customeridintegerReference to customers, by id. Write either this or customer.
customerstring(30)Code for the referenced customer, instead of the id.
contactnamestring(50)Customer contact the quote is for.
stdsizeidintegerStdsizeid. Id only.
cwidthmoneystring(3dp)Stored as decimal(10,3).
clengthmoneystring(3dp)Stored as decimal(10,3).
substockidintegerPaper stock the job prints on (the Stock picker on the quote form).
substockstring(255)The sku of the referenced items, instead of the id. Send this or substockid, not both unless they agree.
tightreg1integer1 when side 1 requires tight registration; the option appears when more than one ink is selected.
tightreg2integer1 when side 2 requires tight registration.
cancelbooleanCancelled. Always a boolean on the wire, whatever integer width the column uses (D23).
entrydatestringWhen the record was created.
lastchangedateread-onlystringLast modification. Drives modifiedsince.
descriptionstring(255)Job description.
substockcoloridintegerSubstockcolorid. Id only.
shippingservicestring(3)Shipping service quoted for delivery.
shippingzipcodestring(12)Destination ZIP code used to quote shipping.
specialstring(255)Special Notes for the job.
quotenumstring(20)Quote number shown to the customer.
extusermoneystringStored as double.
genusermoneystringStored as double.
pricelistidintegerPricelistid. Id only.
duedatestringDate payment is due.
finalshipdatestringDate the job actually shipped.
statusstringStatus. Labels are Estquotequote_model::$statuses; stored as an int and never exposed or accepted as one (D35). One of quote, open, confirmed, partiallyshipped, shipped, complete, unconfirmedexternal, unconfirmedinternal, inprogress.
billdatestringDate the job was billed.
order_quantityintegerQuantity ordered.
shiptotalmoneystring(2dp)Stored as decimal(12,2).
billtotalmoneystring(2dp)Stored as decimal(12,2).
orderdatestringDate the quote became an order.
instructionsstring(255)Production instructions printed on the job ticket.
id_printorderintegerPrint order (job) number assigned when the quote becomes an order; 0 while it is still a quote.
extrasintegerExtra Sheets Scrap - additional sheets run to cover setup and spoilage.
numupintegerNumber Up On Press Sheet - how many pieces print per sheet.
itemidintegerReference to items, by id. Write either this or item.
itemstring(255)The sku of the referenced items, instead of the id. Send this or itemid, not both unless they agree.
papernamestring(50)Paper name printed on the job ticket.
paperwidthmoneystring(3dp)Stored as decimal(12,3).
paperlengthmoneystring(3dp)Stored as decimal(12,3).
priorityintegerProduction priority used to sequence jobs.
formnumberstring(50)Form Number of the printed piece.
numpartsintegerNumber of parts in the piece (multi-part carbonless forms).
salesglacctidintegerReference to glaccounts, by id. Write either this or salesglacct.
salesglacctstring(20)The name of the referenced glaccounts, instead of the id. Send this or salesglacctid, not both unless they agree.
presslengthmoneystring(2dp)Stored as decimal(12,2).
presswidthmoneystring(2dp)Stored as decimal(12,2).
customer_postring(30)Customer PO number for the job.
print_howintegerPress imposition: 0 = none, 1 = Work & Turn, 2 = Work & Flop.
rush_chargemoneystring(4dp)Stored as decimal(12,4).
composition_chargemoneystring(4dp)Stored as decimal(12,4).
glrushintegerGL account rush charges post to; seeded from the print module default.
glcompositionintegerGL account composition (typesetting) charges post to; seeded from the print module default.
reprintinteger1 when the job is a reprint of an earlier printing.
printdatestringDate the job printed.
calculated_qtyqtystring(5dp)Quantity, 5 decimal places, as a string. Stored as decimal(5dp).
sell_totalmoneystring(5dp)Stored as decimal(12,5).
calculated_totalmoneystring(5dp)Stored as decimal(14,5).
previous_id_printorderintegerThe earlier print order a reprint or reorder was copied from; artwork carries over from it.
client_notestextClient_notes. Stored as text, no practical length limit.
confirm_datestringDate the order was confirmed with the customer.
sigmultintegerNumber of Sigs - signatures making up the piece.
invoiceto_companyidintegerInvoiceto companyid. Id only.
order_discount_percentnumberstring(2dp)Numeric string, 2 decimal places. Not money - do not apply currency rounding.
preferred_shipdatestringShip date the customer asked for.
receivedatestringDate the order was received.
shipbeforestringLatest date the job may ship.
shipafterintegerShip XX Days After Approval - days to wait after proof approval before shipping.
orderyearstring(4)Order Year bucket the job number belongs to; print order numbering restarts each year.
art_numberstring(30)Art # - artwork reference for the job.
reorderinteger1 when this order is a reorder of a previous job.
ordertakerstring(10)Order Taken By - who took the order.
probleminteger1 flags a Problem Order for follow-up.
rushinteger1 marks the job as a rush order.
order_sourceidintegerOrder sourceid. Id only.
sales_responseidintegerSales responseid. Id only.
shipnotestring(100)Ship Note printed on shipping paperwork.
okinteger1 once the customer’s proof approval (OK to print) is recorded.
okdatestringDate the proof approval was recorded.
topressinteger1 once the job is Released to Press.
topressdatestringDate the job was released to press.
print_what_on_coversintegerFor printed covers: 0 = N/A, 1 = print names and addresses, 2 = print names only.
coupon_amountmoneystring(5dp)Stored as decimal(16,5).
couponidintegerCouponid. Id only.
rescomintegerWhether the delivery address is commercial or residential, from the Commercial or Residential selector.
pricepercovermoneystring(5dp)Stored as decimal(19,5).
priceperspecialdesignmoneystring(5dp)Stored as decimal(19,5).
pricepercolorbordermoneystring(5dp)Stored as decimal(19,5).
priceperpremiummoneystring(5dp)Stored as decimal(19,5).
priceperstandardmoneystring(5dp)Stored as decimal(19,5).
totalpriceperbookmoneystring(5dp)Stored as decimal(19,5).
basepriceperbookmoneystring(5dp)Stored as decimal(19,5).
totaldiscountamountmoneystring(5dp)Stored as decimal(19,5).
externalidstring(100)Your own key. Scoped to your company.

Endpoints#

POST/estquotes/batch 207

Create many.

Requires scope estimating:write.

Parameters
NameInTypeNotes
Idempotency-KeyheaderstringMakes the write safely retryable. Any unique string per logical operation; a UUID is fine. The failure this prevents is specific: the request succeeds, the response is lost to a timeout, you retry, and the customer is billed twice. With a key, the retry returns the original response - same status, same body, same id - and creates nothing. The body is part of the key's identity. Reusing a key with a different body is a bug on your side, not a retry, and answers 409 idempotency_replay rather than silently handing back the old response. Keys are remembered for 24 hours.
Body array
FieldTypeDescription
idread-onlyintegerNolaPro id.
customeridintegerReference to customers, by id. Write either this or customer.
customerstring(30)Code for the referenced customer, instead of the id.
contactnamestring(50)Customer contact the quote is for.
stdsizeidintegerStdsizeid. Id only.
cwidthmoneystring(3dp)Stored as decimal(10,3).
clengthmoneystring(3dp)Stored as decimal(10,3).
substockidintegerPaper stock the job prints on (the Stock picker on the quote form).
substockstring(255)The sku of the referenced items, instead of the id. Send this or substockid, not both unless they agree.
tightreg1integer1 when side 1 requires tight registration; the option appears when more than one ink is selected.
tightreg2integer1 when side 2 requires tight registration.
cancelbooleanCancelled. Always a boolean on the wire, whatever integer width the column uses (D23).
entrydatestringWhen the record was created.
lastchangedateread-onlystringLast modification. Drives modifiedsince.
descriptionstring(255)Job description.
substockcoloridintegerSubstockcolorid. Id only.
shippingservicestring(3)Shipping service quoted for delivery.
shippingzipcodestring(12)Destination ZIP code used to quote shipping.
specialstring(255)Special Notes for the job.
quotenumstring(20)Quote number shown to the customer.
extusermoneystringStored as double.
genusermoneystringStored as double.
pricelistidintegerPricelistid. Id only.
duedatestringDate payment is due.
finalshipdatestringDate the job actually shipped.
statusstringStatus. Labels are Estquotequote_model::$statuses; stored as an int and never exposed or accepted as one (D35). One of quote, open, confirmed, partiallyshipped, shipped, complete, unconfirmedexternal, unconfirmedinternal, inprogress.
billdatestringDate the job was billed.
order_quantityintegerQuantity ordered.
shiptotalmoneystring(2dp)Stored as decimal(12,2).
billtotalmoneystring(2dp)Stored as decimal(12,2).
orderdatestringDate the quote became an order.
instructionsstring(255)Production instructions printed on the job ticket.
id_printorderintegerPrint order (job) number assigned when the quote becomes an order; 0 while it is still a quote.
extrasintegerExtra Sheets Scrap - additional sheets run to cover setup and spoilage.
numupintegerNumber Up On Press Sheet - how many pieces print per sheet.
itemidintegerReference to items, by id. Write either this or item.
itemstring(255)The sku of the referenced items, instead of the id. Send this or itemid, not both unless they agree.
papernamestring(50)Paper name printed on the job ticket.
paperwidthmoneystring(3dp)Stored as decimal(12,3).
paperlengthmoneystring(3dp)Stored as decimal(12,3).
priorityintegerProduction priority used to sequence jobs.
formnumberstring(50)Form Number of the printed piece.
numpartsintegerNumber of parts in the piece (multi-part carbonless forms).
salesglacctidintegerReference to glaccounts, by id. Write either this or salesglacct.
salesglacctstring(20)The name of the referenced glaccounts, instead of the id. Send this or salesglacctid, not both unless they agree.
presslengthmoneystring(2dp)Stored as decimal(12,2).
presswidthmoneystring(2dp)Stored as decimal(12,2).
customer_postring(30)Customer PO number for the job.
print_howintegerPress imposition: 0 = none, 1 = Work & Turn, 2 = Work & Flop.
rush_chargemoneystring(4dp)Stored as decimal(12,4).
composition_chargemoneystring(4dp)Stored as decimal(12,4).
glrushintegerGL account rush charges post to; seeded from the print module default.
glcompositionintegerGL account composition (typesetting) charges post to; seeded from the print module default.
reprintinteger1 when the job is a reprint of an earlier printing.
printdatestringDate the job printed.
calculated_qtyqtystring(5dp)Quantity, 5 decimal places, as a string. Stored as decimal(5dp).
sell_totalmoneystring(5dp)Stored as decimal(12,5).
calculated_totalmoneystring(5dp)Stored as decimal(14,5).
previous_id_printorderintegerThe earlier print order a reprint or reorder was copied from; artwork carries over from it.
client_notestextClient_notes. Stored as text, no practical length limit.
confirm_datestringDate the order was confirmed with the customer.
sigmultintegerNumber of Sigs - signatures making up the piece.
invoiceto_companyidintegerInvoiceto companyid. Id only.
order_discount_percentnumberstring(2dp)Numeric string, 2 decimal places. Not money - do not apply currency rounding.
preferred_shipdatestringShip date the customer asked for.
receivedatestringDate the order was received.
shipbeforestringLatest date the job may ship.
shipafterintegerShip XX Days After Approval - days to wait after proof approval before shipping.
orderyearstring(4)Order Year bucket the job number belongs to; print order numbering restarts each year.
art_numberstring(30)Art # - artwork reference for the job.
reorderinteger1 when this order is a reorder of a previous job.
ordertakerstring(10)Order Taken By - who took the order.
probleminteger1 flags a Problem Order for follow-up.
rushinteger1 marks the job as a rush order.
order_sourceidintegerOrder sourceid. Id only.
sales_responseidintegerSales responseid. Id only.
shipnotestring(100)Ship Note printed on shipping paperwork.
okinteger1 once the customer’s proof approval (OK to print) is recorded.
okdatestringDate the proof approval was recorded.
topressinteger1 once the job is Released to Press.
topressdatestringDate the job was released to press.
print_what_on_coversintegerFor printed covers: 0 = N/A, 1 = print names and addresses, 2 = print names only.
coupon_amountmoneystring(5dp)Stored as decimal(16,5).
couponidintegerCouponid. Id only.
rescomintegerWhether the delivery address is commercial or residential, from the Commercial or Residential selector.
pricepercovermoneystring(5dp)Stored as decimal(19,5).
priceperspecialdesignmoneystring(5dp)Stored as decimal(19,5).
pricepercolorbordermoneystring(5dp)Stored as decimal(19,5).
priceperpremiummoneystring(5dp)Stored as decimal(19,5).
priceperstandardmoneystring(5dp)Stored as decimal(19,5).
totalpriceperbookmoneystring(5dp)Stored as decimal(19,5).
basepriceperbookmoneystring(5dp)Stored as decimal(19,5).
totaldiscountamountmoneystring(5dp)Stored as decimal(19,5).
externalidstring(100)Your own key. Scoped to your company.
curl -X POST \
  'https://acme.nolapro.com/!/api/v2/estquotes/batch' \
  -H 'Authorization: Bearer $NP_TOKEN' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: your-unique-key' \
  -d '[
    {
        "status": "quote"
    }
]'
GET/estquotes 200403

List estimating quotes.

Requires scope estimating:read.

Parameters
NameInTypeNotes
statusquerystringRestrict to one status.
customeridquerystringRestrict to one customerid.
itemidquerystringRestrict to one itemid.
descriptionquerystringdescription. Partial match, case-insensitive.
cancelquerystringDefaults to false. Pass true or any.
modifiedsincequerystringRFC 3339 UTC timestamp. Returns only records changed since then, including cancelled ones - so cancel defaults to any rather than false when this is used. The response carries _meta.synced_through; store it and send it back next time.
externalidquerystringExact match on your own key.
includequerystringComma-separated extras to embed. Only custom_fields is available: the extra fields this install has defined on the record. Off by default, and an unrecognised value is refused rather than ignored. See Conventions.
When it fails
StatusCodeMeaning
403insufficient_scopeToken lacks read scope.
curl \
  'https://acme.nolapro.com/!/api/v2/estquotes' \
  -H 'Authorization: Bearer $NP_TOKEN'
POST/estquotes 201400

Create.

Requires scope estimating:write.

Parameters
NameInTypeNotes
Idempotency-KeyheaderstringMakes the write safely retryable. Any unique string per logical operation; a UUID is fine. The failure this prevents is specific: the request succeeds, the response is lost to a timeout, you retry, and the customer is billed twice. With a key, the retry returns the original response - same status, same body, same id - and creates nothing. The body is part of the key's identity. Reusing a key with a different body is a bug on your side, not a retry, and answers 409 idempotency_replay rather than silently handing back the old response. Keys are remembered for 24 hours.
Body
FieldTypeDescription
idread-onlyintegerNolaPro id.
customeridintegerReference to customers, by id. Write either this or customer.
customerstring(30)Code for the referenced customer, instead of the id.
contactnamestring(50)Customer contact the quote is for.
stdsizeidintegerStdsizeid. Id only.
cwidthmoneystring(3dp)Stored as decimal(10,3).
clengthmoneystring(3dp)Stored as decimal(10,3).
substockidintegerPaper stock the job prints on (the Stock picker on the quote form).
substockstring(255)The sku of the referenced items, instead of the id. Send this or substockid, not both unless they agree.
tightreg1integer1 when side 1 requires tight registration; the option appears when more than one ink is selected.
tightreg2integer1 when side 2 requires tight registration.
cancelbooleanCancelled. Always a boolean on the wire, whatever integer width the column uses (D23).
entrydatestringWhen the record was created.
lastchangedateread-onlystringLast modification. Drives modifiedsince.
descriptionstring(255)Job description.
substockcoloridintegerSubstockcolorid. Id only.
shippingservicestring(3)Shipping service quoted for delivery.
shippingzipcodestring(12)Destination ZIP code used to quote shipping.
specialstring(255)Special Notes for the job.
quotenumstring(20)Quote number shown to the customer.
extusermoneystringStored as double.
genusermoneystringStored as double.
pricelistidintegerPricelistid. Id only.
duedatestringDate payment is due.
finalshipdatestringDate the job actually shipped.
statusstringStatus. Labels are Estquotequote_model::$statuses; stored as an int and never exposed or accepted as one (D35). One of quote, open, confirmed, partiallyshipped, shipped, complete, unconfirmedexternal, unconfirmedinternal, inprogress.
billdatestringDate the job was billed.
order_quantityintegerQuantity ordered.
shiptotalmoneystring(2dp)Stored as decimal(12,2).
billtotalmoneystring(2dp)Stored as decimal(12,2).
orderdatestringDate the quote became an order.
instructionsstring(255)Production instructions printed on the job ticket.
id_printorderintegerPrint order (job) number assigned when the quote becomes an order; 0 while it is still a quote.
extrasintegerExtra Sheets Scrap - additional sheets run to cover setup and spoilage.
numupintegerNumber Up On Press Sheet - how many pieces print per sheet.
itemidintegerReference to items, by id. Write either this or item.
itemstring(255)The sku of the referenced items, instead of the id. Send this or itemid, not both unless they agree.
papernamestring(50)Paper name printed on the job ticket.
paperwidthmoneystring(3dp)Stored as decimal(12,3).
paperlengthmoneystring(3dp)Stored as decimal(12,3).
priorityintegerProduction priority used to sequence jobs.
formnumberstring(50)Form Number of the printed piece.
numpartsintegerNumber of parts in the piece (multi-part carbonless forms).
salesglacctidintegerReference to glaccounts, by id. Write either this or salesglacct.
salesglacctstring(20)The name of the referenced glaccounts, instead of the id. Send this or salesglacctid, not both unless they agree.
presslengthmoneystring(2dp)Stored as decimal(12,2).
presswidthmoneystring(2dp)Stored as decimal(12,2).
customer_postring(30)Customer PO number for the job.
print_howintegerPress imposition: 0 = none, 1 = Work & Turn, 2 = Work & Flop.
rush_chargemoneystring(4dp)Stored as decimal(12,4).
composition_chargemoneystring(4dp)Stored as decimal(12,4).
glrushintegerGL account rush charges post to; seeded from the print module default.
glcompositionintegerGL account composition (typesetting) charges post to; seeded from the print module default.
reprintinteger1 when the job is a reprint of an earlier printing.
printdatestringDate the job printed.
calculated_qtyqtystring(5dp)Quantity, 5 decimal places, as a string. Stored as decimal(5dp).
sell_totalmoneystring(5dp)Stored as decimal(12,5).
calculated_totalmoneystring(5dp)Stored as decimal(14,5).
previous_id_printorderintegerThe earlier print order a reprint or reorder was copied from; artwork carries over from it.
client_notestextClient_notes. Stored as text, no practical length limit.
confirm_datestringDate the order was confirmed with the customer.
sigmultintegerNumber of Sigs - signatures making up the piece.
invoiceto_companyidintegerInvoiceto companyid. Id only.
order_discount_percentnumberstring(2dp)Numeric string, 2 decimal places. Not money - do not apply currency rounding.
preferred_shipdatestringShip date the customer asked for.
receivedatestringDate the order was received.
shipbeforestringLatest date the job may ship.
shipafterintegerShip XX Days After Approval - days to wait after proof approval before shipping.
orderyearstring(4)Order Year bucket the job number belongs to; print order numbering restarts each year.
art_numberstring(30)Art # - artwork reference for the job.
reorderinteger1 when this order is a reorder of a previous job.
ordertakerstring(10)Order Taken By - who took the order.
probleminteger1 flags a Problem Order for follow-up.
rushinteger1 marks the job as a rush order.
order_sourceidintegerOrder sourceid. Id only.
sales_responseidintegerSales responseid. Id only.
shipnotestring(100)Ship Note printed on shipping paperwork.
okinteger1 once the customer’s proof approval (OK to print) is recorded.
okdatestringDate the proof approval was recorded.
topressinteger1 once the job is Released to Press.
topressdatestringDate the job was released to press.
print_what_on_coversintegerFor printed covers: 0 = N/A, 1 = print names and addresses, 2 = print names only.
coupon_amountmoneystring(5dp)Stored as decimal(16,5).
couponidintegerCouponid. Id only.
rescomintegerWhether the delivery address is commercial or residential, from the Commercial or Residential selector.
pricepercovermoneystring(5dp)Stored as decimal(19,5).
priceperspecialdesignmoneystring(5dp)Stored as decimal(19,5).
pricepercolorbordermoneystring(5dp)Stored as decimal(19,5).
priceperpremiummoneystring(5dp)Stored as decimal(19,5).
priceperstandardmoneystring(5dp)Stored as decimal(19,5).
totalpriceperbookmoneystring(5dp)Stored as decimal(19,5).
basepriceperbookmoneystring(5dp)Stored as decimal(19,5).
totaldiscountamountmoneystring(5dp)Stored as decimal(19,5).
externalidstring(100)Your own key. Scoped to your company.
When it fails
StatusCodeMeaning
400invalid_requestA required field was missing.
curl -X POST \
  'https://acme.nolapro.com/!/api/v2/estquotes' \
  -H 'Authorization: Bearer $NP_TOKEN' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: your-unique-key' \
  -d '{
    "status": "quote"
}'
Response 201
{
    "status": "quote"
}
GET/estquotes/{id} 200404

Retrieve one record.

Requires scope estimating:read.

Parameters
NameInTypeNotes
idrequiredpathintegerThe record id.
includequerystringComma-separated extras to embed. Only custom_fields is available: the extra fields this install has defined on the record. Off by default, and an unrecognised value is refused rather than ignored. See Conventions.
When it fails
StatusCodeMeaning
404not_foundNo record with that id.
curl \
  'https://acme.nolapro.com/!/api/v2/estquotes/104' \
  -H 'Authorization: Bearer $NP_TOKEN'
Response 200
{
    "status": "quote"
}
PATCH/estquotes/{id} 200404

Update.

Requires scope estimating:write.

Parameters
NameInTypeNotes
idrequiredpathintegerThe record id.
Idempotency-KeyheaderstringMakes the write safely retryable. Any unique string per logical operation; a UUID is fine. The failure this prevents is specific: the request succeeds, the response is lost to a timeout, you retry, and the customer is billed twice. With a key, the retry returns the original response - same status, same body, same id - and creates nothing. The body is part of the key's identity. Reusing a key with a different body is a bug on your side, not a retry, and answers 409 idempotency_replay rather than silently handing back the old response. Keys are remembered for 24 hours.
Body
FieldTypeDescription
idread-onlyintegerNolaPro id.
customeridintegerReference to customers, by id. Write either this or customer.
customerstring(30)Code for the referenced customer, instead of the id.
contactnamestring(50)Customer contact the quote is for.
stdsizeidintegerStdsizeid. Id only.
cwidthmoneystring(3dp)Stored as decimal(10,3).
clengthmoneystring(3dp)Stored as decimal(10,3).
substockidintegerPaper stock the job prints on (the Stock picker on the quote form).
substockstring(255)The sku of the referenced items, instead of the id. Send this or substockid, not both unless they agree.
tightreg1integer1 when side 1 requires tight registration; the option appears when more than one ink is selected.
tightreg2integer1 when side 2 requires tight registration.
cancelbooleanCancelled. Always a boolean on the wire, whatever integer width the column uses (D23).
entrydatestringWhen the record was created.
lastchangedateread-onlystringLast modification. Drives modifiedsince.
descriptionstring(255)Job description.
substockcoloridintegerSubstockcolorid. Id only.
shippingservicestring(3)Shipping service quoted for delivery.
shippingzipcodestring(12)Destination ZIP code used to quote shipping.
specialstring(255)Special Notes for the job.
quotenumstring(20)Quote number shown to the customer.
extusermoneystringStored as double.
genusermoneystringStored as double.
pricelistidintegerPricelistid. Id only.
duedatestringDate payment is due.
finalshipdatestringDate the job actually shipped.
statusstringStatus. Labels are Estquotequote_model::$statuses; stored as an int and never exposed or accepted as one (D35). One of quote, open, confirmed, partiallyshipped, shipped, complete, unconfirmedexternal, unconfirmedinternal, inprogress.
billdatestringDate the job was billed.
order_quantityintegerQuantity ordered.
shiptotalmoneystring(2dp)Stored as decimal(12,2).
billtotalmoneystring(2dp)Stored as decimal(12,2).
orderdatestringDate the quote became an order.
instructionsstring(255)Production instructions printed on the job ticket.
id_printorderintegerPrint order (job) number assigned when the quote becomes an order; 0 while it is still a quote.
extrasintegerExtra Sheets Scrap - additional sheets run to cover setup and spoilage.
numupintegerNumber Up On Press Sheet - how many pieces print per sheet.
itemidintegerReference to items, by id. Write either this or item.
itemstring(255)The sku of the referenced items, instead of the id. Send this or itemid, not both unless they agree.
papernamestring(50)Paper name printed on the job ticket.
paperwidthmoneystring(3dp)Stored as decimal(12,3).
paperlengthmoneystring(3dp)Stored as decimal(12,3).
priorityintegerProduction priority used to sequence jobs.
formnumberstring(50)Form Number of the printed piece.
numpartsintegerNumber of parts in the piece (multi-part carbonless forms).
salesglacctidintegerReference to glaccounts, by id. Write either this or salesglacct.
salesglacctstring(20)The name of the referenced glaccounts, instead of the id. Send this or salesglacctid, not both unless they agree.
presslengthmoneystring(2dp)Stored as decimal(12,2).
presswidthmoneystring(2dp)Stored as decimal(12,2).
customer_postring(30)Customer PO number for the job.
print_howintegerPress imposition: 0 = none, 1 = Work & Turn, 2 = Work & Flop.
rush_chargemoneystring(4dp)Stored as decimal(12,4).
composition_chargemoneystring(4dp)Stored as decimal(12,4).
glrushintegerGL account rush charges post to; seeded from the print module default.
glcompositionintegerGL account composition (typesetting) charges post to; seeded from the print module default.
reprintinteger1 when the job is a reprint of an earlier printing.
printdatestringDate the job printed.
calculated_qtyqtystring(5dp)Quantity, 5 decimal places, as a string. Stored as decimal(5dp).
sell_totalmoneystring(5dp)Stored as decimal(12,5).
calculated_totalmoneystring(5dp)Stored as decimal(14,5).
previous_id_printorderintegerThe earlier print order a reprint or reorder was copied from; artwork carries over from it.
client_notestextClient_notes. Stored as text, no practical length limit.
confirm_datestringDate the order was confirmed with the customer.
sigmultintegerNumber of Sigs - signatures making up the piece.
invoiceto_companyidintegerInvoiceto companyid. Id only.
order_discount_percentnumberstring(2dp)Numeric string, 2 decimal places. Not money - do not apply currency rounding.
preferred_shipdatestringShip date the customer asked for.
receivedatestringDate the order was received.
shipbeforestringLatest date the job may ship.
shipafterintegerShip XX Days After Approval - days to wait after proof approval before shipping.
orderyearstring(4)Order Year bucket the job number belongs to; print order numbering restarts each year.
art_numberstring(30)Art # - artwork reference for the job.
reorderinteger1 when this order is a reorder of a previous job.
ordertakerstring(10)Order Taken By - who took the order.
probleminteger1 flags a Problem Order for follow-up.
rushinteger1 marks the job as a rush order.
order_sourceidintegerOrder sourceid. Id only.
sales_responseidintegerSales responseid. Id only.
shipnotestring(100)Ship Note printed on shipping paperwork.
okinteger1 once the customer’s proof approval (OK to print) is recorded.
okdatestringDate the proof approval was recorded.
topressinteger1 once the job is Released to Press.
topressdatestringDate the job was released to press.
print_what_on_coversintegerFor printed covers: 0 = N/A, 1 = print names and addresses, 2 = print names only.
coupon_amountmoneystring(5dp)Stored as decimal(16,5).
couponidintegerCouponid. Id only.
rescomintegerWhether the delivery address is commercial or residential, from the Commercial or Residential selector.
pricepercovermoneystring(5dp)Stored as decimal(19,5).
priceperspecialdesignmoneystring(5dp)Stored as decimal(19,5).
pricepercolorbordermoneystring(5dp)Stored as decimal(19,5).
priceperpremiummoneystring(5dp)Stored as decimal(19,5).
priceperstandardmoneystring(5dp)Stored as decimal(19,5).
totalpriceperbookmoneystring(5dp)Stored as decimal(19,5).
basepriceperbookmoneystring(5dp)Stored as decimal(19,5).
totaldiscountamountmoneystring(5dp)Stored as decimal(19,5).
externalidstring(100)Your own key. Scoped to your company.
When it fails
StatusCodeMeaning
404not_foundNo record with that id.
curl -X PATCH \
  'https://acme.nolapro.com/!/api/v2/estquotes/104' \
  -H 'Authorization: Bearer $NP_TOKEN' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: your-unique-key' \
  -d '{
    "status": "quote"
}'
Response 200
{
    "status": "quote"
}
DELETE/estquotes/{id} 200404

Cancel.

Requires scope estimating:cancel.

Parameters
NameInTypeNotes
idrequiredpathintegerThe record id.
Idempotency-KeyheaderstringMakes the write safely retryable. Any unique string per logical operation; a UUID is fine. The failure this prevents is specific: the request succeeds, the response is lost to a timeout, you retry, and the customer is billed twice. With a key, the retry returns the original response - same status, same body, same id - and creates nothing. The body is part of the key's identity. Reusing a key with a different body is a bug on your side, not a retry, and answers 409 idempotency_replay rather than silently handing back the old response. Keys are remembered for 24 hours.
When it fails
StatusCodeMeaning
404not_foundNo record with that id.
curl -X DELETE \
  'https://acme.nolapro.com/!/api/v2/estquotes/104' \
  -H 'Authorization: Bearer $NP_TOKEN'
Response 200
{
    "status": "quote"
}
GET/estquotes/{id}/packingslip 200409

Packing slip as a PDF

The packing slip for the print order this quote belongs to. Keyed by the quote you already have an id for; the print order behind it is resolved for you. Answers application/pdf, not JSON. Because the body is binary it cannot be carried inside a /batch results array; asking for it there returns 415 not_batchable. A quote with no print order yet is refused with 409 not_posted - there is no job to print until one is scheduled.

Requires scope estimating:read.

Parameters
NameInTypeNotes
idrequiredpathintegerThe record id.
When it fails
StatusCodeMeaning
409The quote has no print order yet.
curl \
  'https://acme.nolapro.com/!/api/v2/estquotes/104/packingslip' \
  -H 'Authorization: Bearer $NP_TOKEN'
GET/estquotes/{id}/jobticket 200409

Job ticket as a PDF

The shop travelling ticket: what to run, on what stock, in what order. Answers application/pdf, not JSON. Because the body is binary it cannot be carried inside a /batch results array; asking for it there returns 415 not_batchable. A quote with no print order yet is refused with 409 not_posted - there is no job to print until one is scheduled.

Requires scope estimating:read.

Parameters
NameInTypeNotes
idrequiredpathintegerThe record id.
When it fails
StatusCodeMeaning
409The quote has no print order yet.
curl \
  'https://acme.nolapro.com/!/api/v2/estquotes/104/jobticket' \
  -H 'Authorization: Bearer $NP_TOKEN'
GET/estquotes/{id}/addressform 200409

Mailing address form as a PDF

The addressing and mailing form for the print order. Answers application/pdf, not JSON. Because the body is binary it cannot be carried inside a /batch results array; asking for it there returns 415 not_batchable. A quote with no print order yet is refused with 409 not_posted - there is no job to print until one is scheduled.

Requires scope estimating:read.

Parameters
NameInTypeNotes
idrequiredpathintegerThe record id.
When it fails
StatusCodeMeaning
409The quote has no print order yet.
curl \
  'https://acme.nolapro.com/!/api/v2/estquotes/104/addressform' \
  -H 'Authorization: Bearer $NP_TOKEN'
GET/estquotes/{id}/boxlabel 200

Box labels as a PDF

Carton labels for the print order this quote belongs to. Answers application/pdf, not JSON. Because the body is binary it cannot be carried inside a /batch results array; asking for it there returns 415 not_batchable.

Requires scope estimating:read.

Parameters
NameInTypeNotes
idrequiredpathintegerThe record id.
curl \
  'https://acme.nolapro.com/!/api/v2/estquotes/104/boxlabel' \
  -H 'Authorization: Bearer $NP_TOKEN'
GET/estquotes/{id}/attachments 200404

List files attached to an estimate quote.

The attachments on this estimate quote, newest first. Accepted filedefinitionid values: 21, 22 (default 21). Metadata only - each file's bytes are at GET /attachments/{id}/content.

Requires scope estimating:read.

Parameters
NameInTypeNotes
idrequiredpathintegerThe estimate quote id.
filedefinitionidqueryintegerOnly files in this list. Accepted filedefinitionid values: 21, 22 (default 21).
filecategoryidqueryintegerOnly files filed under this category.
filenamequerystringPartial match on the file name, case insensitive.
When it fails
StatusCodeMeaning
404not_foundNo estimate quote with that id in this company.
curl \
  'https://acme.nolapro.com/!/api/v2/estquotes/104/attachments' \
  -H 'Authorization: Bearer $NP_TOKEN'
POST/estquotes/{id}/attachments 201400404409413415422

Attach a file to an estimate quote.

multipart/form-data with one file part; see the AttachmentUpload schema for the other parts. Accepted filedefinitionid values: 21, 22 (default 21). Answers 201 with the attachment's metadata and Location: /attachments/{id}. Check _meta.warnings for datatype_truncated and stored_under_parent_company.

Requires scope estimating:write.

Parameters
NameInTypeNotes
idrequiredpathintegerThe estimate quote id.
Idempotency-KeyheaderstringMakes the write safely retryable. Any unique string per logical operation; a UUID is fine. The failure this prevents is specific: the request succeeds, the response is lost to a timeout, you retry, and the customer is billed twice. With a key, the retry returns the original response - same status, same body, same id - and creates nothing. The body is part of the key's identity. Reusing a key with a different body is a bug on your side, not a retry, and answers 409 idempotency_replay rather than silently handing back the old response. Keys are remembered for 24 hours.
Body multipart/form-data
FieldTypeDescription
filerequiredstringThe file. Exactly one part named file; a second one, or file[], is 400 invalid_request so an idempotent retry can never half-succeed. Empty is refused. Over the cap (the smaller of APIV2_MAX_UPLOAD_BYTES, 64 MB by default, and PHP's upload_max_filesize / post_max_size) is 413 payload_too_large naming the limit that applied.
filenamestring(255)Overrides the part's file name.
notestextFree text shown beside the file.
filedefinitionidintegerOnly when the parent accepts more than one list. Anything the parent does not accept is 422 unknown_value naming the accepted ids.
filecategoryidintegerCategory by id.
filecategorystring(255)Category by name. Sent with filecategoryid and disagreeing is 422 conflicting_reference.
When it fails
StatusCodeMeaning
400unknown_parameterA form field that is not on the AttachmentUpload schema.
400invalid_typefiledefinitionid or filecategoryid that is not an integer.
404not_foundNo estimate quote with that id in this company.
409upload_limit_reachedThis file list allows a fixed number of files on an estimate quote and it is full. Remove one first.
413payload_too_largeThe file is over the cap. The body names the limit that applied.
415multipart_requiredThe body was not multipart/form-data.
422unknown_valuefiledefinitionid is not one this estimate quote accepts, or the category does not exist in this company.
curl -X POST \
  'https://acme.nolapro.com/!/api/v2/estquotes/104/attachments' \
  -H 'Authorization: Bearer $NP_TOKEN' \
  -H 'Idempotency-Key: your-unique-key' \
  -F 'file=@grant-letter-signed.pdf' \
  -F 'filename=grant-letter-signed.pdf' \
  -F 'notes=Signed copy received 21 Sep' \
  -F 'filedefinitionid=8' \
  -F 'filecategory=Receipts'