Skip to content

What-if Record turnaway (rollup delta)

POST
/v1/actions/hospitality.action.record_turnaway/whatif
curl --request POST \
--url https://api.aerandil.com/v1/actions/hospitality.action.record_turnaway/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", "external_ref": "example", "guest_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "market_segment": "transient", "min_stay_in_force": 1, "nights": 1, "notes": "example", "property_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "quoted_rate": { "amount": "example", "currency": "example" }, "rate_plan_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "reason": "sold_out", "requested_at": "2026-04-15T12:00:00Z", "room_type_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "source": "direct_web", "visitor_id": "example" }, "return_modified": false }'

What-if projection of apply_hospitality_action_record_turnaway — 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.record_turnaway: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 asked for
integer
arrival_date
required
The arrival night asked for
string format: date
external_ref
Replay key from the recording source
string
guest_id
Who asked, when known
string format: uuid
market_segment
Market segment of the demand, when the desk could tell
string
Allowed values: transient group contract
min_stay_in_force
The minimum stay posted for the arrival at the time
integer
nights
required
Nights asked for
integer
notes
What the desk noted
string
property_id
required
The house that refused the request
string format: uuid
quoted_rate
Rate quoted
object
amount
required
string format: decimal
currency
required
string format: iso-4217
rate_plan_id
The plan the guest was quoted on, when a rate was offered
string format: uuid
reason
required
Why the request was refused
string
Allowed values: sold_out min_stay closed rate other
requested_at
When the guest asked (defaults to now; must not be in the future)
string format: date-time
room_type_id
Room type asked for, when one was
string format: uuid
source
Channel the request arrived through, when known
string
Allowed values: direct_web direct_call property_direct ota gds wholesale corporate walk_in group_block agent loyalty
visitor_id
The booking engine's key for the browser that asked, 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.