Skip to content

Validate Apply channel reservation (dry-run)

POST
/v1/actions/hospitality.action.apply_channel_reservation/validate
curl --request POST \
--url https://api.aerandil.com/v1/actions/hospitality.action.apply_channel_reservation/validate \
--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, "target": { "id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "object_type": "hospitality.channel_reservation_delivery" } }'

Dry-run of apply_hospitality_action_apply_channel_reservation’s parameter checks. No side effects, no idempotency reservation, no handler dispatch — just the schema pass plus action-level shape (target presence, target type, unknown-parameter rejection). return_modified is meaningless here and ignored.

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
target
required
object
id
required
string format: uuid
object_type
required
Allowed value: hospitality.channel_reservation_delivery

Validation outcome. result is valid or invalid; per-parameter diagnostics are always populated for every declared parameter so a UI can render the action’s full surface.

Media typeapplication/json
object
action
required
string
errors

Action-level errors not tied to a single parameter (missing target, target type mismatch, unknown parameter names). Absent when empty.

Array<string>
parameters
required

Per-parameter diagnostics keyed by api_name.

object
key
additional properties
object
errors
Array<string>
result
required
Allowed values: valid invalid
value
required

The serialised value the server interpreted, or null if the parameter was not supplied.

result
required
Allowed values: valid invalid
Example
{
"parameters": {
"additionalProperty": {
"result": "valid"
}
},
"result": "valid"
}