Skip to content

Items

The Items model represents reference data for materials, finished products, and any inventory piece that needs to be uniquely identified and managed. It is the central entity that kanban cards represent and purchase order lines reference.

Note on terminology: The terms vendor and supplier are used interchangeably in this document, with a slight preference for vendor. In existing code the term supplier is more prevalent.

An Item is reference data scoped to a tenant, representing a material, finished product, or supply that needs to be identified and managed.

PropertyTypeMultiplicityDescription
nameString[1..1]Primary name of the item. Business identifier. Not necessarily unique across items in the same tenant.
descriptionString[0..1]Detailed description of the item.
imageUrlURL[0..1]Link to an image representing the item.
classificationItemClassification[0..1]Category or type classification (type + optional subtype).
useCaseString[0..1]Recommended or intended usage description.
locatorPhysicalLocator[0..1]Default storage or usage location.
internalSKUString[0..1]Company-specific identification code.
minQuantityQuantity[0..1]Minimum stock level or reorder point.
taxableBoolean[0..1]Whether the item is subject to taxes.
primarySupplyItemSupplyReference[0..1]Cached reference to the primary supply source.
secondarySupplyItemSupplyReference[0..1]Cached reference to the secondary (alternate) supply source.
defaultSupplyString[0..1]Name of the default supply source.
defaultSupplyEIdUUID[0..1]Entity identity of the default supply source.
cardSizeCardSize[0..1]Formatting specification for visual kanban cards.
isSupplyBoolean[1..1]Whether the item is a supply (consumable).
isProductBoolean[1..1]Whether the item is a product (saleable).
  • name is required.
  • When either primarySupply or secondarySupply is not null, defaultSupply and defaultSupplyEId must match the name and supplyEId of the non-null value. When both are non-null, they must match one of them.
  • When both primarySupply and secondarySupply are null, defaultSupply and defaultSupplyEId must also be null.

An ItemSupply entity represents a specific way an item can be acquired from a vendor. It is a child record of its parent Item entity — its lifecycle is tied to the parent’s lifecycle.

PropertyTypeMultiplicityDescription
vendorEIdUUID[0..1]Reference to the vendor’s BusinessRole entity. Null indicates an unknown or unspecified vendor.
vendorString[0..1]Name of the vendor. Must be non-null if vendorEId is non-null, and must match the BusinessAffiliate name.
nameString[0..1]Specific name for this supply option. Must be non-null if both vendorEId and vendor are null.
skuString[0..1]Vendor-specific SKU for the item.
orderMethodOrderMethod[0..1]Communication method for placing orders.
urlURL[0..1]Direct link to the item on the vendor’s website.
orderQuantityQuantity[0..1]Standard quantity for ordering. Null is interpreted as 0 eaches.
unitCostMoney[0..1]Cost per unit of measure. Null is interpreted as 0.00 in the contextual currency.
averageLeadTimeDuration[0..1]Expected fulfillment time. Null indicates immediate availability (on-hand).
  • name must be unique within the set of ItemSupply entities for the same parent Item and the same vendor.
  • If vendorEId is not null, it must reference an existing BusinessRole entity with role VENDOR, and vendor must match the associated BusinessAffiliate name.
  • If both vendorEId and vendor are null, name must be non-null.

An ItemSupplyReference is a value object that captures a snapshot or pointer to an ItemSupply. It is used within the Item entity to provide immediate access to supply details without navigating the full supply universe.

PropertyTypeDescription
supplyEIdUUIDUnique ID of the referenced ItemSupply. If non-null, all other properties must match the referenced entity.
vendorEIdUUIDID of the vendor’s BusinessRole.
nameStringName of this supply option.
vendorStringName of the vendor.
skuStringVendor SKU.
orderMethodOrderMethodCommunication method for orders.
urlURLDirect link on vendor’s site.
orderQuantityQuantityStandard order quantity.
unitCostMoneyCost per unit.
averageLeadTimeDurationExpected fulfillment time.

When supplyEId is null, the reference represents an ad hoc supply option not linked to a persistent ItemSupply entity.

A UnitOfMeasure is a value scoped to a specific item. Each item defines its own units of measure.

PropertyTypeDescription
nameStringUnique name for the unit within the item it measures
eachesDoubleHow many individual units this measure represents
isBreakableBooleanWhether the item can be broken into smaller units
forItemReference to ItemThe item this unit measures

A Quantity is a value object representing an amount of an item with an item-specific unit of measure.

PropertyTypeDescription
amountDoubleNumerical value of the quantity
unitString (or UnitOfMeasure ref)Unit of measure (e.g., kg, each, m)

When Quantity appears as a nullable property, its presence requires both a valid amount (defaulting to 0.0) and a valid unit.

ItemFacility captures operational information for an item within a specific facility — the handling, receiving, and shipping units, and the minimum quantity maintained at that facility.

PropertyTypeDescription
itemReference to ItemThe item this record describes
facilityReference to FacilityThe facility this record describes
handlingUnitUnitOfMeasureDefault unit for representing the item in the facility
receivingUnitUnitOfMeasureUnit used when receiving. Defaults to handling unit.
shippingUnitUnitOfMeasureUnit used when shipping. Defaults to handling unit.
minimumQtyQuantityMinimum quantity required of the item in this facility

The method used for procurement and fulfillment:

ValueDescription
UNKNOWNDefault when the method is not specified
PURCHASE_ORDERFormal procurement via a PO
EMAILInformal ordering via email
PHONEInformal ordering via telephone
IN_STOREDirect purchase at a physical location
ONLINEPurchase via a vendor website
RFQRequest for Quote process
PRODUCTIONInternal production or manufacturing
TASKFulfillment via a task or service
THIRD_PARTYSourced from a third-party provider
OTHERAny other unspecified method

A value object providing two-level categorization for an item (type and optional subtype). These will be migrated to full category entities in future versions.

PropertyTypeDescription
typeStringPrimary category type
subTypeStringSecondary category subtype

Item mutations through the Item service accept a qualifier that determines how supply source information is interpreted. The three modes are defined in Item Mutation.

Excluded from this document: SQL table schemas, Kotlin class names, and detailed service method signatures (e.g., ItemService.create, ItemService.update) belong in the Current System section.