Author:
Kirill Gaiduk
Changed on:
27 Mar 2026


| Entity | Description |
`InventoryPosition`1 | Inventory Position is the core aggregate entity representing the complete inventory state for a specific product (SKU) at a specific inventory node: a warehouse, store, fulfillment centre, or drop-ship supplier. It is the primary unit of inventory tracking in the platform. A single Inventory Position consolidates all the granular stock information for that product-location combination into one addressable record. |
`InventoryQuantity`2 | A single inventory state record within a position, representing a lifecycle state such as on-hand, on-order, in-transit, or reserved. Quantities can nest under a parent quantity to model derived states, for example a reservation against an on-hand or on-order quantity. |
`VirtualPosition`3 | Virtual availability record for a product at a location. Represents the current Available-to-Sell quantity after reservations and buffers, and serves as the point from which future availability segments project forward. |
`VirtualSegment`4 | Time-based availability projection for a virtual position. It creates a logical subdivision within a virtual position, enabling multiple distinct availability records to exist for the same product-location combination |
| Relationship | Type | Description |
| Position to Quantities | One `InventoryPosition` to many `InventoryQuantity` | A single position holds all inventory quantities for a product at a location across the full lifecycle, including on-hand, on-order, in-transit, and reserved. This is the foundation for cross-state aggregation at a product-location level. |
| Quantity to Quantities | One `InventoryQuantity` to many `InventoryQuantity` | A parent quantity can hold child quantities representing derived states. For example, a `RESERVED` quantity sits under an `ON_HAND` or `ON_ORDER` parent to track a commitment against that specific stock. The link is maintained via `InventoryQuantity.parent`. |
| Quantities to Associated Entity | Many `InventoryQuantity` to one associated entity | Links a quantity to an external entity via two fields that work as a pair:
|
| Virtual Position to Segments | One `VirtualPosition` to many `VirtualSegment` | Each segment is anchored to a specific date via `availableOn` and represents the total available-to-promise quantity at that point in time. Together they project availability forward from the position's current available-to-sell quantity. |
| Operation | Description | Common Future Inventory Inputs | Returns | Comment |
`createInventoryQuantity` | Creates an Inventory Quantity record, including future-dated and association-linked quantities |
| `InventoryQuantity` | Use to represent planned arrivals, reservations, and other lifecycle events |
`updateInventoryQuantity` | Updates an existing Inventory Quantity as inventory progresses through its lifecycle |
| `InventoryQuantity` | Use when arrival dates shift, quantities change, or reservations are created/released |
`updateInventoryQuantityChildren` |
|
| List of updated `InventoryQuantity` |
|
`createVirtualPosition` | Creates a Virtual Position and its future availability projections through Virtual Segments |
| `VirtualPosition` (with segments) | Preferred way to create virtual availability together with future segments |
`updateVirtualPosition` | Updates a Virtual Position and its future availability segments |
| `VirtualPosition` (updated segments) | Use to maintain or adjust future availability projections over time |
| Operation | Description | Common Future Inventory Filters | Returns | Comment |
`inventoryPosition.quantitiesAggregate` | Aggregates physical inventory quantities for a specific Inventory Position across lifecycle states and time windows |
| Aggregate totals (quantity summary) | Use to calculate on-hand vs future totals at a product-location level |
`inventoryQuantity.quantities` | Retrieves the direct child quantities for a given parent Inventory Quantity |
| List of child `InventoryQuantity` | Returns one hierarchy level (direct children only). Useful for tracing derived states |
`inventoryQuantity.quantitiesAggregate` | Aggregates the direct child quantities for a given parent Inventory Quantity |
| Aggregate totals (child summary) | Summarizes lifecycle-derived layers such as reservations under an arrival quantity |
`inventoryQuantities` | Searches inventory quantities at a catalog level using filter criteria |
| List of `InventoryQuantity` | Useful for cross-position reporting and reconciliation scenarios |
`inventoryQuantityAggregate` | Aggregates inventory quantities at a position level |
| Aggregate totals | Use when totals are needed with scoping to a single Inventory Position |
`virtualPosition` | Retrieves virtual availability, including future availability evaluation |
| `VirtualPosition` (+ selected segment availability) | Returns availability “as of” a specific date when `availableOn` is provided |
`virtualPositions` | Retrieves virtual availability across multiple positions |
| List of `VirtualPosition` | Use in sourcing and promising flows requiring multi-position evaluation |
`virtualPosition.segments` | Retrieves the Virtual Segment records attached to a specific Virtual Position |
| `VirtualSegmentConnection` | Use when underlying segment records are needed instead of only the resolved quantity returned by `virtualPosition` |

`LAST_ON_HAND` inventory is reduced by reservations already committed against it: VP001 = 100 − 5 − 10 = 85`createInventoryQuantity` mutation`virtualPosition` / `virtualPositions` queries