Skip to content

Reservation

aggregate-root inventory


Temporary hold on inventory for a customer, basket, order, or fulfillment flow.

Business Purpose: Protect inventory availability before confirmation, collection, fulfillment, exchange, or release.

Identity

Type Field Description
global reservation-id Reservation ID uniquely identifies the inventory hold across its lifecycle.

Attributes

Attribute Description
reservation-id Reservation ID Stable reservation identifier.
inventory-id Inventory ID Related inventory reference.
order-id Order ID Related order reference when applicable.
quantity Quantity Reserved quantity.
expires-at Expires At Date and time when the reservation expires.

Lifecycle

createdactiveconfirmedreleasedexpired

Invariants

  • stable-reservation-id — Reservation ID must remain stable for the lifetime of the reservation.
  • reservation-has-inventory-reference — Reservation must reference the inventory being held.
  • reservation-expiration-controls-hold — Reservation expiration controls the validity of the inventory hold.

Relationships

Type Target
reserves inventory inventory
references order order
references basket basket

Events

Event Classification Terminal
InventoryReserved created
ReservationConfirmed transitioned
InventoryReleased transitioned
ReservationExpired transitioned

Used by Capabilities

  • inventory-reservation Inventory Reservation

Used by Processes

Used by Applications

  • Inventory Service inventory-service

Semantic Constraints

Constraint Type Rule
reservation-references-inventory association A Reservation must reserve a specific Inventory Item. Reservations wit…
reservation-cannot-confirm-expired lifecycle-gate An expired reservation cannot be confirmed. A new reservation must be …

Note

Aligned with existing reservation object and inventory reservation capability.

Referenced by APIs

Endpoint Method Role Capability
/inventory/reservations POST response inventory-reservation
/inventory/reservations/{id}/confirm POST response inventory-reservation
/inventory/reservations/{id} DELETE response inventory-reservation
/inventory/allocate POST request-body inventory-allocation

← Back to Inventory Domain