---
title: "Update a specific item"
method: PUT
path: "/api/items/{itemId}"
tags: ["Item"]
---

# Update a specific item

`PUT /api/items/{itemId}`

## Path parameters

- `itemId` string, required

## Request body

- ItemUpdateDto — Represents an update on an Item.
  - `number` string, nullable — The item number. If omitted, the current number is kept. Renaming enforces number uniqueness (400 on collision) and updates every reference to the item — BOM inputs, usage, purchase orders, and the system lot. Uniqueness is scoped to number + revision: when renaming an item with multiple revisions, rename every revision of the family or the revisions will split under different numbers.
  - `description` string, nullable — Item description.
  - `accountingCodeId` string, nullable — Accounting code key identifier. Please reference /api/accounting-codes endpoint.
  - `accountingCode2Id` string, nullable — Accounting code key identifier. Please reference /api/accounting-codes endpoint.
  - `materialCodeId` string, nullable — Item material code key identifier. Please reference /api/material-codes endpoint.
  - `gradeId` string, nullable — Item grade code key identifier. Please reference /api/grade-codes endpoint.
  - `shapeId` string, nullable — Item shape code key identifier. Please reference /api/shape-codes endpoint.
  - `gaugeId` string, nullable — Item gauge code key identifier. Please reference /api/gauge-codes endpoint.
  - `categoryId` string, nullable — Item category code key identifier. Please reference /api/item-categories endpoint.
  - `width` number, double, nullable — Item width
  - `height` number, double, nullable — Item height
  - `length` number, double, nullable — Item length
  - `weight` number, double, nullable — Item weight
  - `minimumStockOnHand` number, double, nullable — Item minimum stock on hand.
  - `minimumProductionQuantity` number, double, nullable — Item minimum production quantity for a manufacturing run.
  - `internalNotes` string, nullable — Internal item notes.
  - `unitOfMeasureName` string, nullable — The item's stocking unit of measure — the unit every inventory quantity, cost, and transaction on the item is expressed in. If omitted — or sent as null, or as a string that is empty or only whitespace — the current unit of measure is kept; there is no way to clear it. The unit must belong to the item's existing unit type (a Pieces item accepts Piece, Set or Case); the unit type itself cannot be changed after the item is created. Changing the unit is rejected while anything already carries a unit that the change would invalidate — the item being in use by a quote, sales order, purchase order, job, invoice or another item's routing, holding inventory on hand, or having a price break that carries a price (item, vendor, customer, or customer-tier) — because none of those is converted when the unit changes. The 400 names which one blocked the change. Each condition is read as the item stands before the update, so clearing a blocker and changing the unit in one request is still rejected — clear it first, then change the unit in a second request. Sales unit of measure conversions are the exception: they are replaced wholesale by every update, so changing the unit while sending none is accepted, and a request that changes the unit while conversions are present — sent on the update, or carried forward from the item by a patch — is rejected. An item with no unit type recorded cannot have its unit changed at all. Surrounding whitespace is trimmed; the remainder is matched case-sensitively, as on item create.
  - `salesUnitOfMeasureConversions` CommonUnitOfMeasureConversionDto[], nullable — Unit of measure conversions for sellable items.
    - `sourceQuantity` number, double, required — This value signifies the quantity of the item's source unit of measure.
    - `destinationQuantity` number, double, required — This value signifies the quantity of the "destination" unit of measure.
    - `destinationUnitOfMeasureName` string, required — The destination unit of measure.
    - `isCustom` boolean — Indicate if this is a custom (not out-of-the-box) unit of measure.
    - `isDefault` boolean — Indicate if this is the default unit of measure
    - `multiplier` number, double — Indicates the conversion factor used to calculate source to converted units.
  - `isTaxable` boolean, nullable — Whether or not this item is taxable (default)
  - `isLotTracked` boolean, nullable — Whether this item is lot-tracked. If omitted, the current setting is kept.
  - `isNonInventory` boolean, nullable — Whether this item is a non-inventory item — one that supports the business but is never held in inventory. Turning it on is rejected with a 400 unless the item is a buy item that is not sellable; an item that is already non-inventory can restate that value, so a read-modify-write update of a legacy item does not start failing. Setting this also keeps the item's inventoried state in step: a non-inventory item is never inventoried. If omitted, the current setting is kept.
  - `externalReferences` object, nullable — Arbitrary key-value-pair like data that can be used to later on search for this line item.

## Response `200`

Item

- ItemDto — An item
  - `id` string, required — Id
  - `number` string, required — The number to give the item.
  - `description` string, required — The description to give the item.
  - `itemOrigin` 'make' | 'buy' | 'makeOrBuy' | 'customerSupplied' | 'kit' | 'none', required
  - `unitTypeName` string, required — The unit of measure type, ex: Piece, Volume or Weight
  - `unitOfMeasureName` string, required — The unit of measure name. Options available depend on the selected UnitTypeName. For Pieces, you might have a UOM of Piece, Set or Case. For Volume, options include Liter, Milliliter, etc.
  - `revision` ItemRevisionDto — Item revision information.
    - `isLatestRevision` boolean — Indicate if this is the latest revision of an item.
    - `revision` string, nullable — Revision name.
  - `barCodeNumber` string, nullable — The barcode number to give the item.
  - `isSellable` boolean — Define if this item is able to be sold/sellable.
  - `isArchived` boolean — Indicate if this item is archived.
  - `isNonInventory` boolean — Indicate if this item is considered a non-inventory item.
  - `accountingCodeId` string, nullable — Accounting code key identifier. Please reference /api/accounting-codes endpoint.
  - `accountingCode2Id` string, nullable — Accounting code 2 key identifier. Please reference /api/accounting-codes endpoint.
  - `materialCodeId` string, nullable — Item material code key identifier. Please reference /api/material-codes endpoint.
  - `gradeId` string, nullable — Item grade code key identifier. Please reference /api/grade-codes endpoint.
  - `shapeId` string, nullable — Item shape code key identifier. Please reference /api/shape-codes endpoint.
  - `gaugeId` string, nullable — Item gauge code key identifier. Please reference /api/gauge-codes endpoint.
  - `categoryId` string, nullable — Item category code key identifier. Please reference /api/item-categories endpoint.
  - `width` number, double, nullable — Item width
  - `height` number, double, nullable — Item height
  - `length` number, double, nullable — Item length
  - `weight` number, double, nullable — Item weight
  - `materialWeight` number, double, nullable — The weight of material item (calculated)
  - `minimumStockOnHand` number, double, nullable — Item minimum stock on hand.
  - `minimumProductionQuantity` number, double, nullable — Item minimum production quantity for a manufacturing run.
  - `customFields` object, nullable — Custom fields that have been defined on this entity.
  - `tags` TagDto[] — Item tags.
    - `id` string, required — Unique Id associated to the referenced object
    - `name` string, required — Descriptive name associated to the object
    - `style` 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'info' | 'light' | 'dark' | 'connected', required — Style enum (for tags).
    - `description` string, nullable — Descriptive name associated to the object
    - `types` CommonEnumTagTypeEnum[], required — Represents where/how this tag is used.
    - `deleted` boolean, nullable — Indicate if this tag has been deleted.
  - `internalNotes` string, nullable — Internal item notes.
  - `salesUnitOfMeasureConversions` CommonUnitOfMeasureConversionDto[], nullable — Sales unit of measurements
    - `sourceQuantity` number, double, required — This value signifies the quantity of the item's source unit of measure.
    - `destinationQuantity` number, double, required — This value signifies the quantity of the "destination" unit of measure.
    - `destinationUnitOfMeasureName` string, required — The destination unit of measure.
    - `isCustom` boolean — Indicate if this is a custom (not out-of-the-box) unit of measure.
    - `isDefault` boolean — Indicate if this is the default unit of measure
    - `multiplier` number, double — Indicates the conversion factor used to calculate source to converted units.
  - `externalReferences` object, nullable — External references associated with this entity.
  - `isTaxable` boolean, nullable — Whether this item is taxable
  - `buildToOrder` boolean, nullable — Whether or not this item is build to order (jobs are made from sales orders, not overall demand)
  - `buildToStock` boolean, nullable — Whether or not this item is build to stock (jobs are created from overall demand, not sales orders)
  - `isSingleUseItem` boolean, nullable — Indicate if this item is intended for single use.
  - `isLotTracked` boolean, nullable — Indicate if this item is lot-tracked.
  - `shipping` ItemShippingDto — Item Shipping Properties
    - `class` string, nullable — The item shipping class
    - `nmfc` string, nullable — The National Motor Freight Classification
    - `isHazmat` boolean — Whether the item is hazardous to ship
    - `unitWeight` number, double, nullable — The unit weight in lbs.
    - `tariffCode` string, nullable — The item tariff code
    - `countryOfOrigin` string, nullable — The country of origin
  - `createdUtc` string, date-time — The date the item was created
  - `modifiedUtc` string, date-time — The date the item was last modified
  - `customerTiers` ItemCustomerTierDto[] — Customer tiers associated with this item.
    - `customerTier` CustomerTierDto, required — Customer tier definition.
      - `id` string, required — Unique id associated to this entity.
      - `name` string, required — Identifying name. Must be unique.
      - `description` string, nullable — Description
    - `priceBreaks` CommonPriceBreakDto[], required — Price breaks.
      - `quantity` integer, nullable — Indicates at what quantity this price break becomes active.
      - `price` number, double, nullable — The price "per unit" at this price break.
      - `margin` number, double, nullable — Margin
      - `currencyCode` string, nullable — Currency code associated to this price break.
      - `vendorId` string, nullable — Vendor identifier. Please reference /api/vendors endpoint.
      - `customerId` string, nullable — Customer identifier. Please reference /api/customers endpoint.
      - `customerTierId` string, nullable — Customer tier identifier. Please reference /api/customer-tiers endpoint.
      - `unitOfMeasureName` string, nullable — The unit of measurement.
      - `type` 'price' | 'margin' | 'cost' | 'operation' | 'shopRate', required
  - `materialDetails` ItemMaterialDetailsDto — Material Details
    - `materialWidth` number, double, nullable — For Sheets, the Width
    - `materialLength` number, double, nullable — Length. For Sheets, the Height
    - `materialThickness` number, double, nullable — Thickness or Diameter
    - `form` 'sheet' | 'plate' | 'roundBar' | 'flatBar' | 'channel' | 'squareTube' | 'angle' | 'treadPlate' | 'hexBar' | 'squareBar' | 'teeBar' | 'hBeam' | 'rectTube' | 'pipe' | 'wBeam' | 'sBeam' | 'roundTube' | 'rectBar' | 'wideBar' | 'reinforcingBar' | 'halfRoundBar' | 'halfOvalBar'
    - `unit` 'inch' | 'foot' | 'yard' | 'millimeter' | 'centimeter' | 'meter'
    - `materialId` string, nullable — Ex: SS-SAE-304-Sheet-0.25000
    - `materialName` string, nullable — Ex: Stainless Steel 304 Sheet 1/4"
    - `isRemnant` boolean — True if the item was created as a remnant.
  - `accountingDetails` CommonAccountingDetailsDto, required — An object that contains all accounting details.
    - `classId` string, nullable — Item class identifier. Please reference /api/item-classes endpoint.
    - `incomeAccountId` string, nullable — Income account (chart of accounts) key identifier. Please reference /api/chart-of-accounts endpoint.
    - `assetAccountId` string, nullable — Asset account (chart of accounts) key identifier. Please reference /api/chart-of-accounts endpoint.
    - `expenseAccountId` string, nullable — Expense account (chart of accounts) key identifier. Please reference /api/chart-of-accounts endpoint.
    - `cogsAccountId` string, nullable — COGS account (chart of accounts) key identifier. Please reference /api/chart-of-accounts endpoint.
  - `materialVendorDetails` ItemMaterialVendorDto[], nullable — Includes vendor (purchasing) details for this item. This is specific to material-based items.
    - `id` string, required — Id
    - `vendorId` string, required — Vendor id associated to this entity. Please reference /api/vendors endpoint.
    - `vendorItemNumber` string, nullable — The item number for this vendor.
    - `vendorItemName` string, nullable — The item name for this vendor.
    - `notes` string, nullable — Notes to the vendor.
  - `vendorDetails` ItemVendorDto[], nullable — Includes vendor (purchasing) details for this item.
    - `id` string, required — Id
    - `vendorId` string, required — Vendor id associated to this entity. Please reference /api/vendors endpoint.
    - `vendorItemNumber` string, nullable — The item number for this vendor.
    - `vendorItemName` string, nullable — The item name for this vendor.
    - `price` number, double, nullable — The price of this item for this vendor.
    - `isPrimary` boolean — Signifies if this is the primary vendor for this item.
    - `leadTimeInDays` integer, nullable — Lead time for this vendor.
    - `unitOfMeasureName` string, nullable — The unit of measure name. This can be standard unit measurement names (Piece, Square foot, etc) or a custom measurement name.
    - `unitQuantity` number, double, nullable — The vendor unit quantity for conversions. Ex: a FulcrumProduct.PublicApi.Dto.Item.Vendor.ItemVendorDto.UnitQuantity of 5 would indicate that 5 FulcrumProduct.PublicApi.Dto.Item.Vendor.ItemVendorDto.UnitOfMeasureName of this item for this vendor are equal to FulcrumProduct.PublicApi.Dto.Item.Vendor.ItemVendorDto.InventoryUnitQuantity in the base inventory unit of measure.
    - `inventoryUnitQuantity` number, double, nullable — The inventory unit quantity for conversions. Ex: an FulcrumProduct.PublicApi.Dto.Item.Vendor.ItemVendorDto.InventoryUnitQuantity of 5 would indicate that 5 inventory units (Pieces, Foot, etc) of this item are equal to FulcrumProduct.PublicApi.Dto.Item.Vendor.ItemVendorDto.UnitQuantity units in FulcrumProduct.PublicApi.Dto.Item.Vendor.ItemVendorDto.UnitOfMeasureName for this vendor.
    - `priceBreaks` CommonPriceBreakDto[], required — Price breaks.
      - `quantity` integer, nullable — Indicates at what quantity this price break becomes active.
      - `price` number, double, nullable — The price "per unit" at this price break.
      - `margin` number, double, nullable — Margin
      - `currencyCode` string, nullable — Currency code associated to this price break.
      - `vendorId` string, nullable — Vendor identifier. Please reference /api/vendors endpoint.
      - `customerId` string, nullable — Customer identifier. Please reference /api/customers endpoint.
      - `customerTierId` string, nullable — Customer tier identifier. Please reference /api/customer-tiers endpoint.
      - `unitOfMeasureName` string, nullable — The unit of measurement.
      - `type` 'price' | 'margin' | 'cost' | 'operation' | 'shopRate', required
    - `notes` string, nullable — Notes on this association.
  - `customerDetails` ItemCustomerDto[], nullable — Includes customer (selling) details for this item.
    - `id` string, required — The id of the item-customer association. Use this value for update and delete operations.
    - `customerId` string, required — Customer id associated to this entity. Please reference /api/customers endpoint.
    - `customerItemNumber` string, nullable — The item number for this customer.
    - `customerItemName` string, nullable — The item name for this customer.
    - `unitOfMeasureName` string, nullable — The unit of measure name. This can be standard unit measurement names (Piece, Square foot, etc) or a custom measurement name.
    - `priceBreaks` CommonPriceBreakDto[], required — Price breaks.
      - `quantity` integer, nullable — Indicates at what quantity this price break becomes active.
      - `price` number, double, nullable — The price "per unit" at this price break.
      - `margin` number, double, nullable — Margin
      - `currencyCode` string, nullable — Currency code associated to this price break.
      - `vendorId` string, nullable — Vendor identifier. Please reference /api/vendors endpoint.
      - `customerId` string, nullable — Customer identifier. Please reference /api/customers endpoint.
      - `customerTierId` string, nullable — Customer tier identifier. Please reference /api/customer-tiers endpoint.
      - `unitOfMeasureName` string, nullable — The unit of measurement.
      - `type` 'price' | 'margin' | 'cost' | 'operation' | 'shopRate', required
  - `qualityPlanStatus` 'needsApproval' | 'approved'
  - `needsQualityPlan` boolean — Whether this item requires an approved quality plan. When true, the item has an approved quality plan only if FulcrumProduct.PublicApi.Dto.Item.ItemDto.QualityPlanStatus is Approved; when false, no quality plan approval is required. Read-only: returned on item reads but not settable through the create/update endpoints.

## Other responses

- `404` — Item did not exist

## Changes

- **2026-09-04** `cdbcc3fdfc70` — 12 info
  - added the new optional request property `isLotTracked` (media type: application/json-patch+json)
  - added the new optional request property `isLotTracked` (media type: application/json)
  - added the new optional request property `isLotTracked` (media type: text/json)
  - added the new optional request property `isLotTracked` (media type: application/*+json)
  - …8 more
- **2026-08-14** `c4b2ba5fc270` — 2 info
  - added the optional property `needsQualityPlan` to the response with the `200` status (media type: application/json)
  - added the optional property `needsQualityPlan` to the response with the `200` status (media type: application/problem+json)

[Change history](https://skmtc.dev/fulcrumpro/apis/fulcrum-publicapi/changes/api/items/:itemId/put.md)

---

[API](https://skmtc.dev/fulcrumpro/apis/fulcrum-publicapi.md) · [All operations](https://skmtc.dev/fulcrumpro/apis/fulcrum-publicapi/llms.txt) · [OpenAPI document](https://skmtc.dev/fulcrumpro/apis/fulcrum-publicapi/revisions/cdbcc3fdfc70?raw)
