All notable changes to this project are documented here.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning. From the next release onward, entries below are generated automatically by release-please from Conventional Commits.
0.1.0 (2026-08-29)
Features
- aic: add AirlineInitiatedChanges resource (22c2db0)
- cancellations: add OrderCancellations resource (53b4935)
- cars: add Search, Quotes and Bookings resources (29c2136)
- cars: build a search driver from age and residence (42cb130)
- client: add PUT and per-request host override (187438d)
- client: emit telemetry span for requests (9798978)
- client: encode a map parameter as Duffel's key[sub] filter (cb36b40)
- client: report the rate limit a response carried (2fb240d)
- client: set a receive timeout that fits a flight search (aa771d4)
- credits: add AirlineCredits resource (1ca9c2f)
- flights: add offer request and order param builders (397c375)
- identity: add customer users, groups and component keys (b46afc1)
- offer-requests: accept query options when fetching a request (cf1155b)
- offers: add Offers resource (94617ab)
- offers: add upsells/2 for the upsell offers endpoint (37ae0d4)
- offers: send a body when pricing an offer or order (48027c6)
- order-changes: add order change flow resources (6c1ae8e)
- orders: add Orders resource (e82ff5f)
- page: add has_more?/1 and next_params/2 (4330787)
- payments: add Cards and ThreeDSecureSessions (6a5a834)
- payments: add Payments resource (f154330)
- pricing: add price actions to Offers and Orders (54de889)
- scaffold Duffel API client (6065855)
- schema: add ItineraryView for the itineraries search shape (c40ff09)
- schema: add opt-in typed response structs (e717a5d)
- schema: add the flight fields the API returns but the structs dropped (a69c13d)
- schema: add the stays fields the API returns but the structs dropped (d7a015c)
- schema: add typed schemas for stays and cars (#14) (49c5d2a)
- search: add Partial and Batch offer requests (d0d6211)
- seat-maps: add SeatMaps resource (dc4a5db)
- stays,cars: add search param builders (06c11cd)
- stays: add NegotiatedRates and reference data (f33917f)
- stays: add Quotes and Bookings resources (4b31aae)
- stays: add Search and Accommodation resources (3ba580a)
- stays: build the optional stays search filters (60d5e9b)
- supporting-data: add Airlines, Airports, Aircraft (94c6585)
- supporting-data: add Cities, LoyaltyProgrammes, Places (7ad53ea)
- webhooks: add WebhookEvents and WebhookDeliveries (bb44267)
- webhooks: add Webhooks resource with signature verification (c8fc1cb)
Bug Fixes
- align client with OpenAPI spec (2f6373f)
- client: error when a list response has no data list (e1515e5)
- client: error when a response has no data envelope (67ef2e5)
- client: hide the access token from inspect (4169834)
- client: raise the default receive timeout to 130s (7f1330f)
- client: send array query parameters as repeated keys (0528d60)
- client: send idempotency key on every POST (e8c4b5a)
- client: stop retrying the statuses Duffel says not to retry (bef7ce5)
- client: stop streaming when the cursor stops advancing (27c5b49)
- deps: bump req from 0.5.18 to 0.6.1 (#5) (ff91ceb)
- deps: bump req from 0.6.1 to 0.6.2 (#7) (be8f605)
- deps: bump req from 0.6.2 to 0.7.2 (#13) (2cf420e)
- deps: bump req from 0.7.2 to 0.7.3 (#15) (3f19c77)
- error: fall back to the x-request-id header for the request id (ae725bc)
- error: return a Duffel.Error for transport failures (feba426)
- partial-offer-requests: keep repeated selected_partial_offer[] (41bf1c4)
- schema: let from_map/1 accept an already-decoded struct (2d70300)
- stays: require the search area when listing accommodation (d21d297)
0.1.0 - 2026-06-09
Initial release: an Elixir client for the Duffel API v2, built on Req.
Added
- HTTP client with bearer auth, the
Duffel-Versionheader, gzip and automatic retries for rate-limited and transient errors. - Explicit client struct (
Duffel.new/0andDuffel.new/1) so multiple Duffel accounts can be used from one application. - Cursor pagination via
Duffel.Page, with a lazystream/2on each list endpoint. - Structured errors (
Duffel.Error) with the API error type exposed as an atom for pattern matching. - Flights: offer requests (standard, partial and batch), offers, seat maps, orders, payments, order cancellations, order change requests/offers/changes, airline-initiated changes and airline credits.
- Stays: search, accommodation, quotes, bookings, negotiated rates, brands, chains and loyalty programmes.
- Cars: search, quotes and bookings.
- Payments: card tokenisation on the PCI-scoped
api.duffel.cardshost and 3D Secure sessions. - Identity: customer users, customer user groups and component client keys.
- Supporting data: airlines, airports, aircraft, cities, loyalty programmes and place suggestions.
- Webhooks: subscription management, event and delivery inspection, and signature verification with replay protection.