Skip to content

Accept waitlist entry

POST
/v1/actions/hospitality.action.accept_waitlist_entry/apply
curl --request POST \
--url https://api.aerandil.com/v1/actions/hospitality.action.accept_waitlist_entry/apply \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "branch": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "params": { "booked_at": "2026-04-15T12:00:00Z", "guarantee": "none", "market_segment": "transient", "nightly_rate": { "amount": "example", "currency": "example" }, "source": "direct_web" }, "return_modified": false, "target": { "id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "object_type": "hospitality.waitlist_entry" } }'

Turn the wait into a booking. Replays the entry’s request through create_reservation itself — not a bypass — so the full availability check, rate restrictions and stay bounds re-run at accept time against the house as it is now. The queue is never trusted: an entry offered this morning refuses this afternoon if the room went. The rate is re-decided here (nightly_rate, falling back to the entry’s indicative quoted_rate; with neither, it refuses) because a rate quoted three weeks ago against a sold-out night is not a price the house still owns. An offered entry’s held room-nights go back in the same transaction just before the create runs, so the room the offer kept is the room it books. On success the entry goes accepted and points at the reservation it became. Refuses an entry already accepted, cancelled, or expired.

Effects: modify hospitality.waitlist_entry; link hospitality.link.waitlist_entry_became_reservation; create hospitality.reservation; create hospitality.reservation_room; create hospitality.reservation_night; link hospitality.link.reservation_for_property; link hospitality.link.reservation_for_guest; link hospitality.link.reservation_uses_rate_plan; link hospitality.link.reservation_for_room_type; link hospitality.link.reservation_has_room; link hospitality.link.reservation_room_for_room_type; link hospitality.link.reservation_room_has_night; link hospitality.link.reservation_night_uses_rate_plan; modify hospitality.availability_day.

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
booked_at
Booking instant (defaults to now)
string format: date-time
guarantee
Guarantee the booking is taken under (defaults to deposit where the house's deposit policy covers the booking, else none)
string
Allowed values: none hold credit_card deposit prepaid corporate_billed voucher
market_segment
Demand segment
string
Allowed values: transient group contract
nightly_rate
Rate for the booking (defaults to the entry's quoted_rate)
object
amount
required
string format: decimal
currency
required
string format: iso-4217
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
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
target
required
object
id
required
string format: uuid
object_type
required
Allowed value: hospitality.waitlist_entry

Action applied. modified_objects and modified_links populated when return_modified: true was supplied.

Media typeapplication/json
ApplyActionResponse

Envelope returned by the Aerandil action engine. correlation_id ties every event emitted by this invocation; modified_objects and modified_links project the events the handler emitted (per the action’s declared effects); warnings carries any non-blocking soft-validator observations.

object
correlation_id
required

Per-invocation correlation id; matches events.correlation_id for every event this action appended.

string format: uuid
modified_links
required

Links established or removed by this invocation. Empty when the caller did not request return_modified.

Array<object>
object
from_id
required
string format: uuid
from_type
required
string
kind
required
Allowed values: linked
link_type
required
Allowed values: hospitality.link.waitlist_entry_became_reservation hospitality.link.reservation_for_property hospitality.link.reservation_for_guest hospitality.link.reservation_uses_rate_plan hospitality.link.reservation_for_room_type hospitality.link.reservation_has_room hospitality.link.reservation_room_for_room_type hospitality.link.reservation_room_has_night hospitality.link.reservation_night_uses_rate_plan
to_id
required
string format: uuid
to_type
required
string
modified_objects
required

Objects created, modified, or soft-deleted by this invocation. Empty when the caller did not request return_modified.

Array<object>
object
id
required
string format: uuid
kind
required
Allowed values: modified created
object_type
required
Allowed values: hospitality.waitlist_entry hospitality.reservation hospitality.reservation_room hospitality.reservation_night hospitality.availability_day
warnings

Non-blocking soft-validator observations emitted during this invocation (e.g. comp-authority over-limit, recipe pour-cost over sell-price). Absent when no warnings were emitted.

Array<object>
object
message
required

Human-readable summary, suitable for logging or operator-UI surfacing.

string
object_type
required

Object type the warning was raised against.

string
property

Property the warning anchors to, when a single field is the locus. Absent for multi-field rules.

string
rule
required

Stable kebab-case rule identifier (e.g. comp-authority-over-limit).

string
Example
{
"modified_links": [
{
"kind": "linked",
"link_type": "hospitality.link.waitlist_entry_became_reservation"
}
],
"modified_objects": [
{
"kind": "modified",
"object_type": "hospitality.waitlist_entry"
}
]
}

Conflict — concurrent modification or unique constraint violation.

Validation error — parameter validation or business-rule violation.