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 confirmed with an empty tickets[] and a warning saying why. Read status and tickets[], 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-Key
Returns 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"
    }
  ]
}

Authorization

X-API-KeystringRequired
Opaque API key issued from the Norba dashboard. Sent on every request as the X-API-Key HTTP header. Missing or invalid keys are rejected with 401 Unauthorized.

Path parameters

orderIDstringRequired
Canonical order ID.
Example: AA001Y1XD7ZA6

Query parameters

segment_idstring
One flight of the itinerary. Recommended on anything but a non-stop one-way.
Example: SEG-2
loyaltystring
Frequent-flyer accounts, AA:1234567.
Example: AA:1234567

Error codes

404
order_not_found, or seat_map_segment_not_found with segments_available.
409
illegal_transition — a closed order has no seats to choose.
501
The airline does not support segment_id/loyalty qualifiers.
502
The airline could not produce a seat map.
GET /v1/orders/{orderID}/seats — Seat map for an order