Items

Inventory and non-inventory items. Stock levels are per location and are never written directly, only moved.

Ledger rule

You cannot set onhand. Quantity changes come from receipts, shipments, and adjustments so that cost layers and the inventory GL account stay in step.

The object#

FieldTypeDescription
idread-onlyintegerNolaPro id.
itemcodestring(255)Item code (SKU) - the human key used across NolaPro.
compositeitemyesnointeger1 when the item is a composite built from component items (bill of materials).
descriptionstring(100)Item description shown on documents and lookups.
categoryidintegerCategoryid. Id only.
stockunitnameidintegerStockunitnameid. Id only.
stockunitnamestring(50)The unitname of the referenced unitnames, instead of the id. Send this or stockunitnameid, not both unless they agree.
priceunitnameidintegerPriceunitnameid. Id only.
priceunitnamestring(50)The unitname of the referenced unitnames, instead of the id. Send this or priceunitnameid, not both unless they agree.
lbsperpriceunitnumberstringNumeric string. Not money - do not apply currency rounding.
priceunitsperstockunitnumberstring(10dp)Numeric string, 10 decimal places. Not money - do not apply currency rounding.
stockunitsperpriceunitnumberstring(6dp)Numeric string, 6 decimal places. Not money - do not apply currency rounding.
inventoryglacctidintegerInventoryglacctid. Id only.
inventoryglacctstring(20)The name of the referenced glaccounts, instead of the id. Send this or inventoryglacctid, not both unless they agree.
salesglacctidintegerSalesglacctid. Id only.
salesglacctstring(20)The name of the referenced glaccounts, instead of the id. Send this or salesglacctid, not both unless they agree.
widthmoneystringStored as double.
lengthmoneystringStored as double.
mwtmoneystringStored as double.
cogsintegerCost of goods sold.
cogseffectivedatestringDate the cost of goods sold figure takes effect.
middlemanpricemoneystringStored as double.
pricemoneystringStored as double.
priceeffectivedatestringDate the price takes effect.
statusbooleanTrue when the item is marked Inactive on the item screens - hidden from lookups, kept for history. Not the same as cancel.
id_item_useinsteadintegerReplacement item to use instead of this one, shown when this item is discontinued.
invtypeintegerItem type: 1 = physical, 2 = print-on-demand (POD - costed at static cost, no stock tracking), 3 = finished goods. 0 on older records.
catalogdescriptiontextCatalogdescription. Stored as text, no practical length limit.
products_websitestring(255)Product webpage URL shown in the web store.
catalogsheeturltextURL of the item’s catalog sheet, shown in the web store.
graphicurltextURL or filename of the item’s picture.
pdffiletextPDF file attached to the item for the web store.
videofiletextVideo file attached to the item for the web store.
soundfiletextSound file attached to the item for the web store.
cancelbooleanCancelled. NolaPro cancels rather than deletes, so a cancelled row is still readable.
entrydateread-onlystringWhen the record was created.
lastchangedateread-onlystringLast modification. Drives modifiedsince.
products_quantityread-onlyintegerQuantity mirror maintained in the osCommerce-style web store tables. Maintained by the cart sync, so it cannot be written through the API.
products_viewedread-onlyintegerView counter maintained by the web store. Cannot be written through the API.
products_statusbooleanWeb store visibility flag from the osCommerce-style product tables.
products_tax_class_idread-onlyintegerLegacy osCommerce column. The products_tax_class table does not exist in NolaPro and every row holds 0, so this can never resolve to anything. Read-only, and kept only because the column is still on the table.
products_costpricemoneystring(2dp)Stored as decimal(8,2).
products_pushupmoneystring(2dp)Stored as decimal(4,2).
scartinteger1 shows the item in the B2B shopping cart.
parentitemidintegerParentitemid. Id only.
scart_minqtydisplayintegerMinimum on-hand quantity before the cart shows availability; the Shopify sync maps it to the no-back-orders flag.
taxexemptbooleanTrue when the item is never taxed, regardless of the customer’s tax setup.
calipermoneystring(4dp)Stored as decimal(10,4).
upcstring(255)Universal Product Code.
authortextAuthor, for book and media items in the web store.
notestextNotes. Stored as text, no practical length limit.
b2b_blockbooleanTrue blocks the item from B2B orders (Block Usage On B2B Orders).
pos_blockbooleanTrue hides the item from Point of Sale.
gbaseidread-onlystring(100)Submission id from the legacy Google Base product feed.
gbasedateread-onlystringWhen the item was last submitted to the legacy Google Base product feed.
commissionflatmoneystring(6dp)Stored as decimal(19,6).
commissionpercentnumberstring(2dp)Numeric string, 2 decimal places. Not money - do not apply currency rounding.
staticcostmoneystring(5dp)Stored as decimal(19,5).
minpmmoneystring(2dp)Stored as decimal(6,2).
restockdatestringExpected restock date, shown to buyers when the item is out of stock.
customeridintegerReference to customers, by id. Write either this or customer.
customerstring(30)Code for the referenced customer, instead of the id.
commoditycodestring(10)Commodity Code from the item screen, used on customs and freight paperwork.
defaultlinenotetextDefaultlinenote. Stored as text, no practical length limit.
inventorytypestring(1)S = stocked, N = non-stocked, O = other charges. Non-stocked and other-charge items carry no on-hand quantity and cost at static cost.
last3dcartstockupdateread-onlystringWhen the Shift4Shop (3DCart) sync last pushed a stock level for this item. Maintained by the sync, so it cannot be written through the API.
listonebaybooleanTrue marks the item for eBay listing (List On eBay).
lockpricecostbooleanTrue locks price and cost during a sale (Lock Price & Cost During Sale) so line edits cannot change them.
mobile_posbooleanTrue shows the item in the mobile Point of Sale (Show In Mobile POS).
notforsaleinteger1 marks the item Not For Sale - usable internally but blocked from sales documents.
rentalinteger1 when the item is a rental item.
shipheightmoneystring(2dp)Stored as decimal(7,2).
shiplengthmoneystring(2dp)Stored as decimal(7,2).
shippingmarkupmoneystring(6dp)Stored as decimal(19,6).
shipsbyitselfinteger1 when the item ships in its own package rather than being combined (Ships By Itself).
shipwidthmoneystring(2dp)Stored as decimal(7,2).
taxclassidintegerTaxclassid. Id only.
taxclassstring(100)The name of the referenced taxclasses, instead of the id. Send this or taxclassid, not both unless they agree.
accruedpurchasesglidintegerGL account purchases accrue to. Write either this or accruedpurchasesgl.
accruedpurchasesglstring(20)GL account NUMBER (glaccount.name) instead of the id. The sibling of accruedpurchasesglid, matching how salesglacct and inventoryglacct already work on this resource.
allownegqtysalesoverrideinteger1 allows negative-quantity sale lines for this item (Allow Negative Quantity Sales), priced by negativesalesruletype.
buyeruseridintegerBuyeruserid. Id only.
buyeruserstring(50)The name of the referenced genusers, instead of the id. Send this or buyeruserid, not both unless they agree.
expiredaysintegerShelf life in days; sets the default expiration date when lot tracking receives this item.
internalbuynotestextInternalbuynotes. Stored as text, no practical length limit.
internalsellnotestextInternalsellnotes. Stored as text, no practical length limit.
negativesalesruletypestring(1)Pricing rule for negative-quantity sale lines: F = fixed price, R = reduce price by percentage, S = percentage of sale price.
negativesalesrulevaluemoneystring(6dp)Stored as decimal(19,6).
nochargeglaccountidintegerNochargeglaccountid. Id only.
nochargeglaccountstring(20)The name of the referenced glaccounts, instead of the id. Send this or nochargeglaccountid, not both unless they agree.
pickernotestextPickernotes. Stored as text, no practical length limit.
po_blockinteger1 blocks the item from purchase orders (Block Usage On Purchase Orders).
prelimablebooleanTrue when sales of the item count toward preliminary lien notice amounts on prelim-able jobs.
qtyperpalletintegerQuantity per pallet; 0 uses the company default.
rebateglaccountidintegerRebateglaccountid. Id only.
rebateglaccountstring(20)The name of the referenced glaccounts, instead of the id. Send this or rebateglaccountid, not both unless they agree.
rental_dbooleanTrue offers daily rental pricing for the item.
rental_mbooleanTrue offers monthly rental pricing for the item.
rental_wbooleanTrue offers weekly rental pricing for the item.
rentalconverttosalearintegerGL account credited when a rental converts to a sale (Rental Conversion To Sales).
rentalconverttosalecogsintegerGL account debited for cost when a rental converts to a sale (Rental Conversion Cost Of Goods).
returnsglaccountidintegerReturnsglaccountid. Id only.
returnsglaccountstring(20)The name of the referenced glaccounts, instead of the id. Send this or returnsglaccountid, not both unless they agree.
transfershortglaccountidintegerTransfershortglaccountid. Id only.
transfershortglaccountstring(20)The name of the referenced glaccounts, instead of the id. Send this or transfershortglaccountid, not both unless they agree.
unnumberstring(255)UN hazardous-material number, printed as a caution on transfer and shipping paperwork.
itemcodechecksumread-onlyintegerSTORED GENERATED in the database. Read-only - MySQL computes it.
itemcomparisongroupidintegerItemcomparisongroupid. Id only.
itemcomparisongroupstring(255)The name of the referenced itemcomparisongroups, instead of the id. Send this or itemcomparisongroupid, not both unless they agree.
itemidentifierstextItemidentifiers. Stored as text, no practical length limit.
externalidstring(100)Your own key. Scoped to your company.

Endpoints#

GET/items/{id}/transactions 200422

Stock movement history for an item.

Every movement that made the item's stock what it is: receipts, shipments, adjustments, transfers and commitments. /items/{id}/stock answers what is on hand right now. This answers how it got there, which is what you need when your own system and NolaPro disagree about a number. trtype 1 is a commitment against an open order and is deliberately excluded from on-hand - filter it out to see physical movement only. Cancelled rows stay readable and do not count toward stock.

Requires scope items:read.

Parameters
NameInTypeNotes
idrequiredpathintegerThe item id.
When it fails
StatusCodeMeaning
422unknown_valueNo such parent record in this company. The same answer whether it does not exist or belongs to someone else, so a caller cannot probe another company's ids.
curl \
  'https://acme.nolapro.com/!/api/v2/items/104/transactions' \
  -H 'Authorization: Bearer $NP_TOKEN'
GET/items/{id}/locations 200422

Stock and reorder settings per location.

/items/{id}/stock answers for one location at a time. This lists every location the item is stocked at, with on-hand, bin, cost layers and the seasonal minimum, maximum and reorder quantities. A customer running more than one warehouse needs this to route fulfilment, and to avoid promising stock that is in the wrong building. Only locations that exist are listed. NolaPro keeps stock rows against internal pseudo-locations with negative ids and no matching location record; those are omitted, because an id you cannot fetch, adjust or ship from is not a warehouse.

Requires scope items:read.

Parameters
NameInTypeNotes
idrequiredpathintegerThe item id.
When it fails
StatusCodeMeaning
422unknown_valueNo such parent record in this company.
curl \
  'https://acme.nolapro.com/!/api/v2/items/104/locations' \
  -H 'Authorization: Bearer $NP_TOKEN'
GET/items/{id}/barcode 200400422

The item code as a scannable barcode image.

Returns image/png. Encodes the item's own code unless you pass value. Code 39 cannot encode every item code. Its alphabet is digits, A-Z, space and -.$/+%; an underscore or a lower-case letter produces an image that looks like a barcode and will not scan, which a warehouse discovers at the shelf. Those are refused with the offending characters named - use code128b for arbitrary text. The label SHEET (many labels, a stored template, print-ready) is a different thing and is not this endpoint.

Requires scope items:read.

Parameters
NameInTypeNotes
idrequiredpathintegerThe item id.
symbologyquerystringDefaults to code39.
valuequerystringEncode this instead of the item code.
widthqueryintegerPixels, 40-2000. Defaults to 460.
heightqueryintegerPixels, 20-1000. Defaults to 120.
When it fails
StatusCodeMeaning
400invalid_enumsymbology is not one of the four supported.
400invalid_typewidth or height was not a whole number.
422rule_violationThe symbology cannot represent those characters, or the item has no code.
422unknown_valueNo such item in this company.
curl \
  'https://acme.nolapro.com/!/api/v2/items/104/barcode' \
  -H 'Authorization: Bearer $NP_TOKEN'
POST/items/{id}/adjustments 201400422

Correct the stock level for an item at a location.

The only way to move stock that is not a side effect of shipping or receiving a document. Send either quantity (a signed change) or onhand (the level it should end at). They are the same operation - the delta is onhand - current - and letting you send the target means NolaPro computes the difference at the moment it applies it, rather than you computing it against a figure that may already have moved. This posts to the general ledger. The adjustment raises an INVADJ voucher against the item's inventory GL account, so the response carries voucherid and the period rules apply.

Requires scope items:write.

Parameters
NameInTypeNotes
idrequiredpathintegerThe item id.
Body
FieldTypeDescription
locationidrequiredintegerWhere the stock is held.
quantityqtystringSigned change. Negative writes stock off.
onhandqtystringThe level it should end at. NolaPro works out the difference.
descriptionstring(255)Why. Appears on the movement and the voucher.
datestringPosting date. Defaults to today.
When it fails
StatusCodeMeaning
400invalid_requestNeither or both of quantity and onhand were sent, or locationid is missing.
400invalid_typeA quantity was not a decimal string.
400invalid_precisionMore than six decimal places.
422rule_violationIt would change nothing, or the item is not stock-tracked there.
422period_closedThe GL period is closed, so the voucher has nowhere to post.
422unknown_valueNo such item or location in this company.
curl -X POST \
  'https://acme.nolapro.com/!/api/v2/items/104/adjustments' \
  -H 'Authorization: Bearer $NP_TOKEN'
GET/items/{id}/stock 200404

Retrieve stock for an item at one location.

Replaces the legacy item/get_item_stats and item/get_item_cost endpoints.

Requires scope items:read.

Parameters
NameInTypeNotes
idrequiredpathintegerThe item id.
locationrequiredqueryintegerInventory location id. Required: stock is meaningless without it.
When it fails
StatusCodeMeaning
404not_foundUnknown item, or the item is not stocked at that location.
curl \
  'https://acme.nolapro.com/!/api/v2/items/104/stock' \
  -H 'Authorization: Bearer $NP_TOKEN'
Response 200
{
    "itemid": 3391,
    "location": 2,
    "onhand": "412.000000",
    "committed": "60.000000",
    "available": "352.000000",
    "cost": "7.1100"
}
GET/items 200

List items.

Requires scope items:read.

Parameters
NameInTypeNotes
statusquerystringRestrict to one status.
customeridquerystringRestrict to one customerid.
itemcodequerystringItem code. Partial match.
descriptionquerystringDescription. Partial match.
categoryidquerystringRestrict to one category.
inventorytypequerystringS stocked, N non-stocked, O other charges.
cancelquerystringDefaults to false. Pass true or any.
pagequerystring1-based.
perpagequerystringDefault 50, maximum 200.
externalidquerystringFind by your own key.
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.
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.
curl \
  'https://acme.nolapro.com/!/api/v2/items' \
  -H 'Authorization: Bearer $NP_TOKEN'
POST/items 201400403

Create.

Requires scope items:write.

Parameters
NameInTypeNotes
Body
FieldTypeDescription
idread-onlyintegerNolaPro id.
itemcodestring(255)Item code (SKU) - the human key used across NolaPro.
compositeitemyesnointeger1 when the item is a composite built from component items (bill of materials).
descriptionstring(100)Item description shown on documents and lookups.
categoryidintegerCategoryid. Id only.
stockunitnameidintegerStockunitnameid. Id only.
stockunitnamestring(50)The unitname of the referenced unitnames, instead of the id. Send this or stockunitnameid, not both unless they agree.
priceunitnameidintegerPriceunitnameid. Id only.
priceunitnamestring(50)The unitname of the referenced unitnames, instead of the id. Send this or priceunitnameid, not both unless they agree.
lbsperpriceunitnumberstringNumeric string. Not money - do not apply currency rounding.
priceunitsperstockunitnumberstring(10dp)Numeric string, 10 decimal places. Not money - do not apply currency rounding.
stockunitsperpriceunitnumberstring(6dp)Numeric string, 6 decimal places. Not money - do not apply currency rounding.
inventoryglacctidintegerInventoryglacctid. Id only.
inventoryglacctstring(20)The name of the referenced glaccounts, instead of the id. Send this or inventoryglacctid, not both unless they agree.
salesglacctidintegerSalesglacctid. Id only.
salesglacctstring(20)The name of the referenced glaccounts, instead of the id. Send this or salesglacctid, not both unless they agree.
widthmoneystringStored as double.
lengthmoneystringStored as double.
mwtmoneystringStored as double.
cogsintegerCost of goods sold.
cogseffectivedatestringDate the cost of goods sold figure takes effect.
middlemanpricemoneystringStored as double.
pricemoneystringStored as double.
priceeffectivedatestringDate the price takes effect.
statusbooleanTrue when the item is marked Inactive on the item screens - hidden from lookups, kept for history. Not the same as cancel.
id_item_useinsteadintegerReplacement item to use instead of this one, shown when this item is discontinued.
invtypeintegerItem type: 1 = physical, 2 = print-on-demand (POD - costed at static cost, no stock tracking), 3 = finished goods. 0 on older records.
catalogdescriptiontextCatalogdescription. Stored as text, no practical length limit.
products_websitestring(255)Product webpage URL shown in the web store.
catalogsheeturltextURL of the item’s catalog sheet, shown in the web store.
graphicurltextURL or filename of the item’s picture.
pdffiletextPDF file attached to the item for the web store.
videofiletextVideo file attached to the item for the web store.
soundfiletextSound file attached to the item for the web store.
cancelbooleanCancelled. NolaPro cancels rather than deletes, so a cancelled row is still readable.
entrydateread-onlystringWhen the record was created.
lastchangedateread-onlystringLast modification. Drives modifiedsince.
products_quantityread-onlyintegerQuantity mirror maintained in the osCommerce-style web store tables. Maintained by the cart sync, so it cannot be written through the API.
products_viewedread-onlyintegerView counter maintained by the web store. Cannot be written through the API.
products_statusbooleanWeb store visibility flag from the osCommerce-style product tables.
products_tax_class_idread-onlyintegerLegacy osCommerce column. The products_tax_class table does not exist in NolaPro and every row holds 0, so this can never resolve to anything. Read-only, and kept only because the column is still on the table.
products_costpricemoneystring(2dp)Stored as decimal(8,2).
products_pushupmoneystring(2dp)Stored as decimal(4,2).
scartinteger1 shows the item in the B2B shopping cart.
parentitemidintegerParentitemid. Id only.
scart_minqtydisplayintegerMinimum on-hand quantity before the cart shows availability; the Shopify sync maps it to the no-back-orders flag.
taxexemptbooleanTrue when the item is never taxed, regardless of the customer’s tax setup.
calipermoneystring(4dp)Stored as decimal(10,4).
upcstring(255)Universal Product Code.
authortextAuthor, for book and media items in the web store.
notestextNotes. Stored as text, no practical length limit.
b2b_blockbooleanTrue blocks the item from B2B orders (Block Usage On B2B Orders).
pos_blockbooleanTrue hides the item from Point of Sale.
gbaseidread-onlystring(100)Submission id from the legacy Google Base product feed.
gbasedateread-onlystringWhen the item was last submitted to the legacy Google Base product feed.
commissionflatmoneystring(6dp)Stored as decimal(19,6).
commissionpercentnumberstring(2dp)Numeric string, 2 decimal places. Not money - do not apply currency rounding.
staticcostmoneystring(5dp)Stored as decimal(19,5).
minpmmoneystring(2dp)Stored as decimal(6,2).
restockdatestringExpected restock date, shown to buyers when the item is out of stock.
customeridintegerReference to customers, by id. Write either this or customer.
customerstring(30)Code for the referenced customer, instead of the id.
commoditycodestring(10)Commodity Code from the item screen, used on customs and freight paperwork.
defaultlinenotetextDefaultlinenote. Stored as text, no practical length limit.
inventorytypestring(1)S = stocked, N = non-stocked, O = other charges. Non-stocked and other-charge items carry no on-hand quantity and cost at static cost.
last3dcartstockupdateread-onlystringWhen the Shift4Shop (3DCart) sync last pushed a stock level for this item. Maintained by the sync, so it cannot be written through the API.
listonebaybooleanTrue marks the item for eBay listing (List On eBay).
lockpricecostbooleanTrue locks price and cost during a sale (Lock Price & Cost During Sale) so line edits cannot change them.
mobile_posbooleanTrue shows the item in the mobile Point of Sale (Show In Mobile POS).
notforsaleinteger1 marks the item Not For Sale - usable internally but blocked from sales documents.
rentalinteger1 when the item is a rental item.
shipheightmoneystring(2dp)Stored as decimal(7,2).
shiplengthmoneystring(2dp)Stored as decimal(7,2).
shippingmarkupmoneystring(6dp)Stored as decimal(19,6).
shipsbyitselfinteger1 when the item ships in its own package rather than being combined (Ships By Itself).
shipwidthmoneystring(2dp)Stored as decimal(7,2).
taxclassidintegerTaxclassid. Id only.
taxclassstring(100)The name of the referenced taxclasses, instead of the id. Send this or taxclassid, not both unless they agree.
accruedpurchasesglidintegerGL account purchases accrue to. Write either this or accruedpurchasesgl.
accruedpurchasesglstring(20)GL account NUMBER (glaccount.name) instead of the id. The sibling of accruedpurchasesglid, matching how salesglacct and inventoryglacct already work on this resource.
allownegqtysalesoverrideinteger1 allows negative-quantity sale lines for this item (Allow Negative Quantity Sales), priced by negativesalesruletype.
buyeruseridintegerBuyeruserid. Id only.
buyeruserstring(50)The name of the referenced genusers, instead of the id. Send this or buyeruserid, not both unless they agree.
expiredaysintegerShelf life in days; sets the default expiration date when lot tracking receives this item.
internalbuynotestextInternalbuynotes. Stored as text, no practical length limit.
internalsellnotestextInternalsellnotes. Stored as text, no practical length limit.
negativesalesruletypestring(1)Pricing rule for negative-quantity sale lines: F = fixed price, R = reduce price by percentage, S = percentage of sale price.
negativesalesrulevaluemoneystring(6dp)Stored as decimal(19,6).
nochargeglaccountidintegerNochargeglaccountid. Id only.
nochargeglaccountstring(20)The name of the referenced glaccounts, instead of the id. Send this or nochargeglaccountid, not both unless they agree.
pickernotestextPickernotes. Stored as text, no practical length limit.
po_blockinteger1 blocks the item from purchase orders (Block Usage On Purchase Orders).
prelimablebooleanTrue when sales of the item count toward preliminary lien notice amounts on prelim-able jobs.
qtyperpalletintegerQuantity per pallet; 0 uses the company default.
rebateglaccountidintegerRebateglaccountid. Id only.
rebateglaccountstring(20)The name of the referenced glaccounts, instead of the id. Send this or rebateglaccountid, not both unless they agree.
rental_dbooleanTrue offers daily rental pricing for the item.
rental_mbooleanTrue offers monthly rental pricing for the item.
rental_wbooleanTrue offers weekly rental pricing for the item.
rentalconverttosalearintegerGL account credited when a rental converts to a sale (Rental Conversion To Sales).
rentalconverttosalecogsintegerGL account debited for cost when a rental converts to a sale (Rental Conversion Cost Of Goods).
returnsglaccountidintegerReturnsglaccountid. Id only.
returnsglaccountstring(20)The name of the referenced glaccounts, instead of the id. Send this or returnsglaccountid, not both unless they agree.
transfershortglaccountidintegerTransfershortglaccountid. Id only.
transfershortglaccountstring(20)The name of the referenced glaccounts, instead of the id. Send this or transfershortglaccountid, not both unless they agree.
unnumberstring(255)UN hazardous-material number, printed as a caution on transfer and shipping paperwork.
itemcodechecksumread-onlyintegerSTORED GENERATED in the database. Read-only - MySQL computes it.
itemcomparisongroupidintegerItemcomparisongroupid. Id only.
itemcomparisongroupstring(255)The name of the referenced itemcomparisongroups, instead of the id. Send this or itemcomparisongroupid, not both unless they agree.
itemidentifierstextItemidentifiers. Stored as text, no practical length limit.
externalidstring(100)Your own key. Scoped to your company.
When it fails
StatusCodeMeaning
400invalid_requestA required field was missing.
403record_limit_reachedThe install is at its licensed item limit.
curl -X POST \
  'https://acme.nolapro.com/!/api/v2/items' \
  -H 'Authorization: Bearer $NP_TOKEN' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: your-unique-key' \
  -d '{
    "accruedpurchasesgl": "4000"
}'
Response 201
{
    "accruedpurchasesgl": "4000"
}
GET/items/{id} 200404

Retrieve one record.

Requires scope items:read.

Parameters
NameInTypeNotes
idrequiredpathinteger
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 item with that id.
curl \
  'https://acme.nolapro.com/!/api/v2/items/104' \
  -H 'Authorization: Bearer $NP_TOKEN'
Response 200
{
    "accruedpurchasesgl": "4000"
}
PATCH/items/{id} 200404

Update.

Requires scope items:write.

Parameters
NameInTypeNotes
idrequiredpathinteger
Body
FieldTypeDescription
idread-onlyintegerNolaPro id.
itemcodestring(255)Item code (SKU) - the human key used across NolaPro.
compositeitemyesnointeger1 when the item is a composite built from component items (bill of materials).
descriptionstring(100)Item description shown on documents and lookups.
categoryidintegerCategoryid. Id only.
stockunitnameidintegerStockunitnameid. Id only.
stockunitnamestring(50)The unitname of the referenced unitnames, instead of the id. Send this or stockunitnameid, not both unless they agree.
priceunitnameidintegerPriceunitnameid. Id only.
priceunitnamestring(50)The unitname of the referenced unitnames, instead of the id. Send this or priceunitnameid, not both unless they agree.
lbsperpriceunitnumberstringNumeric string. Not money - do not apply currency rounding.
priceunitsperstockunitnumberstring(10dp)Numeric string, 10 decimal places. Not money - do not apply currency rounding.
stockunitsperpriceunitnumberstring(6dp)Numeric string, 6 decimal places. Not money - do not apply currency rounding.
inventoryglacctidintegerInventoryglacctid. Id only.
inventoryglacctstring(20)The name of the referenced glaccounts, instead of the id. Send this or inventoryglacctid, not both unless they agree.
salesglacctidintegerSalesglacctid. Id only.
salesglacctstring(20)The name of the referenced glaccounts, instead of the id. Send this or salesglacctid, not both unless they agree.
widthmoneystringStored as double.
lengthmoneystringStored as double.
mwtmoneystringStored as double.
cogsintegerCost of goods sold.
cogseffectivedatestringDate the cost of goods sold figure takes effect.
middlemanpricemoneystringStored as double.
pricemoneystringStored as double.
priceeffectivedatestringDate the price takes effect.
statusbooleanTrue when the item is marked Inactive on the item screens - hidden from lookups, kept for history. Not the same as cancel.
id_item_useinsteadintegerReplacement item to use instead of this one, shown when this item is discontinued.
invtypeintegerItem type: 1 = physical, 2 = print-on-demand (POD - costed at static cost, no stock tracking), 3 = finished goods. 0 on older records.
catalogdescriptiontextCatalogdescription. Stored as text, no practical length limit.
products_websitestring(255)Product webpage URL shown in the web store.
catalogsheeturltextURL of the item’s catalog sheet, shown in the web store.
graphicurltextURL or filename of the item’s picture.
pdffiletextPDF file attached to the item for the web store.
videofiletextVideo file attached to the item for the web store.
soundfiletextSound file attached to the item for the web store.
cancelbooleanCancelled. NolaPro cancels rather than deletes, so a cancelled row is still readable.
entrydateread-onlystringWhen the record was created.
lastchangedateread-onlystringLast modification. Drives modifiedsince.
products_quantityread-onlyintegerQuantity mirror maintained in the osCommerce-style web store tables. Maintained by the cart sync, so it cannot be written through the API.
products_viewedread-onlyintegerView counter maintained by the web store. Cannot be written through the API.
products_statusbooleanWeb store visibility flag from the osCommerce-style product tables.
products_tax_class_idread-onlyintegerLegacy osCommerce column. The products_tax_class table does not exist in NolaPro and every row holds 0, so this can never resolve to anything. Read-only, and kept only because the column is still on the table.
products_costpricemoneystring(2dp)Stored as decimal(8,2).
products_pushupmoneystring(2dp)Stored as decimal(4,2).
scartinteger1 shows the item in the B2B shopping cart.
parentitemidintegerParentitemid. Id only.
scart_minqtydisplayintegerMinimum on-hand quantity before the cart shows availability; the Shopify sync maps it to the no-back-orders flag.
taxexemptbooleanTrue when the item is never taxed, regardless of the customer’s tax setup.
calipermoneystring(4dp)Stored as decimal(10,4).
upcstring(255)Universal Product Code.
authortextAuthor, for book and media items in the web store.
notestextNotes. Stored as text, no practical length limit.
b2b_blockbooleanTrue blocks the item from B2B orders (Block Usage On B2B Orders).
pos_blockbooleanTrue hides the item from Point of Sale.
gbaseidread-onlystring(100)Submission id from the legacy Google Base product feed.
gbasedateread-onlystringWhen the item was last submitted to the legacy Google Base product feed.
commissionflatmoneystring(6dp)Stored as decimal(19,6).
commissionpercentnumberstring(2dp)Numeric string, 2 decimal places. Not money - do not apply currency rounding.
staticcostmoneystring(5dp)Stored as decimal(19,5).
minpmmoneystring(2dp)Stored as decimal(6,2).
restockdatestringExpected restock date, shown to buyers when the item is out of stock.
customeridintegerReference to customers, by id. Write either this or customer.
customerstring(30)Code for the referenced customer, instead of the id.
commoditycodestring(10)Commodity Code from the item screen, used on customs and freight paperwork.
defaultlinenotetextDefaultlinenote. Stored as text, no practical length limit.
inventorytypestring(1)S = stocked, N = non-stocked, O = other charges. Non-stocked and other-charge items carry no on-hand quantity and cost at static cost.
last3dcartstockupdateread-onlystringWhen the Shift4Shop (3DCart) sync last pushed a stock level for this item. Maintained by the sync, so it cannot be written through the API.
listonebaybooleanTrue marks the item for eBay listing (List On eBay).
lockpricecostbooleanTrue locks price and cost during a sale (Lock Price & Cost During Sale) so line edits cannot change them.
mobile_posbooleanTrue shows the item in the mobile Point of Sale (Show In Mobile POS).
notforsaleinteger1 marks the item Not For Sale - usable internally but blocked from sales documents.
rentalinteger1 when the item is a rental item.
shipheightmoneystring(2dp)Stored as decimal(7,2).
shiplengthmoneystring(2dp)Stored as decimal(7,2).
shippingmarkupmoneystring(6dp)Stored as decimal(19,6).
shipsbyitselfinteger1 when the item ships in its own package rather than being combined (Ships By Itself).
shipwidthmoneystring(2dp)Stored as decimal(7,2).
taxclassidintegerTaxclassid. Id only.
taxclassstring(100)The name of the referenced taxclasses, instead of the id. Send this or taxclassid, not both unless they agree.
accruedpurchasesglidintegerGL account purchases accrue to. Write either this or accruedpurchasesgl.
accruedpurchasesglstring(20)GL account NUMBER (glaccount.name) instead of the id. The sibling of accruedpurchasesglid, matching how salesglacct and inventoryglacct already work on this resource.
allownegqtysalesoverrideinteger1 allows negative-quantity sale lines for this item (Allow Negative Quantity Sales), priced by negativesalesruletype.
buyeruseridintegerBuyeruserid. Id only.
buyeruserstring(50)The name of the referenced genusers, instead of the id. Send this or buyeruserid, not both unless they agree.
expiredaysintegerShelf life in days; sets the default expiration date when lot tracking receives this item.
internalbuynotestextInternalbuynotes. Stored as text, no practical length limit.
internalsellnotestextInternalsellnotes. Stored as text, no practical length limit.
negativesalesruletypestring(1)Pricing rule for negative-quantity sale lines: F = fixed price, R = reduce price by percentage, S = percentage of sale price.
negativesalesrulevaluemoneystring(6dp)Stored as decimal(19,6).
nochargeglaccountidintegerNochargeglaccountid. Id only.
nochargeglaccountstring(20)The name of the referenced glaccounts, instead of the id. Send this or nochargeglaccountid, not both unless they agree.
pickernotestextPickernotes. Stored as text, no practical length limit.
po_blockinteger1 blocks the item from purchase orders (Block Usage On Purchase Orders).
prelimablebooleanTrue when sales of the item count toward preliminary lien notice amounts on prelim-able jobs.
qtyperpalletintegerQuantity per pallet; 0 uses the company default.
rebateglaccountidintegerRebateglaccountid. Id only.
rebateglaccountstring(20)The name of the referenced glaccounts, instead of the id. Send this or rebateglaccountid, not both unless they agree.
rental_dbooleanTrue offers daily rental pricing for the item.
rental_mbooleanTrue offers monthly rental pricing for the item.
rental_wbooleanTrue offers weekly rental pricing for the item.
rentalconverttosalearintegerGL account credited when a rental converts to a sale (Rental Conversion To Sales).
rentalconverttosalecogsintegerGL account debited for cost when a rental converts to a sale (Rental Conversion Cost Of Goods).
returnsglaccountidintegerReturnsglaccountid. Id only.
returnsglaccountstring(20)The name of the referenced glaccounts, instead of the id. Send this or returnsglaccountid, not both unless they agree.
transfershortglaccountidintegerTransfershortglaccountid. Id only.
transfershortglaccountstring(20)The name of the referenced glaccounts, instead of the id. Send this or transfershortglaccountid, not both unless they agree.
unnumberstring(255)UN hazardous-material number, printed as a caution on transfer and shipping paperwork.
itemcodechecksumread-onlyintegerSTORED GENERATED in the database. Read-only - MySQL computes it.
itemcomparisongroupidintegerItemcomparisongroupid. Id only.
itemcomparisongroupstring(255)The name of the referenced itemcomparisongroups, instead of the id. Send this or itemcomparisongroupid, not both unless they agree.
itemidentifierstextItemidentifiers. Stored as text, no practical length limit.
externalidstring(100)Your own key. Scoped to your company.
When it fails
StatusCodeMeaning
404not_foundNo item with that id.
curl -X PATCH \
  'https://acme.nolapro.com/!/api/v2/items/104' \
  -H 'Authorization: Bearer $NP_TOKEN' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: your-unique-key' \
  -d '{
    "accruedpurchasesgl": "4000"
}'
Response 200
{
    "accruedpurchasesgl": "4000"
}
DELETE/items/{id} 200404

Cancel.

Requires scope items:cancel.

Parameters
NameInTypeNotes
idrequiredpathinteger
When it fails
StatusCodeMeaning
404not_foundNo item with that id.
curl -X DELETE \
  'https://acme.nolapro.com/!/api/v2/items/104' \
  -H 'Authorization: Bearer $NP_TOKEN'
Response 200
{
    "accruedpurchasesgl": "4000"
}
POST/items/batch 207

Create many.

Requires scope items:write.

Parameters
NameInTypeNotes
Body array
FieldTypeDescription
idread-onlyintegerNolaPro id.
itemcodestring(255)Item code (SKU) - the human key used across NolaPro.
compositeitemyesnointeger1 when the item is a composite built from component items (bill of materials).
descriptionstring(100)Item description shown on documents and lookups.
categoryidintegerCategoryid. Id only.
stockunitnameidintegerStockunitnameid. Id only.
stockunitnamestring(50)The unitname of the referenced unitnames, instead of the id. Send this or stockunitnameid, not both unless they agree.
priceunitnameidintegerPriceunitnameid. Id only.
priceunitnamestring(50)The unitname of the referenced unitnames, instead of the id. Send this or priceunitnameid, not both unless they agree.
lbsperpriceunitnumberstringNumeric string. Not money - do not apply currency rounding.
priceunitsperstockunitnumberstring(10dp)Numeric string, 10 decimal places. Not money - do not apply currency rounding.
stockunitsperpriceunitnumberstring(6dp)Numeric string, 6 decimal places. Not money - do not apply currency rounding.
inventoryglacctidintegerInventoryglacctid. Id only.
inventoryglacctstring(20)The name of the referenced glaccounts, instead of the id. Send this or inventoryglacctid, not both unless they agree.
salesglacctidintegerSalesglacctid. Id only.
salesglacctstring(20)The name of the referenced glaccounts, instead of the id. Send this or salesglacctid, not both unless they agree.
widthmoneystringStored as double.
lengthmoneystringStored as double.
mwtmoneystringStored as double.
cogsintegerCost of goods sold.
cogseffectivedatestringDate the cost of goods sold figure takes effect.
middlemanpricemoneystringStored as double.
pricemoneystringStored as double.
priceeffectivedatestringDate the price takes effect.
statusbooleanTrue when the item is marked Inactive on the item screens - hidden from lookups, kept for history. Not the same as cancel.
id_item_useinsteadintegerReplacement item to use instead of this one, shown when this item is discontinued.
invtypeintegerItem type: 1 = physical, 2 = print-on-demand (POD - costed at static cost, no stock tracking), 3 = finished goods. 0 on older records.
catalogdescriptiontextCatalogdescription. Stored as text, no practical length limit.
products_websitestring(255)Product webpage URL shown in the web store.
catalogsheeturltextURL of the item’s catalog sheet, shown in the web store.
graphicurltextURL or filename of the item’s picture.
pdffiletextPDF file attached to the item for the web store.
videofiletextVideo file attached to the item for the web store.
soundfiletextSound file attached to the item for the web store.
cancelbooleanCancelled. NolaPro cancels rather than deletes, so a cancelled row is still readable.
entrydateread-onlystringWhen the record was created.
lastchangedateread-onlystringLast modification. Drives modifiedsince.
products_quantityread-onlyintegerQuantity mirror maintained in the osCommerce-style web store tables. Maintained by the cart sync, so it cannot be written through the API.
products_viewedread-onlyintegerView counter maintained by the web store. Cannot be written through the API.
products_statusbooleanWeb store visibility flag from the osCommerce-style product tables.
products_tax_class_idread-onlyintegerLegacy osCommerce column. The products_tax_class table does not exist in NolaPro and every row holds 0, so this can never resolve to anything. Read-only, and kept only because the column is still on the table.
products_costpricemoneystring(2dp)Stored as decimal(8,2).
products_pushupmoneystring(2dp)Stored as decimal(4,2).
scartinteger1 shows the item in the B2B shopping cart.
parentitemidintegerParentitemid. Id only.
scart_minqtydisplayintegerMinimum on-hand quantity before the cart shows availability; the Shopify sync maps it to the no-back-orders flag.
taxexemptbooleanTrue when the item is never taxed, regardless of the customer’s tax setup.
calipermoneystring(4dp)Stored as decimal(10,4).
upcstring(255)Universal Product Code.
authortextAuthor, for book and media items in the web store.
notestextNotes. Stored as text, no practical length limit.
b2b_blockbooleanTrue blocks the item from B2B orders (Block Usage On B2B Orders).
pos_blockbooleanTrue hides the item from Point of Sale.
gbaseidread-onlystring(100)Submission id from the legacy Google Base product feed.
gbasedateread-onlystringWhen the item was last submitted to the legacy Google Base product feed.
commissionflatmoneystring(6dp)Stored as decimal(19,6).
commissionpercentnumberstring(2dp)Numeric string, 2 decimal places. Not money - do not apply currency rounding.
staticcostmoneystring(5dp)Stored as decimal(19,5).
minpmmoneystring(2dp)Stored as decimal(6,2).
restockdatestringExpected restock date, shown to buyers when the item is out of stock.
customeridintegerReference to customers, by id. Write either this or customer.
customerstring(30)Code for the referenced customer, instead of the id.
commoditycodestring(10)Commodity Code from the item screen, used on customs and freight paperwork.
defaultlinenotetextDefaultlinenote. Stored as text, no practical length limit.
inventorytypestring(1)S = stocked, N = non-stocked, O = other charges. Non-stocked and other-charge items carry no on-hand quantity and cost at static cost.
last3dcartstockupdateread-onlystringWhen the Shift4Shop (3DCart) sync last pushed a stock level for this item. Maintained by the sync, so it cannot be written through the API.
listonebaybooleanTrue marks the item for eBay listing (List On eBay).
lockpricecostbooleanTrue locks price and cost during a sale (Lock Price & Cost During Sale) so line edits cannot change them.
mobile_posbooleanTrue shows the item in the mobile Point of Sale (Show In Mobile POS).
notforsaleinteger1 marks the item Not For Sale - usable internally but blocked from sales documents.
rentalinteger1 when the item is a rental item.
shipheightmoneystring(2dp)Stored as decimal(7,2).
shiplengthmoneystring(2dp)Stored as decimal(7,2).
shippingmarkupmoneystring(6dp)Stored as decimal(19,6).
shipsbyitselfinteger1 when the item ships in its own package rather than being combined (Ships By Itself).
shipwidthmoneystring(2dp)Stored as decimal(7,2).
taxclassidintegerTaxclassid. Id only.
taxclassstring(100)The name of the referenced taxclasses, instead of the id. Send this or taxclassid, not both unless they agree.
accruedpurchasesglidintegerGL account purchases accrue to. Write either this or accruedpurchasesgl.
accruedpurchasesglstring(20)GL account NUMBER (glaccount.name) instead of the id. The sibling of accruedpurchasesglid, matching how salesglacct and inventoryglacct already work on this resource.
allownegqtysalesoverrideinteger1 allows negative-quantity sale lines for this item (Allow Negative Quantity Sales), priced by negativesalesruletype.
buyeruseridintegerBuyeruserid. Id only.
buyeruserstring(50)The name of the referenced genusers, instead of the id. Send this or buyeruserid, not both unless they agree.
expiredaysintegerShelf life in days; sets the default expiration date when lot tracking receives this item.
internalbuynotestextInternalbuynotes. Stored as text, no practical length limit.
internalsellnotestextInternalsellnotes. Stored as text, no practical length limit.
negativesalesruletypestring(1)Pricing rule for negative-quantity sale lines: F = fixed price, R = reduce price by percentage, S = percentage of sale price.
negativesalesrulevaluemoneystring(6dp)Stored as decimal(19,6).
nochargeglaccountidintegerNochargeglaccountid. Id only.
nochargeglaccountstring(20)The name of the referenced glaccounts, instead of the id. Send this or nochargeglaccountid, not both unless they agree.
pickernotestextPickernotes. Stored as text, no practical length limit.
po_blockinteger1 blocks the item from purchase orders (Block Usage On Purchase Orders).
prelimablebooleanTrue when sales of the item count toward preliminary lien notice amounts on prelim-able jobs.
qtyperpalletintegerQuantity per pallet; 0 uses the company default.
rebateglaccountidintegerRebateglaccountid. Id only.
rebateglaccountstring(20)The name of the referenced glaccounts, instead of the id. Send this or rebateglaccountid, not both unless they agree.
rental_dbooleanTrue offers daily rental pricing for the item.
rental_mbooleanTrue offers monthly rental pricing for the item.
rental_wbooleanTrue offers weekly rental pricing for the item.
rentalconverttosalearintegerGL account credited when a rental converts to a sale (Rental Conversion To Sales).
rentalconverttosalecogsintegerGL account debited for cost when a rental converts to a sale (Rental Conversion Cost Of Goods).
returnsglaccountidintegerReturnsglaccountid. Id only.
returnsglaccountstring(20)The name of the referenced glaccounts, instead of the id. Send this or returnsglaccountid, not both unless they agree.
transfershortglaccountidintegerTransfershortglaccountid. Id only.
transfershortglaccountstring(20)The name of the referenced glaccounts, instead of the id. Send this or transfershortglaccountid, not both unless they agree.
unnumberstring(255)UN hazardous-material number, printed as a caution on transfer and shipping paperwork.
itemcodechecksumread-onlyintegerSTORED GENERATED in the database. Read-only - MySQL computes it.
itemcomparisongroupidintegerItemcomparisongroupid. Id only.
itemcomparisongroupstring(255)The name of the referenced itemcomparisongroups, instead of the id. Send this or itemcomparisongroupid, not both unless they agree.
itemidentifierstextItemidentifiers. Stored as text, no practical length limit.
externalidstring(100)Your own key. Scoped to your company.
curl -X POST \
  'https://acme.nolapro.com/!/api/v2/items/batch' \
  -H 'Authorization: Bearer $NP_TOKEN' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: your-unique-key' \
  -d '[
    {
        "accruedpurchasesgl": "4000"
    }
]'
GET/items/{id}/labels 200

Barcode shelf labels as a PDF

A sheet of scannable shelf labels for the item. This is the label SHEET; GET /items/{id}/barcode returns a single barcode as a PNG instead. 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 items:read.

Parameters
NameInTypeNotes
idrequiredpathinteger
curl \
  'https://acme.nolapro.com/!/api/v2/items/104/labels' \
  -H 'Authorization: Bearer $NP_TOKEN'
GET/items/pricelist 200

Price list as a PDF

The price list across the catalogue. A report over every item, so it takes filters rather than an id. 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 items:read.

Parameters
NameInTypeNotes
inventorylocationidquerystringRestrict to one stocking location.
categoryidquerystringRestrict to one category.
customeridquerystringPrice it as this customer would see it.
pricelevelidquerystringPrice it at this level.
begincodequerystringStart of an item-code range.
endcodequerystringEnd of an item-code range.
showavailablequerystringInclude the available quantity column. true or false.
curl \
  'https://acme.nolapro.com/!/api/v2/items/pricelist' \
  -H 'Authorization: Bearer $NP_TOKEN'