Skip to content

What-if Create reservation (rollup delta)

POST
/v1/actions/hospitality.action.create_reservation/whatif
curl --request POST \
--url https://api.aerandil.com/v1/actions/hospitality.action.create_reservation/whatif \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "branch": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "params": { "adults": 1, "arrival_date": "2026-04-15", "booked_at": "2026-04-15T12:00:00Z", "channel_reference": "example", "children": 1, "confirmation_number": "example", "departure_date": "2026-04-15", "deposit_due_at": "2026-04-15T12:00:00Z", "deposit_required_amount": { "amount": "example", "currency": "example" }, "external_ref": "example", "guarantee": "none", "guest_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "hold_expires_at": "2026-04-15T12:00:00Z", "market_segment": "transient", "nightly_rate": { "amount": "example", "currency": "example" }, "property_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "rate_plan_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "room_type_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "rooms": [ { "adults": 1, "children": 1, "nightly_rate": { "amount": "example", "currency": "example" }, "room_type_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0" } ], "session_id": "example", "source": "direct_web", "special_requests": "example", "visitor_id": "example" }, "return_modified": false }'

What-if projection of apply_hospitality_action_create_reservation — 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.create_reservation:apply scope as apply. An action that emits no rooms-fact events yields an empty daily_rooms.

Media typeapplication/json
object
branch

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).

string format: uuid
params
required
object
adults
Adults (single-room shape; required unless `rooms` is passed)
integer
arrival_date
required
Arrival
string format: date
booked_at
Booking instant (defaults to now; must not be in the future or after arrival)
string format: date-time
channel_reference
External channel reference (OTA confirmation / GDS locator)
string
children
Children (single-room shape; required unless `rooms` is passed)
integer
confirmation_number
Source-system confirmation number (connector loads only; defaults to a minted R-…)
string
departure_date
required
Departure
string format: date
deposit_due_at
Explicit deposit due instant (with deposit_required_amount)
string format: date-time
deposit_required_amount
Explicit deposit amount (with deposit_due_at; overrides policy derivation)
object
amount
required
string format: decimal
currency
required
string format: iso-4217
external_ref
Source-system key (connector loads only; makes creation replay-safe)
string
guarantee
Protection posture (default `none`)
string
Allowed values: none hold credit_card deposit prepaid corporate_billed voucher
guest_id
required
Primary guest
string format: uuid
hold_expires_at
When a `hold` guarantee lapses (required with hold, forbidden otherwise)
string format: date-time
market_segment
Demand segment (transient / group / contract)
string
Allowed values: transient group contract
nightly_rate
Nightly rate (omit to price off the grid)
object
amount
required
string format: decimal
currency
required
string format: iso-4217
property_id
required
Property
string format: uuid
rate_plan_id
required
Rate plan
string format: uuid
room_type_id
Room type (single-room shape; required unless `rooms` is passed)
string format: uuid
rooms
Per-room slices for a multi-room booking (one reservation_room each)
Array<object>
object
adults
required
integer
children
required
integer
nightly_rate
object
amount
required
string format: decimal
currency
required
string format: iso-4217
room_type_id
required
string format: uuid
session_id
Shopping session the booking was made in (its first offer's id)
string
source
Booking channel (defaults to direct_web)
string
Allowed values: direct_web direct_call property_direct ota gds wholesale corporate walk_in group_block agent loyalty
special_requests
Special requests (cot, dietary, accessibility, room preferences)
string
visitor_id
The booking engine's key for the browser that booked, when its tag read one
string
return_modified

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.

boolean

Rollup deltas the action would contribute, computed and rolled back.

Media typeapplication/json
object
daily_rooms
required

Per (property, business_date) additive contribution to the rooms rollup.

Array<object>
object
business_date
required
string format: date
currency

ISO 4217, when the fold observed one.

string
property_id
required
string format: uuid
rooms_revenue_net_delta
required

Decimal, net rooms revenue delta.

string
rooms_sold_delta
required
integer format: int64
total_revenue_net_delta
required

Decimal, net total revenue delta.

string
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"
}
]
}
Cache-Control
string
Allowed value: no-store

Always no-store — derived, uncommitted data.

Validation error — the apply would be rejected.