Travel.Flights.Offers (travel v0.2.0)

Copy Markdown View Source

Get, list, update, and price flight offers.

Endpoints

  • GET /air/offers/{id} - Get an offer
  • GET /air/offers - List offers for an offer request
  • PATCH /air/offers/{id}/passengers/{passenger_id} - Update offer passenger
  • POST /air/offers/{id}/actions/price - Price an offer

Examples

# List offers for an offer request
{:ok, response} = Travel.Flights.Offers.list("orq_123")

# Get a specific offer
{:ok, response} = Travel.Flights.Offers.get("off_123")

# Price an offer
{:ok, response} = Travel.Flights.Offers.get_priced("off_123", %{
  intended_payment_methods: [%{type: "balance"}],
  intended_services: []
})

@link https://duffel.com/docs/api/offers

Summary

Functions

Get an offer by ID.

Price an offer with intended payment methods and services.

List offers for an offer request.

Stream all offers with automatic pagination.

Update passenger details on an offer.

Functions

get(offer_id, opts \\ nil)

@spec get(String.t(), map() | nil) ::
  {:ok, Travel.Types.DuffelResponse.t()} | {:error, Travel.Error.t() | term()}

Get an offer by ID.

Parameters

  • offer_id - The offer ID
  • opts - Optional query parameters (return_available_services)

Returns

  • {:ok, %Travel.Types.DuffelResponse{data: %Types.Offer{}}} on success
  • {:error, %Travel.Error{}} on failure

get_priced(offer_id, params)

@spec get_priced(String.t(), map()) ::
  {:ok, Travel.Types.DuffelResponse.t()} | {:error, Travel.Error.t() | term()}

Price an offer with intended payment methods and services.

Parameters

  • offer_id - The offer ID
  • params - Pricing parameters:
    • :intended_payment_methods - List of payment method objects
    • :intended_services - List of service objects

Returns

  • {:ok, %Travel.Types.DuffelResponse{data: %Types.OfferPriced{}}} on success
  • {:error, %Travel.Error{}} on failure

list(offer_request_id, opts \\ nil)

@spec list(String.t(), map() | nil) ::
  {:ok, Travel.Types.DuffelResponse.t()} | {:error, Travel.Error.t() | term()}

List offers for an offer request.

Parameters

  • offer_request_id - The offer request ID
  • opts - Optional parameters (limit, before, after, max_connections, sort)

Returns

  • {:ok, %Travel.Types.DuffelResponse{data: [%Types.Offer{}]}} on success
  • {:error, %Travel.Error{}} on failure

stream(offer_request_id, opts \\ nil)

@spec stream(String.t(), map() | nil) :: Enumerable.t()

Stream all offers with automatic pagination.

Returns

A Stream that yields %Travel.Types.DuffelResponse{} for each page.

update(offer_id, passenger_id, params)

@spec update(String.t(), String.t(), map()) ::
  {:ok, Travel.Types.DuffelResponse.t()} | {:error, Travel.Error.t() | term()}

Update passenger details on an offer.

Parameters

  • offer_id - The offer ID
  • passenger_id - The passenger ID
  • params - Update parameters (given_name, family_name, loyalty_programme_accounts)

Returns

  • {:ok, %Travel.Types.DuffelResponse{data: %Types.Offer{}}} on success
  • {:error, %Travel.Error{}} on failure