Sandbox: real offers, real PNRs, no tickets
In the sandbox these endpoints work against real carrier test inventory: a search returns real offers and you can create a real booking with a carrier PNR. Two things are worth knowing before you build against them.
- Sandbox orders are test reservations. Nobody flies on them, and they raise no fee. Cancel what you create; anything left over expires on its own payment time limit.
- Sandbox orders are never ticketed. A paid order comes back
confirmedwith an emptytickets[]and a warning saying why. Readstatusandtickets[], not the HTTP code — that is the check production relies on too.
Servicing
Seat map for an order
The seat map of a booked flight, priced for the travellers on the order.
GET
/v1/orders/{orderID}/seatsRequires X-API-KeyReturns the airline's
SeatAvailability for an existing booking as a canonical SeatMap. Pass segment_id to get the map of one flight of a multi-segment itinerary; the seats it returns carry that segment_id, which POST /v1/orders/{orderID}/seats repeats. ?loyalty= prices status entitlements (complimentary preferred seats) into the map.This is the catalogue the POST buys from. Every seat the airline priced here is remembered for the order, and a seat it did not show cannot be assigned. Features use the same stable vocabulary as the offer-scoped map: aisle, window, extra_legroom, exit_row, bulkhead, blocked, ….When the airline returns no map for the requested segment the answer is 404 seat_map_segment_not_found naming the segments it did return. Tenancy-scoped; 409 on a closed order.Request example
curl --request GET \
--url https://api.norba.io/v1/orders/{orderID}/seats \
--header "X-API-Key: $NORBA_KEY"Response example
Response example
{
"flight_id": "SEG-2",
"airline": "AA",
"aircraft": "777",
"rows": 24,
"seats": [
{
"seat_id": "17A",
"row": 17,
"column": "A",
"cabin": "Economy",
"available": true,
"price": {
"amount": 23,
"currency": "EUR"
},
"features": [
"window",
"extra_legroom"
],
"segment_id": "SEG-2"
}
]
}Path parameters
orderIDstringRequiredCanonical order ID.
Example:
AA001Y1XD7ZA6Query parameters
segment_idstringOne flight of the itinerary. Recommended on anything but a non-stop one-way.
Example:
SEG-2loyaltystringFrequent-flyer accounts,
AA:1234567.Example:
AA:1234567Error codes
404order_not_found, or seat_map_segment_not_found with segments_available.409illegal_transition — a closed order has no seats to choose.501The airline does not support
segment_id/loyalty qualifiers.502The airline could not produce a seat map.