@duffel/api 3.1.0 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/typings.d.ts CHANGED
@@ -326,6 +326,7 @@ declare module '@duffel/api/notifications/Webhooks' {
326
326
  }
327
327
 
328
328
  declare module '@duffel/api/Stays/StaysTypes' {
329
+ import { PaginationMeta } from '@duffel/api/types';
329
330
  export type StaysBedType = 'single' | 'double' | 'queen' | 'king' | 'sofabed';
330
331
  export interface StaysBed {
331
332
  /**
@@ -812,10 +813,7 @@ declare module '@duffel/api/Stays/StaysTypes' {
812
813
  }
813
814
  export type LocationParams = {
814
815
  radius: number;
815
- geographic_coordinates: {
816
- latitude: number;
817
- longitude: number;
818
- };
816
+ geographic_coordinates: GeographicCoordinates;
819
817
  };
820
818
  type LocationSearchParams = {
821
819
  location: LocationParams;
@@ -827,6 +825,11 @@ declare module '@duffel/api/Stays/StaysTypes' {
827
825
  };
828
826
  } & CommonStaysSearchParams;
829
827
  export type StaysSearchParams = LocationSearchParams | AccommodationSearchParams;
828
+ export interface ListAccommodationParams extends PaginationMeta {
829
+ radius?: LocationParams['radius'];
830
+ latitude: GeographicCoordinates['latitude'];
831
+ longitude: GeographicCoordinates['longitude'];
832
+ }
830
833
  export interface StaysSearchResult {
831
834
  id: string;
832
835
  check_in_date: string;
@@ -1617,6 +1620,15 @@ declare module '@duffel/api/booking/AirlineInitiatedChanges/AirlineInitiatedChan
1617
1620
  import { OrderSlice } from '@duffel/api/types';
1618
1621
  export type AirlineInitiatedChangeActionTaken = 'accepted' | 'cancelled' | 'changed';
1619
1622
  export type AirlineInitiatedChangeAvailableAction = 'accept' | 'cancel' | 'change' | 'update';
1623
+ /**
1624
+ * The associated Travel Agent Ticket, if any, for this Airline-Initiated Change.
1625
+ * This value will be present for Airline-Initiated changes that take some time to be processed.
1626
+ */
1627
+ export interface TravelAgentTicket {
1628
+ id: string;
1629
+ external_ticket_id: string;
1630
+ }
1631
+ type EmptyObject = Record<string, unknown>;
1620
1632
  export interface AirlineInitiatedChange {
1621
1633
  /**
1622
1634
  * The action taken in response to this airline-initiated change. Accepted,
@@ -1664,17 +1676,18 @@ declare module '@duffel/api/booking/AirlineInitiatedChanges/AirlineInitiatedChan
1664
1676
  * Change. This value will be present for Airline-Initiated changes that take
1665
1677
  * some time to be processed.
1666
1678
  */
1667
- travel_agent_ticket: any | null;
1679
+ travel_agent_ticket: TravelAgentTicket | EmptyObject | null;
1668
1680
  /**
1669
1681
  * The [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) datetime at which
1670
1682
  * the airline-initiated change was last updated.
1671
1683
  */
1672
1684
  updated_at: string;
1673
1685
  }
1686
+ export {};
1674
1687
  }
1675
1688
 
1676
1689
  declare module '@duffel/api/booking/OfferRequests/OfferRequestsTypes' {
1677
- import { Airline, CabinClass, DuffelPassengerType, Place, PlaceType } from '@duffel/api/types';
1690
+ import { Airline, CabinClass, PassengerType, Place, PlaceType } from '@duffel/api/types';
1678
1691
  import { Offer } from '@duffel/api/booking/Offers/OfferTypes';
1679
1692
  export interface OfferRequestSlice {
1680
1693
  /**
@@ -1735,7 +1748,7 @@ declare module '@duffel/api/booking/OfferRequests/OfferRequestsTypes' {
1735
1748
  * specify their `age` instead of a `type`. A passenger can have only a type
1736
1749
  * or an age, but not both.
1737
1750
  */
1738
- type: Extract<DuffelPassengerType, 'adult'>;
1751
+ type: Extract<PassengerType, 'adult'>;
1739
1752
  }
1740
1753
  export interface CreateOfferRequestNonAdultPassenger extends CreateOfferRequestPassengerCommon {
1741
1754
  /**
@@ -1786,7 +1799,7 @@ declare module '@duffel/api/booking/OfferRequests/OfferRequestsTypes' {
1786
1799
  /**
1787
1800
  * The type of the passenger.
1788
1801
  */
1789
- type?: DuffelPassengerType;
1802
+ type?: PassengerType;
1790
1803
  /**
1791
1804
  * The passenger's family name. Only `space`, `-`, `'`, and letters from the `ASCII`, `Latin-1 Supplement` and `Latin
1792
1805
  * Extended-A` (with the exceptions of `Æ`, `æ`, `IJ`, `ij`, `Œ`, `œ`, `Þ`, , and `ð`) Unicode charts are accepted. All
@@ -1904,6 +1917,10 @@ declare module '@duffel/api/booking/OfferRequests/OfferRequestsTypes' {
1904
1917
  */
1905
1918
  slices: CreateOfferRequestSlice[];
1906
1919
  }
1920
+ export type TimeRangeFilter = {
1921
+ from: string;
1922
+ to: string;
1923
+ };
1907
1924
  export interface CreateOfferRequestSlice {
1908
1925
  /**
1909
1926
  * The 3-letter IATA code for the city or airport where this slice ends
@@ -1923,11 +1940,11 @@ declare module '@duffel/api/booking/OfferRequests/OfferRequestsTypes' {
1923
1940
  /**
1924
1941
  * The inclusive time range for the arrival of the slice
1925
1942
  */
1926
- arrival_time?: string | null;
1943
+ arrival_time: TimeRangeFilter | null;
1927
1944
  /**
1928
1945
  * The inclusive time range for the departure of the slice
1929
1946
  */
1930
- departure_time?: string | null;
1947
+ departure_time: TimeRangeFilter | null;
1931
1948
  }
1932
1949
  export interface CreateOfferRequestQueryParameters {
1933
1950
  /**
@@ -1955,7 +1972,7 @@ declare module '@duffel/api/booking/OfferRequests/OfferRequestsTypes' {
1955
1972
  }
1956
1973
 
1957
1974
  declare module '@duffel/api/booking/Offers/OfferTypes' {
1958
- import { Aircraft, Airline, Airport, CabinClass, CreateOfferRequestPassengerFareType, DuffelPassengerType, FlightsConditions, LoyaltyProgrammeAccount, OfferSliceConditions, PaginationMeta, Place, PlaceType } from '@duffel/api/types';
1975
+ import { Aircraft, Airline, Airport, CabinClass, CreateOfferRequestPassengerFareType, PassengerType, FlightsConditions, LoyaltyProgrammeAccount, OfferSliceConditions, PaginationMeta, Place, PlaceType, Stop } from '@duffel/api/types';
1959
1976
  /**
1960
1977
  * Each offer represents flights you can buy from an airline at a particular price that meet your search criteria.
1961
1978
  * @link https://duffel.com/docs/api/offers/schema
@@ -2217,11 +2234,11 @@ declare module '@duffel/api/booking/Offers/OfferTypes' {
2217
2234
  /**
2218
2235
  * The age of the passenger on the departure_date of the final slice.
2219
2236
  */
2220
- age?: number;
2237
+ age: number | null;
2221
2238
  /**
2222
2239
  * The type of the passenger.
2223
2240
  */
2224
- type?: DuffelPassengerType;
2241
+ type: PassengerType | null;
2225
2242
  /**
2226
2243
  * The passenger's family name. Only `space`, `-`, `'`, and letters from the `ASCII`, `Latin-1 Supplement` and `Latin
2227
2244
  * Extended-A` (with the exceptions of `Æ`, `æ`, `IJ`, `ij`, `Œ`, `œ`, `Þ`, , and `ð`) Unicode charts are accepted. All
@@ -2320,7 +2337,7 @@ declare module '@duffel/api/booking/Offers/OfferTypes' {
2320
2337
  * - `"4"`: premium seating, additional legroom and recline. Situated in business class or higher.
2321
2338
  * - `"5"`: deluxe seating, additional legroom and reclines to lie flat position. Situated in business class or higher.
2322
2339
  */
2323
- ngs_shelf: number;
2340
+ ngs_shelf: number | null;
2324
2341
  }
2325
2342
  export interface OfferSliceSegment {
2326
2343
  /**
@@ -2388,29 +2405,7 @@ declare module '@duffel/api/booking/Offers/OfferTypes' {
2388
2405
  /**
2389
2406
  * Additional segment-specific information about the stops, if any, included in the segment
2390
2407
  */
2391
- stops?: OfferSliceSegmentStop[];
2392
- }
2393
- export interface OfferSliceSegmentStop {
2394
- /**
2395
- * Duffel's unique identifier for the Stop
2396
- */
2397
- id: string;
2398
- /**
2399
- * The airport at which the Stop happens
2400
- */
2401
- airport: Airport;
2402
- /**
2403
- * The ISO 8601 datetime at which the Stop is scheduled to arrive, in the airport's timezone (see destination.timezone)
2404
- */
2405
- arriving_at: string;
2406
- /**
2407
- * The ISO 8601 datetime at which the Stop is scheduled to depart, in the airport's timezone (see origin.timezone)
2408
- */
2409
- departing_at: string;
2410
- /**
2411
- * The duration of the Stop, represented as a ISO 8601 duration
2412
- */
2413
- duration: string;
2408
+ stops: Array<Stop>;
2414
2409
  }
2415
2410
  export type WiFiAmenityCost = 'free' | 'paid' | 'free or paid' | 'n/a';
2416
2411
  export type SeatPitch = 'less' | 'more' | 'standard' | 'n/a';
@@ -2442,64 +2437,65 @@ declare module '@duffel/api/booking/Offers/OfferTypes' {
2442
2437
  /**
2443
2438
  * Data about the cabin that the passenger will be flying in for this segment
2444
2439
  */
2445
- cabin: {
2446
- /**
2447
- * The name of the cabin class
2448
- */
2449
- name: CabinClass;
2440
+ cabin: OfferSliceSegmentPassengerCabin | null;
2441
+ }
2442
+ export interface OfferSliceSegmentPassengerCabin {
2443
+ /**
2444
+ * The name of the cabin class
2445
+ */
2446
+ name: CabinClass;
2447
+ /**
2448
+ * TThe name that the marketing carrier uses to market this cabin class
2449
+ */
2450
+ marketing_name: string;
2451
+ /**
2452
+ * The amenities specific to this cabin class on this plane
2453
+ */
2454
+ amenities: {
2450
2455
  /**
2451
- * TThe name that the marketing carrier uses to market this cabin class
2456
+ * If Wi-Fi is available, information on its cost, availability, etc
2452
2457
  */
2453
- marketing_name: string;
2458
+ wifi: {
2459
+ /**
2460
+ * Whether Wi-Fi is available in this cabin
2461
+ */
2462
+ available: boolean;
2463
+ /**
2464
+ * The cost, if any, to use the Wi-Fi
2465
+ */
2466
+ cost: WiFiAmenityCost;
2467
+ } | null;
2454
2468
  /**
2455
- * The amenities specific to this cabin class on this plane
2469
+ * Information on the standard seat in this cabin class. Exceptions may apply, such as on exit rows.
2456
2470
  */
2457
- amenities: {
2471
+ seat: {
2458
2472
  /**
2459
- * If Wi-Fi is available, information on its cost, availability, etc
2473
+ * The distance from a point on a seat to the seat front/behind it, in inches, or "n/a" if not available
2460
2474
  */
2461
- wifi: {
2462
- /**
2463
- * Whether Wi-Fi is available in this cabin
2464
- */
2465
- available: boolean;
2466
- /**
2467
- * The cost, if any, to use the Wi-Fi
2468
- */
2469
- cost: WiFiAmenityCost;
2470
- } | null;
2475
+ pitch: SeatPitch;
2471
2476
  /**
2472
- * Information on the standard seat in this cabin class. Exceptions may apply, such as on exit rows.
2477
+ * A summary of the seat characteristics for the cabin.
2478
+ * Includes the following:
2479
+ * - `"standard"` - typical seating with regular legroom / recline
2480
+ * - `"extra_legroom"` - typical seating with additional legroom
2481
+ * - `"skycouch"` - a row of seats converted into a couch layout
2482
+ * - `"recliner"` - seating with additional legroom and recline
2483
+ * - `"angle_flat"` - seating with additional legroom and near flat recline
2484
+ * - `"full_flat_pod"` - seating with full flat recline and enclosing privacy screens
2485
+ * - `"private_suite"` - a full suite, typically including a bed and recliner seat
2473
2486
  */
2474
- seat: {
2475
- /**
2476
- * The distance from a point on a seat to the seat front/behind it, in inches, or "n/a" if not available
2477
- */
2478
- pitch: SeatPitch;
2479
- /**
2480
- * A summary of the seat characteristics for the cabin.
2481
- * Includes the following:
2482
- * - `"standard"` - typical seating with regular legroom / recline
2483
- * - `"extra_legroom"` - typical seating with additional legroom
2484
- * - `"skycouch"` - a row of seats converted into a couch layout
2485
- * - `"recliner"` - seating with additional legroom and recline
2486
- * - `"angle_flat"` - seating with additional legroom and near flat recline
2487
- * - `"full_flat_pod"` - seating with full flat recline and enclosing privacy screens
2488
- * - `"private_suite"` - a full suite, typically including a bed and recliner seat
2489
- */
2490
- type: SeatType;
2491
- } | null;
2487
+ type: SeatType;
2488
+ } | null;
2489
+ /**
2490
+ * If power (AC and/or USB) is available, information on what is available
2491
+ */
2492
+ power: {
2492
2493
  /**
2493
- * If power (AC and/or USB) is available, information on what is available
2494
+ * Whether there is power available or not in this cabin
2494
2495
  */
2495
- power: {
2496
- /**
2497
- * Whether there is power available or not in this cabin
2498
- */
2499
- available: boolean;
2500
- } | null;
2501
- };
2502
- } | null;
2496
+ available: boolean;
2497
+ } | null;
2498
+ };
2503
2499
  }
2504
2500
  export type BaggageType = 'carry_on' | 'checked';
2505
2501
  export interface OfferSliceSegmentPassengerBaggage {
@@ -2562,6 +2558,36 @@ declare module '@duffel/api/booking/OrderCancellations/OrderCancellationsTypes'
2562
2558
  */
2563
2559
  order_id?: string;
2564
2560
  }
2561
+ export interface OrderCancellationAirlineCredit {
2562
+ /**
2563
+ * Duffel's unique identifier for the airline credit
2564
+ */
2565
+ id: string;
2566
+ /**
2567
+ * The human-readable name used by the airline to categorize the type of credit being offered. This name should help when trying to understand the airline's conditions of use which apply to this credit.
2568
+ */
2569
+ credit_name: string;
2570
+ /**
2571
+ * The code which identifies the airline credit to the airline and will be used to redeem the airline credit
2572
+ */
2573
+ credit_code: string;
2574
+ /**
2575
+ * The monetary value associated with this airline credit
2576
+ */
2577
+ credit_amount: string;
2578
+ /**
2579
+ * The currency in which this airline credit is issued, as an ISO 4217 currency code
2580
+ */
2581
+ credit_currency: string;
2582
+ /**
2583
+ * The date the credit was issued. It is important to note that this date might not be the same as the date of cancellation. Often airlines associate credits with tickets, in which case the date of issue is considered to be the date the ticket was originally issued. Airline credits may have expiration dates which are based on the date of issue. Airlines don't always reliably disclose the expiration date in their APIs at the time of cancellation, so we are unable to return this information on airline credits. To get the latest info on expiration dates for airline credits we recommend checking directly with the airlines to determine the specific conditions of use for the credit.
2584
+ */
2585
+ issued_on: string;
2586
+ /**
2587
+ * Duffel's unique identifier for the passenger on the order that the credit is associated with
2588
+ */
2589
+ passenger_id: string;
2590
+ }
2565
2591
  export interface OrderCancellation {
2566
2592
  /**
2567
2593
  * The [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) datetime that indicates when the order cancellation was confirmed
@@ -2604,7 +2630,11 @@ declare module '@duffel/api/booking/OrderCancellations/OrderCancellationsTypes'
2604
2630
  /**
2605
2631
  * Where the refund, once confirmed, will be sent. `card` is currently a restricted feature. `awaiting_payment` is for pay later orders where no payment has been made yet.
2606
2632
  */
2607
- refund_to: 'arc_bsp_cash' | 'balance' | 'card' | 'voucher' | 'awaiting_payment';
2633
+ refund_to: 'arc_bsp_cash' | 'balance' | 'card' | 'voucher' | 'awaiting_payment' | 'airline_credits';
2634
+ /**
2635
+ * The airline credits for this OrderCancellation
2636
+ */
2637
+ airline_credits: OrderCancellationAirlineCredit[];
2608
2638
  }
2609
2639
  }
2610
2640
 
@@ -2874,7 +2904,7 @@ declare module '@duffel/api/booking/OrderChanges/OrderChangesTypes' {
2874
2904
  /**
2875
2905
  * The price of this offer as a change to your existing order, excluding taxes
2876
2906
  */
2877
- change_total_amount: string | null;
2907
+ change_total_amount: string;
2878
2908
  /**
2879
2909
  * The currency of the change_total_amount, as an ISO 4217 currency code.
2880
2910
  * It will match your organisation's billing currency unless you're using Duffel
@@ -2882,7 +2912,7 @@ declare module '@duffel/api/booking/OrderChanges/OrderChangesTypes' {
2882
2912
  * by the airline (which will usually be based on the country where your
2883
2913
  * IATA agency is registered).
2884
2914
  */
2885
- change_total_currency: string | null;
2915
+ change_total_currency: string;
2886
2916
  /**
2887
2917
  * Whether the order was created in live mode. This field will be set to `true`
2888
2918
  * if the order was created in live mode, or `false` if it was created in test mode.
@@ -2895,7 +2925,7 @@ declare module '@duffel/api/booking/OrderChanges/OrderChangesTypes' {
2895
2925
  /**
2896
2926
  * The [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) datetime that indicates when the order change was confirmed
2897
2927
  */
2898
- confirmed_at: string;
2928
+ confirmed_at: string | null;
2899
2929
  /**
2900
2930
  * The [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) datetime at which the offer will expire
2901
2931
  * and no longer be usable to create an order
@@ -2908,7 +2938,7 @@ declare module '@duffel/api/booking/OrderChanges/OrderChangesTypes' {
2908
2938
  /**
2909
2939
  * The price of this offer if it was newly purchased, excluding taxes
2910
2940
  */
2911
- new_total_amount: string | null;
2941
+ new_total_amount: string;
2912
2942
  /**
2913
2943
  * The currency of the new_total_amount, as an ISO 4217 currency code.
2914
2944
  * It will match your organisation's billing currency unless you're using
@@ -2924,7 +2954,7 @@ declare module '@duffel/api/booking/OrderChanges/OrderChangesTypes' {
2924
2954
  /**
2925
2955
  * The penalty price imposed by the airline for making this change
2926
2956
  */
2927
- penalty_amount: string | null;
2957
+ penalty_total_amount: string | null;
2928
2958
  /**
2929
2959
  * The currency of the penalty_amount, as an ISO 4217 currency code.
2930
2960
  * It will match your organisation's billing currency unless you're using
@@ -2932,12 +2962,14 @@ declare module '@duffel/api/booking/OrderChanges/OrderChangesTypes' {
2932
2962
  * currency provided by the airline (which will usually be based on
2933
2963
  * the country where your IATA agency is registered).
2934
2964
  */
2935
- penalty_currency: string | null;
2965
+ penalty_total_currency: string | null;
2936
2966
  /**
2937
- * Where the refund, once confirmed, will be sent. card is currently a restricted feature.
2938
- * `awaiting_payment` is for pay later orders where no payment has been made yet.
2967
+ * Where the refund, once confirmed, will be sent.
2968
+ * Refunds are indicated by a negative change_total_amount.
2969
+ * If the change does not require a refund, this field will be null.
2970
+ * original_form_of_payment refers to the form of payment used to create the order.
2939
2971
  */
2940
- refund_to: 'arc_bsp_cash' | 'balance' | 'card' | 'voucher' | 'awaiting_payment' | 'original_form_of_payment';
2972
+ refund_to: 'voucher' | 'original_form_of_payment';
2941
2973
  /**
2942
2974
  * The slices to be added and/or removed
2943
2975
  */
@@ -2974,7 +3006,7 @@ declare module '@duffel/api/booking/OrderChanges/OrderChangesTypes' {
2974
3006
  }
2975
3007
 
2976
3008
  declare module '@duffel/api/booking/Orders/OrdersTypes' {
2977
- import { Aircraft, Airline, AirlineInitiatedChange, Airport, CabinClass, DuffelPassengerGender, DuffelPassengerTitle, DuffelPassengerType, FlightsConditions, LoyaltyProgrammeAccount, OfferAvailableServiceBaggage, OfferAvailableServiceBaggageMetadata, PassengerIdentityDocumentType, PaymentType, Place, PlaceType } from '@duffel/api/types';
3009
+ import { Aircraft, Airline, AirlineInitiatedChange, Airport, CabinClass, DuffelPassengerGender, DuffelPassengerTitle, PassengerType, FlightsConditions, LoyaltyProgrammeAccount, OfferAvailableServiceBaggage, OfferAvailableServiceBaggageMetadata, PassengerIdentityDocumentType, PaymentType, Place, PlaceType } from '@duffel/api/types';
2978
3010
  /**
2979
3011
  * An object containing metadata about the service, like the designator of the seat.
2980
3012
  */
@@ -2993,7 +3025,7 @@ declare module '@duffel/api/booking/Orders/OrdersTypes' {
2993
3025
  * A name which describes the type of seat, which you can display in your user interface to help customers to understand its features
2994
3026
  * @example "Exit row seat"
2995
3027
  */
2996
- name: string;
3028
+ name: string | null;
2997
3029
  }
2998
3030
  /**
2999
3031
  * An object containing metadata about the service, like the maximum weight and dimensions of the baggage.
@@ -3110,7 +3142,7 @@ declare module '@duffel/api/booking/Orders/OrdersTypes' {
3110
3142
  * The type of the passenger
3111
3143
  * @return "adult", "child", or "infant_without_seat"
3112
3144
  */
3113
- type: DuffelPassengerType;
3145
+ type: PassengerType;
3114
3146
  /**
3115
3147
  * The id of the infant associated with this passenger
3116
3148
  * @return "adult", "child", or "infant_without_seat"
@@ -3120,6 +3152,18 @@ declare module '@duffel/api/booking/Orders/OrdersTypes' {
3120
3152
  * The **Loyalty Programme Accounts** for this passenger.
3121
3153
  */
3122
3154
  loyalty_programme_accounts?: LoyaltyProgrammeAccount[];
3155
+ /**
3156
+ * The passenger's email address.
3157
+ * Note that this data may differ from the airline's records if it was updated directly with the airline since the order was created.
3158
+ * @xample "amelia@duffel.com"
3159
+ */
3160
+ email: string;
3161
+ /**
3162
+ * The passenger's phone number in E.164 (international) format.
3163
+ * Note that this data may differ from the airline's records if it was updated directly with the airline since the order was created.
3164
+ * @xample "442080160509"
3165
+ */
3166
+ phone_number: string;
3123
3167
  }
3124
3168
  export interface OrderPassengerIdentityDocument {
3125
3169
  /**
@@ -3159,7 +3203,7 @@ declare module '@duffel/api/booking/Orders/OrdersTypes' {
3159
3203
  /**
3160
3204
  * The aircraft that the operating carrier will use to operate this segment
3161
3205
  */
3162
- aircraft?: Aircraft;
3206
+ aircraft: Aircraft;
3163
3207
  /**
3164
3208
  * The [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) datetime at which the segment is scheduled to arrive, in the destination airport timezone (see destination.timezone)
3165
3209
  */
@@ -3176,11 +3220,11 @@ declare module '@duffel/api/booking/Orders/OrdersTypes' {
3176
3220
  * The terminal at the destination airport where the segment is scheduled to arrive
3177
3221
  * @example "5"
3178
3222
  */
3179
- destination_terminal?: string | null;
3223
+ destination_terminal: string;
3180
3224
  /**
3181
3225
  * The duration of the segment, represented as a [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601#Durations) duration
3182
3226
  */
3183
- duration?: string;
3227
+ duration: string;
3184
3228
  /**
3185
3229
  * Duffel's unique identifier for the segment.
3186
3230
  * It identifies the segment of an order (i.e. the same segment across orders will have different ids.
@@ -3212,7 +3256,7 @@ declare module '@duffel/api/booking/Orders/OrdersTypes' {
3212
3256
  * The terminal at the origin airport from which the segment is scheduled to depart
3213
3257
  * @example "B"
3214
3258
  */
3215
- origin_terminal?: string | null;
3259
+ origin_terminal: string;
3216
3260
  /**
3217
3261
  * Additional segment-specific information about the passengers included in the offer (e.g. their baggage allowance and the cabin class they will be travelling in)
3218
3262
  */
@@ -3221,7 +3265,41 @@ declare module '@duffel/api/booking/Orders/OrdersTypes' {
3221
3265
  * The distance of the segment in kilometres
3222
3266
  * @example "424.2"
3223
3267
  */
3224
- distance?: string | null;
3268
+ distance: string;
3269
+ /**
3270
+ * Additional segment-specific information about the stops, if any, included in the segment
3271
+ */
3272
+ stops: Array<Stop>;
3273
+ }
3274
+ export interface Stop {
3275
+ /**
3276
+ * The airport at which the stop happens
3277
+ */
3278
+ airport: Airport;
3279
+ /**
3280
+ * The ISO 8601 datetime at which the stop is scheduled to arrive, in the airport's timezone (see destination.timezone)
3281
+ *
3282
+ * @example "2020-06-13T16:38:02"
3283
+ */
3284
+ arriving_at: string;
3285
+ /**
3286
+ * The ISO 8601 datetime at which the stop is scheduled to depart, in the airport's timezone (see origin.timezone)
3287
+ *
3288
+ * @example "2020-06-13T16:38:02"
3289
+ */
3290
+ departing_at: string;
3291
+ /**
3292
+ * The duration of the stop, represented as a ISO 8601 duration
3293
+ *
3294
+ * @example "PT02H26M"
3295
+ */
3296
+ duration: string;
3297
+ /**
3298
+ * Duffel's unique identifier for the resource
3299
+ *
3300
+ * @example "sto_00009htYpSCXrwaB9Dn456"
3301
+ */
3302
+ id: string;
3225
3303
  }
3226
3304
  export interface OrderSlice {
3227
3305
  /**
@@ -3279,6 +3357,10 @@ declare module '@duffel/api/booking/Orders/OrdersTypes' {
3279
3357
  * Price Guarantee means it will hold price
3280
3358
  */
3281
3359
  price_guarantee_expires_at?: string;
3360
+ /**
3361
+ * The ISO 8601 datetime at which the Order was paid for, if at all
3362
+ */
3363
+ paid_at: string | null;
3282
3364
  }
3283
3365
  /**
3284
3366
  * The type of document
@@ -3296,6 +3378,11 @@ declare module '@duffel/api/booking/Orders/OrdersTypes' {
3296
3378
  * The type of document
3297
3379
  */
3298
3380
  type: OrderDocumentsType;
3381
+ /**
3382
+ * The list of passenger ids the document applies to
3383
+ * @example ["pas_00009hj8USM7Ncg31cBCLL"]
3384
+ */
3385
+ passenger_ids: string[];
3299
3386
  }
3300
3387
  export interface OrderPayment {
3301
3388
  /**
@@ -3417,7 +3504,7 @@ declare module '@duffel/api/booking/Orders/OrdersTypes' {
3417
3504
  /**
3418
3505
  * The airline-initiated changes for this order.
3419
3506
  */
3420
- airline_initiated_changes?: AirlineInitiatedChange[];
3507
+ airline_initiated_changes: AirlineInitiatedChange[];
3421
3508
  /**
3422
3509
  * The available actions you can take on this order through our API.
3423
3510
  * It's a list of zero or more of the following values:
@@ -3429,6 +3516,14 @@ declare module '@duffel/api/booking/Orders/OrdersTypes' {
3429
3516
  * @example: ["cancel","update"]
3430
3517
  */
3431
3518
  available_actions: OrderAvailableAction[];
3519
+ /**
3520
+ * Airlines are always the source of truth for orders. The orders returned in the Duffel API
3521
+ * are a view of those orders. This field is the ISO 8601 datetime at which the order was
3522
+ * last synced with the airline. If this datetime is in the last minute you can consider the order up to date.
3523
+ *
3524
+ * @example "2020-04-11T15:48:11Z"
3525
+ */
3526
+ synced_at: string;
3432
3527
  }
3433
3528
  export type OrderAvailableAction = 'cancel' | 'change' | 'update';
3434
3529
  export interface CreateOrder {
@@ -3894,7 +3989,7 @@ declare module '@duffel/api/supportingResources/Airports/AirportsTypes' {
3894
3989
  * The metropolitan area where the airport is located.
3895
3990
  * Only present for airports which are registered with IATA as belonging to a metropolitan area.
3896
3991
  */
3897
- city?: City | null;
3992
+ city: City | null;
3898
3993
  /**
3899
3994
  * The name of the city (or cities separated by a `/`) where the airport is located
3900
3995
  */
@@ -3902,7 +3997,7 @@ declare module '@duffel/api/supportingResources/Airports/AirportsTypes' {
3902
3997
  /**
3903
3998
  * The three-character IATA code for the airport
3904
3999
  */
3905
- iata_code?: string;
4000
+ iata_code: string | null;
3906
4001
  /**
3907
4002
  * The ISO 3166-1 alpha-2 code for the country where the city is located
3908
4003
  * @link https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2
@@ -3913,11 +4008,11 @@ declare module '@duffel/api/supportingResources/Airports/AirportsTypes' {
3913
4008
  * The 3-letter IATA code for the city where the place is located.
3914
4009
  * Only present for airports which are registered with IATA as belonging to a [metropolitan area](https://portal.iata.org/faq/articles/en_US/FAQ/How-do-I-create-a-new-Metropolitan-Area).
3915
4010
  */
3916
- iata_city_code?: string | null;
4011
+ iata_city_code: string | null;
3917
4012
  /**
3918
4013
  * The four-character ICAO code for the airport
3919
4014
  */
3920
- icao_code?: string;
4015
+ icao_code: string;
3921
4016
  /**
3922
4017
  * Duffel's unique identifier for the airport
3923
4018
  */
@@ -3938,6 +4033,10 @@ declare module '@duffel/api/supportingResources/Airports/AirportsTypes' {
3938
4033
  * The time zone of the airport, specified by name from the [tz database](https://en.wikipedia.org/wiki/Tz_database)
3939
4034
  */
3940
4035
  time_zone: string;
4036
+ /**
4037
+ * The type of the place
4038
+ */
4039
+ type: 'airport';
3941
4040
  }
3942
4041
  }
3943
4042
 
@@ -4146,10 +4245,6 @@ declare module '@duffel/api/types/shared' {
4146
4245
  * @link https://portal.iata.org/faq/articles/en_US/FAQ/How-do-I-create-a-new-Metropolitan-Area
4147
4246
  */
4148
4247
  export interface City {
4149
- /**
4150
- * The type of the place
4151
- */
4152
- type?: 'city';
4153
4248
  /**
4154
4249
  * The three-character IATA code for the city
4155
4250
  * @example "LON"
@@ -4171,6 +4266,14 @@ declare module '@duffel/api/types/shared' {
4171
4266
  * @example "London"
4172
4267
  */
4173
4268
  name: string;
4269
+ /**
4270
+ * "The airports associated to a city. This will only be provided where the `type` is `city`."
4271
+ */
4272
+ airports?: Airport[];
4273
+ /**
4274
+ * The type of the place
4275
+ */
4276
+ type: 'city';
4174
4277
  }
4175
4278
  /**
4176
4279
  * The cabin class that the passenger will travel in on this segment
@@ -4179,7 +4282,7 @@ declare module '@duffel/api/types/shared' {
4179
4282
  /**
4180
4283
  * The type of the passenger
4181
4284
  */
4182
- export type DuffelPassengerType = 'adult' | 'child' | 'infant_without_seat';
4285
+ export type PassengerType = 'adult' | 'child' | 'infant_without_seat';
4183
4286
  /**
4184
4287
  * The passenger's title
4185
4288
  */
@@ -4193,16 +4296,64 @@ declare module '@duffel/api/types/shared' {
4193
4296
  * This must be one of the `allowed_passenger_identity_document_types` on the offer.
4194
4297
  */
4195
4298
  export type PassengerIdentityDocumentType = 'passport' | 'tax_id';
4196
- /**
4197
- * The type of the origin or destination
4198
- */
4199
- export type PlaceType = 'airport' | 'city';
4200
4299
  export type Place = (Airport & {
4201
- type?: 'airport';
4202
- airports?: Airport[] | null;
4300
+ type: 'airport';
4203
4301
  }) | (City & {
4204
- type?: 'city';
4302
+ type: 'city';
4205
4303
  });
4304
+ /**
4305
+ * The type of the origin or destination
4306
+ */
4307
+ export type PlaceType = Place['type'];
4308
+ export type FlightsConditionAllowed = {
4309
+ /**
4310
+ * The currency of the `penalty_amount` as an [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code.
4311
+ * This will be in a currency determined by the airline, which is not necessarily the same as the currency of the order or offer.
4312
+ * If this is `null` then `penalty_amount` will also be `null`.
4313
+ *
4314
+ * @example "GBP"
4315
+ */
4316
+ penalty_currency: string;
4317
+ /**
4318
+ * If the modification is `allowed` then this is the amount payable to apply the modification to all passengers.
4319
+ * If there is no penalty, the value will be zero. If the modification isn't `allowed` or the penalty is not known then this field will be `null`.
4320
+ * If this is `null` then the `penalty_currency` will also be null.
4321
+ *
4322
+ * @example "100.00"
4323
+ */
4324
+ penalty_amount: string;
4325
+ /**
4326
+ * Whether this kind of modification is allowed post-booking
4327
+ *
4328
+ * @example "true"
4329
+ */
4330
+ allowed: true;
4331
+ };
4332
+ export type FlightsConditionNotAllowed = {
4333
+ /**
4334
+ * The currency of the `penalty_amount` as an [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code.
4335
+ * This will be in a currency determined by the airline, which is not necessarily the same as the currency of the order or offer.
4336
+ * If this is `null` then `penalty_amount` will also be `null`.
4337
+ *
4338
+ * @example "GBP"
4339
+ */
4340
+ penalty_currency: null;
4341
+ /**
4342
+ * If the modification is `allowed` then this is the amount payable to apply the modification to all passengers.
4343
+ * If there is no penalty, the value will be zero. If the modification isn't `allowed` or the penalty is not known then this field will be `null`.
4344
+ * If this is `null` then the `penalty_currency` will also be null.
4345
+ *
4346
+ * @example "100.00"
4347
+ */
4348
+ penalty_amount: null;
4349
+ /**
4350
+ * Whether this kind of modification is allowed post-booking
4351
+ *
4352
+ * @example "true"
4353
+ */
4354
+ allowed: false;
4355
+ };
4356
+ export type FlightsCondition = FlightsConditionAllowed | FlightsConditionNotAllowed;
4206
4357
  /**
4207
4358
  * The conditions associated with this offer, describing the kinds of modifications you can make post-booking and any penalties that will apply to those modifications.
4208
4359
  * This information assumes the condition is applied to all of the slices and passengers associated with this offer - for information at the slice level (e.g. "what happens if I just want to change the first slice?") refer to the slices.
@@ -4216,28 +4367,7 @@ declare module '@duffel/api/types/shared' {
4216
4367
  * If any of the slices on the order or offer can't be refunded then the `allowed` property will be `false`.
4217
4368
  * If the airline hasn't provided any information about whether this order or offer can be refunded then this property will be `null`.
4218
4369
  */
4219
- refund_before_departure?: {
4220
- /**
4221
- * The currency of the `penalty_amount` as an [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code.
4222
- * This will be in a currency determined by the airline, which is not necessarily the same as the currency of the order or offer.
4223
- * If this is `null` then `penalty_amount` will also be `null`.
4224
- * @example "GBP"
4225
- */
4226
- penalty_currency?: string | null;
4227
- /**
4228
- * If the modification is `allowed` then this is the amount payable to apply the modification to all passengers.
4229
- * If there is no penalty, the value will be zero. If the modification isn't `allowed` or the penalty is not known then this field will be `null`.
4230
- * If this is `null` then the `penalty_currency` will also be null.
4231
- * @example "100.00"
4232
- */
4233
- penalty_amount?: string | null;
4234
- /**
4235
- * Whether this kind of modification is allowed post-booking
4236
- *
4237
- * @example "true"
4238
- */
4239
- allowed: boolean;
4240
- } | null;
4370
+ refund_before_departure: FlightsCondition | null;
4241
4371
  /**
4242
4372
  * Whether the whole order or offer can be changed before the departure of the first slice.
4243
4373
  * If all of the slices on the order or offer can be changed then the `allowed` property will be `true`.
@@ -4246,28 +4376,7 @@ declare module '@duffel/api/types/shared' {
4246
4376
  * In this case you should refer to the slices conditions to determine if any part of the order or offer is changeable.
4247
4377
  * If the airline hasn't provided any information about whether this order or offer can be changed then this property will be `null`.
4248
4378
  */
4249
- change_before_departure?: {
4250
- /**
4251
- * The currency of the `penalty_amount` as an [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code.
4252
- * This will be in a currency determined by the airline, which is not necessarily the same as the currency of the order or offer.
4253
- * If this is `null` then `penalty_amount` will also be `null`.
4254
- * @example "GBP"
4255
- */
4256
- penalty_currency?: string | null;
4257
- /**
4258
- * If the modification is `allowed` then this is the amount payable to apply the modification to all passengers.
4259
- * If there is no penalty, the value will be zero. If the modification isn't `allowed` or the penalty is not known then this field will be `null`.
4260
- * If this is `null` then the `penalty_currency` will also be null.
4261
- * @example "100.00"
4262
- */
4263
- penalty_amount?: string | null;
4264
- /**
4265
- * Whether this kind of modification is allowed post-booking
4266
- *
4267
- * @example "true"
4268
- */
4269
- allowed: boolean;
4270
- } | null;
4379
+ change_before_departure: FlightsCondition | null;
4271
4380
  };
4272
4381
  /**
4273
4382
  * The conditions associated with this offer, describing the kinds of modifications you can make post-booking and any penalties that will apply to those modifications.
@@ -4284,15 +4393,15 @@ declare module '@duffel/api/types/shared' {
4284
4393
  /**
4285
4394
  * Whether passengers are able to select a seat prior to check in.
4286
4395
  */
4287
- advance_seat_selection: boolean;
4396
+ advance_seat_selection: boolean | null;
4288
4397
  /**
4289
4398
  * Whether passengers are given preferential boarding over others passengers in their cabin.
4290
4399
  */
4291
- priority_boarding: boolean;
4400
+ priority_boarding: boolean | null;
4292
4401
  /**
4293
4402
  * Whether passengers are given access to a fast track lane during check in.
4294
4403
  */
4295
- priority_check_in: boolean;
4404
+ priority_check_in: boolean | null;
4296
4405
  };
4297
4406
  /**
4298
4407
  * The type of payment you want to apply to the order.
@@ -4596,7 +4705,7 @@ declare module '@duffel/api/notifications/Webhooks/Webhooks' {
4596
4705
 
4597
4706
  declare module '@duffel/api/Stays/Accommodation/Accommodation' {
4598
4707
  import { Client } from '@duffel/api/Client';
4599
- import { LocationParams, StaysAccommodationSuggestion, StaysAccommodation } from '@duffel/api/Stays/StaysTypes';
4708
+ import { LocationParams, ListAccommodationParams, StaysAccommodationSuggestion, StaysAccommodation } from '@duffel/api/Stays/StaysTypes';
4600
4709
  import { Resource } from '@duffel/api/Resource';
4601
4710
  import { DuffelResponse } from '@duffel/api/types';
4602
4711
  export class Accommodation extends Resource {
@@ -4615,6 +4724,18 @@ declare module '@duffel/api/Stays/Accommodation/Accommodation' {
4615
4724
  * @param {string} id - The Duffel ID of the Accommodation
4616
4725
  */
4617
4726
  get: (id: StaysAccommodation['id']) => Promise<DuffelResponse<StaysAccommodation>>;
4727
+ /**
4728
+ * Retrieves a page of accommodation.
4729
+ * @param {Object.<ListAccommodationParams>} params - Endpoint options (radius, latitude, longitude, before, after, limit)
4730
+ * @link https://duffel.com/docs/api/v2/accommodation/list-accommodation
4731
+ */
4732
+ list: (params: ListAccommodationParams) => Promise<DuffelResponse<StaysAccommodation[]>>;
4733
+ /**
4734
+ * Retrieves a generator of accommodation pages given the criteria in the params.
4735
+ * @param {Object.<ListAccommodationParams>} params - Endpoint options (radius, latitude, longitude, before, after, limit)
4736
+ * @link https://duffel.com/docs/api/v2/accommodation/list-accommodation
4737
+ */
4738
+ listWithGenerator: (params: ListAccommodationParams) => AsyncGenerator<DuffelResponse<StaysAccommodation[]>>;
4618
4739
  }
4619
4740
  }
4620
4741