Create, retrieve, list, and manage flight orders.
Endpoints
POST /air/orders- Create an orderGET /air/orders/{id}- Get an orderGET /air/orders- List ordersPATCH /air/orders/{id}- Update an orderGET /air/orders/{id}/available_services- Get available servicesPOST /air/orders/{id}/services- Add services to an order
Examples
# Create an order
{:ok, response} = Travel.Flights.Orders.create(%{
selected_offers: ["off_123"],
passengers: [%{
given_name: "John",
family_name: "Smith",
born_on: "1990-01-01",
gender: "m",
title: "mr",
email: "john@example.com",
phone_number: "+442080160509"
}],
type: "instant"
})
# Get an order
{:ok, response} = Travel.Flights.Orders.get("ord_123")
# Update order metadata
{:ok, response} = Travel.Flights.Orders.update("ord_123", %{
metadata: %{"payment_intent_id" => "pit_123"}
})
Summary
Functions
Add services to an order.
Create an order from an offer.
Get an order by ID.
Get available services for an order.
List orders with optional filtering and pagination.
Stream all orders with automatic pagination.
Update an order's metadata.
Functions
@spec add_services(String.t(), map()) :: {:ok, Travel.Types.DuffelResponse.t()} | {:error, Travel.Error.t() | term()}
Add services to an order.
Parameters
order_id- The order IDparams- Service parameters::payment- Payment details:add_services- List of services to add (withidandquantity)
Returns
{:ok, %Travel.Types.DuffelResponse{data: %Types.Order{}}}on success{:error, %Travel.Error{}}on failure
@spec create(map()) :: {:ok, Travel.Types.DuffelResponse.t()} | {:error, Travel.Error.t() | term()}
Create an order from an offer.
Parameters
params- Order parameters::selected_offers- (required) List of selected offer IDs (e.g.,["off_123"]):passengers- (required) List of passenger details:type- (required)"instant"or"pay_later":services- (optional) Additional services to add:payments- (optional) Payment details for pay-later orders:metadata- (optional) Custom metadata:users- (optional) User IDs for order management
Returns
{:ok, %Travel.Types.DuffelResponse{data: %Types.Order{}}}on success{:error, %Travel.Error{}}on failure
@spec get(String.t()) :: {:ok, Travel.Types.DuffelResponse.t()} | {:error, Travel.Error.t() | term()}
Get an order by ID.
Parameters
order_id- The order ID
Returns
{:ok, %Travel.Types.DuffelResponse{data: %Types.Order{}}}on success{:error, %Travel.Error{}}on failure
@spec get_available_services(String.t()) :: {:ok, Travel.Types.DuffelResponse.t()} | {:error, Travel.Error.t() | term()}
Get available services for an order.
Parameters
order_id- The order ID
Returns
{:ok, %Travel.Types.DuffelResponse{data: [%Types.OfferAvailableService{}]}}on success{:error, %Travel.Error{}}on failure
@spec list(map() | nil) :: {:ok, Travel.Types.DuffelResponse.t()} | {:error, Travel.Error.t() | term()}
List orders with optional filtering and pagination.
Parameters
opts- Optional parameters::limit- Results per page:before/:after- Pagination cursors:awaiting_payment- Filter by payment state:booking_reference- Filter by booking reference:passenger_name- Filter by passenger name:user_id- Filter by user ID
Returns
{:ok, %Travel.Types.DuffelResponse{data: [%Types.Order{}]}}on success{:error, %Travel.Error{}}on failure
@spec stream(map() | nil) :: Enumerable.t()
Stream all orders with automatic pagination.
Returns
A Stream that yields %Travel.Types.DuffelResponse{} for each page.
@spec update(String.t(), map()) :: {:ok, Travel.Types.DuffelResponse.t()} | {:error, Travel.Error.t() | term()}
Update an order's metadata.
Parameters
order_id- The order IDparams- Update parameters (typicallymetadata)
Returns
{:ok, %Travel.Types.DuffelResponse{data: %Types.Order{}}}on success{:error, %Travel.Error{}}on failure