Cart Holds
Temporary inventory holds ("Hold without pay") — place, confirm, release.
📄️ My inventory-hold usage
The signed-in agent's hold quota across all their carts: `holdUsage.active` (live holds right now) of `holdUsage.max` (their configured cap). The cap comes from the agent's `agent_hold_cap` entry; an agent with no entry has a `max` of 0 and cannot place holds until an admin configures their limit. The same block is also embedded on every cart response.
📄️ Place a temporary inventory hold on the cart
Locks the cart's selected rooms for the stay nights without payment, auto-releasing at the daily cutoff if not confirmed. Rejects when the cart is already held, the agent is at their active-hold limit, the cart has no selected rooms, or the units are no longer available. The response carries `hold` (status + `expiresAt` + locked units) and `holdUsage` (`active` of `max`).
📄️ Release the cart's inventory hold
Frees the held units immediately.
📄️ Confirm the cart's inventory hold
Marks the hold confirmed (e.g. payment received) so it stops auto-releasing. Booking creation from a confirmed hold is a separate step.