What-if Recommend sell limit (rollup delta)
const url = 'https://api.aerandil.com/v1/actions/hospitality.action.recommend_sell_limit/whatif';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"branch":"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0","params":{"cadence":"nightly","confidence":"low","confidence_score":"example","end_date":"2026-04-15","expected_walks":"example","expires_at":"2026-04-15T12:00:00Z","expires_on":"2026-04-15","factors_considered":["pickup_pace"],"forecast_snapshot":{},"marginal_rate":{"amount":"example","currency":"example"},"oversell_limit":1,"rationale_text":"example","reset":true,"room_type_id":"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0","rooms_on_books":1,"run_id":"example","show_rate":"example","start_date":"2026-04-15","target_horizon_days":1,"walk_cost":{"amount":"example","currency":"example"}},"return_modified":false,"target":{"id":"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0","object_type":"hospitality.property"}}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api.aerandil.com/v1/actions/hospitality.action.recommend_sell_limit/whatif \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "branch": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "params": { "cadence": "nightly", "confidence": "low", "confidence_score": "example", "end_date": "2026-04-15", "expected_walks": "example", "expires_at": "2026-04-15T12:00:00Z", "expires_on": "2026-04-15", "factors_considered": [ "pickup_pace" ], "forecast_snapshot": {}, "marginal_rate": { "amount": "example", "currency": "example" }, "oversell_limit": 1, "rationale_text": "example", "reset": true, "room_type_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "rooms_on_books": 1, "run_id": "example", "show_rate": "example", "start_date": "2026-04-15", "target_horizon_days": 1, "walk_cost": { "amount": "example", "currency": "example" } }, "return_modified": false, "target": { "id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "object_type": "hospitality.property" } }'What-if projection of apply_hospitality_action_recommend_sell_limit — previews the action (execute-and-roll-back) and folds its would-be events into rollup deltas, returning the contribution an apply would make to the daily_rooms fact (ADR / RevPAR / TRevPAR / Occupancy inputs) without persisting anything. Requires the same actions:hospitality.action.recommend_sell_limit:apply scope as apply. An action that emits no rooms-fact events yields an empty daily_rooms.
Authorizations
Section titled “Authorizations”Request Bodyrequired
Section titled “Request Bodyrequired”object
Apply against an open branch’s overlay view instead of the canonical (main) plane. The action’s writes land in the branch’s copy-on-first-write overlay, its events in the branch’s own stream, and the invocation is journaled for merge-by-replay. Branch writes are action-only, so this is the write-side entry point to a branch (POST /v1/branches forks one).
object
Guests expected to be walked on the first night at the limit
object
The nightly rate one more sale on the first night would earn
object
Recommended oversell headroom over the sellable rooms (rooms, at least 0); exclusive with reset
Recommend returning to the operator’s declared limit; exclusive with oversell_limit (defaults to false)
The room type whose availability ledger the limit would move
Rooms of the type on the books for the first night, at issue time
Share of the rooms on the books believed to arrive (0..=1)
What walking one arriving guest is believed to cost, past the night’s own revenue
object
When true, the response carries modified_objects and modified_links projections — the engine reads the event log inside the same transaction so the projection observes the handler’s own writes.
object
Responses
Section titled “Responses”Rollup deltas the action would contribute, computed and rolled back.
object
Per (property, business_date) additive contribution to the rooms rollup.
object
ISO 4217, when the fold observed one.
Decimal, net rooms revenue delta.
Decimal, net total revenue delta.
Examplegenerated
{ "daily_rooms": [ { "business_date": "2026-04-15", "currency": "example", "property_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "rooms_revenue_net_delta": "example", "rooms_sold_delta": 1, "total_revenue_net_delta": "example" } ]}Headers
Section titled “Headers”Always no-store — derived, uncommitted data.
Validation error — the apply would be rejected.