Channel API guide
Holds and bookings
Hold
curl -s -X POST "$API/v1/holds" -H "$H" -H "Idempotency-Key: $(uuidgen)" \
-H 'Content-Type: application/json' \
-d '{ "quote_id": "'$QUOTE'", "kind": "checkout" }'
kind |
Use it for | Lasts (contract default) |
|---|---|---|
checkout |
Your customer is paying on your site now | 30 minutes |
option |
An agent's option while the client decides | 72 hours |
The cabins are reserved on every leg until expires_at. If there is no room, the call fails with NOT_AVAILABLE. When an abandoned hold should end early, release it: DELETE /v1/holds/{id}. Expired holds release themselves, and you receive hold.expired.
Confirm
curl -s -X POST "$API/v1/holds/$HOLD/confirm" -H "$H" -H "Idempotency-Key: $(uuidgen)" \
-H 'Content-Type: application/json' \
-d '{
"channel_ref": "NC-50211",
"guests": [
{ "cabin": 0, "first_name": "Emma", "last_name": "Clarke", "lead": true, "nationality": "GB" }
]
}'
channel_refis your booking number. It is unique per channel, for good: confirming again with the samechannel_refreturns the existing booking. That is your safety net after a long outage.- Exactly one guest is the lead.
cabinis the index of the cabin in the quote, from 0. passport_numberanddate_of_birthare accepted, encrypted, and never returned.
The result is the booking, with its reference (for example VS-26-00611) and status:
| Status | Meaning |
|---|---|
confirmed |
Done |
requested |
Your contract is on credit and you are over your limit (reason: "credit_limit"): the company decides |
Read a booking
curl -si "$API/v1/bookings/$REF" -H "$H"
The response has the sailing and its legs, cabins and guest names, totals, payments due and the current revision. The revision is also the ETag header, and you send it when you amend. You can only read your own bookings: another channel's booking is 404.