Products
A catalog product with its base unit, tracking mode and trade codes.
- API name:
products - Domain: Catalog
- Modules: Sales, Stores, Services, Finances, Inventory, Manufacturing, Purchasing, Logistics, Master data
Fields
The API name is what the API, MCP and the CLI use.
| Name | API name | Type | Required | Description |
|---|---|---|---|---|
| ID | id | Record ID | Yes | |
| Name | label | Text I18n | ||
| SKU | sku | Text | The SKU (Stock Keeping Unit) is a unique alphanumeric code defined by the company to identify, classify, and manage a product within its operations. Unlike a UPC or EAN, an SKU is an internal identifier whose format can be customized to meet the business's needs. | |
| GTIN barcode | gtin | GTIN barcode | ||
| Family | productgroupId | Reference | ||
| Material | materialId | Reference | ||
| Density | density | Decimal | Material density of the product base unit. | |
| Density unit | densityunit | Constant | Unit for the density measurement (e.g. g/cm³). | |
| Base unit | baseunit | Constant | Yes | Canonical inventory quantity for the product. All stock, movements, valuations, and audits are recorded in this unit (e.g. units, kg, or m). UOMs do not change this quantity. Instance dimensions are allowed only when the base unit is units. |
| Traceability | tracking | Constant | Yes | Defines how inventory is tracked: by quantity (no individual tracking), by lot/batch number (for perishable or lot-controlled products), or by serial number (for assets or uniquely identified items). |
| Supply mode | supplyMode | Constant | Yes | Default for sales order lines: stock from inventory, make, special order, or drop ship. |
| Procurement | procurement | Constant | Yes | How the article is sourced (buy, make, or both), separate from the sales line supply mode. |
| Discrete quantity | isDiscrete | Boolean | Yes | When enabled, quantities must be whole numbers in the base unit of measure. When disabled, fractional quantities are allowed. |
| Shelf life control | hasShelfLife | Boolean | Yes | Enables shelf life management for the product. Requires recording an expiration or best-before date upon receipt and using lot or serial number tracking. |
| Shelf life (days) | shelfLifeDays | Whole Number | The product's standard shelf life in days. The expiration date is calculated from the receipt date or the manufacturing date, depending on the applicable process. | |
| Weight | weight | Decimal | Physical mass of one base unit of this product (not a quantity conversion factor). | |
| Weight unit | weightunit | Constant | Unit for the product weight measurement (e.g. kg, g, lb). | |
| Dimensions | dimensions | Dimensions | Geometry of each counted physical instance. Optional on units-base products. Forbidden on any other base unit. | |
| Links | links | Link | Links | ||
| Image | image | Image | ||
| Tags | tagIds | Tags | ||
| Description | description | Text Area I18n | ||
| Data | data | Data | ||
| External identifiers | identifiers | External identifier | External identifiers | Remote system keys and optional id types. One value per system and type pair on this record. | |
| Created by | createdBy | User | ||
| Created at | createdAt | Date and Time | Yes | |
| Updated by | updatedBy | User | ||
| Updated at | updatedAt | Date and Time | Yes | |
| Published by | publishedBy | User | ||
| Published at | publishedAt | Date and Time | ||
| Disabled by | disabledBy | User | ||
| Disabled at | disabledAt | Date and Time | ||
| Blocked by | blockedBy | User | ||
| Blocked at | blockedAt | Date and Time | ||
| Archived by | archivedBy | User | ||
| Archived at | archivedAt | Date and Time |
Relations
Owned records (solid line) are deleted with their owner. Grouped records (dashed line) can exist alone.
| Field | Points to | Kind |
|---|---|---|
Family productgroupId | Product families | reference |
Material materialId | Materials | reference |
Tags tagIds | Tags | reference |
Actions
What you can do with a record. Every action also sends the webhook event products.<action>. Reads (find, get, count) work on every table.
| Name | API name | Description | Where |
|---|---|---|---|
| Create | create | Add a new product. | App · API · MCP · CLI |
| Edit | update | Save changes to this product. | App · API · MCP · CLI |
| Disable | disable | Turn this product off for new use. Existing references stay. Enable it again to use it. | App · API · MCP · CLI |
| Enable | undisable | Turn this product back on for new use. | App · API · MCP · CLI |
| Publish | publish | Make this product available for use. | App · API · MCP · CLI |
| Block | block | Stop edits and deletion of this product. It stays visible and can still appear on existing documents. Unblock to edit again. | App · API · CLI |
| Unblock | unblock | Allow edits and deletion of this product again. | App · API · CLI |
| Archive | archive | Retire this product from daily use. It leaves active lists and pickers, and most actions stop. Unarchive to restore it. | App · API · MCP · CLI |
| Restore | unarchive | Return this product to active lists and actions. | App · API · MCP · CLI |
| Delete | delete | Delete this product and the data that belongs with it. This cannot be undone. | App · API · MCP · CLI |
States
How a record moves from state to state. Archive and block can happen in any state.