Reference
Objects and Enums
The canonical vocabulary. These shapes are the same whichever distributor the data came from.
Every supplier's own structure is translated into the shapes below before it reaches you — which is the point of the aggregator. Field names here are the names you will see in every response.
Money
An amount in a currency. Amounts are JSON numbers in the currency's major unit: 164.00 is one hundred and sixty-four dollars.
amountnumber required- The value.
currencystring (ISO 4217) required- Three-letter code, e.g.
USD.
Rate
One bookable price for one room. Rates live inside properties[].rooms[].rates[] on
a search response.
rateKeystring optional- Opaque, single-use handle, valid ~30 minutes. The only thing booking needs to identify the rate.
rateCodestring optional- The rate plan’s code.
rateNamestring optional- A human-readable rate name.
boardBoard optional- Meal plan — see the board codes below.
price.netnumber optional- What Gateway Stream pays the supplier. For reconciliation, not display.
price.sellnumber optional- Your price, markup applied. Display this one.
price.currencystring optional- Currency of both figures.
price.bindingboolean optionaltruewhen the supplier guarantees the gross price. A binding rate is never marked down below its quoted gross.nightly{ date, amount }[] optional- Per-night breakdown. May be empty.
taxesAndFees{ name, amount, included, payAtHotel }[] optionalincluded: falsemeans it is on top of the rate;payAtHotel: truemeans the hotel collects it and it is not part ofprice.sell.refundableboolean optional- Whether any cancellation window exists. The detail is in
cancelPolicy. cancelPolicyCancelPolicyEntry[] optional- The cancellation ladder. See below.
paymentType"PREPAID" | "PAY_AT_HOTEL" optional- Who collects the room charge.
remarksstring optional- Free text from the supplier, when there is any.
Room
roomCodestring optional- The room’s code. A property’s room list and its search results use the same codes.
roomNamestring optional- A human-readable room name.
occupancyRefinteger optional- Which entry of the search’s
roomsarray this room answers, counting from 0. ratesRate[] optional- The bookable rates for this room.
Property Result
What a search returns per hotel. (The leaner object on GET /properties is documented there.)
propertyIduuid optional- The Gateway Stream property id.
namestring optional- Hotel name.
starsnumber | null optional- Star rating, when known.
location{ city, country, lat, lng } optional- Each member may be
null. imagestring | null optional- A representative photo URL.
mappedboolean optional- Whether this hotel is matched to a Gateway Stream master record.
fromPriceMoney | null optional- The cheapest rate on the property, for a “from” price in a list.
roomsRoom[] optional- The rooms that returned rates.
CancelPolicyEntry
A cancellation ladder is a list of these, in ascending order of from. Each entry
means: from this moment until check-in, cancelling costs this much. The rung in force
is the last one already passed; if none has passed, or the list is empty, cancellation is free
as far as the recorded policy goes.
fromstring (ISO 8601 with offset) required- When this penalty starts to apply.
amountnumber required- The fee from that moment.
currencystring (ISO 4217) required- Currency of the fee.
Destination
A country or a city, from GET /destinations.
type"country" | "city" optional- What kind of place this is.
labelstring optional- Ready to show:
Harare, Zimbabwe,Springfield, IL, United States. citystring | null optional- The city.
nullon a country. regionstring | null optional- A state or province that tells apart cities with the same name.
countrystring optional- ISO-3166 alpha-2 code — what
destination.countryon search takes. countryNamestring optional- The English name.
Property Detail
What GET /properties/{id} returns: the property fields above, plus the following.
roomsPropertyRoom[] optional- The hotel’s room types, each with its pictures and, for a stay, its rates.
stay{ checkIn, checkOut, nights, adults, childAges } | null optional- The stay the rates are for.
nullwhen none was asked for. fromPriceMoney | null optional- The cheapest rate.
nullwithout a stay, or when nothing is offered. meta.completeboolean optionalfalsewhen a source did not answer, so rooms, pictures or rates may be missing.
PropertyRoom
roomCodestring optional- The room’s code.
roomNamestring | null optional- The room’s name.
imagesstring[] optional- Picture URLs, best first. Empty when there are none.
ratesRate[] optional- The room’s rates for the requested stay. Empty without a stay, or when the room is not offered.
BookedRoom
One entry of rooms on a booking.
roomCodestring | null optional- The room’s code.
roomNamestring | null optional- The room’s name.
guests{ title?, name: { first, last }, age? }[] optional- Who is in the room, as sent at book time.
priceMoney optional- What this room cost.
rateBookedRate | null optional- A Rate as it was sold, without
rateKeyandprice(the key is spent, and the price is on the room).nullon a booking made before rates were kept.
Booking
Returned by POST /bookings and GET /bookings/:id.
mode"sandbox" | "live" optional- Which environment the booking lives in.
bookingIduuid optional- The booking id.
statusBookingStatus optional- See the enum below.
clientReferencestring | null optional- Your own reference, if you sent one.
checkIn / checkOutstring (YYYY-MM-DD) optional- Stay dates.
nightsinteger optional- The length of the stay.
propertyProperty | null optional- The hotel booked.
roomsBookedRoom[] optional- One entry per room: its guests, its price and the rate it was sold at.
priceMoney optional- The booked total.
cancelPolicyCancelPolicyEntry[] optional- The ladder recorded at book time.
hotelConfirmationNumberstring | null optional- The hotel’s own reference, when supplied.
createdAtstring (ISO 8601) optional- When the booking was created.
Board Codes
RO Room only No meals included.BB Bed & breakfast Breakfast included.HB Half board Breakfast and one other meal.FB Full board Three meals a day.AI All inclusive Meals and (usually) drinks.Payment Type
PREPAID— the room charge is settled through Gateway Stream rather than at the hotel.PAY_AT_HOTEL— the guest settles the room charge with the hotel directly.
Booking Status
PENDING Created, nothing attempted yet.PAYMENT_PENDING Waiting on payment capture at your end.PAYMENT_OK Payment recorded; the supplier has not been called yet.SUPPLIER_BOOKING The supplier call is in flight.CONFIRMED The supplier confirmed the reservation.ON_REQUEST The supplier took the request but has not confirmed. Not guaranteed.FAILED The supplier refused. Nothing is reserved.UNKNOWN No definite answer. The reservation may or may not exist — reconcile, never retry.CANCEL_REQUESTED A cancel went out and came back ambiguous. Neither cancelled nor live.CANCELLED Definitely cancelled.Result Completeness
Carried by search, property listing and single-property responses as meta. It says
only whether the answer is whole — never which source was slow, or why.
meta.completeboolean optionaltruewhen every source answered.falsewhen at least one did not answer in time or failed: what came back is real, but some results may be missing.