sabre-client 0.4.1 → 0.5.1

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/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
- import { Q as QueueRef } from './queue-ref-BDGh8FrV.js';
1
+ import { e as RetryOptions, S as SabreError, f as SabreRawResponseCallback, g as SabreRawRequestCallback, h as SabreWarning, i as SabreBusinessError, O as OtaAirLowFareSearchRq, G as GroupedItineraryResponse, B as BargainFinderMaxRequest, I as ItineraryGroup, j as Itinerary, k as RequestOptions, l as BargainFinderMaxResponse, Q as QueueRef, m as QueueActivityRequest, n as QueueActivityOptions, o as QueueActivityResponse, p as ReservationHistoryOptions, q as ReservationHistoryResponse } from './reservation-history-BKRFlxpA.js';
2
+ export { r as BaggageAllowanceDesc, s as BaggageInformation, C as CurrencyConversion, F as Fare, t as FareComponent, u as FareComponentDesc, v as FareComponentDescSegment, w as FareComponentSegment, x as FareComponentSegmentDetail, y as FareMessage, z as ItineraryMessage, L as Leg, A as LegDesc, D as LegDescription, E as LegSchedule, H as LegScheduleRef, J as LowFareSearchFlight, K as LowFareSearchLocation, M as LowFareSearchOriginDestination, N as LowFareSearchPassengerTypeQuantity, P as LowFareSearchRequestorId, T as LowFareSearchSource, U as LowFareSearchTpaExtensions, V as LowFareSearchTravelPreferences, W as LowFareSearchTravelerInfoSummary, X as MESSAGE_QUEUE, Y as ObFeeDesc, Z as PassengerInfo, _ as PassengerTotalFare, $ as PricingInformation, a0 as QueueActivity, a as QueueActivityCounters, a1 as Ref, d as ReservationHistoryAccounting, b as ReservationHistoryFlightSegment, c as ReservationHistoryText, R as ReservationHistoryTransaction, a2 as SabreBusinessErrorOptions, a3 as SabreErrorOptions, a4 as SabreGatewayError, a5 as SabreGatewayErrorOptions, a6 as SabreOrchestrationError, a7 as SabreOrchestrationErrorOptions, a8 as SabreProtocol, a9 as SabreRawRequest, aa as SabreRawResponse, ab as SabreServiceErrorOptions, ac as SabreSessionError, ad as SabreSessionErrorKind, ae as SabreSessionErrorOptions, af as ScheduleCarrier, ag as ScheduleDesc, ah as ScheduleEndpoint, ai as ScheduleEquipment, aj as TaxDesc, ak as TaxSummaryDesc, al as TotalFare, am as ValidatingCarrierDesc, an as isMessageQueue } from './reservation-history-BKRFlxpA.js';
2
3
 
3
4
  /** Token ATK tal cual se guarda: tiempos absolutos, para que otro proceso sepa cuánto le queda. */
4
5
  interface StoredToken {
@@ -22,13 +23,6 @@ interface SabreTokenStore {
22
23
  set(key: string, token: StoredToken): Promise<void>;
23
24
  }
24
25
 
25
- interface RetryOptions {
26
- /** Reintentos después de la primera llamada (3 → hasta 4 llamadas en total). */
27
- maxRetries: number;
28
- /** Delay base del backoff exponencial, en milisegundos. */
29
- baseDelayMs: number;
30
- }
31
-
32
26
  /**
33
27
  * Interfaz mínima de logger, compatible con `winston` y `console`.
34
28
  * Con `pino`, que invierte el orden: `info: (m, c) => pino.info(c, m)`.
@@ -41,7 +35,7 @@ interface SabreLogger {
41
35
  }
42
36
  type SabreLogLevel = keyof SabreLogger;
43
37
  /** Eventos estables que emite el SDK como `message`. */
44
- type SabreLogEvent = 'sabre.request.start' | 'sabre.request.end' | 'sabre.request.retry' | 'sabre.request.rawResponseHookFailed' | 'sabre.auth.token.refresh' | 'sabre.auth.token.store' | 'sabre.booking.seat.priced' | 'sabre.session.open' | 'sabre.session.close' | 'sabre.session.closeFailed' | 'sabre.session.keepAliveFailed' | 'sabre.session.command' | 'sabre.queue.exitTolerated' | 'sabre.queue.exitFailed';
38
+ type SabreLogEvent = 'sabre.request.start' | 'sabre.request.end' | 'sabre.request.retry' | 'sabre.request.rawResponseHookFailed' | 'sabre.request.rawRequestHookFailed' | 'sabre.auth.token.refresh' | 'sabre.auth.token.store' | 'sabre.booking.seat.priced' | 'sabre.session.open' | 'sabre.session.close' | 'sabre.session.closeFailed' | 'sabre.session.keepAliveFailed' | 'sabre.session.command' | 'sabre.queue.exitTolerated' | 'sabre.queue.exitFailed';
45
39
  /** Logger interno: redacta siempre el contexto y no hace nada si no hay logger. */
46
40
  declare class EventLogger {
47
41
  #private;
@@ -81,12 +75,6 @@ interface SabreCredentialsV2 {
81
75
  }
82
76
  interface SabreBaseConfig {
83
77
  environment: SabreEnvironment;
84
- /**
85
- * @deprecated Desde 0.4.1; se quita en 0.5.0. Ningún cliente lo lee. El PCC con el que te
86
- * autenticas va en `credentials` (ver `buildCredentials`). Para trabajar en otro PCC, se pasa en
87
- * cada operación: `targetPcc` en REST, `pcc` en colas.
88
- */
89
- pcc?: string;
90
78
  logger?: SabreLogger;
91
79
  /** Reintentos por defecto del cliente; cada request puede pisarlos. */
92
80
  retry?: Partial<RetryOptions>;
@@ -118,11 +106,33 @@ interface SabreConfigV2FromCredentials extends SabreBaseConfig {
118
106
  authVersion: 'v2';
119
107
  };
120
108
  }
109
+ /**
110
+ * Credenciales con su versión, sin saber cuál al compilar: lo que devuelve
111
+ * `buildCredentials(options: BuildCredentialsOptions)`. Es un solo tipo y no la unión de
112
+ * `BuiltCredentialsV3 | BuiltCredentialsV2`: con la unión, TypeScript aceptaría también un
113
+ * `SabreCredentialsV2` sin marca, porque toma su `authVersion` opcional como discriminante. A
114
+ * cambio, el tipo no exige `clientId`/`clientSecret` con `'v3'`: eso lo valida `resolveConfig`.
115
+ */
116
+ interface SabreCredentialsAnyVersion {
117
+ authVersion: SabreAuthVersion;
118
+ clientId?: string;
119
+ clientSecret?: string;
120
+ username: string;
121
+ password: string;
122
+ }
123
+ /**
124
+ * Config sin `authVersion`, con credenciales de `buildCredentials` cuya versión no se conoce al
125
+ * compilar. La versión sale de la marca de las credenciales en runtime (Q-084, #159).
126
+ */
127
+ interface SabreConfigFromCredentials extends SabreBaseConfig {
128
+ authVersion?: never;
129
+ credentials: SabreCredentialsAnyVersion;
130
+ }
121
131
  /**
122
132
  * Config del cliente, discriminada por `authVersion`: el de la config o, si falta, el de
123
133
  * `credentials`. Sin ninguno de los dos, es v3.
124
134
  */
125
- type SabreConfig = SabreConfigV3 | SabreConfigV2 | SabreConfigV2FromCredentials;
135
+ type SabreConfig = SabreConfigV3 | SabreConfigV2 | SabreConfigV2FromCredentials | SabreConfigFromCredentials;
126
136
  /** Config validada y con defaults aplicados. */
127
137
  interface ResolvedConfig {
128
138
  credentials: Readonly<SabreCredentials | SabreCredentialsV2>;
@@ -130,156 +140,12 @@ interface ResolvedConfig {
130
140
  baseUrl: string;
131
141
  soapBaseUrl: string;
132
142
  authVersion: SabreAuthVersion;
133
- pcc: string | undefined;
134
143
  logger: SabreLogger | undefined;
135
144
  retry: Readonly<RetryOptions>;
136
145
  fetch: typeof fetch;
137
146
  tokenStore: SabreTokenStore | undefined;
138
147
  }
139
148
 
140
- interface SabreErrorOptions {
141
- /** Si la política de reintentos puede volver a intentar la operación. */
142
- retryable: boolean;
143
- /** Fragmento de la respuesta original sin transformar (JSON parseado o nodo XML). */
144
- raw?: unknown;
145
- cause?: unknown;
146
- }
147
- /**
148
- * Base de todos los errores del SDK.
149
- *
150
- * `raw` puede contener credenciales o datos de pasajero: no es enumerable, así que
151
- * no aparece en `JSON.stringify`, spreads ni serializadores de logs, pero sigue
152
- * accesible como `error.raw` para debugging. No lo vuelques a un logger sin sanitizar.
153
- */
154
- declare class SabreError extends Error {
155
- name: string;
156
- readonly retryable: boolean;
157
- readonly raw: unknown;
158
- constructor(message: string, options: SabreErrorOptions);
159
- toJSON(): Record<string, unknown>;
160
- }
161
- type SabreProtocol = 'rest' | 'soap';
162
- interface SabreGatewayErrorOptions extends SabreErrorOptions {
163
- protocol: SabreProtocol;
164
- /** HTTP status de la respuesta, si la hubo. */
165
- status?: number;
166
- /** Código tal cual lo devuelve el gateway (`ERR.2SG.*`, `USG_*`), si viene en el body. */
167
- code?: string;
168
- }
169
- /** Error de transporte/gateway (`ERR.2SG.*` + HTTP status en REST, `USG_*` en SOAP). */
170
- declare class SabreGatewayError extends SabreError {
171
- name: string;
172
- readonly protocol: SabreProtocol;
173
- readonly status: number | undefined;
174
- readonly code: string | undefined;
175
- constructor(message: string, options: SabreGatewayErrorOptions);
176
- }
177
- /**
178
- * Por qué una sesión SOAP no sirve: `'limit'` (más de 50 sesiones), `'invalid'` (uso
179
- * concurrente de la sesión), `'expired'` (sesión vencida) o `'blocked'` (creación de sesión
180
- * bloqueada para el usuario).
181
- */
182
- type SabreSessionErrorKind = 'limit' | 'invalid' | 'expired' | 'blocked';
183
- interface SabreSessionErrorOptions extends Omit<SabreGatewayErrorOptions, 'protocol'> {
184
- kind: SabreSessionErrorKind;
185
- }
186
- /**
187
- * Error de la sesión SOAP de `SabreLegacy`. Se distingue con `instanceof` y `kind`, sin comparar
188
- * mensajes. La sesión que lo lanzó queda inutilizable: las llamadas siguientes lanzan sin red.
189
- */
190
- declare class SabreSessionError extends SabreGatewayError {
191
- name: string;
192
- readonly kind: SabreSessionErrorKind;
193
- constructor(message: string, options: SabreSessionErrorOptions);
194
- }
195
- interface SabreOrchestrationErrorOptions extends Omit<SabreErrorOptions, 'retryable'> {
196
- /** `SP.PROVIDER_ERROR` o `SP.INTERNAL_ERROR`. */
197
- code: string;
198
- }
199
- /**
200
- * Error de servicio orquestado (`SP.*`), viaja dentro de una respuesta 200.
201
- * `SP.PROVIDER_ERROR` es reintentable; `SP.INTERNAL_ERROR` (y cualquier otro) no.
202
- */
203
- declare class SabreOrchestrationError extends SabreError {
204
- name: string;
205
- readonly code: string;
206
- constructor(message: string, options: SabreOrchestrationErrorOptions);
207
- }
208
- interface SabreServiceErrorOptions extends Omit<SabreErrorOptions, 'retryable'> {
209
- /** Servicio que originó el error, p. ej. `'createBooking'`. */
210
- service: string;
211
- /** Código tal cual lo documenta Sabre, sin normalizar. */
212
- code: string;
213
- }
214
- interface SabreBusinessErrorOptions extends SabreServiceErrorOptions {
215
- /**
216
- * Solo para códigos que Sabre documenta como temporales en un servicio de lectura
217
- * (p. ej. `Transmission timeout` de Bargain Finder Max). Por defecto `false`.
218
- * La política de reintentos igual exige que la operación sea idempotente.
219
- */
220
- retryable?: boolean;
221
- /** Avisos que llegaron junto con el error (p. ej. `category: WARNING` de Create Booking). */
222
- warnings?: readonly SabreWarning[];
223
- /**
224
- * Otros errores que llegaron junto con este (p. ej. la causa real detrás de
225
- * `NO_ITEMS_CANCELLED` en Cancel Booking).
226
- */
227
- errors?: readonly SabreBusinessError[];
228
- }
229
- /**
230
- * Error del catálogo propio de un servicio. No es reintentable, salvo los códigos
231
- * temporales de servicios de lectura que se marcan con `retryable: true`.
232
- */
233
- declare class SabreBusinessError extends SabreError {
234
- name: string;
235
- readonly service: string;
236
- readonly code: string;
237
- readonly warnings: readonly SabreWarning[];
238
- readonly errors: readonly SabreBusinessError[];
239
- constructor(message: string, options: SabreBusinessErrorOptions);
240
- }
241
- /**
242
- * Advertencia de un servicio (p. ej. `category: WARNING` de Create Booking, soft errors
243
- * de End Transaction): no es un fallo fatal. Nunca se reintenta automáticamente.
244
- */
245
- declare class SabreWarning extends SabreError {
246
- name: string;
247
- readonly service: string;
248
- readonly code: string;
249
- constructor(message: string, options: SabreServiceErrorOptions);
250
- }
251
-
252
- /**
253
- * Respuesta tal cual llegó de Sabre, para guardarla junto al resultado tipado.
254
- *
255
- * ⚠️ El `body` trae datos de pasajeros (PII). El SDK nunca lo envía al logger; quien usa
256
- * `onRawResponse` responde por dónde lo guarda.
257
- */
258
- interface SabreRawResponse {
259
- /** Método público sin `sabre.`, p. ej. `'booking.get'` o `'air.bargainFinderMax'`. */
260
- operation: string;
261
- protocol: 'rest' | 'soap';
262
- /** HTTP status del intento que se entrega. */
263
- status: number;
264
- headers: Headers;
265
- /**
266
- * Texto tal cual llegó, sin parsear. `''` si vino vacío. En SOAP es el sobre completo, con
267
- * una sola modificación: el valor de cada `BinarySecurityToken` va como `[REDACTED]`.
268
- */
269
- body: string;
270
- /** Intentos HTTP hechos, contando los reintentos (1 si no hubo). */
271
- attempts: number;
272
- }
273
- /**
274
- * Se llama una sola vez por operación, con la respuesta del último intento HTTP, antes de
275
- * devolver o de lanzar: también si termina en `SabreBusinessError` o `SabreGatewayError`. No
276
- * se llama si ningún intento tuvo respuesta HTTP, ni con las llamadas de token.
277
- *
278
- * Es síncrono y su retorno se ignora. Si lanza, el SDK lo atrapa, emite
279
- * `sabre.request.rawResponseHookFailed` al logger (sin el body) y la operación sigue.
280
- */
281
- type SabreRawResponseCallback = (raw: SabreRawResponse) => void;
282
-
283
149
  type HttpMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
284
150
  /**
285
151
  * Pasos 2–3 del orden de detección, aportados por cada servicio: recibe el body de una
@@ -307,9 +173,11 @@ interface RestRequest {
307
173
  classify?: ResponseClassifier;
308
174
  retry?: Partial<RetryOptions>;
309
175
  signal?: AbortSignal;
310
- /** Método público sin `sabre.`, p. ej. `'booking.get'`. Lo recibe `onRawResponse`. */
176
+ /** Método público sin `sabre.`, p. ej. `'booking.get'`. Lo reciben `onRawResponse` y `onRawRequest`. */
311
177
  operation?: string;
312
178
  onRawResponse?: SabreRawResponseCallback;
179
+ /** No se llama si `auth` es `false` (la request de token lleva la credencial). */
180
+ onRawRequest?: SabreRawRequestCallback;
313
181
  }
314
182
  /** Fuente del header `Authorization` de los servicios (la implementa `AuthManager`). */
315
183
  interface AuthorizationProvider {
@@ -335,445 +203,6 @@ declare class RestTransport {
335
203
  request<T>(request: RestRequest): Promise<T>;
336
204
  }
337
205
 
338
- interface ScheduleEndpoint {
339
- airport: string;
340
- city?: string;
341
- /** Visto en sandbox para aeropuertos de EE. UU. */
342
- state?: string;
343
- country?: string;
344
- /** Hora local con offset, p. ej. `17:10:00+02:00`. */
345
- time: string;
346
- terminal?: string;
347
- /** Días que se suman a la fecha de salida del vuelo. Visto en sandbox (`arrival`). */
348
- dateAdjustment?: number;
349
- }
350
- interface ScheduleEquipment {
351
- code: string;
352
- typeForFirstLeg?: string;
353
- typeForLastLeg?: string;
354
- }
355
- interface ScheduleCarrier {
356
- marketing: string;
357
- marketingFlightNumber: number;
358
- operating?: string;
359
- operatingFlightNumber?: number;
360
- alliances?: string;
361
- equipment?: ScheduleEquipment;
362
- }
363
- /** Vuelo/segmento operado (`scheduleDescs[]`). */
364
- interface ScheduleDesc {
365
- id: number;
366
- /** Visto en sandbox, p. ej. `"7"`; significado sin confirmar. */
367
- dotRating?: string;
368
- frequency?: string;
369
- stopCount?: number;
370
- eTicketable?: boolean;
371
- totalMilesFlown?: number;
372
- /** Minutos. */
373
- elapsedTime?: number;
374
- departure: ScheduleEndpoint;
375
- arrival: ScheduleEndpoint;
376
- carrier: ScheduleCarrier;
377
- }
378
- /** Tramo lógico (`legDescs[]`): agrupa schedules por `ref`. */
379
- interface LegDesc {
380
- id: number;
381
- /** Minutos. */
382
- elapsedTime?: number;
383
- schedules: LegScheduleRef[];
384
- }
385
- /**
386
- * Schedule dentro de un tramo. `departureDateAdjustment`: días que se suman a la fecha del
387
- * tramo para la salida de este vuelo (conexión al día siguiente). Visto en sandbox, sin
388
- * documentar en los ejemplos de Sabre.
389
- */
390
- interface LegScheduleRef extends Ref {
391
- departureDateAdjustment?: number;
392
- }
393
- /** Impuesto individual (`taxDescs[]`). */
394
- interface TaxDesc {
395
- id: number;
396
- code: string;
397
- amount: number;
398
- currency: string;
399
- description?: string;
400
- publishedAmount?: number;
401
- publishedCurrency?: string;
402
- station?: string;
403
- country?: string;
404
- /** Visto en sandbox. */
405
- taxReissue?: {
406
- refundable?: boolean;
407
- };
408
- }
409
- /** Resumen de impuestos por código (`taxSummaryDescs[]`). Misma forma que `TaxDesc`. */
410
- type TaxSummaryDesc = TaxDesc;
411
- /** Cargo adicional (`obFeeDescs[]`). Significado exacto de "OB" sin confirmar. */
412
- interface ObFeeDesc {
413
- id: number;
414
- amount: number;
415
- currency: string;
416
- }
417
- interface FareComponentDescSegment {
418
- segment: {
419
- stopover?: boolean;
420
- };
421
- }
422
- /** Componente de tarifa (`fareComponentDescs[]`). */
423
- interface FareComponentDesc {
424
- id: number;
425
- governingCarrier?: string;
426
- fareAmount?: number;
427
- fareCurrency?: string;
428
- fareBasisCode: string;
429
- farePassengerType?: string;
430
- publishedFareAmount?: number;
431
- publishedFareCurrency?: string;
432
- /** `FROM` / `TO`. */
433
- directionality?: string;
434
- applicablePricingCategories?: string;
435
- vendorCode?: string;
436
- fareTypeBitmap?: string;
437
- fareType?: string;
438
- fareTariff?: string;
439
- fareRule?: string;
440
- cabinCode?: string;
441
- segments?: FareComponentDescSegment[];
442
- ticketDesignator?: string;
443
- mileageSurcharge?: number;
444
- mileage?: boolean;
445
- oneWayFare?: boolean;
446
- negotiatedFare?: boolean;
447
- privateFare?: boolean;
448
- notValidAfter?: string;
449
- /** Distinto de `directionality`; significado sin confirmar. */
450
- direction?: string;
451
- }
452
- /** Aerolínea validadora (`validatingCarrierDescs[]`). */
453
- interface ValidatingCarrierDesc {
454
- id: number;
455
- settlementMethod?: string;
456
- newVcxProcess?: boolean;
457
- default?: {
458
- code: string;
459
- };
460
- }
461
- /** Franquicia de equipaje (`baggageAllowanceDescs[]`). */
462
- interface BaggageAllowanceDesc {
463
- id: number;
464
- pieceCount?: number;
465
- }
466
- /** Referencia a un descriptor por su `id`. */
467
- interface Ref {
468
- ref: number;
469
- }
470
- interface ItineraryMessage {
471
- severity: string;
472
- type: string;
473
- code: string;
474
- text: string;
475
- }
476
- interface LegDescription {
477
- departureDate: string;
478
- departureLocation: string;
479
- arrivalLocation: string;
480
- }
481
- interface CurrencyConversion {
482
- from: string;
483
- to: string;
484
- exchangeRateUsed: number;
485
- }
486
- interface PassengerTotalFare {
487
- totalFare: number;
488
- totalTaxAmount?: number;
489
- currency: string;
490
- baseFareAmount?: number;
491
- baseFareCurrency?: string;
492
- equivalentAmount?: number;
493
- equivalentCurrency?: string;
494
- constructionAmount?: number;
495
- constructionCurrency?: string;
496
- exchangeRateOne?: number;
497
- commissionPercentage?: number;
498
- commissionAmount?: number;
499
- cat35CommissionPercentage?: number;
500
- cat35CommissionAmount?: number;
501
- cat35MarkupAmount?: number;
502
- commissionAmountInEquivalent?: number;
503
- commissionSource?: string;
504
- }
505
- interface TotalFare {
506
- totalPrice: number;
507
- totalTaxAmount?: number;
508
- currency: string;
509
- baseFareAmount?: number;
510
- baseFareCurrency?: string;
511
- constructionAmount?: number;
512
- constructionCurrency?: string;
513
- equivalentAmount?: number;
514
- equivalentCurrency?: string;
515
- }
516
- /** Disponibilidad del segmento dentro de un componente de tarifa. */
517
- interface FareComponentSegmentDetail {
518
- bookingCode?: string;
519
- cabinCode?: string;
520
- mealCode?: string;
521
- seatsAvailable?: number;
522
- availabilityBreak?: boolean;
523
- fareBreakPoint?: boolean;
524
- }
525
- interface FareMessage {
526
- type: string;
527
- code: string;
528
- /** Visto en sandbox de Revalidate. */
529
- carrier?: string;
530
- info: string;
531
- }
532
- interface RawFareComponent extends Ref {
533
- beginAirport?: string;
534
- endAirport?: string;
535
- segments?: Array<{
536
- segment: FareComponentSegmentDetail;
537
- }>;
538
- }
539
- interface RawBaggageInformation {
540
- provisionType?: string;
541
- airlineCode?: string;
542
- /** Índices de segmento, no referencias a descriptores. */
543
- segments?: Array<{
544
- id: number;
545
- }>;
546
- allowance?: Ref;
547
- }
548
- interface RawPassengerInfo {
549
- passengerType: string;
550
- passengerNumber?: number;
551
- nonRefundable?: boolean;
552
- fareComponents?: RawFareComponent[];
553
- taxes?: Ref[];
554
- taxSummaries?: Ref[];
555
- obFees?: Ref[];
556
- currencyConversion?: CurrencyConversion;
557
- passengerTotalFare?: PassengerTotalFare;
558
- baggageInformation?: RawBaggageInformation[];
559
- fareMessages?: FareMessage[];
560
- fareCalcLine?: {
561
- info: string;
562
- };
563
- }
564
- interface RawFare {
565
- mandatoryInd?: boolean;
566
- validatingCarrierCode?: string;
567
- vita?: boolean;
568
- eTicketable?: boolean;
569
- lastTicketDate?: string;
570
- lastTicketTime?: string;
571
- governingCarriers?: string;
572
- passengerInfoList: Array<{
573
- passengerInfo: RawPassengerInfo;
574
- }>;
575
- totalFare?: TotalFare;
576
- validatingCarriers?: Ref[];
577
- }
578
- interface RawPricingInformation {
579
- pricingSubsource?: string;
580
- /** P. ej. `ATPCO`. Visto en Revalidate y en sandbox de BFM. */
581
- distributionModel?: string;
582
- fare: RawFare;
583
- }
584
- interface RawItinerary {
585
- id: number;
586
- pricingSource?: string;
587
- /** Visto solo en Revalidate Itinerary. */
588
- currentItinerary?: boolean;
589
- /** Visto en sandbox de BFM; significado sin confirmar. */
590
- diversitySwapper?: {
591
- weighedPrice?: number;
592
- };
593
- legs: Ref[];
594
- pricingInformation: RawPricingInformation[];
595
- }
596
- /** Tramo con sus schedules resueltos. */
597
- interface Leg extends Omit<LegDesc, 'schedules'> {
598
- schedules: LegSchedule[];
599
- }
600
- /** Schedule resuelto, con lo que la referencia del tramo agrega. */
601
- type LegSchedule = ScheduleDesc & Omit<LegScheduleRef, 'ref'>;
602
- /** Segmento de un componente de tarifa: lo del descriptor más la disponibilidad del itinerario. */
603
- interface FareComponentSegment {
604
- segment: FareComponentDescSegment['segment'] & FareComponentSegmentDetail;
605
- }
606
- /** Componente de tarifa resuelto: descriptor + datos propios del itinerario. */
607
- interface FareComponent extends Omit<FareComponentDesc, 'segments'> {
608
- beginAirport?: string;
609
- endAirport?: string;
610
- segments?: FareComponentSegment[];
611
- }
612
- interface BaggageInformation extends Omit<RawBaggageInformation, 'allowance'> {
613
- allowance?: BaggageAllowanceDesc;
614
- }
615
- interface PassengerInfo extends Omit<RawPassengerInfo, 'fareComponents' | 'taxes' | 'taxSummaries' | 'obFees' | 'baggageInformation'> {
616
- fareComponents?: FareComponent[];
617
- taxes?: TaxDesc[];
618
- taxSummaries?: TaxSummaryDesc[];
619
- obFees?: ObFeeDesc[];
620
- baggageInformation?: BaggageInformation[];
621
- }
622
- interface Fare extends Omit<RawFare, 'passengerInfoList' | 'validatingCarriers'> {
623
- passengerInfoList: Array<{
624
- passengerInfo: PassengerInfo;
625
- }>;
626
- validatingCarriers?: ValidatingCarrierDesc[];
627
- }
628
- interface PricingInformation extends Omit<RawPricingInformation, 'fare'> {
629
- fare: Fare;
630
- }
631
- interface Itinerary extends Omit<RawItinerary, 'legs' | 'pricingInformation'> {
632
- legs: Leg[];
633
- pricingInformation: PricingInformation[];
634
- }
635
- interface ItineraryGroup {
636
- groupDescription: {
637
- legDescriptions: LegDescription[];
638
- };
639
- itineraries: Itinerary[];
640
- }
641
- /**
642
- * `groupedItineraryResponse` con cada `ref` resuelto al objeto completo. Los arrays de
643
- * descriptores (`scheduleDescs`, `legDescs`, …) ya no se exponen: su contenido vive
644
- * dentro de cada itinerario.
645
- */
646
- interface GroupedItineraryResponse {
647
- version: string;
648
- messages: ItineraryMessage[];
649
- statistics?: {
650
- itineraryCount: number;
651
- };
652
- itineraryGroups: ItineraryGroup[];
653
- }
654
-
655
- interface LowFareSearchLocation {
656
- LocationCode: string;
657
- [key: string]: unknown;
658
- }
659
- interface LowFareSearchRequestorId {
660
- Type: string;
661
- ID: string;
662
- CompanyName: {
663
- Code: string;
664
- [key: string]: unknown;
665
- };
666
- [key: string]: unknown;
667
- }
668
- interface LowFareSearchSource {
669
- /** PCC desde el que se busca. El SDK no lo inyecta desde `config.pcc`. */
670
- PseudoCityCode: string;
671
- RequestorID: LowFareSearchRequestorId;
672
- [key: string]: unknown;
673
- }
674
- /** Vuelo exacto a revalidar (`OriginDestinationInformation[].TPA_Extensions.Flight[]`). */
675
- interface LowFareSearchFlight {
676
- /** `"A"` en el ejemplo de Sabre; significado sin confirmar. */
677
- Type: string;
678
- Number: number;
679
- /** Fecha y hora local sin offset. */
680
- DepartureDateTime: string;
681
- ArrivalDateTime: string;
682
- ClassOfService: string;
683
- OriginLocation: LowFareSearchLocation;
684
- DestinationLocation: LowFareSearchLocation;
685
- Airline: {
686
- Marketing: string;
687
- Operating?: string;
688
- [key: string]: unknown;
689
- };
690
- [key: string]: unknown;
691
- }
692
- interface LowFareSearchOriginDestination {
693
- /** Fecha y hora local sin offset, p. ej. `2026-09-11T20:00:00`. */
694
- DepartureDateTime: string;
695
- OriginLocation: LowFareSearchLocation;
696
- DestinationLocation: LowFareSearchLocation;
697
- /** Solo Revalidate Itinerary. `false` en el ejemplo de Sabre; efecto de `true` sin confirmar. */
698
- Fixed?: boolean;
699
- TPA_Extensions?: {
700
- /** Solo Revalidate Itinerary: fija los vuelos exactos del tramo. */
701
- Flight?: LowFareSearchFlight[];
702
- [key: string]: unknown;
703
- };
704
- [key: string]: unknown;
705
- }
706
- interface LowFareSearchTravelPreferences {
707
- /** `0` = solo directos. */
708
- MaxStopsQuantity?: number;
709
- /** Filtro por aerolínea. */
710
- VendorPref?: Array<{
711
- Code: string;
712
- [key: string]: unknown;
713
- }>;
714
- TPA_Extensions?: {
715
- /** Solo Revalidate Itinerary. `"L"` en el ejemplo de Sabre; significado sin confirmar. */
716
- VerificationItinCallLogic?: {
717
- Value: string;
718
- [key: string]: unknown;
719
- };
720
- [key: string]: unknown;
721
- };
722
- [key: string]: unknown;
723
- }
724
- interface LowFareSearchPassengerTypeQuantity {
725
- /** Tipo de pasajero, p. ej. `ADT`. */
726
- Code: string;
727
- Quantity: number;
728
- [key: string]: unknown;
729
- }
730
- interface LowFareSearchTravelerInfoSummary {
731
- AirTravelerAvail: Array<{
732
- PassengerTypeQuantity: LowFareSearchPassengerTypeQuantity[];
733
- [key: string]: unknown;
734
- }>;
735
- [key: string]: unknown;
736
- }
737
- interface LowFareSearchTpaExtensions {
738
- IntelliSellTransaction?: {
739
- /** Propietario de Sabre, p. ej. `50ITINS`; significado exacto sin confirmar. */
740
- RequestType: {
741
- Name: string;
742
- [key: string]: unknown;
743
- };
744
- [key: string]: unknown;
745
- };
746
- [key: string]: unknown;
747
- }
748
- /** Contenido de `OTA_AirLowFareSearchRQ`. */
749
- interface OtaAirLowFareSearchRq {
750
- /** `"5"`. El SDK no lo completa. */
751
- Version: string;
752
- POS: {
753
- Source: LowFareSearchSource[];
754
- [key: string]: unknown;
755
- };
756
- OriginDestinationInformation: LowFareSearchOriginDestination[];
757
- TravelPreferences?: LowFareSearchTravelPreferences;
758
- TravelerInfoSummary: LowFareSearchTravelerInfoSummary;
759
- TPA_Extensions?: LowFareSearchTpaExtensions;
760
- [key: string]: unknown;
761
- }
762
-
763
- /** Body de Bargain Finder Max v5, tal cual lo documenta Sabre. */
764
- interface BargainFinderMaxRequest {
765
- OTA_AirLowFareSearchRQ: OtaAirLowFareSearchRq;
766
- }
767
- /** `groupedItineraryResponse` con las referencias ya resueltas. */
768
- type BargainFinderMaxResponse = GroupedItineraryResponse;
769
- interface RequestOptions {
770
- signal?: AbortSignal;
771
- /** Respuesta cruda del último intento HTTP. El body trae PII: ver `SabreRawResponse`. */
772
- onRawResponse?: SabreRawResponseCallback;
773
- /** Pisa los reintentos del cliente solo para esta request. */
774
- retry?: Partial<RetryOptions>;
775
- }
776
-
777
206
  /** `KeyValuePair` del spec. */
778
207
  interface SeatKeyValuePair {
779
208
  key: string;
@@ -897,6 +326,12 @@ interface SeatFlightLeg {
897
326
  interface SeatSegmentRs extends SeatSegment {
898
327
  isChangeOfGauge?: boolean;
899
328
  flightLegs?: SeatFlightLeg[];
329
+ /**
330
+ * El segmento en la reserva (p. ej. `"10"`). Coincide con `flights[].itemId` y
331
+ * `allSegments[].id` de Get Booking, así que sirve para cruzar el mapa con la reserva. No está en
332
+ * el spec 3.0: llega en `byPnrLocator` (CERT, 2026-11-04, sabre-playground #11).
333
+ */
334
+ reservationSegmentId?: string;
900
335
  }
901
336
  /** `PassengerRs` del spec. */
902
337
  type SeatPassengerRs = SeatPassenger;
@@ -1003,7 +438,18 @@ interface SeatCabinFacility {
1003
438
  positionCodes: string[];
1004
439
  facilityTypeCode: string;
1005
440
  }
1006
- /** `CabinLayoutType` del spec. */
441
+ /**
442
+ * Un pasillo de la cabina: entre qué filas está y entre qué columnas (p. ej. `leftFromColumn: "D"`,
443
+ * `rightFromColumn: "C"`). No está en el spec 3.0: llega en `byPnrLocator` y en
444
+ * `byReservationPayload`, en CERT y en producción.
445
+ */
446
+ interface SeatCabinAisle {
447
+ firstRow: number;
448
+ lastRow: number;
449
+ leftFromColumn: string;
450
+ rightFromColumn: string;
451
+ }
452
+ /** `CabinLayoutType` del spec, más `aisles`, que el spec no trae. */
1007
453
  interface SeatCabinLayout {
1008
454
  columns: Array<{
1009
455
  id: string;
@@ -1018,6 +464,8 @@ interface SeatCabinLayout {
1018
464
  missingSeats?: string[];
1019
465
  facilities?: SeatCabinFacility[];
1020
466
  deckCode?: string;
467
+ /** Los pasillos. No está en el spec 3.0 (ver `SeatCabinAisle`). */
468
+ aisles?: SeatCabinAisle[];
1021
469
  }
1022
470
  /** `CabinCompartment` del spec. */
1023
471
  interface SeatCabinCompartment {
@@ -1033,7 +481,11 @@ interface SeatCabinCompartment {
1033
481
  interface SeatMap {
1034
482
  /** `id` del segmento, del request o de `segments[]` de la respuesta. */
1035
483
  segmentRef: string;
1036
- flightLegRef?: string;
484
+ /**
485
+ * `id` de un `flightLegs[]` del segmento. En un vuelo directo, `byPnrLocator` lo manda como
486
+ * `null` y `byReservationPayload` no lo manda (CERT, 2026-11-04, sabre-playground #11).
487
+ */
488
+ flightLegRef?: string | null;
1037
489
  cabinCompartments?: SeatCabinCompartment[];
1038
490
  }
1039
491
  /** `SeatAvailabilityResponse` del spec 3.0. */
@@ -1054,89 +506,2540 @@ interface SeatAvailabilityIssue {
1054
506
  category: string;
1055
507
  type: string;
1056
508
  description?: string;
1057
- fieldName?: string;
1058
- fieldPath?: string;
1059
- /** Puede traer datos del request: no se copia a los errores del SDK. */
1060
- fieldValue?: string;
509
+ fieldName?: string;
510
+ fieldPath?: string;
511
+ /** Puede traer datos del request: no se copia a los errores del SDK. */
512
+ fieldValue?: string;
513
+ }
514
+ /** `SeatAvailabilityRs` tal cual llega de Sabre. */
515
+ interface RawSeatAvailabilityRs {
516
+ response?: SeatAvailabilityResponse;
517
+ errors?: SeatAvailabilityIssue[];
518
+ warnings?: SeatAvailabilityIssue[];
519
+ }
520
+ /**
521
+ * Resultado de `sabre.air.getSeats`: el `SeatAvailabilityRs` del spec con `errors[]` y
522
+ * `warnings[]` reemplazados por los del SDK.
523
+ */
524
+ interface GetSeatsResponse {
525
+ response: SeatAvailabilityResponse;
526
+ /** `warnings[]` de Sabre. Nunca se lanzan. */
527
+ warnings: SabreWarning[];
528
+ /** `errors[]` que llegaron junto con un `response`: el mapa existe, pero puede faltar algo. */
529
+ errors: SabreBusinessError[];
530
+ }
531
+
532
+ /** Body de Revalidate Itinerary v5: el mismo `OTA_AirLowFareSearchRQ` que BFM, con los vuelos fijados. */
533
+ interface RevalidateItineraryRequest {
534
+ OTA_AirLowFareSearchRQ: OtaAirLowFareSearchRq;
535
+ }
536
+ /** `groupedItineraryResponse` con las referencias ya resueltas. */
537
+ type RevalidateItineraryResponse = GroupedItineraryResponse;
538
+ interface RevalidateItineraryRequestSource {
539
+ /** Request de BFM que produjo el itinerario: aporta `Version`, `POS`, pasajeros y `TPA_Extensions`. */
540
+ search: BargainFinderMaxRequest;
541
+ /** Grupo del itinerario: aporta la fecha de cada tramo. */
542
+ group: ItineraryGroup;
543
+ itinerary: Itinerary;
544
+ }
545
+ /**
546
+ * Arma el request de Revalidate Itinerary para un itinerario devuelto por BFM, fijando cada
547
+ * vuelo en `OriginDestinationInformation[].TPA_Extensions.Flight[]`.
548
+ *
549
+ * - Clases de servicio y fechas: ver `itineraryFlights`. Las horas salen de `time` sin el offset.
550
+ * - `MaxStopsQuantity` es el máximo de conexiones de un tramo, para no rechazar itinerarios
551
+ * con escala.
552
+ * - `Fixed: false` y `VerificationItinCallLogic: "L"` se copian del ejemplo de Sabre; su
553
+ * efecto no está documentado.
554
+ */
555
+ declare function buildRevalidateItineraryRequest(source: RevalidateItineraryRequestSource): RevalidateItineraryRequest;
556
+
557
+ declare class Air {
558
+ #private;
559
+ /** @internal Lo construye el cliente `Sabre`. */
560
+ constructor(transport: RestTransport);
561
+ /**
562
+ * Bargain Finder Max v5: busca itinerarios de menor precio. Devuelve el
563
+ * `groupedItineraryResponse` con las referencias ya resueltas.
564
+ */
565
+ bargainFinderMax(request: BargainFinderMaxRequest, options?: RequestOptions): Promise<BargainFinderMaxResponse>;
566
+ /**
567
+ * Revalidate Itinerary v5: revalida disponibilidad y precio de un itinerario ya elegido,
568
+ * sin sostener inventario. El request se arma con `buildRevalidateItineraryRequest`.
569
+ */
570
+ revalidateItinerary(request: RevalidateItineraryRequest, options?: RequestOptions): Promise<RevalidateItineraryResponse>;
571
+ /**
572
+ * Get Seats v3: mapa de asientos con disponibilidad y precio. Sin `pnrLocator` va a
573
+ * `byReservationPayload`, armado con `buildSeatAvailabilityRequest`; con `pnrLocator`, a
574
+ * `byPnrLocator`. Un `pnrLocator` vacío o mezclado con `segments`, `passengers` o
575
+ * `returnSeatMapsOnlyForSegmentRefs` lanza `TypeError` sin llamar a la red.
576
+ */
577
+ getSeats(request: GetSeatsRequest, options?: RequestOptions): Promise<GetSeatsResponse>;
578
+ }
579
+
580
+ /** Elemento de `errors[]` tal cual lo manda Sabre (`Error` del spec; los avisos comparten forma). */
581
+ interface BookingResponseError {
582
+ /** `BAD_REQUEST`, `APPLICATION_ERROR`, `WARNING`, … */
583
+ category: string;
584
+ /** P. ej. `UNABLE_TO_BOOK_FLIGHTS`. */
585
+ type: string;
586
+ description?: string;
587
+ fieldPath?: string;
588
+ fieldName?: string;
589
+ /** Puede traer datos del request (p. ej. un email): no se copia a los errores del SDK. */
590
+ fieldValue?: string;
591
+ }
592
+
593
+ /** Contains booking information. */
594
+ interface Booking {
595
+ /**
596
+ * The booking reference ID as shown in the source supplier/vendor system. For `SABRE`, this is
597
+ * the PNR Locator or NDC `orderId` value, depending on content type. Ej.: `1SXXX1A2B3C4D`.
598
+ */
599
+ bookingId?: string;
600
+ /**
601
+ * The start date of the booking in [ISO
602
+ * 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. Ej.: `2024-07-09`.
603
+ */
604
+ startDate?: string;
605
+ /**
606
+ * The end date of the booking in [ISO
607
+ * 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. Ej.: `2024-07-19`.
608
+ */
609
+ endDate?: string;
610
+ /**
611
+ * If `true`, the booking is cancelable in full or in segments. Refer to the `refundPenalties`
612
+ * array for more information.
613
+ */
614
+ isCancelable?: boolean;
615
+ /** If true, at least one ticket was issued for the booking. */
616
+ isTicketed?: boolean;
617
+ /**
618
+ * The customer identifier used by their travel agency, also known as the customer number or the
619
+ * DK number. Can be a six, seven, or 10-character string. Ej.: `1234567`.
620
+ */
621
+ agencyCustomerNumber?: string;
622
+ /**
623
+ * Contains details about the creation. El plazo de compra (`TAW`) suele venir en
624
+ * `fares[].creationDetails`, no aquí (CERT, 2026-11-05).
625
+ */
626
+ creationDetails?: BookingCreationDetails;
627
+ /** Contains contact information for the booking. */
628
+ contactInfo?: BookingContactInformation;
629
+ /** Lists the traveler(s) associated with the booking. */
630
+ travelers?: BookingTraveler[];
631
+ /** Contains information about the group the travelers belong to. */
632
+ travelersGroup?: BookingTravelersGroup;
633
+ /** Lists all flights associated with the booking in chronological order. */
634
+ flights?: BookingFlight[];
635
+ /**
636
+ * Lists all the journeys associated with the booking. * For one-way, this is a single element
637
+ * list. * For round-trip, the list contains two journeys. * For multi-destinations, the list
638
+ * contains more than two journeys.
639
+ */
640
+ journeys?: BookingJourney[];
641
+ /**
642
+ * Lists most restrictive fare rule information displayed at the time of purchase. This service
643
+ * applies data from either Tickets or Price Quotes.
644
+ */
645
+ fareRules?: BookingFareRule[];
646
+ /** Lists ancillary offers for selected flights identified by `itemId` flight references. */
647
+ fareOffers?: BookingFareOffer[];
648
+ /**
649
+ * Lists the details for saved fares. This service applies data either from a Price Quote or an
650
+ * Order Item.
651
+ */
652
+ fares?: BookingFare[];
653
+ /** Contains list of remarks added to the PNR. */
654
+ remarks?: BookingRemark[];
655
+ /** Lists all hotel reservations associated with the booking. */
656
+ hotels?: BookingHotel[];
657
+ /** Lists all car rentals associated with the booking. */
658
+ cars?: BookingCar[];
659
+ /** Lists all trains associated with the booking. */
660
+ trains?: BookingTrain[];
661
+ /** Lists all cruises associated with the booking. */
662
+ cruises?: BookingCruise[];
663
+ /**
664
+ * Lists all segments of the booking which overlaps with contextual booking elements such as
665
+ * flights, hotels, cars, trains and so on. This list also contains non-product related segments
666
+ * which exist in an underlying booking system.
667
+ */
668
+ allSegments?: BookingSegmentBasics[];
669
+ /** Lists all electronic flight tickets issued for the travelers. */
670
+ flightTickets?: BookingFlightTicket[];
671
+ /** Contains all total payment amounts across flights, hotels, cars and others. */
672
+ payments?: BookingTotalPayments;
673
+ /** Lists Other Service Information (OSI) sent to or retrieved from a specific vendor. */
674
+ otherServices?: BookingOtherServiceInformation[];
675
+ /** Contains a detailed ticket arrangement for a future date. */
676
+ futureTicketingPolicy?: BookingFutureTicketingPolicy;
677
+ /** Lists all special services associated with a traveler. */
678
+ specialServices?: BookingSpecialService[];
679
+ /**
680
+ * The retention date of the booking. Used optionally to keep the booking active past the date of
681
+ * the last itinerary item (flight, hotel, car, etc.). After this date, the booking is set for
682
+ * purging. Ej.: `2024-01-30`.
683
+ */
684
+ retentionEndDate?: string;
685
+ /** The label associated with the retention date. Ej.: `RETENTION DATE`. */
686
+ retentionLabel?: string;
687
+ /** Lists accounting items from the booking. */
688
+ accountingItems?: BookingAccountingItem[];
689
+ /** Lists nonelectronic tickets from the booking. */
690
+ nonElectronicTickets?: BookingNonElectronicTicket[];
691
+ /** Lists details of the travelers' employers. */
692
+ travelersEmployers?: BookingTravelersEmployer[];
693
+ /** Lists profiles used in the booking. */
694
+ profiles?: BookingProfile[];
695
+ /** Campos que Sabre agregue después de la v1.33. */
696
+ [field: string]: unknown;
697
+ }
698
+ /** Contains details about the creation. */
699
+ interface BookingCreationDetails {
700
+ /**
701
+ * The sine of the Employee Profile Record that created the booking. Not supported for NDC
702
+ * bookings. Ej.: `A12`.
703
+ */
704
+ creationUserSine?: string;
705
+ /** The date in `YYYY-MM-DD` format when the booking was created. Ej.: `2024-01-09`. */
706
+ creationDate?: string;
707
+ /**
708
+ * The time in `HH:MM` format when the booking was created. Not supported for NDC bookings. Ej.:
709
+ * `15:00`.
710
+ */
711
+ creationTime?: string;
712
+ /**
713
+ * The date in the `YYYY-MM-DD` format by which the price is guaranteed by the airline. Applies
714
+ * to NDC content only. Ej.: `2024-01-09`.
715
+ */
716
+ purchaseDeadlineDate?: string;
717
+ /**
718
+ * The time in the `HH:MM` format by which the price is guaranteed by the airline. Applies to NDC
719
+ * content only. Ej.: `15:00`.
720
+ */
721
+ purchaseDeadlineTime?: string;
722
+ /**
723
+ * A unique identifier accredited by the International Air Transport Association (IATA). Ej.:
724
+ * `99119911`.
725
+ */
726
+ agencyIataNumber?: string;
727
+ /** The pseudo city code where the booking was created. Ej.: `AB12`. */
728
+ userWorkPcc?: string;
729
+ /** The pseudo city code of the agent who created the booking. Ej.: `CD34`. */
730
+ userHomePcc?: string;
731
+ /**
732
+ * The identification code for the prime host (global distribution system) associated with the
733
+ * reservation. Ej.: `1S`.
734
+ */
735
+ primeHostId?: string;
736
+ /** The date in `YYYY-MM-DD` format when the booking was last updated. Ej.: `2026-01-09`. */
737
+ lastUpdateDate?: string;
738
+ /**
739
+ * The time in `HH:MM` format when the booking was last updated. Not supported for NDC bookings.
740
+ * Ej.: `15:00`.
741
+ */
742
+ lastUpdateTime?: string;
743
+ /** The number of all booking updates committed. Ej.: `4`. */
744
+ numberOfUpdates?: number;
745
+ }
746
+ /** Contains contact information for the booking. */
747
+ interface BookingContactInformation {
748
+ /** Lists email addresses of travelers or vendors. */
749
+ emails?: string[];
750
+ /** Lists formatted phone numbers of travelers or vendors. */
751
+ phones?: string[];
752
+ /** Lists formatted fax numbers of travelers or vendors. */
753
+ faxes?: string[];
754
+ /** Lists formatted phone numbers to use as vendor emergency contacts. */
755
+ emergencyPhones?: string[];
756
+ }
757
+ /** Contains traveler information. */
758
+ interface BookingTraveler {
759
+ /** The traveler's first name. Ej.: `John`. */
760
+ givenName: string;
761
+ /**
762
+ * The middle name or the initial of the middle name of the traveler. Currently not supported in
763
+ * the Create Booking endpoint. Ej.: `W`.
764
+ */
765
+ middleName?: string;
766
+ /** The traveler's last name. Ej.: `Smith`. */
767
+ surname: string;
768
+ /** The date of birth of the traveler in `YYYY-MM-DD` format. Ej.: `2024-01-23`. */
769
+ birthDate?: string;
770
+ /** Identifies the gender of the traveler. Applies to NDC content only. */
771
+ gender?: BookingGenderEnum;
772
+ /** Identifies the type of the traveler. */
773
+ type?: BookingTravelerTypeEnum;
774
+ /**
775
+ * The ATPCO code of the passenger type used for pricing, ticketing or fare rules of booked
776
+ * flights. Ej.: `ADT`.
777
+ */
778
+ passengerCode?: string;
779
+ /**
780
+ * The ID associated with the traveler. Used for reference purposes after a booking PNR divide
781
+ * operation or traveler name change have been performed. Ej.: `3`.
782
+ */
783
+ nameAssociationId?: string;
784
+ /**
785
+ * An additional code associated with the traveler (the so-called MAN number or statement
786
+ * information) used for accounting or identification purposes. Ej.: `C05`.
787
+ */
788
+ nameReferenceCode?: string;
789
+ /** If `true`, the traveler is associated with a group booking. */
790
+ isGrouped?: boolean;
791
+ /** Lists all email addresses of the traveler. */
792
+ emails?: string[];
793
+ /** Lists all phone numbers associated with the traveler. */
794
+ phones?: BookingPhoneResponse[];
795
+ /** Lists all remarks associated with the traveler. */
796
+ remarks?: BookingRemark[];
797
+ /** The address of the traveler. */
798
+ address?: BookingGenericAddress;
799
+ /** Lists the identity documents applicable for a traveler. */
800
+ identityDocuments?: BookingIdentityDocument[];
801
+ /** Lists the loyalty programs applicable for a traveler. */
802
+ loyaltyPrograms?: BookingLoyaltyProgram[];
803
+ /** Lists the details of ancillary services. */
804
+ ancillaries?: BookingAncillary[];
805
+ /** Lists the indices of forms of payment associated with the traveler. */
806
+ formOfPaymentIndices?: number[];
807
+ /**
808
+ * The ID of an item from the `travelersEmployers` array. Indicates the employer associated with
809
+ * the traveler. Ej.: `1`.
810
+ */
811
+ employerIndex?: number;
812
+ }
813
+ /** Contains information about the group the travelers belong to. */
814
+ interface BookingTravelersGroup {
815
+ /** Contains the ID of the group. Ej.: `3`. */
816
+ itemId?: string;
817
+ /** The name of the group. Ej.: `GROUP ONE`. */
818
+ name?: string;
819
+ /**
820
+ * The total number of travelers within the group. Lap infants are not taken into consideration.
821
+ * Ej.: `1`.
822
+ */
823
+ numberOfTravelers?: number;
824
+ /**
825
+ * The number of remaining travelers within the group whose names are not provided. Lap infants
826
+ * are not taken into consideration. Ej.: `1`.
827
+ */
828
+ numberOfTravelersRemaining?: number;
829
+ }
830
+ /** Contains flight information, identified by `itemId`, for the given booking. */
831
+ type BookingFlight = BookingFlightReference & BookingFlightItem;
832
+ /** Contains details of the flights within the journey. */
833
+ interface BookingJourney {
834
+ /** The three-letter IATA airport code of the first flight in the journey. Ej.: `DFW`. */
835
+ firstAirportCode: string;
836
+ /**
837
+ * The scheduled departure date in `YYYY-MM-DD` format in the airport's time zone. Ej.:
838
+ * `2024-07-09`.
839
+ */
840
+ departureDate: string;
841
+ /** The scheduled time of departure in `HH:MM` format. Ej.: `09:15`. */
842
+ departureTime: string;
843
+ /** The three-letter IATA airport code of the last flight in the journey. Ej.: `HNL`. */
844
+ lastAirportCode: string;
845
+ /** The total number of flights in the journey. Ej.: `1`. */
846
+ numberOfFlights: number;
847
+ }
848
+ /** Contains eligibility requirements and travel restrictions for a flight. */
849
+ interface BookingFareRule {
850
+ /** The three-letter IATA airport code of the origin airport. Ej.: `DFW`. */
851
+ originAirportCode?: string;
852
+ /** The three-letter IATA airport code of the destination airport. Ej.: `ATL`. */
853
+ destinationAirportCode?: string;
854
+ /**
855
+ * The two-letter [IATA](https://www.iata.org/about/members/Pages/airline-list.aspx?All=true)
856
+ * designator code of the airline that owns the fare rule. Ej.: `AA`.
857
+ */
858
+ owningAirlineCode: string;
859
+ /**
860
+ * The ATPCO code of the passenger type. Applicable travelers are identified by the passenger
861
+ * type code. Ej.: `ADT`.
862
+ */
863
+ passengerCode?: string;
864
+ /**
865
+ * If `true`, the fare can be refunded in total or in segments. Refer to the `refundPenalties`
866
+ * array for more information.
867
+ */
868
+ isRefundable?: boolean;
869
+ /**
870
+ * Lists estimated penalty details associated with a refund. Estimates assume the highest
871
+ * possible refund penalty is applied.
872
+ */
873
+ refundPenalties?: BookingFareRulePenalty[];
874
+ /**
875
+ * If `true`, the fare can be exchanged with or without additional cost. Refer to the
876
+ * `exchangePenalties` array for more information.
877
+ */
878
+ isChangeable?: boolean;
879
+ /**
880
+ * Lists estimated penalty details associated with a fare exchange. Estimates assume that all
881
+ * fare components are changed and the highest applicable penalty is applied.
882
+ */
883
+ exchangePenalties?: BookingFareRulePenalty[];
884
+ /**
885
+ * If `true`, the order can be cancelled with or without additional cost. Refer to the
886
+ * `cancelPenalties` array for more information.
887
+ */
888
+ isCancelable?: boolean;
889
+ /** Lists conditions and payments associated with order cancellation. */
890
+ cancelPenalties?: BookingFareRulePenalty[];
891
+ }
892
+ /**
893
+ * Contains ancillary offer for selected flights identified by `itemId` flight references and for
894
+ * selected travelers identified by indices in `travelers` list.
895
+ */
896
+ interface BookingFareOffer {
897
+ /**
898
+ * Indicates to which travelers from the `travelers` list the ancillary offer belongs to. If the
899
+ * offer is valid for all travelers, this list is not provided.
900
+ */
901
+ travelerIndices?: number[];
902
+ /**
903
+ * Lists flights referenced by flight `itemId`. If the offer is valid for all flights, this list
904
+ * is not provided.
905
+ */
906
+ flights?: BookingFlightReference[];
907
+ /** Indicates allowed cabin baggage (carry-on) included in the ticket price. */
908
+ cabinBaggageAllowance?: BookingBaggageAllowance;
909
+ /** Indicates allowed checked baggage included in the ticket price. */
910
+ checkedBaggageAllowance?: BookingBaggageAllowance;
911
+ /** Lists cabin baggage (carry-on) policies and service fees. */
912
+ cabinBaggageCharges?: BookingBaggagePolicy[];
913
+ /** Lists checked baggage policies and service fees. */
914
+ checkedBaggageCharges?: BookingBaggagePolicy[];
915
+ }
916
+ /** Contains construction details of a specific fare. */
917
+ interface BookingFare {
918
+ /**
919
+ * Contains details about the fare creation. Aquí llega el plazo de compra (`TAW`):
920
+ * `purchaseDeadlineDate/Time`. En CERT llegó solo aquí y no en `Booking.creationDetails`, aunque
921
+ * el spec lo define en los dos (2026-11-05).
922
+ */
923
+ creationDetails?: BookingFareCreationDetails;
924
+ /**
925
+ * The two-letter [IATA](https://www.iata.org/about/members/Pages/airline-list.aspx?All=true)
926
+ * designator code of the airline that validated the fare. Ej.: `AA`.
927
+ */
928
+ airlineCode?: string;
929
+ /**
930
+ * Coded fare construction information. Ej.: `BUE AA DFW Q430.00 5740.00NUC6170.00END ROE1.00
931
+ * XT175.50TQ175.50QO315.90US96.50YC122.90XY69.50XA`.
932
+ */
933
+ fareCalculationLine?: string;
934
+ /** The tour code applied to price the fare. Ej.: `123456789ABCDE`. */
935
+ tourCode?: string;
936
+ /**
937
+ * If `true`, the fare used for pricing is negotiated. If `false`, the fare used for pricing is
938
+ * public.
939
+ */
940
+ isNegotiatedFare?: boolean;
941
+ /**
942
+ * Indicates to which travelers from the `travelers` list the fare belongs to. If the fare is
943
+ * applicable for all travelers, this list is not provided.
944
+ */
945
+ travelerIndices?: number[];
946
+ /** Contains commission details applicable to the fare. */
947
+ commission?: BookingCommission;
948
+ /** Lists the components used to construct the fare. */
949
+ fareConstruction?: BookingFareComponent[];
950
+ /** Lists the taxes applied to the fare. */
951
+ taxBreakdown?: BookingTaxComponent[];
952
+ /** Contains payment information for the service. */
953
+ totals?: BookingTotalValues;
954
+ /** Lists services and fees that are bundled with the selected fare. */
955
+ bundledServicesAndFees?: BookingFareService[];
956
+ /** Contains base fare amount in an original currency. */
957
+ originalTotalValues?: BookingOriginalTotalValues;
958
+ /**
959
+ * The one-letter type code used by the Sabre system that indicates how the fare was priced. Not
960
+ * applicable for NDC.
961
+ */
962
+ pricingTypeCode?: BookingPricingTypeCodeEnum;
963
+ /** The meaningful value describing how the fare was priced. */
964
+ pricingTypeName?: BookingPricingTypeNameEnum;
965
+ /**
966
+ * The one-letter type code used by the Sabre system that indicates the status of the fare. Not
967
+ * applicable for NDC.
968
+ */
969
+ pricingStatusCode?: BookingPricingStatusCodeEnum;
970
+ /** The meaningful value describing the status of a fare. */
971
+ pricingStatusName?: BookingPricingStatusNameEnum;
972
+ /**
973
+ * If `true`, the fare pricing is valid for the agency. If `false`, the agency's local date
974
+ * exceeds the purchase date. **`false` quiere decir que el plazo de compra (`TAW`) ya pasó**, no
975
+ * que el precio sea inválido: sale de `PriceQuote/Indicators/@isExpired` (Q-091). El `TAW` viene
976
+ * en `creationDetails.purchaseDeadlineDate/Time` de esta tarifa.
977
+ */
978
+ hasValidPricing?: boolean;
979
+ /**
980
+ * Contains details of the initially offered fare. To obtain this data, the Employee Profile
981
+ * Record (EPR) needs to include the ORGFQD keyword.
982
+ */
983
+ initialSellingFare?: BookingInitialSellingFare;
984
+ /** The type code of the traveler requested when pricing the fare. Ej.: `C08`. */
985
+ requestedTravelerType?: string;
986
+ /**
987
+ * The type code of the traveler returned in the pricing response and stored in the price quote.
988
+ * Ej.: `C08`.
989
+ */
990
+ pricedTravelerType?: string;
991
+ /** The code describing the source of the fare. Ej.: `PQ`. */
992
+ recordTypeCode?: string;
993
+ /** The name describing the source of the fare. Ej.: `Price Quote`. */
994
+ recordTypeName?: string;
995
+ /** The ID of the fare source. Ej.: `12`. */
996
+ recordId?: string;
997
+ }
998
+ /** Contains remark details stored within the booking. */
999
+ interface BookingRemark {
1000
+ /** Identifies the type of remark. */
1001
+ type?: BookingRemarkTypeEnum;
1002
+ /** The character coding used for the `ALPHA_CODED` remark type. Ej.: `T`. */
1003
+ alphaCode?: string;
1004
+ /** The original text of the remark. Ej.: `XXATW/`. */
1005
+ text?: string;
1006
+ }
1007
+ /** Contains hotel reservation information identified by `itemId` and associated with a booking. */
1008
+ type BookingHotel = BookingHotelReference & BookingHotelItem;
1009
+ /** Contains car rental information, identified by `itemId`, for the given booking. */
1010
+ type BookingCar = BookingCarReference & BookingCarItem;
1011
+ /** Contains train reservation information, identified by `itemId`, for the given booking. */
1012
+ type BookingTrain = BookingTrainReference & BookingTrainItem;
1013
+ /** Contains cruise reservation information, identified by `itemId`, for the given booking. */
1014
+ type BookingCruise = BookingCruiseReference & BookingCruiseItem;
1015
+ /** Contains essential information which is common for all possible types of booking segments. */
1016
+ type BookingSegmentBasics = BookingSegmentReference & BookingSegmentBasicAttributes;
1017
+ /** Contains information about an electronic flight ticket or EMD issued for a traveler. */
1018
+ interface BookingFlightTicket {
1019
+ /** The electronic flight ticket number. Ej.: `0167489825830`. */
1020
+ number: string;
1021
+ /** The date the electronic flight ticket was issued in `YYYY-MM-DD` format. Ej.: `2024-07-01`. */
1022
+ date: string;
1023
+ /** The unique identifier of an IATA-accredited agency that issued the ticket. Ej.: `12344321`. */
1024
+ agencyIataNumber?: string;
1025
+ /**
1026
+ * The two-letter [IATA](https://www.iata.org/about/members/Pages/airline-list.aspx?All=true)
1027
+ * designator code of the issuing airline. Ej.: `AA`.
1028
+ */
1029
+ airlineCode: string;
1030
+ /**
1031
+ * Specifies the traveler from the `travelers` array whose name is associated with the ticket.
1032
+ * Ej.: `1`.
1033
+ */
1034
+ travelerIndex: number;
1035
+ /** Lists all coupons of booked and ticketed flights referenced by the flight `itemId`. */
1036
+ flightCoupons: BookingFlightReferenceCoupon[];
1037
+ /**
1038
+ * Lists all coupons of booked and ticketed flights. The corresponding flight `itemId` is
1039
+ * provided if available. If a coupon cannot be associated with any flight present in the booking
1040
+ * (e.g. due to schedule change), the `itemId` is hidden, however the coupon status details are
1041
+ * still returned.
1042
+ */
1043
+ allCoupons?: BookingTicketCoupon[];
1044
+ /** Contains payment amounts for ticketed flights. */
1045
+ payment: BookingTotalValues;
1046
+ /**
1047
+ * If `true`, the ticket is part of a larger travel package (e.g., Inclusive Tour) or group
1048
+ * booking (e.g., Bulk Ticket), often offered at a discounted rate. Therefore, ticket payment
1049
+ * details obtained from the airline database may contain "0.0".
1050
+ */
1051
+ isBundledTicket?: boolean;
1052
+ /** Identifies the current status of the ticket, e.g. `Issued`. */
1053
+ ticketStatusName?: BookingTicketStatusEnum;
1054
+ /** The code of the ticket status. Ej.: `TE`. */
1055
+ ticketStatusCode?: string;
1056
+ /** The pseudo city code of the agency which issued the ticket or EMD. Ej.: `G7HE`. */
1057
+ ticketingPcc?: string;
1058
+ /** Contains commission applied during ticketing. */
1059
+ commission?: BookingCommission;
1060
+ }
1061
+ /** Contains all total payment amounts across flights, hotels, car reservations and others. */
1062
+ interface BookingTotalPayments {
1063
+ /**
1064
+ * Lists all flight payments, per each currency used. For ticketed bookings it sums all payments
1065
+ * irrespective of the document status. For non-ticketed bookings it sums payments from all price
1066
+ * quotes stored in the booking.
1067
+ */
1068
+ flightTotals?: BookingTotalValues[];
1069
+ /**
1070
+ * Lists all flight payments, per each currency used, and is applicable only for ticketed
1071
+ * bookings. It sums up all payments with the exclusion of Refunded/Voided tickets, obtained
1072
+ * directly from the ticket data.
1073
+ */
1074
+ flightCurrentTotals?: BookingTotalValues[];
1075
+ /** Lists all hotel payments, per each currency used. */
1076
+ hotelTotals?: BookingTotalValues[];
1077
+ /** Lists all car rental payments, per each currency used. */
1078
+ carTotals?: BookingTotalValues[];
1079
+ /** Lists all train payments, per each currency used. */
1080
+ trainTotals?: BookingTotalValues[];
1081
+ /** Lists all the payment methods that are stored in the booking. */
1082
+ formsOfPayment?: BookingFormOfPaymentResponse[];
1083
+ /**
1084
+ * Lists all ancillary payments made in a single currency. For fulfilled ancillaries, it sums all
1085
+ * payments for items marked with the appropriate ancillary status code. For non-fulfilled
1086
+ * ancillaries, it sums pending payments for all ancillary items stored in the booking.
1087
+ */
1088
+ ancillaryTotals?: BookingGenericTotalValues[];
1089
+ }
1090
+ /** Contains Other Service Information (OSI) sent to or retrieved from a specific vendor. */
1091
+ type BookingOtherServiceInformation = BookingCommonOtherServiceInformation & {
1092
+ /** The two-character code of the hotel chain. Ej.: `BY`. */
1093
+ chainCode?: string;
1094
+ /** The two-letter code of the car rental vendor. Ej.: `ZE`. */
1095
+ vendorCode?: string;
1096
+ };
1097
+ /** Contains a detailed ticket arrangement for a future date. */
1098
+ interface BookingFutureTicketingPolicy {
1099
+ /** Used to specify a pseudocity code. Ej.: `G7RE`. */
1100
+ ticketingPcc?: string;
1101
+ /** Used to specify a queue number. Ej.: `55`. */
1102
+ queueNumber?: string;
1103
+ /** The ticketing date. Ej.: `2024-07-09`. */
1104
+ ticketingDate?: string;
1105
+ /** The ticketing time in `HH:MM` format. Ej.: `11:00`. */
1106
+ ticketingTime?: string;
1107
+ /** Free text comment. Ej.: `TICKET BEFORE TUES`. */
1108
+ comment?: string;
1109
+ }
1110
+ /** Contains special service information (SSR) for a specific traveler. */
1111
+ interface BookingSpecialService {
1112
+ /**
1113
+ * Lists the travelers within the travelers list the special service belongs to. This list is not
1114
+ * provided for special services without explicit traveler assignation.
1115
+ */
1116
+ travelerIndices?: number[];
1117
+ /**
1118
+ * Lists flights referenced by flight `itemId`. Multiple flight IDs can be returned for a single
1119
+ * special service.
1120
+ */
1121
+ flights?: BookingFlightReference[];
1122
+ /**
1123
+ * Defines the category of the special service request sent to the airline. Visit the official
1124
+ * IATA website for the list of currently supported SSR code references. Some airline-specific
1125
+ * codes may be missing within these IATA resources. Ej.: `WCHR`.
1126
+ */
1127
+ code?: string;
1128
+ /**
1129
+ * The name of the special service request. This property is not returned when the name is
1130
+ * unknown. Ej.: `Wheelchair/Passenger can walk up stairs`.
1131
+ */
1132
+ name?: string;
1133
+ /**
1134
+ * Miscellaneous free text information used in teletype messages sent to or from the airline. May
1135
+ * contain additional special service details which are mandatory to distinguish product
1136
+ * characteristics on the airline's side. Ej.: `/PREPAID`.
1137
+ */
1138
+ message?: string;
1139
+ /**
1140
+ * The two-letter status code used by vendors. It indicates the special service status. Ej.:
1141
+ * `HK`.
1142
+ */
1143
+ statusCode?: string;
1144
+ /** The meaningful value describing special service status. */
1145
+ statusName?: BookingStatusNameEnum;
1146
+ }
1147
+ /** Contains accounting data correlated with a fulfilled document. Supported for ATPCO content only. */
1148
+ interface BookingAccountingItem {
1149
+ /**
1150
+ * Identifies the association type of the accounting item, which indicates to whom the fare is
1151
+ * applied.
1152
+ */
1153
+ fareApplicationType?: BookingFareApplicationTypeEnum;
1154
+ /** Identifies the payment method of the accounting item. */
1155
+ formOfPaymentType?: BookingAccountingFormOfPaymentTypeEnum;
1156
+ /** Identifies the ticket operation which triggered automatic accounting item creation. */
1157
+ creationType?: BookingAccountingItemCreationTypeEnum;
1158
+ /**
1159
+ * The two-letter [IATA](https://www.iata.org/about/members/Pages/airline-list.aspx?All=true)
1160
+ * designator code of the marketing airline. Ej.: `AA`.
1161
+ */
1162
+ airlineCode?: string;
1163
+ /** The number of the electronic document. Ej.: `2200011234567`. */
1164
+ ticketNumber?: string;
1165
+ /** Contains commission details applicable to the fare. */
1166
+ commission?: BookingCommission;
1167
+ /** The monetary amount of the fare paid for the ticket. Ej.: `520.00`. */
1168
+ fareAmount?: string;
1169
+ /** The monetary amount of the tax applied to the fare. Ej.: `123.00`. */
1170
+ taxAmount?: string;
1171
+ /**
1172
+ * Lists the indices of travelers in the `travelers` array to whom the particular accounting item
1173
+ * is assigned. Returned only if `fareApplication` is set to `Single Traveler`.
1174
+ */
1175
+ travelerIndices?: number[];
1176
+ /** Indicates the type of tariff basis. */
1177
+ tariffBasisType?: BookingTariffBasisTypeEnum;
1178
+ /** The number of a credit or debit card. Ej.: `4537156488578956`. */
1179
+ cardNumber?: string;
1180
+ /** The vendor code of a credit or debit card. Ej.: `VI`. */
1181
+ cardTypeCode?: string;
1182
+ /** The three-letter ISO 4217 currency code. Ej.: `USD`. */
1183
+ currencyCode?: string;
1184
+ /** Contains details of Goods and Services Tax (GST). */
1185
+ goodsAndServicesTax?: BookingGoodsAndServicesTax;
1186
+ /**
1187
+ * Contains order invoice number. Supported for NDC only. This field is deprecated and will be
1188
+ * removed in future versions. Use invoiceNumbers instead. Ej.: `0266839`.
1189
+ */
1190
+ invoiceNumber?: string;
1191
+ /** Lists order invoice numbers. Supported for NDC only. */
1192
+ invoiceNumbers?: string[];
1193
+ /**
1194
+ * The original text of the ATPCO accounting line. Ej.: `LH$5519872356/ 0.00/ 3059.00/
1195
+ * 624.63/ONE/CA 1.1DOE JOHN/1/F/E/`.
1196
+ */
1197
+ text?: string;
1198
+ /**
1199
+ * The manual approval code of a credit or debit card. Created during fulfillment step. Ej.:
1200
+ * `265599`.
1201
+ */
1202
+ approvalCode?: string;
1203
+ }
1204
+ /** Contains a nonelectronic ticket. Supported for ATPCO content only. */
1205
+ interface BookingNonElectronicTicket {
1206
+ /** Identifies the status of a nonelectronic ticket. */
1207
+ ticketStatus?: BookingNonElectronicTicketStatusEnum;
1208
+ /** The number of the nonelectronic ticket. Ej.: `0011234567899`. */
1209
+ ticketNumber?: string;
1210
+ /** The index of the traveler to whom the ticket is assigned. Ej.: `1`. */
1211
+ travelerIndex?: number;
1212
+ /** The code of the user that issued the ticket. Not supported for NDC bookings. Ej.: `A12`. */
1213
+ ticketingUserCode?: string;
1214
+ /** The pseudo city code of the agency which issued the ticket. Ej.: `G7HE`. */
1215
+ ticketingPcc?: string;
1216
+ /**
1217
+ * The date the nonelectronic ticket was issued, provided in `YYYY-MM-DD` format in the issuing
1218
+ * agency's time zone. Ej.: `2024-07-01`.
1219
+ */
1220
+ date?: string;
1221
+ /**
1222
+ * The time the nonelectronic ticket was issued, provided in `HH:MM` format in the issuing
1223
+ * agency's time zone. Ej.: `09:15`.
1224
+ */
1225
+ time?: string;
1226
+ }
1227
+ /** Contains details of the traveler's employer. */
1228
+ interface BookingTravelersEmployer {
1229
+ /** Identifies the type of employer ID. */
1230
+ idType?: BookingEmployerIdTypeEnum;
1231
+ /** The unique identifier of the employer. Ej.: `22AAAAA0000A1Z5`. */
1232
+ employerId?: string;
1233
+ /** The name of the employer. Ej.: `Sabre`. */
1234
+ employerName?: string;
1235
+ /** Lists all phone numbers associated with the employer. */
1236
+ phones?: BookingPhone[];
1237
+ /** Lists all email addresses of the employer. */
1238
+ emails?: string[];
1239
+ /**
1240
+ * The street name and house number accompanied with the number of apartment, unit, or suite, if
1241
+ * applicable. Ej.: `1230 Ellen Ave, apt 10`.
1242
+ */
1243
+ street?: string;
1244
+ /** The name of the city. Ej.: `Dallas`. */
1245
+ city?: string;
1246
+ /** The name or code of the state or province. Ej.: `TX`. */
1247
+ stateProvince?: string;
1248
+ /** The zip or postal code. Ej.: `75063`. */
1249
+ postalCode?: string;
1250
+ /** The two- or three-letter ISO 3166-1 country code. Ej.: `US`. */
1251
+ countryCode?: string;
1252
+ }
1253
+ /** Contains parameters needed to retrieve profile information. */
1254
+ interface BookingProfile {
1255
+ /** A unique profile type code. Ej.: `TVL`. */
1256
+ profileTypeCode?: string;
1257
+ /** The unique profile ID number. Ej.: `720320171`. */
1258
+ uniqueId?: string;
1259
+ /** The traveler index that is associated with the TVL profile. Ej.: `1`. */
1260
+ travelerIndex?: number;
1261
+ }
1262
+ /** Identifies the gender of the traveler. */
1263
+ type BookingGenderEnum = 'FEMALE' | 'MALE' | 'INFANT_FEMALE' | 'INFANT_MALE' | 'UNDISCLOSED' | 'UNDEFINED' | (string & {});
1264
+ /** Identifies the type of the traveler. */
1265
+ type BookingTravelerTypeEnum = 'ADULT' | 'AGENT' | 'AIRLINE' | 'CHILD' | 'EDUCATION' | 'GOVERNMENT' | 'GROUP' | 'INFANT' | 'MILITARY' | 'SENIOR' | 'SPECIAL' | 'YOUTH' | (string & {});
1266
+ /** Contains phone details. */
1267
+ interface BookingPhoneResponse {
1268
+ /** The formatted phone number of the traveler. Ej.: `+1-555-123-4567`. */
1269
+ number: string;
1270
+ /**
1271
+ * The type of the phone number. Available phone type codes are `H` - home, `B` - business, `C` -
1272
+ * cell and `M` - mobile. Ej.: `M`.
1273
+ */
1274
+ label?: string;
1275
+ }
1276
+ /** Contains address information. */
1277
+ type BookingGenericAddress = BookingAddress & {
1278
+ /** The name of the person or the company/organization. Ej.: `John Smith`. */
1279
+ name?: string;
1280
+ /**
1281
+ * The full address provided as free text. Use this alternative address representation when a
1282
+ * structured address is not available. Ej.: `John Smith 1230 Ellen Ave, Apt 10 Dallas, TX 75063
1283
+ * US `.
1284
+ */
1285
+ freeText?: string;
1286
+ };
1287
+ /** Contains details of an identity document. */
1288
+ interface BookingIdentityDocument {
1289
+ /** The unique identifier of the document. Ej.: `0123456789`. */
1290
+ documentNumber?: string;
1291
+ /** Identifies the type of passenger document. */
1292
+ documentType: BookingDocumentTypeEnum;
1293
+ /** Identifies the subtype of passenger document (for DocumentType FISCAL_ID). */
1294
+ documentSubType?: BookingDocumentSubTypeEnum;
1295
+ /**
1296
+ * Identifies the type of the passenger’s passport document. Applies to identity documents with
1297
+ * the `documentType` parameter set to `PASSPORT`. If the passport document type cannot be
1298
+ * determined, it is displayed as `Unknown`.
1299
+ */
1300
+ passportType?: BookingPassportTypeResponseEnum;
1301
+ /**
1302
+ * Identifies the type of the passenger’s visa document. Applies to identity documents with the
1303
+ * `documentType` parameter set to `VISA`. If the visa document type cannot be determined, it is
1304
+ * displayed as `Unknown`.
1305
+ */
1306
+ visaType?: BookingVisaTypeResponseEnum;
1307
+ /** The expiration date of the identity document in the `YYYY-MM-DD` format. Ej.: `2024-07-09`. */
1308
+ expiryDate?: string;
1309
+ /**
1310
+ * The country issuing the passenger document provided as a two- or three-letter ISO 3166 code.
1311
+ * Ej.: `US`.
1312
+ */
1313
+ issuingCountryCode?: string;
1314
+ /**
1315
+ * The country the passenger resides in or their nationality country provided as a two- or
1316
+ * three-letter ISO 3166 code. Ej.: `US`.
1317
+ */
1318
+ residenceCountryCode?: string;
1319
+ /** The name of the place where the document was issued. Ej.: `ROME`. */
1320
+ placeOfIssue?: string;
1321
+ /**
1322
+ * The passenger's place of birth, fully spelled out. This is mainly used for the `VISA` document
1323
+ * type. Ej.: `KOSZALIN`.
1324
+ */
1325
+ placeOfBirth?: string;
1326
+ /**
1327
+ * The two- or three-letter ISO 3166 country code where the document is valid. This is mainly
1328
+ * used for the `VISA` document type. Ej.: `US`.
1329
+ */
1330
+ hostCountryCode?: string;
1331
+ /**
1332
+ * The date the identity document was issued in `YYYY-MM-DD` format. This is mainly used for the
1333
+ * `visa` document type. Ej.: `2024-07-09`.
1334
+ */
1335
+ issueDate?: string;
1336
+ /** The traveler's first name. Ej.: `John`. */
1337
+ givenName?: string;
1338
+ /** The traveler's middle name. (NDC not supported). Ej.: `Jack`. */
1339
+ middleName?: string;
1340
+ /** The traveler's last name. Ej.: `Smith`. */
1341
+ surname?: string;
1342
+ /** The traveler's date of birth in the `YYYY-MM-DD` format. Ej.: `2024-12-02`. */
1343
+ birthDate?: string;
1344
+ /** Identifies the gender of the traveler. */
1345
+ gender?: BookingGenderEnum;
1346
+ /** If `true`, indicates the primary passport holder of a document issued for multiple travelers. */
1347
+ isPrimaryDocumentHolder?: boolean;
1348
+ /** If `true`, the identity document applies to a lap child. */
1349
+ isLapChildDocument?: boolean;
1350
+ /** Residence or destination address of the traveler. */
1351
+ residenceDestinationAddress?: BookingAddress;
1352
+ /**
1353
+ * Lists the indices of flights within a booking. This property will be deprecated in the future
1354
+ * major version of this API. If you wish to list documents associated with the flight, use the
1355
+ * `identityDocuments` property within the `Flight` object.
1356
+ */
1357
+ flightIndices?: number[];
1358
+ /**
1359
+ * The unique identifier of the document. Ej.:
1360
+ * `76c2817b178cc264fa44cf85df1da5fb9e1b963006b2339aa5edc09129415bba5fcf5bf91a5f`.
1361
+ */
1362
+ itemId?: string;
1363
+ /**
1364
+ * The traveler's citizenship country provided as a two- or three-letter ISO 3166 code. Ej.:
1365
+ * `US`.
1366
+ */
1367
+ citizenshipCountryCode?: string;
1368
+ }
1369
+ /** Contains details of the passenger's loyalty program, such as a frequent flyer card. */
1370
+ interface BookingLoyaltyProgram {
1371
+ /** The two-letter code that issued the number such as the IATA airline code. Ej.: `AA`. */
1372
+ supplierCode?: string;
1373
+ /** Contains loyalty program type codes. */
1374
+ programType?: BookingProgramTypeEnum;
1375
+ /**
1376
+ * The traveler membership number for loyalty program such as the frequent flyer number. Ej.:
1377
+ * `987654321`.
1378
+ */
1379
+ programNumber: string;
1380
+ /** The level reached by the traveler in the loyalty program. Ej.: `3`. */
1381
+ tierLevel?: number;
1382
+ /** The two-letter receiver code, such as IATA airline code. Ej.: `UA`. */
1383
+ receiverCode?: string;
1384
+ }
1385
+ /** Contains the details for an ancillary. */
1386
+ interface BookingAncillary {
1387
+ /** The ID of an ancillary item. Ej.: `12`. */
1388
+ itemId?: string;
1389
+ /** The commercial name of the ancillary. Ej.: `UPTO33LB 15KG BAGGAGE`. */
1390
+ commercialName?: string;
1391
+ /** Quantity of ancillary items. Ej.: `1`. */
1392
+ numberOfItems?: number;
1393
+ /** The IATA-defined reason for issuance code (RFIC). Ej.: `C`. */
1394
+ reasonForIssuanceCode?: string;
1395
+ /**
1396
+ * Specifies the IATA-defined reason for the issuance code (RFIC) applicable to the Electronic
1397
+ * Miscellaneous Document (EMD) that will be issued for the subcode identified in this record.
1398
+ * The UNKNOWN option is used for the read-only purpose by getBooking API.
1399
+ */
1400
+ reasonForIssuanceName?: BookingReasonForIssuanceEnum;
1401
+ /**
1402
+ * The issuance subcode (`RFISC`) is an industry-defined or airline-defined code identifying a
1403
+ * specific type of service. Industry-defined subcodes are available for all airlines to use,
1404
+ * have standard definitions, and are maintained by
1405
+ * [ATPCO](https://www.atpco.net/sites/atpco-public/files/all_pdfs/Opt_Scvs_Industry_Sub_Codes_Online_C.pdf).
1406
+ * Airline-defined subcodes are available for specific airlines only, and are defined and
1407
+ * maintained by the airline utilizing the code. Ej.: `05Z`.
1408
+ */
1409
+ subcode?: string;
1410
+ /**
1411
+ * The two-letter [IATA](https://www.iata.org/about/members/Pages/airline-list.aspx?All=true)
1412
+ * designator code of the airline that owns the service. Ej.: `EY`.
1413
+ */
1414
+ airlineCode?: string;
1415
+ /**
1416
+ * The two-letter [IATA](https://www.iata.org/about/members/Pages/airline-list.aspx?All=true)
1417
+ * designator code of the airline providing the service. Mutually exclusive with the `source`
1418
+ * property. Ej.: `EY`.
1419
+ */
1420
+ vendorCode?: string;
1421
+ /**
1422
+ * The application source providing ancillary service. Mutually exclusive with the `vendorCode`
1423
+ * property.
1424
+ */
1425
+ source?: BookingAncillarySourceEnum;
1426
+ /** The electronic document number. Ej.: `6074333222111`. */
1427
+ electronicMiscellaneousDocumentNumber?: string;
1428
+ /** If true, the ancilliary is refundable. */
1429
+ isRefundable?: boolean;
1430
+ /** If true, the ancilliary has a Commission included. */
1431
+ isCommissionable?: boolean;
1432
+ /**
1433
+ * Identifies the applicability of the ancillary item to the flights in the booking. Can be
1434
+ * `Single` (an ancillary item applies to a single flight/sector of the booking), `Multiple` (an
1435
+ * ancillary item applies to the portion of flights in the booking), or `Unknown` (applicability
1436
+ * of the ancillary cannot be determined). This information is required when
1437
+ * `electronicMiscellaneousDocumentType` has the value `OTHER_THAN_EMD`.
1438
+ */
1439
+ flightApplicabilityType?: BookingFlightApplicabilityTypeEnum;
1440
+ /**
1441
+ * Lists flights referenced by flight `itemId`. Multiple flight IDs can be returned for a single
1442
+ * ancillary item.
1443
+ */
1444
+ flights?: BookingFlightReference[];
1445
+ /** The two-letter status code used by vendors. It indicates the booking status. Ej.: `HD`. */
1446
+ statusCode?: string;
1447
+ /** The meaningful value describing the booking status. */
1448
+ statusName?: BookingAncillaryStatusNameEnum;
1449
+ /** Contains payment information for the service. */
1450
+ totals?: BookingTotalValues;
1451
+ /** Lists tax information associated with the ancillary. */
1452
+ taxes?: BookingTax[];
1453
+ /**
1454
+ * The category of the special service associated with the selected ancillary service. Ej.:
1455
+ * `ABAG`.
1456
+ */
1457
+ specialServiceCode?: string;
1458
+ }
1459
+ /** Contains flight object reference by `itemId`. */
1460
+ interface BookingFlightReference {
1461
+ /** The ID of a flight. Ej.: `12`. */
1462
+ itemId: string;
1463
+ }
1464
+ /** Contains flight information for the given booking. */
1465
+ interface BookingFlightItem {
1466
+ /**
1467
+ * The booking reference ID in the carrier's system. For example, this value would reflect the
1468
+ * PNR Locator for American Airlines. Ej.: `NIEBNY`.
1469
+ */
1470
+ confirmationId?: string;
1471
+ /** Identifies applicable type of the source of booking flight. */
1472
+ sourceType?: BookingFlightSourceEnum;
1473
+ /** The flight number associated with the marketing carrier. Ej.: `123`. */
1474
+ flightNumber: number;
1475
+ /**
1476
+ * The two-letter [IATA](https://www.iata.org/about/members/Pages/airline-list.aspx?All=true)
1477
+ * designator code of the marketing airline. Ej.: `AA`.
1478
+ */
1479
+ airlineCode: string;
1480
+ /** The name of the marketing airline. Ej.: `AMERICAN AIRLINES`. */
1481
+ airlineName?: string;
1482
+ /** The flight number associated with the operating carrier. Ej.: `321`. */
1483
+ operatingFlightNumber?: number;
1484
+ /**
1485
+ * The two-letter [IATA](https://www.iata.org/about/members/Pages/airline-list.aspx?All=true)
1486
+ * designator code of the operating airline. Ej.: `UA`.
1487
+ */
1488
+ operatingAirlineCode?: string;
1489
+ /** The name of the operating airline. Ej.: `UNITED AIRLINES`. */
1490
+ operatingAirlineName?: string;
1491
+ /** The three-letter IATA airport code of the origin airport. Ej.: `DFW`. */
1492
+ fromAirportCode: string;
1493
+ /** The three-letter IATA airport code of the destination airport. Ej.: `HNL`. */
1494
+ toAirportCode: string;
1495
+ /**
1496
+ * The scheduled departure date in `YYYY-MM-DD` format in the airport's time zone. Ej.:
1497
+ * `2024-07-09`.
1498
+ */
1499
+ departureDate: string;
1500
+ /** The scheduled time of departure in `HH:MM` format. Ej.: `09:15`. */
1501
+ departureTime: string;
1502
+ /**
1503
+ * The estimated (before departure) or actual departure date in `YYYY-MM-DD` format in the
1504
+ * airport's time zone. Ej.: `2024-07-09`. **Es una demora operativa, no un cambio de horario del
1505
+ * itinerario** (Q-091). El cambio de horario se ve en `flightStatusCode` (`UN`, `TK`, `SC`,
1506
+ * `WK`).
1507
+ */
1508
+ updatedDepartureDate?: string;
1509
+ /**
1510
+ * The estimated (before departure) or actual departure time in `HH:MM` format. Ej.: `09:25`.
1511
+ * Demora operativa, no cambio de horario (ver `updatedDepartureDate`).
1512
+ */
1513
+ updatedDepartureTime?: string;
1514
+ /** The departure terminal name. Ej.: `Terminal D`. */
1515
+ departureTerminalName?: string;
1516
+ /** The departure gate number. Ej.: `D`. */
1517
+ departureGate?: string;
1518
+ /**
1519
+ * The scheduled arrival date in `YYYY-MM-DD` format in the airport's time zone. Ej.:
1520
+ * `2024-07-09`.
1521
+ */
1522
+ arrivalDate: string;
1523
+ /** The scheduled time of arrival in `HH:MM` format. Ej.: `12:28`. */
1524
+ arrivalTime: string;
1525
+ /**
1526
+ * The estimated (before arrival) or actual arrival date in `YYYY-MM-DD` format in the airport's
1527
+ * time zone. Ej.: `2024-07-09`. Demora operativa, no cambio de horario (ver
1528
+ * `updatedDepartureDate`).
1529
+ */
1530
+ updatedArrivalDate?: string;
1531
+ /**
1532
+ * The estimated (before arrival) or actual arrival time in `HH:MM` format. Ej.: `12:38`. Demora
1533
+ * operativa, no cambio de horario (ver `updatedDepartureDate`).
1534
+ */
1535
+ updatedArrivalTime?: string;
1536
+ /** The arrival terminal name. Ej.: `Terminal 1`. */
1537
+ arrivalTerminalName?: string;
1538
+ /** The arrival gate's number. Ej.: `1`. */
1539
+ arrivalGate?: string;
1540
+ /**
1541
+ * Lists seats assigned to the travelers. The first seat in the `seats` array corresponds to the
1542
+ * first traveler in the `travelers` array, the second seat to the second traveler, and so on. An
1543
+ * empty Seat object or a null value indicates that no seat is assigned to the corresponding
1544
+ * traveler. In the case of a change of gauge or funnel flight, this array lists seats for the
1545
+ * first aircraft.
1546
+ */
1547
+ seats?: BookingSeat[];
1548
+ /**
1549
+ * Lists seats assigned to the travelers on the departing aircraft on a change of gauge or funnel
1550
+ * flight. The first seat in the `seats` array corresponds to the first traveler in the
1551
+ * `travelers` array, the second seat to the second traveler, and so on. A null value instead of
1552
+ * a `Seat` object indicates that there is no seat assigned to the corresponding traveler.
1553
+ */
1554
+ changeOfGaugeSeats?: BookingSeat[];
1555
+ /**
1556
+ * The quantity of seats occupied by the travelers. Specific seat details, if applicable, are
1557
+ * listed in the 'seats' array. Ej.: `1`.
1558
+ */
1559
+ numberOfSeats?: number;
1560
+ /**
1561
+ * The type of aircraft cabin. The name used is specific to the airline carrier's naming
1562
+ * convention. Ej.: `Coach`.
1563
+ */
1564
+ cabinTypeName?: string;
1565
+ /** The cabin type code. Ej.: `C`. */
1566
+ cabinTypeCode?: string;
1567
+ /** The IATA code of the aircraft. Ej.: `E90`. */
1568
+ aircraftTypeCode?: string;
1569
+ /** The name of the aircraft model. Ej.: `EMBRAER EMB E90`. */
1570
+ aircraftTypeName?: string;
1571
+ /** The booking inventory code of the marketing airline. Ej.: `Y`. */
1572
+ bookingClass?: string;
1573
+ /** Lists the meal options provided on the flight. */
1574
+ meals?: BookingMeal[];
1575
+ /** The two-letter status code used by vendors. It indicates the booking status. Ej.: `AF`. */
1576
+ flightStatusCode?: string;
1577
+ /** The meaningful value describing the booking status. */
1578
+ flightStatusName?: BookingStatusNameEnum;
1579
+ /** Flight duration in minutes. Ej.: `590`. */
1580
+ durationInMinutes?: number;
1581
+ /** The flight distance in miles. Ej.: `5143`. */
1582
+ distanceInMiles?: number;
1583
+ /**
1584
+ * The IATA code of the aircraft. This property is not returned when the aircraft type is
1585
+ * unchanged. This property will be deprecated in the future major version of this API. If you
1586
+ * wish to check hidden stop information, use the `hiddenStops` list instead. Ej.: `E90`.
1587
+ */
1588
+ hiddenStopAircraftTypeCode?: string;
1589
+ /**
1590
+ * The name of the aircraft model. This property is not returned when the aircraft type is
1591
+ * unchanged. This property will be deprecated in the future major version of this API. If you
1592
+ * wish to check hidden stop information, use the `hiddenStops` list instead. Ej.: `EMBRAER EMB
1593
+ * E90`.
1594
+ */
1595
+ hiddenStopAircraftTypeName?: string;
1596
+ /**
1597
+ * The three-letter IATA airport code of the hidden stop airport. This property is not returned
1598
+ * when the aircraft type is unchanged. This property will be deprecated in the future major
1599
+ * version of this API. If you wish to check hidden stop information, use the `hiddenStops` list
1600
+ * instead. Ej.: `HAV`.
1601
+ */
1602
+ hiddenStopAirportCode?: string;
1603
+ /**
1604
+ * The arrival date to the hidden stop airport in the `YYYY-MM-DD` format in the airport's time
1605
+ * zone. This property is not returned when the aircraft type is unchanged. This property will be
1606
+ * deprecated in the future major version of this API. If you wish to check hidden stop
1607
+ * information, use the `hiddenStops` list instead. Ej.: `2024-07-09`.
1608
+ */
1609
+ hiddenStopArrivalDate?: string;
1610
+ /**
1611
+ * The time of arrival to the hidden stop airport in the `HH:MM` format. This property is not
1612
+ * returned when the aircraft type is unchanged. This property will be deprecated in the future
1613
+ * major version of this API. If you wish to check hidden stop information, use the `hiddenStops`
1614
+ * list instead. Ej.: `09:15`.
1615
+ */
1616
+ hiddenStopArrivalTime?: string;
1617
+ /**
1618
+ * The departure date from the hidden stop airport in the `YYYY-MM-DD` format in the airport's
1619
+ * time zone. This property is not returned when the aircraft type is unchanged. This property
1620
+ * will be deprecated in the future major version of this API. If you wish to check hidden stop
1621
+ * information, use the `hiddenStops` list instead. Ej.: `2024-07-09`.
1622
+ */
1623
+ hiddenStopDepartureDate?: string;
1624
+ /**
1625
+ * The time of departure from the hidden stop airport in the `HH:MM` format. This property is not
1626
+ * returned when the aircraft type is unchanged. This property will be deprecated in the future
1627
+ * major version of this API. If you wish to check hidden stop information, use the `hiddenStops`
1628
+ * list instead. Ej.: `09:15`.
1629
+ */
1630
+ hiddenStopDepartureTime?: string;
1631
+ /** Lists details of hidden stops that are part of the flight. */
1632
+ hiddenStops?: BookingHiddenStop[];
1633
+ /**
1634
+ * Lists the travelers within the `travelers` list. Indicates which travelers are associated with
1635
+ * a particular flight.
1636
+ */
1637
+ travelerIndices?: number[];
1638
+ /** Lists assigned identity documents with statuses for each flight. */
1639
+ identityDocuments?: BookingIdentityDocumentReference[];
1640
+ /** If true, the current flight is past-dated. */
1641
+ isPast?: boolean;
1642
+ /**
1643
+ * The date in `YYYY-MM-DD` format when the flight was booked and stored in the booking. Not
1644
+ * applicable for NDC. Ej.: `2021-01-09`.
1645
+ */
1646
+ creationDate?: string;
1647
+ /**
1648
+ * The time in `HH:MM` format when the flight was booked and stored in the booking. Not
1649
+ * applicable for NDC. Ej.: `15:00`.
1650
+ */
1651
+ creationTime?: string;
1652
+ }
1653
+ /** Contains penalty information applied to specific fare rules. */
1654
+ interface BookingFareRulePenalty {
1655
+ /** Identifies whether a penalty is applicable before or after departure. */
1656
+ applicability: BookingFareRulePenaltyApplicabilityEnum;
1657
+ /** If `true`, additional restrictions apply. */
1658
+ conditionsApply?: boolean;
1659
+ /** Contains the total cost of the penalty. */
1660
+ penalty: BookingValue;
1661
+ /** If `true`, the traveler is charged in case they do not show up for the flight. */
1662
+ hasNoShowCost?: boolean;
1663
+ /** Contains the total cost of the penalty in case of a no-show. */
1664
+ noShowPenalty?: BookingValue;
1665
+ }
1666
+ /** Contains the allowed baggage number which is included in the ticket price. */
1667
+ interface BookingBaggageAllowance {
1668
+ /**
1669
+ * The maximum number of baggage pieces allowed across all baggage policies. A value of 0
1670
+ * indicates that no baggage pieces are permitted. Ej.: `1`.
1671
+ */
1672
+ maximumPieces?: number;
1673
+ /** Maximum summary weight of all allowed baggage measured in pounds [lb]. Ej.: `50`. */
1674
+ totalWeightInPounds?: number;
1675
+ /** Maximum summary weight of all allowed baggage measured in kilograms [kg]. Ej.: `23`. */
1676
+ totalWeightInKilograms?: number;
1677
+ /** Lists baggage allowance policies for each type of baggage. */
1678
+ baggagePieces?: BookingBaggagePolicy[];
1679
+ }
1680
+ /** Contains restrictions applied on number of baggage pieces and optional fee applicable. */
1681
+ interface BookingBaggagePolicy {
1682
+ /**
1683
+ * Maximum allowed size of the baggage piece measured in inches [in]. If null, no size limit is
1684
+ * specified for this type of baggage. Ej.: `46`.
1685
+ */
1686
+ maximumSizeInInches?: number;
1687
+ /**
1688
+ * Maximum allowed size of the baggage piece measured in centimeters [cm]. If null, no size limit
1689
+ * is specified for this type of baggage. Ej.: `118`.
1690
+ */
1691
+ maximumSizeInCentimeters?: number;
1692
+ /**
1693
+ * Maximum allowed weight of the baggage piece measured in pounds [lb]. If null, no weight limit
1694
+ * is specified for this type of baggage. Ej.: `50`.
1695
+ */
1696
+ maximumWeightInPounds?: number;
1697
+ /**
1698
+ * Maximum allowed weight of the baggage piece measured in kilograms [kg]. If null, no weight
1699
+ * limit is specified for this type of baggage. Ej.: `23`.
1700
+ */
1701
+ maximumWeightInKilograms?: number;
1702
+ /** The number of pieces allowed within the baggage policy. Ej.: `1`. */
1703
+ numberOfPieces: number;
1704
+ /**
1705
+ * The description of the special baggage items allowed, if the baggage policy provides
1706
+ * information about special baggage items such as musical instruments, fishing or sporting
1707
+ * equipment, mobility device, etc. Ej.: `SKI EQUIPMENT UP TO 50LB`.
1708
+ */
1709
+ specialItemDescription?: string;
1710
+ /**
1711
+ * If `true`, the baggage restrictions are for informational purposes only. Baggage is available
1712
+ * for purchase during check-in at the airport.
1713
+ */
1714
+ isCheckInOnly?: boolean;
1715
+ /**
1716
+ * Fee applicable for each item of the baggage. If null, no payment is required for this type of
1717
+ * baggage.
1718
+ */
1719
+ fee?: BookingValue;
1720
+ }
1721
+ /** Contains details about the fare creation. */
1722
+ interface BookingFareCreationDetails {
1723
+ /**
1724
+ * The sine of the Employee Profile Record that created the booking. Not supported for NDC
1725
+ * bookings. Ej.: `A12`.
1726
+ */
1727
+ creationUserSine?: string;
1728
+ /** The date in `YYYY-MM-DD` format when the booking was created. Ej.: `2024-01-09`. */
1729
+ creationDate?: string;
1730
+ /**
1731
+ * The time in `HH:MM` format when the booking was created. Not supported for NDC bookings. Ej.:
1732
+ * `15:00`.
1733
+ */
1734
+ creationTime?: string;
1735
+ /**
1736
+ * The date in the `YYYY-MM-DD` format by which the stored fare must be ticketed. Ej.:
1737
+ * `2024-01-09`.
1738
+ */
1739
+ purchaseDeadlineDate?: string;
1740
+ /** The time in the `HH:MM` format by which the stored fare must be ticketed. Ej.: `15:00`. */
1741
+ purchaseDeadlineTime?: string;
1742
+ /**
1743
+ * A unique identifier accredited by the International Air Transport Association (IATA). Ej.:
1744
+ * `99119911`.
1745
+ */
1746
+ agencyIataNumber?: string;
1747
+ /** The pseudo city code where the booking was created. Ej.: `AB12`. */
1748
+ userWorkPcc?: string;
1749
+ /** The pseudo city code of the agent who created the booking. Ej.: `CD34`. */
1750
+ userHomePcc?: string;
1751
+ /**
1752
+ * The identification code for the prime host (global distribution system) associated with the
1753
+ * reservation. Ej.: `1S`.
1754
+ */
1755
+ primeHostId?: string;
1756
+ }
1757
+ /** Contains the commission amount applicable to the fare or ticket. */
1758
+ interface BookingCommission {
1759
+ /** The commission amount included in the fare or applied during ticketing. Ej.: `25.00`. */
1760
+ commissionAmount?: string;
1761
+ /**
1762
+ * The three letters [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) currency code.
1763
+ * Ej.: `USD`.
1764
+ */
1765
+ currencyCode?: string;
1766
+ /** The commission percentage included in the fare or applied during ticketing. Ej.: `5.00`. */
1767
+ commissionPercentage?: string;
1768
+ }
1769
+ /** Contains details of a specific fare component. */
1770
+ interface BookingFareComponent {
1771
+ /**
1772
+ * Lists flights referenced by flight `itemId`. Multiple flight IDs can be returned for a single
1773
+ * fare component. If the fare component is associated with all flights or a different flight
1774
+ * itinerary was used to create this fare component (verify `isCurrentItinerary` property), this
1775
+ * list is not provided.
1776
+ */
1777
+ flights?: BookingFlightReference[];
1778
+ /**
1779
+ * Lists the indices of flights within the current itinerary. If the fare component is associated
1780
+ * with all flights, this list is not provided. This property will be deprecated in the future
1781
+ * major version of this API. If you wish to check flight association, use the `flights` property
1782
+ * within the `FareComponent` object.
1783
+ */
1784
+ flightIndices?: number[];
1785
+ /** The fare basis code used for fare construction. Ej.: `ABCDE10`. */
1786
+ fareBasisCode?: string;
1787
+ /** Contains the base fare amount. */
1788
+ baseRate?: BookingValue;
1789
+ /** The code of the Branded Fare. Ej.: `ECOFLEX`. */
1790
+ brandFareCode?: string;
1791
+ /** The name of the Branded Fare. Ej.: `ECO FLEX`. */
1792
+ brandFareName?: string;
1793
+ /** The code of the program the Branded Fare belongs to. Ej.: `CFFLH`. */
1794
+ brandProgramCode?: string;
1795
+ /** The name of the program the Branded Fare belongs to. Ej.: `LH BRANDED FARES INTERCONT`. */
1796
+ brandProgramName?: string;
1797
+ /** Lists Branded Fare (Price Class) attributes from NDC offers. */
1798
+ brandAttributes?: BookingBrandAttribute[];
1799
+ /**
1800
+ * If `true`, the fare component was created for a flight present in the current itinerary. If
1801
+ * `false`, the fare component is related to a flight which is no longer a part of the current
1802
+ * itinerary. This may be the case, for example, after a schedule change.
1803
+ */
1804
+ isCurrentItinerary?: boolean;
1805
+ /** Indicates the allowed checked baggage included in the fare. */
1806
+ checkedBaggageAllowance?: BookingBaggageAllowance;
1807
+ /** The accountCode used for fare construction. Ej.: `SME23`. */
1808
+ accountCode?: string;
1809
+ }
1810
+ /** Contains details for a single tax. */
1811
+ interface BookingTaxComponent {
1812
+ /** The desired tax code. Must be combined with `taxAmount`. Ej.: `XY`. */
1813
+ taxCode?: string;
1814
+ /** Contains the tax amount. */
1815
+ taxAmount?: BookingValue;
1816
+ /** If `true`, the tax was already paid during ticket issuance. */
1817
+ isPaid?: boolean;
1818
+ }
1819
+ /**
1820
+ * Contains details of the payment amount - the total amount to pay, the amount before tax, the
1821
+ * amount of fees, and the amount of tax.
1822
+ */
1823
+ type BookingTotalValues = BookingGenericTotalValues & {
1824
+ /** The amount of all applicable fees. Ej.: `20.00`. */
1825
+ fees?: string;
1826
+ /**
1827
+ * The net remit amount. The EPR keyword "NETFQD" is required to return `netRemit`. Net remit is
1828
+ * used to arrange the payment of an additional commission above the standard commission amount.
1829
+ * This extra commission is payable by the validating carrier through the BSP settlement cycle.
1830
+ * Ej.: `110.00`.
1831
+ */
1832
+ netRemit?: string;
1833
+ };
1834
+ /** Contains a service or fee that is bundled with the fare. */
1835
+ interface BookingFareService {
1836
+ /** The type of the fare service or fee. Ej.: `FEE`. */
1837
+ type?: string;
1838
+ /** The category of the fare service or fee. Ej.: `SEAT`. */
1839
+ code?: string;
1840
+ /** The applicable unit count for the service or fee. Ej.: `1`. */
1841
+ quantity?: number;
1842
+ /** The monetary amount of fare fee. Ej.: `100.00`. */
1843
+ amount?: string;
1844
+ /** The three-letter ISO 4217 code of the `amount` currency. Ej.: `USD`. */
1845
+ currencyCode?: string;
1846
+ /** Textual information about the service or fee. Ej.: `Qantas Points`. */
1847
+ description?: string;
1848
+ }
1849
+ /**
1850
+ * Contains details of the payment amount in original currency of the base fare - the total amount
1851
+ * to pay, the amount before tax, and the amount of tax.
1852
+ */
1853
+ interface BookingOriginalTotalValues {
1854
+ /**
1855
+ * The total amount in original currency; the sum of the `subtotal`, `taxes`, and `fees`. Ej.:
1856
+ * `128.00`.
1857
+ */
1858
+ total?: string;
1859
+ /** The three-letter ISO 4217 currency code. Ej.: `USD`. */
1860
+ currencyCode?: string;
1861
+ }
1862
+ /** Identifies pricing type code of a fare. */
1863
+ type BookingPricingTypeCodeEnum = 'S' | 'A' | 'M' | (string & {});
1864
+ /** Identifies the pricing type of a fare. */
1865
+ type BookingPricingTypeNameEnum = 'System' | 'Amended' | 'Manual' | 'Unknown' | (string & {});
1866
+ /** Identifies the status code of a fare. */
1867
+ type BookingPricingStatusCodeEnum = 'A' | 'H' | (string & {});
1868
+ /** Identifies the status name of a fare. */
1869
+ type BookingPricingStatusNameEnum = 'Active' | 'History' | (string & {});
1870
+ /**
1871
+ * Contains details of the initially offered fare. To obtain this data, the Employee Profile Record
1872
+ * (EPR) needs to include the ORGFQD keyword.
1873
+ */
1874
+ interface BookingInitialSellingFare {
1875
+ /**
1876
+ * Contains details of the payment amount - the total amount to pay, the amount before tax, and
1877
+ * the amount of tax.
1878
+ */
1879
+ totals?: BookingGenericTotalValues;
1880
+ /**
1881
+ * Contains a breakdown of the fare difference between the initially offered fare totals and the
1882
+ * final fare totals.
1883
+ */
1884
+ fareDifferenceBreakdown?: BookingFareDifferenceBreakdown;
1885
+ }
1886
+ /** Identifies the type associated with the particular remark. */
1887
+ type BookingRemarkTypeEnum = 'GENERAL' | 'HISTORICAL' | 'CLIENT_ADDRESS' | 'ALPHA_CODED' | 'DELIVERY_ADDRESS' | 'ITINERARY' | 'INVOICE' | 'HIDDEN' | 'CORPORATE' | 'FORM_OF_PAYMENT' | 'PRINT_ON_TICKET' | 'FILLER_STRIP' | 'INTERFACE' | 'QUEUE_PLACE' | (string & {});
1888
+ /** Contains hotel object reference by `itemId`. */
1889
+ interface BookingHotelReference {
1890
+ /** The ID of a hotel reservation. Ej.: `12`. */
1891
+ itemId: string;
1892
+ }
1893
+ /** Contains hotel information for the given booking. */
1894
+ interface BookingHotelItem {
1895
+ /** The hotel supplier reservation number. Ej.: `23428937429074`. */
1896
+ confirmationId?: string;
1897
+ /** The full name of the hotel. Ej.: `Ilia Hotel and Luxury Suites`. */
1898
+ hotelName: string;
1899
+ /** The exact location of the hotel. */
1900
+ address: BookingHotelAddress;
1901
+ /** The check-in date in `YYYY-MM-DD` format in the hotel's local time zone. Ej.: `2024-07-09`. */
1902
+ checkInDate: string;
1903
+ /** The check-in time in `HH:MM` format in the hotel's local time. Ej.: `15:00`. */
1904
+ checkInTime: string;
1905
+ /** The checkout date in `YYYY-MM-DD` format in the hotel's local time zone. Ej.: `2024-07-19`. */
1906
+ checkOutDate: string;
1907
+ /** The checkout time in `HH:MM` format in the hotel's local time. Ej.: `11:00`. */
1908
+ checkOutTime: string;
1909
+ /**
1910
+ * A discount code that a company may provide to an agency. Usually tied to a negotiated rate
1911
+ * code. Ej.: `6878700`.
1912
+ */
1913
+ corporateDiscountCode?: number;
1914
+ /**
1915
+ * Specifies the lead traveler from the travelers list with whom the hotel booking is associated.
1916
+ * Ej.: `1`.
1917
+ */
1918
+ leadTravelerIndex?: number;
1919
+ /** The number of rooms in the hotel reservation. */
1920
+ room?: BookingRoom;
1921
+ /**
1922
+ * If `true`, the hotel reservation can be refunded in total or in segments. Refer to the
1923
+ * `refundPenalties` array for more information.
1924
+ */
1925
+ isRefundable: boolean;
1926
+ /** Lists conditions and payments for hotel room reservation cancellations. */
1927
+ refundPenalties?: BookingHotelDateRangeRefundPenalty[];
1928
+ /**
1929
+ * The penalty code for a cancellation within the context of legacy GDS hotel content. Ej.:
1930
+ * `01D`.
1931
+ */
1932
+ refundPenaltyPolicyCode?: string;
1933
+ /**
1934
+ * The one or two-letter status code used by vendors. It indicates the hotel booking status. Ej.:
1935
+ * `HK`.
1936
+ */
1937
+ hotelStatusCode?: string;
1938
+ /** The meaningful value describing hotel booking status. */
1939
+ hotelStatusName?: BookingStatusNameEnum;
1940
+ /** The two character code of the chain. Ej.: `BY`. */
1941
+ chainCode?: string;
1942
+ /** The name of the chain. Ej.: `Banyan Tree Hotels and Resorts`. */
1943
+ chainName?: string;
1944
+ /** The unique ID of the property agreed between vendors. Ej.: `100144834`. */
1945
+ propertyId?: string;
1946
+ /**
1947
+ * The code that uniquely identifies a single hotel property. This is a legacy concept, to be
1948
+ * sunset in the future major version. Ej.: `7678`.
1949
+ */
1950
+ sabrePropertyId?: string;
1951
+ /** Contains contact information for the hotel. */
1952
+ contactInfo?: BookingContactInformation;
1953
+ /**
1954
+ * Additional special requests put in by the traveler with regards to the hotel reservation. Ej.:
1955
+ * `Need a wi-fi in the room.`.
1956
+ */
1957
+ specialInstructions?: string;
1958
+ /**
1959
+ * The Open Travel Alliance [Payment Type
1960
+ * Code](https://opentravel.org/download-the-opentravel-specification). Applicable OTA codes can
1961
+ * be one of the following - 5, 18, 19, 29, 30, or 43. Ej.: `5`.
1962
+ */
1963
+ guaranteeTypeCode?: number;
1964
+ /** The name associated with the Open Travel Alliance Payment Type Code. */
1965
+ guaranteeTypeName?: BookingGuaranteeTypeNameEnum;
1966
+ /**
1967
+ * Provides information regarding the guarantee provided for the legacy GDS hotel content. Ej.:
1968
+ * `GVI4XXXXXXXXXXX1111EXP 01 25-HOTEL`.
1969
+ */
1970
+ guaranteePaymentNote?: string;
1971
+ /** Identifies the hotel payment policy. */
1972
+ paymentPolicy?: BookingHotelPaymentPolicyEnum;
1973
+ /** Contains payment information for the service. */
1974
+ payment?: BookingTotalValues;
1975
+ /** The number of guests. Ej.: `1`. */
1976
+ numberOfGuests?: number;
1977
+ /** Contains flight arrival and departure information used mainly for hotel bookings. */
1978
+ associatedFlightDetails?: BookingAssociatedFlightDetails;
1979
+ /** A specific numeric code indicating the source of the hotel booking. Ej.: `100`. */
1980
+ sourceTypeCode?: number;
1981
+ /** Identifies the source of the hotel booking. */
1982
+ sourceTypeName?: BookingHotelSourceEnum;
1983
+ /**
1984
+ * Identifier of the hotel reservation as provided by Booking.com. This field is populated only
1985
+ * for reservations sourced from Booking.com and is not applicable to other lodging providers.
1986
+ * Ej.: `0890`.
1987
+ */
1988
+ pinCode?: string;
1989
+ /** Indicates whether force update was applied to the booking. */
1990
+ forceUpdate?: BookingForceHotelUpdateDetails;
1991
+ }
1992
+ /** Contains car object reference by `itemId`. */
1993
+ interface BookingCarReference {
1994
+ /** The id of the given car reservation. Ej.: `12`. */
1995
+ itemId: string;
1996
+ }
1997
+ /** Contains car rental information for the given booking. */
1998
+ interface BookingCarItem {
1999
+ /** The car rental reservation number. Ej.: `843296421`. */
2000
+ confirmationId?: string;
2001
+ /**
2002
+ * Specifies the traveler from the travelers list with whom the car booking is associated. Ej.:
2003
+ * `1`.
2004
+ */
2005
+ travelerIndex?: number;
2006
+ /** The full name of the car rental vendor. Ej.: `National`. */
2007
+ vendorName: string;
2008
+ /** The two-letter code of the car rental vendor. Ej.: `ZE`. */
2009
+ vendorCode: string;
2010
+ /** The code of the pick-up location. Ej.: `DFW`. */
2011
+ pickUpLocationCode?: string;
2012
+ /** Car pick up location. */
2013
+ pickUpAddress: BookingGenericAddress;
2014
+ /**
2015
+ * The pick up date of the rental car in `YYYY-MM-DD` format in the pick up location local time
2016
+ * zone. Ej.: `2024-07-09`.
2017
+ */
2018
+ pickUpDate: string;
2019
+ /**
2020
+ * The time of the rental car pick up in `HH:MM` format in the pick up location local time. Ej.:
2021
+ * `13:00`.
2022
+ */
2023
+ pickUpTime: string;
2024
+ /** Contains contact information for the pickup location. */
2025
+ pickUpContactInfo?: BookingContactInformation;
2026
+ /** The code of the drop-off location. Ej.: `DEN`. */
2027
+ dropOffLocationCode?: string;
2028
+ /** Car drop off location. */
2029
+ dropOffAddress?: BookingGenericAddress;
2030
+ /**
2031
+ * The drop off date of the rental car in `YYYY-MM-DD` format in the drop off location local time
2032
+ * zone. Ej.: `2024-07-19`.
2033
+ */
2034
+ dropOffDate: string;
2035
+ /**
2036
+ * The time of the rental car drop off in `HH:MM` format in the drop off location local time.
2037
+ * Ej.: `12:00`.
2038
+ */
2039
+ dropOffTime: string;
2040
+ /** Contains the contact information for the drop-off location. */
2041
+ dropOffContactInfo?: BookingContactInformation;
2042
+ /** Contains the custom collection address of the booked car. */
2043
+ collectionAddress?: BookingAddress;
2044
+ /** Contains the details of the custom collection location for the booked car. */
2045
+ collectionSite?: BookingCarRentalSite;
2046
+ /** Contains the custom delivery address for the booked car. */
2047
+ deliveryAddress?: BookingAddress;
2048
+ /** Contains details of the custom delivery location for the booked car. */
2049
+ deliverySite?: BookingCarRentalSite;
2050
+ /**
2051
+ * If `true`, the car rental can be refunded in total or in segments. Refer to the
2052
+ * `refundPenalties` array for more information.
2053
+ */
2054
+ isRefundable: boolean;
2055
+ /** Lists the conditions and payments for a car rental cancellation. */
2056
+ refundPenalties?: BookingDateRangeRefundPenalty[];
2057
+ /**
2058
+ * The one or two-letter status code used by vendors. It indicates the car's booking status. Ej.:
2059
+ * `HK`.
2060
+ */
2061
+ carStatusCode?: string;
2062
+ /** The meaningful value describing car booking status. */
2063
+ carStatusName?: BookingStatusNameEnum;
2064
+ /** The 4 character [ACRISS](https://www.acriss.org/car-codes/) code of the car. Ej.: `MBMR`. */
2065
+ vehicleTypeCode?: string;
2066
+ /**
2067
+ * Identifies the name of the car type based on the second character of the
2068
+ * [ACRISS](https://www.acriss.org/car-codes/) code.
2069
+ */
2070
+ vehicleTypeName?: BookingVehicleTypeNameEnum;
2071
+ /** The number of requested cars. Ej.: `1`. */
2072
+ numberOfVehicles?: number;
2073
+ /** The unique ID for an offer at a given vendor. Ej.: `RCUD1`. */
2074
+ rateCode?: string;
2075
+ /** The included distance in the car rental booking. Ej.: `UNL`. */
2076
+ distanceAllowance?: string;
2077
+ /**
2078
+ * The payment information provided to the vendor to guarantee the booking. Ej.:
2079
+ * `GVI4XXXXXXXXXXX0008EXP 03 22-TEST CAR`.
2080
+ */
2081
+ guaranteePaymentNote?: string;
2082
+ /** The special information provided to the vendor. Ej.: `NON-SMOKING CAR PLEASE`. */
2083
+ specialInstructions?: string;
2084
+ /** Contains payment information for the service. */
2085
+ payment?: BookingTotalValues;
2086
+ /** Identifies the payment information type provided to the vendor to guarantee the booking. */
2087
+ guaranteePaymentType?: BookingGuaranteePaymentTypeEnum;
2088
+ }
2089
+ /** Contains train object reference by `itemId`. */
2090
+ interface BookingTrainReference {
2091
+ /** The id of the given train reservation. Ej.: `12`. */
2092
+ itemId: string;
2093
+ }
2094
+ /** Contains train information for the given booking. */
2095
+ interface BookingTrainItem {
2096
+ /** The train reservation number. Ej.: `76E220`. */
2097
+ confirmationId?: string;
2098
+ /** The train number associated with the marketing railroad company. Ej.: `822`. */
2099
+ trainNumber: string;
2100
+ /** The train name associated with the marketing railroad company. Ej.: `Heartland Flyer`. */
2101
+ trainName?: string;
2102
+ /** The two-letter IATA designator code of the marketing railroad company. Ej.: `2V`. */
2103
+ vendorCode: string;
2104
+ /** The name of the marketing railroad company. Ej.: `Amtrak`. */
2105
+ vendorName?: string;
2106
+ /** The two-letter IATA designator code of the operating railroad company. Ej.: `2V`. */
2107
+ operatingVendorCode?: string;
2108
+ /** The name of the operating railroad company. Ej.: `Amtrak`. */
2109
+ operatingVendorName?: string;
2110
+ /**
2111
+ * The origin train station code of the marketing railroad company station coding system. Ej.:
2112
+ * `FTW`.
2113
+ */
2114
+ fromStationCode: string;
2115
+ /** The train station name of the origin station. Ej.: `Central Station`. */
2116
+ fromStationName?: string;
2117
+ /**
2118
+ * The destination train station code of the marketing railroad company station coding system.
2119
+ * Ej.: `ATL`.
2120
+ */
2121
+ toStationCode: string;
2122
+ /** The train station name of the destination station. Ej.: `Peachtree Station`. */
2123
+ toStationName?: string;
2124
+ /**
2125
+ * The scheduled departure date in `YYYY-MM-DD` format in the train station's timezone. Ej.:
2126
+ * `2024-07-10`.
2127
+ */
2128
+ departureDate: string;
2129
+ /** The scheduled time of departure in `HH:MM` format. Ej.: `19:15`. */
2130
+ departureTime: string;
2131
+ /**
2132
+ * The scheduled arrival date in `YYYY-MM-DD` format in the train station's timezone. Ej.:
2133
+ * `2024-07-10`.
2134
+ */
2135
+ arrivalDate: string;
2136
+ /** The scheduled time of arrival in `HH:MM` format. Ej.: `23:10`. */
2137
+ arrivalTime: string;
2138
+ /** If true, the train reservation can be refunded in total. */
2139
+ isRefundable?: boolean;
2140
+ /**
2141
+ * The one or two-letter status code used by vendors. It indicates the train's booking status.
2142
+ * Ej.: `HK`.
2143
+ */
2144
+ trainStatusCode?: string;
2145
+ /** The meaningful value describing train's booking status. */
2146
+ trainStatusName?: BookingStatusNameEnum;
2147
+ /** Contains payment information for the service. */
2148
+ payment?: BookingTotalValues;
2149
+ }
2150
+ /** Contains cruise object reference by `itemId`. */
2151
+ interface BookingCruiseReference {
2152
+ /** The id of the given cruise reservation. Ej.: `12`. */
2153
+ itemId: string;
2154
+ }
2155
+ /** Contains cruise information for the given booking. */
2156
+ interface BookingCruiseItem {
2157
+ /** The cruise booking reference ID in the cruise line's system. Ej.: `XPCD8Q`. */
2158
+ confirmationId?: string;
2159
+ /** The cruise vendor code. Ej.: `PC`. */
2160
+ vendorCode: string;
2161
+ /** The ship code in the cruise line system. Ej.: `RP`. */
2162
+ shipCode?: string;
2163
+ /** The ship name in the cruise line system. Ej.: `Royal Princess`. */
2164
+ shipName?: string;
2165
+ /** The origin port code. Ej.: `ANC`. */
2166
+ fromPortCode: string;
2167
+ /**
2168
+ * The destination port code for cruises where destination port is different than the origin
2169
+ * port. Ej.: `YVR`.
2170
+ */
2171
+ toPortCode?: string;
2172
+ /** The departure date in `YYYY-MM-DD` format in the origin port's timezone. Ej.: `2024-07-12`. */
2173
+ departureDate: string;
2174
+ /** The time of departure in `HH:MM` format. Ej.: `16:00`. */
2175
+ departureTime?: string;
2176
+ /** The arrival date in `YYYY-MM-DD` format in the port's timezone. Ej.: `2024-07-15`. */
2177
+ arrivalDate: string;
2178
+ /** The time of arrival in `HH:MM` format. Ej.: `09:00`. */
2179
+ arrivalTime?: string;
2180
+ /** The number of guests. Ej.: `2`. */
2181
+ numberOfGuests?: number;
2182
+ /** The number of the reserved cabin on the ship. Ej.: `C101`. */
2183
+ cabinNumber?: string;
2184
+ /**
2185
+ * The one or two-letter status code used by vendors. It indicates the cruise's booking status.
2186
+ * Ej.: `GK`.
2187
+ */
2188
+ cruiseStatusCode?: string;
2189
+ /** The meaningful value describing the cruise's booking status. */
2190
+ cruiseStatusName?: BookingStatusNameEnum;
2191
+ }
2192
+ /** Contains the unique ID of the segment. */
2193
+ interface BookingSegmentReference {
2194
+ /**
2195
+ * The unique ID of the segment which may correspond to the itemId of a booking element, such as
2196
+ * flight, hotel, car, etc. Ej.: `12`.
2197
+ */
2198
+ id: string;
2199
+ }
2200
+ /**
2201
+ * Contains basic attributes common for all possible types of booking segments. Provided attributes
2202
+ * are only relevant to the segment type.
2203
+ */
2204
+ interface BookingSegmentBasicAttributes {
2205
+ /** The type of the booking segment. Ej.: `FLIGHT`. */
2206
+ type: string;
2207
+ /**
2208
+ * The name or description of the segment, such as flight number for the segment representing a
2209
+ * flight. Ej.: `123`.
2210
+ */
2211
+ text?: string;
2212
+ /**
2213
+ * The corresponding vendor code, such as carrier code for a `FLIGHT` type segment, or hotel
2214
+ * vendor code for a `HOTEL` type segment. Ej.: `AA`.
2215
+ */
2216
+ vendorCode?: string;
2217
+ /**
2218
+ * The date of the event represented by the segment in `YYYY-MM-DD` format and in the event's
2219
+ * local time zone. Not returned for events that span multiple days. Ej.: `2024-07-09`.
2220
+ */
2221
+ date?: string;
2222
+ /** The time of the event represented by the segment in `HH:MM` format. Ej.: `09:15`. */
2223
+ time?: string;
2224
+ /**
2225
+ * The code of the location of the event represented by the segment. This attribute does not
2226
+ * exist for an event with start and end locations. Ej.: `ATL`.
2227
+ */
2228
+ locationCode?: string;
2229
+ /**
2230
+ * The address of the event represented by the segment, such as hotel address for a `HOTEL` type
2231
+ * segment. This attribute does not exist for an event with start and end addresses.
2232
+ */
2233
+ address?: BookingGenericAddress;
2234
+ /**
2235
+ * The start date of the event represented by the segment, provided in `YYYY-MM-DD` format and in
2236
+ * the event's local timezone. Not populated for a single-day event. Ej.: `2024-07-09`.
2237
+ */
2238
+ startDate?: string;
2239
+ /** The start time of the event represented by the segment in `HH:MM` format. Ej.: `09:15`. */
2240
+ startTime?: string;
2241
+ /**
2242
+ * The code of the start location of the event represented by the segment, such as origin airport
2243
+ * code for a `FLIGHT` type segment. This attribute does not exist for a single location event,
2244
+ * such as cruise trip. Ej.: `DFW`.
2245
+ */
2246
+ startLocationCode?: string;
2247
+ /**
2248
+ * The event beginning address for the segment representing a transport type event, such as a car
2249
+ * reservation pick up address. This attribute does not exist for a stational event, such as
2250
+ * hotel reservation.
2251
+ */
2252
+ startAddress?: BookingGenericAddress;
2253
+ /**
2254
+ * The end date of the event represented by the segment, provided in `YYYY-MM-DD` format and in
2255
+ * the event's local timezone. Not populated for a single-day event, such as a one-day tour. Ej.:
2256
+ * `2024-07-09`.
2257
+ */
2258
+ endDate?: string;
2259
+ /** The end time of the event represented by the segment in `HH:MM` format. Ej.: `12:28`. */
2260
+ endTime?: string;
2261
+ /**
2262
+ * The code of the ending location of the event represented by the segment, such as destination
2263
+ * airport code for a `FLIGHT` type segment. This attribute does not exist for a single location
2264
+ * type event such as hotel or cruise reservation. Ej.: `HNL`.
2265
+ */
2266
+ endLocationCode?: string;
2267
+ /**
2268
+ * The event ending address for the segment representing transport type event with two addresses,
2269
+ * such as drop off address of a car reservation when there is different drop off address than
2270
+ * for pick up.
2271
+ */
2272
+ endAddress?: BookingGenericAddress;
2273
+ }
2274
+ /**
2275
+ * Contains coupon information of the corresponding flight, identified by `itemId`, for the given
2276
+ * booking.
2277
+ */
2278
+ type BookingFlightReferenceCoupon = BookingFlightReference & BookingCouponStatus;
2279
+ /** Contains coupon status details. */
2280
+ type BookingTicketCoupon = BookingCouponStatus & {
2281
+ /** The identifier of the flight associated with the coupon and stored in the booking. Ej.: `12`. */
2282
+ itemId?: string;
2283
+ };
2284
+ /** Identifies the current status of the ticket. */
2285
+ type BookingTicketStatusEnum = 'Issued' | 'Voided' | 'Refunded/Exchanged' | (string & {});
2286
+ /** Contains details of a form of payment. */
2287
+ type BookingFormOfPaymentResponse = BookingGenericFormOfPayment & {
2288
+ /**
2289
+ * Identifies the type of payment method. The `MISCELLANEOUS` payment method must be activated on
2290
+ * the agency level and requires a specific payment credit code. `INSTALLMENTS` is used for BSP
2291
+ * Brazil customers only and refers to payment by means of card installments commonly referred to
2292
+ * as "parcelado". `VIRTUAL_CARD`, `AGENCY_NAME`, `AGENCY_IATA`, `CORPORATE`, `COMPANY_NAME` are
2293
+ * used for hotel bookings. `VOUCHER` is used for vehicle booking.
2294
+ */
2295
+ type: BookingFormOfPaymentTypeResponseEnum;
2296
+ /**
2297
+ * Free‑form code used to represent agency‑specific or non‑standard payment indicators, such as
2298
+ * on‑account codes or CA/NOREF. Ej.: `CA/NOREF`.
2299
+ */
2300
+ customPaymentCode?: string;
2301
+ /**
2302
+ * The ID of the form of payment item stored in the booking. It can be used for reference
2303
+ * purposes during the fulfillment operation. Ej.: `12`.
2304
+ */
2305
+ itemId?: string;
2306
+ };
2307
+ /**
2308
+ * Contains details of the payment amount - the total amount to pay, the amount before tax, and the
2309
+ * amount of tax.
2310
+ */
2311
+ interface BookingGenericTotalValues {
2312
+ /** The subtotal before applying taxes and fees. Ej.: `100.00`. */
2313
+ subtotal?: string;
2314
+ /** The amount of all taxes. Ej.: `8.00`. */
2315
+ taxes?: string;
2316
+ /** The total amount; the sum of the `subtotal`, `taxes`, and `fees`. Ej.: `128.00`. */
2317
+ total: string;
2318
+ /** The three-letter ISO 4217 currency code. Ej.: `USD`. */
2319
+ currencyCode: string;
2320
+ }
2321
+ /** Contains Other Service Information (OSI) sent to or retrieved from a specific vendor. */
2322
+ interface BookingCommonOtherServiceInformation {
2323
+ /**
2324
+ * The two-letter [IATA](https://www.iata.org/about/members/Pages/airline-list.aspx?All=true)
2325
+ * designator code of the issuing airline. Ej.: `AA`.
2326
+ */
2327
+ airlineCode?: string;
2328
+ /**
2329
+ * Specifies the traveler from the `travelers` array whose name is associated with the ticket.
2330
+ * Ej.: `1`.
2331
+ */
2332
+ travelerIndex?: number;
2333
+ /** The text of the service information. Ej.: `/CX-J674A0957C0`. */
2334
+ serviceMessage?: string;
2335
+ }
2336
+ /** Identifies the booking status of the item. */
2337
+ type BookingStatusNameEnum = 'Confirmed' | 'Waitlisted' | 'On Request' | 'Pending' | 'Cancelled' | 'Infant/No Seat' | 'Priority Waitlist' | 'Quote' | 'Space Available' | 'Unconfirmed' | 'Pending Quote' | 'No Seat' | 'Standby' | 'Unknown' | (string & {});
2338
+ /**
2339
+ * Identifies the association type of the accounting item, which indicates to whom the fare is
2340
+ * applied. Can be `Single Traveler` (fare amount applied to a singular passenger whose details are
2341
+ * provided in `FormOfPayment`), `All Travelers` (fare amount applied to all passengers together as
2342
+ * a group), or `Each Traveler` (fare amount applied to individual passengers).
2343
+ */
2344
+ type BookingFareApplicationTypeEnum = 'Single Traveler' | 'All Travelers' | 'Each Traveler' | (string & {});
2345
+ /** Identifies the payment method of the accounting item. */
2346
+ type BookingAccountingFormOfPaymentTypeEnum = 'Cash' | 'Check' | 'Check or Cash' | 'Payment Card' | 'Masked Payment Card' | 'Unknown' | (string & {});
2347
+ /** Identifies the ticket operation which triggered automatic accounting item creation. */
2348
+ type BookingAccountingItemCreationTypeEnum = 'First Issuance' | 'Exchange' | 'Refund' | 'Low Cost Carrier' | 'Ancillary Fee' | 'Credit Card Fee' | 'Booking Fee' | (string & {});
2349
+ /** Indicates the type of tariff basis. */
2350
+ type BookingTariffBasisTypeEnum = 'Domestic' | 'Foreign' | 'International' | (string & {});
2351
+ /** Contains details of Goods and Services Tax (GST). */
2352
+ interface BookingGoodsAndServicesTax {
2353
+ /** The tax code. Must be combined with `amount`. Ej.: `D`. */
2354
+ code?: string;
2355
+ /** The GST tax amount. Mutually exclusive with `percentage`. Ej.: `5.00`. */
2356
+ amount?: string;
2357
+ /** The GST tax percentage. Mutually exclusive with `amount`. Ej.: `5.00`. */
2358
+ percentage?: string;
2359
+ }
2360
+ /** Identifies the status of a nonelectronic ticket. */
2361
+ type BookingNonElectronicTicketStatusEnum = 'Active' | 'Inactive' | 'Unknown' | (string & {});
2362
+ /**
2363
+ * Identifies the type of employer ID. Can be `GST` (Indian Goods and Services Tax information) or
2364
+ * `Unknown`.
2365
+ */
2366
+ type BookingEmployerIdTypeEnum = 'GST' | 'Unknown' | (string & {});
2367
+ /** Contains phone details. */
2368
+ interface BookingPhone {
2369
+ /** The formatted phone number of the traveler. Ej.: `+1-555-123-4567`. */
2370
+ number: string;
2371
+ /**
2372
+ * The type of the phone number. Available phone type codes are `H` - home, `B` - business, `C` -
2373
+ * cell and `M` - mobile. Ej.: `M`.
2374
+ */
2375
+ label?: string;
2376
+ }
2377
+ /** Contains basic address information. */
2378
+ interface BookingAddress {
2379
+ /**
2380
+ * The street name and house number accompanied with the number of apartment, unit, or suite, if
2381
+ * applicable. Ej.: `1230 Ellen Ave, apt 10`.
2382
+ */
2383
+ street?: string;
2384
+ /** The name of the city. Ej.: `Dallas`. */
2385
+ city?: string;
2386
+ /** The name or code of the state or province. Ej.: `TX`. */
2387
+ stateProvince?: string;
2388
+ /** The zip or postal code. Ej.: `75063`. */
2389
+ postalCode?: string;
2390
+ /**
2391
+ * The two-letter [ISO 3166](https://www.iso.org/iso-3166-country-codes.html) country code. Ej.:
2392
+ * `US`.
2393
+ */
2394
+ countryCode?: string;
2395
+ }
2396
+ /** Identifies the type of passenger document. */
2397
+ type BookingDocumentTypeEnum = 'PASSPORT' | 'VISA' | 'SECURE_FLIGHT_PASSENGER_DATA' | 'RESIDENCE_ADDRESS' | 'DESTINATION_ADDRESS' | 'KNOWN_TRAVELER_NUMBER' | 'REDRESS_NUMBER' | 'ALIEN_RESIDENT' | 'PERMANENT_RESIDENT' | 'FACILITATION_DOCUMENT' | 'NATIONAL_ID_CARD' | 'NEXUS_CARD' | 'MILITARY' | 'NATURALIZATION_CERTIFICATE' | 'REFUGEE_REENTRY_PERMIT' | 'BORDER_CROSSING_CARD' | 'FISCAL_ID' | (string & {});
2398
+ /**
2399
+ * Identifies the passenger document subtype for `documentType` set to `FISCAL_ID`. Can be `RUC`
2400
+ * (Taxpayer's Unique Registry in Ecuador), `CUIT/CUIL` (Argentina Unique Tax Identification Key),
2401
+ * or `NIT` (Tax Identification Number in Bolivia).
2402
+ */
2403
+ type BookingDocumentSubTypeEnum = 'RUC' | 'CUIT/CUIL' | 'NIT' | (string & {});
2404
+ /**
2405
+ * Identifies the type of the passenger's passport document. Applies to identity documents with the
2406
+ * `documentType` parameter set to `PASSPORT`.
2407
+ */
2408
+ type BookingPassportTypeResponseEnum = 'National Passport' | 'Emergency Passport' | 'Diplomatic Passport' | 'Official/Service Passport' | 'Refugee Passport' | 'Alien Passport' | 'Stateless/Special Passport' | 'Laissez-passer Passport' | 'Mission/Service Passport' | 'Single Sheet Emergency Passport' | 'Passport' | 'Unknown' | (string & {});
2409
+ /**
2410
+ * Identifies the type of the passenger’s visa document. Applies to identity documents with the
2411
+ * `documentType` parameter set to `VISA`. If the visa document type cannot be determined, it is
2412
+ * displayed as `Unknown`.
2413
+ */
2414
+ type BookingVisaTypeResponseEnum = 'U.S. Non Immigrant Visa' | 'U.S. Immigrant Visa' | 'Visa' | 'Unknown' | (string & {});
2415
+ /** Identifies the type of the loyalty program. */
2416
+ type BookingProgramTypeEnum = 'FREQUENT_FLYER' | 'FREQUENT_RENTER' | 'LOYALTY_ID' | 'CORPORATE_LOYALTY_ID' | (string & {});
2417
+ /**
2418
+ * Specifies the IATA-defined reason for the issuance code (RFIC) applicable to the Electronic
2419
+ * Miscellaneous Document (EMD) that will be issued for the subcode identified in this record. The
2420
+ * UNKNOWN option is used for the read-only purpose by getBooking API.
2421
+ */
2422
+ type BookingReasonForIssuanceEnum = 'AIR_TRANSPORTATION' | 'SURFACE_TRANSPORTATION_NON_AIR_SERVICES' | 'BAGGAGE' | 'FINANCIAL_IMPACT' | 'AIRPORT_SERVICES' | 'MERCHANDISE' | 'INFLIGHT_SERVICES' | 'INDIVIDUAL_AIRLINE_USE' | 'UNKNOWN' | (string & {});
2423
+ /** The application source that provides the ancillary service. */
2424
+ type BookingAncillarySourceEnum = 'ATPCO' | 'MERCHANDISING_MANAGER' | (string & {});
2425
+ /**
2426
+ * Identifies the applicability of the ancillary item to the flights in the booking. Can be
2427
+ * `Single` (an ancillary item applies to a single flight/sector of the booking), `Multiple` (an
2428
+ * ancillary item applies to the portion of flights in the booking), or `Unknown` (applicability of
2429
+ * the ancillary cannot be determined). This information is required when
2430
+ * `electronicMiscellaneousDocumentType` has the value `OTHER_THAN_EMD`.
2431
+ */
2432
+ type BookingFlightApplicabilityTypeEnum = 'Single' | 'Multiple' | 'Unknown' | (string & {});
2433
+ /** Identifies the meaningful value describing the ancillary status. */
2434
+ type BookingAncillaryStatusNameEnum = 'Confirmed' | 'Confirmed with EMD issued' | 'On Request' | 'Pending' | 'Cancelled' | 'Unconfirmed' | 'Confirmed with pending payment' | 'Schedule change' | (string & {});
2435
+ /** Contains desired tax codes and their associated amounts. */
2436
+ interface BookingTax {
2437
+ /** The desired tax code. Must be combined with `amount`. Ej.: `XY`. */
2438
+ taxCode: string;
2439
+ /** The monetary amount. Ej.: `100.00`. */
2440
+ amount: string;
2441
+ }
2442
+ /** Identifies source type of the flight. */
2443
+ type BookingFlightSourceEnum = 'ATPCO' | 'LCC' | 'NDC' | (string & {});
2444
+ /** Contains detailed information about the seat. */
2445
+ interface BookingSeat {
2446
+ /** The traveler's assigned seat number. Ej.: `13A`. */
2447
+ number: string;
2448
+ /**
2449
+ * Lists all IATA-defined characteristic codes associated with the seat. For the list of all
2450
+ * codes refer to the following resource - IATA PADIS codeset element 9825.
2451
+ */
2452
+ characteristics?: string[];
2453
+ /** The two-letter status code used by vendors. It indicates the seat status. Ej.: `AF`. */
2454
+ statusCode?: string;
2455
+ /** The meaningful value describing the seat status. */
2456
+ statusName?: BookingStatusNameEnum;
2457
+ }
2458
+ /** Contains the meal options provided on the flight. */
2459
+ interface BookingMeal {
2460
+ /**
2461
+ * The code of the type of meal. Available meal type codes are `P`, `B`, `O`, `C`, `K`, `D`, `F`,
2462
+ * `G`, `H`, `L`, `M`, `N`, `R`, `V` and `S`. Ej.: `H`.
2463
+ */
2464
+ code: string;
2465
+ /** The description of the meal corresponding to the meal type code. */
2466
+ description: BookingMealDescriptionEnum;
2467
+ }
2468
+ /** Contains detailed information about the hidden stop location. */
2469
+ interface BookingHiddenStop {
2470
+ /** The three-letter IATA airport code of the hidden stop location. Ej.: `DFW`. */
2471
+ airportCode?: string;
2472
+ /**
2473
+ * The scheduled departure date in `YYYY-MM-DD` format in the airport's timezone. Ej.:
2474
+ * `2024-07-09`.
2475
+ */
2476
+ departureDate?: string;
2477
+ /** The scheduled time of departure in `HH:MM` format. Ej.: `09:15`. */
2478
+ departureTime?: string;
2479
+ /**
2480
+ * The scheduled arrival date in `YYYY-MM-DD` format in the airport's timezone. Ej.:
2481
+ * `2024-07-09`.
2482
+ */
2483
+ arrivalDate?: string;
2484
+ /** The scheduled time of arrival in `HH:MM` format. Ej.: `12:28`. */
2485
+ arrivalTime?: string;
2486
+ /** The IATA code of the aircraft. Ej.: `E90`. */
2487
+ aircraftTypeCode?: string;
2488
+ /** The name of the aircraft model. Ej.: `EMBRAER EMB E90`. */
2489
+ aircraftTypeName?: string;
2490
+ /** Layover duration in minutes. Ej.: `300`. */
2491
+ durationInMinutes?: number;
2492
+ }
2493
+ interface BookingIdentityDocumentReference {
2494
+ /**
2495
+ * The unique identifier of the document. Ej.:
2496
+ * `76c2817b178cc264fa44cf85df1da5fb9e1b963006b2339aa5edc09129415bba5fcf5bf91a5f`.
2497
+ */
2498
+ itemId?: string;
2499
+ /** Status of the identity document for the given flight. Not applicable for NDC. */
2500
+ status?: BookingStatusNameEnum;
2501
+ }
2502
+ /** Identifies the applicability type associated with a particular fare rule penalty. */
2503
+ type BookingFareRulePenaltyApplicabilityEnum = 'BEFORE_DEPARTURE' | 'AFTER_DEPARTURE' | (string & {});
2504
+ /** Contains monetary amount information. */
2505
+ interface BookingValue {
2506
+ /** The monetary amount. Ej.: `100.00`. */
2507
+ amount: string;
2508
+ /** The three-letter ISO 4217 currency code. Ej.: `USD`. */
2509
+ currencyCode: string;
2510
+ }
2511
+ /** Contains a Branded Fare attribute. */
2512
+ interface BookingBrandAttribute {
2513
+ /** The ID of a given Branded Fare attribute. Ej.: `SABRE_NDCC_ID_1`. */
2514
+ itemId?: string;
2515
+ /** Marketing information about the product. Ej.: `Qantas Points`. */
2516
+ description?: string;
1061
2517
  }
1062
- /** `SeatAvailabilityRs` tal cual llega de Sabre. */
1063
- interface RawSeatAvailabilityRs {
1064
- response?: SeatAvailabilityResponse;
1065
- errors?: SeatAvailabilityIssue[];
1066
- warnings?: SeatAvailabilityIssue[];
2518
+ /**
2519
+ * Contains a breakdown of the fare difference between the initially offered fare totals and the
2520
+ * final fare totals.
2521
+ */
2522
+ interface BookingFareDifferenceBreakdown {
2523
+ /** The monetary amount of the adjusted fare. Ej.: `100.00`. */
2524
+ adjustedAmount?: string;
2525
+ /** The three-letter ISO 4217 currency code. Ej.: `USD`. */
2526
+ currencyCode?: string;
2527
+ /** Lists Goods and Services Taxes (GST) that adjust the total tax amount. */
2528
+ goodsAndServicesTaxes?: BookingGoodsAndServicesTax[];
2529
+ /** Lists handling fees. */
2530
+ fees?: BookingHandlingFee[];
2531
+ }
2532
+ /** Contains hotel address information. */
2533
+ type BookingHotelAddress = BookingGenericAddress & {
2534
+ /** The three-letter IATA city code of the hotel location. Ej.: `DFW`. */
2535
+ cityCode?: string;
2536
+ };
2537
+ /** Contains basic information of the rooms in the hotel with the number of rooms booked. */
2538
+ interface BookingRoom {
2539
+ /** The type of the room provided by the hotel supplier. Ej.: `2 double beds`. */
2540
+ roomType: string;
2541
+ /** Lists room extra information. */
2542
+ roomExtras?: BookingRoomExtraResponse[];
2543
+ /** The number of booked rooms of this room type. Ej.: `1`. */
2544
+ quantity: number;
2545
+ /**
2546
+ * The detailed description of the room provided by the hotel supplier. Ej.: `Deluxe Room, 2
2547
+ * Double Beds`.
2548
+ */
2549
+ description?: string;
2550
+ /** The unique ID for a room type at a given vendor. Ej.: `100144834`. */
2551
+ roomTypeCode?: string;
2552
+ /**
2553
+ * The inventory block code of the room. An ID returned by GDS suppliers for all unique room+rate
2554
+ * combinations. Populated only for GDS products. Ej.: `SM3A00`.
2555
+ */
2556
+ productCode?: string;
2557
+ /** The room rate amount and currency per night. */
2558
+ roomRate?: BookingValue;
2559
+ /**
2560
+ * Lists the travelers within the `travelers` list. Indicates which travelers are considered to
2561
+ * be guests associated with a particular room. It is possible that not all travelers are listed
2562
+ * as hotel guests in the hotel booking.
2563
+ */
2564
+ travelerIndices?: number[];
2565
+ /** Contains commission details applicable to the hotel rate. */
2566
+ agencyCommission?: BookingAgencyCommission;
2567
+ /** The client ID code of a negotiated rate specified by `supplierRateCode`. Ej.: `FOF`. */
2568
+ clientIdCode?: string;
2569
+ /**
2570
+ * The supplier-negotiated rate plan code for the client identified by `clientIdCode`. Ej.:
2571
+ * `FOS`.
2572
+ */
2573
+ supplierRateCode?: string;
2574
+ /** Lists hotel stay rate divided into interval (mostly per night) rates. */
2575
+ rateBreakdown?: BookingRateInterval[];
2576
+ /** Lists additional free-text rate information provided by the hotel supplier. */
2577
+ supplierRateDescription?: string[];
1067
2578
  }
1068
2579
  /**
1069
- * Resultado de `sabre.air.getSeats`: el `SeatAvailabilityRs` del spec con `errors[]` y
1070
- * `warnings[]` reemplazados por los del SDK.
2580
+ * Contains the date range up to which a hotel penalty is applicable, including the total cost of
2581
+ * the penalty.
1071
2582
  */
1072
- interface GetSeatsResponse {
1073
- response: SeatAvailabilityResponse;
1074
- /** `warnings[]` de Sabre. Nunca se lanzan. */
1075
- warnings: SabreWarning[];
1076
- /** `errors[]` que llegaron junto con un `response`: el mapa existe, pero puede faltar algo. */
1077
- errors: SabreBusinessError[];
2583
+ interface BookingHotelDateRangeRefundPenalty {
2584
+ /**
2585
+ * The date from when the penalty becomes applicable, in [ISO
2586
+ * 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. Ej.:
2587
+ * `2024-07-07T16:00:00Z`.
2588
+ */
2589
+ applicableFromDate?: string;
2590
+ /**
2591
+ * The date when the penalty applicability ends, in [ISO
2592
+ * 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. Ej.:
2593
+ * `2024-07-09T16:00:00Z`.
2594
+ */
2595
+ applicableToDate?: string;
2596
+ /** Total cost of the penalty. */
2597
+ penalty: BookingHotelPenaltyValue;
2598
+ }
2599
+ /** Identifies the OTA payment name. */
2600
+ type BookingGuaranteeTypeNameEnum = 'Credit card' | 'Travel agency name/address' | 'Travel agency IATA number' | 'Company name/address' | 'Corporate ID/CD number' | 'Virtual card' | (string & {});
2601
+ /** Identifies the hotel payment policy. */
2602
+ type BookingHotelPaymentPolicyEnum = 'DEPOSIT' | 'GUARANTEE' | 'LATE' | (string & {});
2603
+ /** Contains flight arrival and departure information used mainly for hotel bookings. */
2604
+ type BookingAssociatedFlightDetails = BookingAssociatedArrivalFlight & {
2605
+ /** The scheduled time of arrival in `HH:MM` format. Ej.: `12:28`. */
2606
+ arrivalTime?: string;
2607
+ /**
2608
+ * The two-letter [IATA](https://www.iata.org/about/members/Pages/airline-list.aspx?All=true)
2609
+ * designator code of the marketing airline for the departure flight. Ej.: `AA`.
2610
+ */
2611
+ departureAirlineCode?: string;
2612
+ /** The flight number associated with the marketing carrier for the departure flight. Ej.: `123`. */
2613
+ departureFlightNumber?: number;
2614
+ /** The scheduled time of departure in `HH:MM` format. Ej.: `09:15`. */
2615
+ departureTime?: string;
2616
+ };
2617
+ /** Identifies the source of the hotel booking. */
2618
+ type BookingHotelSourceEnum = 'Legacy' | 'Sabre GDS' | 'Expedia Associate Network' | 'HotelBeds.com' | 'Booking.com' | 'CMNet' | 'Unknown' | (string & {});
2619
+ /** Information about force update for hotel segment. */
2620
+ interface BookingForceHotelUpdateDetails {
2621
+ /** If true, force update was applied to retrieve the latest booking state. */
2622
+ isUpdated?: boolean;
2623
+ /**
2624
+ * Provides the exact point in time when the force update request is generated. The
2625
+ * updateDateTime is expressed in UTC and presented in the YYYY-MM-DDTHH:MM:SSZ format. Ej.:
2626
+ * `2024-10-28T11:11:21Z`.
2627
+ */
2628
+ updateDateTime?: string;
1078
2629
  }
1079
-
1080
- /** Body de Revalidate Itinerary v5: el mismo `OTA_AirLowFareSearchRQ` que BFM, con los vuelos fijados. */
1081
- interface RevalidateItineraryRequest {
1082
- OTA_AirLowFareSearchRQ: OtaAirLowFareSearchRq;
2630
+ /** Contains information about the car rental location. */
2631
+ interface BookingCarRentalSite {
2632
+ /**
2633
+ * The ID of the car rental location. Cannot be combined with other address-related qualifiers.
2634
+ * Ej.: `ABC123`.
2635
+ */
2636
+ id?: string;
2637
+ /** The name of the car rental location. Ej.: `TEST LOCATION`. */
2638
+ name?: string;
2639
+ /**
2640
+ * The phone number of the car rental location involved in vehicle collection or delivery. Ej.:
2641
+ * `8175551212`.
2642
+ */
2643
+ phone?: string;
1083
2644
  }
1084
- /** `groupedItineraryResponse` con las referencias ya resueltas. */
1085
- type RevalidateItineraryResponse = GroupedItineraryResponse;
1086
- interface RevalidateItineraryRequestSource {
1087
- /** Request de BFM que produjo el itinerario: aporta `Version`, `POS`, pasajeros y `TPA_Extensions`. */
1088
- search: BargainFinderMaxRequest;
1089
- /** Grupo del itinerario: aporta la fecha de cada tramo. */
1090
- group: ItineraryGroup;
1091
- itinerary: Itinerary;
2645
+ /**
2646
+ * Contains the date range up to which a penalty is applicable, including the total cost of the
2647
+ * penalty.
2648
+ */
2649
+ interface BookingDateRangeRefundPenalty {
2650
+ /**
2651
+ * The date from when the penalty becomes applicable, in [ISO
2652
+ * 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. Ej.:
2653
+ * `2024-07-07T16:00:00Z`.
2654
+ */
2655
+ applicableFromDate?: string;
2656
+ /**
2657
+ * The date when the penalty applicability ends, in [ISO
2658
+ * 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. Ej.:
2659
+ * `2024-07-09T16:00:00Z`.
2660
+ */
2661
+ applicableToDate?: string;
2662
+ /** Total cost of the penalty. */
2663
+ penalty: BookingValue;
1092
2664
  }
1093
2665
  /**
1094
- * Arma el request de Revalidate Itinerary para un itinerario devuelto por BFM, fijando cada
1095
- * vuelo en `OriginDestinationInformation[].TPA_Extensions.Flight[]`.
1096
- *
1097
- * - Clases de servicio y fechas: ver `itineraryFlights`. Las horas salen de `time` sin el offset.
1098
- * - `MaxStopsQuantity` es el máximo de conexiones de un tramo, para no rechazar itinerarios
1099
- * con escala.
1100
- * - `Fixed: false` y `VerificationItinCallLogic: "L"` se copian del ejemplo de Sabre; su
1101
- * efecto no está documentado.
2666
+ * Identifies the name of the car type based on the second character of the
2667
+ * [ACRISS](https://www.acriss.org/car-codes/) code.
1102
2668
  */
1103
- declare function buildRevalidateItineraryRequest(source: RevalidateItineraryRequestSource): RevalidateItineraryRequest;
1104
-
1105
- declare class Air {
1106
- #private;
1107
- /** @internal Lo construye el cliente `Sabre`. */
1108
- constructor(transport: RestTransport);
2669
+ type BookingVehicleTypeNameEnum = 'Two/Three Door' | 'Two/Four Door' | 'Four/Five Door' | 'Wagon/Estate' | 'Passenger Van' | 'Limousine/Sedan' | 'Sport' | 'Convertible' | 'SUV' | 'Open Air All Terrain' | 'Special' | 'Pick up single/extended cab 2 door' | 'Pick up double cab 4 door' | 'Special Offer Car' | 'Coupe' | 'Monospace' | 'Recreational Vehicle' | 'Motor Home' | 'Two Wheel Vehicle' | 'Roadster' | 'Crossover' | 'Commercial Van/Truck' | (string & {});
2670
+ /** Identifies the payment information type provided to the car vendor. */
2671
+ type BookingGuaranteePaymentTypeEnum = 'Guarantee' | 'Deposit' | 'Unknown' | (string & {});
2672
+ /** Contains the ticket's coupon information. */
2673
+ interface BookingCouponStatus {
2674
+ /** The descriptive current status of the coupon. */
2675
+ couponStatus: BookingCouponStatusEnum;
2676
+ /** The code of the current status of the ticket coupon based on IATA PADIS Codeset 4405. */
2677
+ couponStatusCode: BookingCouponStatusCodeEnum;
2678
+ }
2679
+ /** Contains details of a form of payment. */
2680
+ type BookingGenericFormOfPayment = BookingBasicFormOfPayment & {
2681
+ /** Contains `PAYMENTCARD` holder information. Used primarily for hotel and vehicle bookings. */
2682
+ cardHolder?: BookingCardHolder;
2683
+ /** Contains manual approval details of a form of payment. Use with `PAYMENTCARD`. */
2684
+ manualApproval?: BookingManualApproval;
1109
2685
  /**
1110
- * Bargain Finder Max v5: busca itinerarios de menor precio. Devuelve el
1111
- * `groupedItineraryResponse` con las referencias ya resueltas.
2686
+ * Lists all strong customer authentication details for the payment card. For use with
2687
+ * `PAYMENTCARD`.
1112
2688
  */
1113
- bargainFinderMax(request: BargainFinderMaxRequest, options?: RequestOptions): Promise<BargainFinderMaxResponse>;
2689
+ authentications?: BookingStrongCustomerAuthentication[];
2690
+ /** Contains virtual card details. Used primarily for the hotel bookings. */
2691
+ virtualCard?: BookingVirtualCard;
1114
2692
  /**
1115
- * Revalidate Itinerary v5: revalida disponibilidad y precio de un itinerario ya elegido,
1116
- * sin sostener inventario. El request se arma con `buildRevalidateItineraryRequest`.
2693
+ * The agency IATA number. Use with `AGENCY_IATA`. Used primarily for the hotel bookings. Ej.:
2694
+ * `129345738`.
1117
2695
  */
1118
- revalidateItinerary(request: RevalidateItineraryRequest, options?: RequestOptions): Promise<RevalidateItineraryResponse>;
2696
+ agencyIataNumber?: string;
2697
+ /** Contains the agency address. Use with `AGENCY_NAME`. Used primarily for the hotel bookings. */
2698
+ agencyAddress?: BookingGenericAddress;
2699
+ /** The corporate identifier. Use with `CORPORATE` or `PAYMENTCARD`. Ej.: `CC006`. */
2700
+ corporateId?: string;
2701
+ /** Contains company address. Use with `COMPANY_NAME`. Used primarily for the hotel bookings. */
2702
+ companyAddress?: BookingGenericAddress;
2703
+ /** Contains `VOUCHER` information. Used primarily for vehicle bookings. */
2704
+ voucher?: BookingVoucher;
2705
+ /** The net balance value. Use with `INSTALLMENTS`. Ej.: `300.20`. */
2706
+ netBalance?: string;
1119
2707
  /**
1120
- * Get Seats v3: mapa de asientos con disponibilidad y precio. Sin `pnrLocator` va a
1121
- * `byReservationPayload`, armado con `buildSeatAvailabilityRequest`; con `pnrLocator`, a
1122
- * `byPnrLocator`. Un `pnrLocator` vacío o mezclado con `segments`, `passengers` o
1123
- * `returnSeatMapsOnlyForSegmentRefs` lanza `TypeError` sin llamar a la red.
2708
+ * The prefix of the docket (a free text document) selected as form of payment. Use with
2709
+ * `DOCKET`. Ej.: `AGT*V`.
1124
2710
  */
1125
- getSeats(request: GetSeatsRequest, options?: RequestOptions): Promise<GetSeatsResponse>;
2711
+ docketPrefix?: string;
2712
+ /**
2713
+ * The number of the docket (a free text document) selected as form of payment. Use with
2714
+ * `DOCKET`. Ej.: `654456`.
2715
+ */
2716
+ docketNumber?: string;
2717
+ /** The initials of the agent who issues the docket. Use with `DOCKET`. Ej.: `LS`. */
2718
+ docketIssuingAgentInitials?: string;
2719
+ /**
2720
+ * Details of the docket selected as form of payment in free text format. Use with `DOCKET`. Ej.:
2721
+ * `DOCKET NUM 0123456`.
2722
+ */
2723
+ docketDescription?: string;
2724
+ /**
2725
+ * Details of the Government Travel Request selected as form of payment in free text format. Use
2726
+ * with `GOVERNMENT_TRAVEL_REQUEST`. Ej.: `REQ-123456`.
2727
+ */
2728
+ governmentTravelRequestDescription?: string;
2729
+ /**
2730
+ * Details of the agency invoice selected as form of payment in free text format. Use with
2731
+ * `INVOICE`. Ej.: `AGT INVOICE`.
2732
+ */
2733
+ invoiceDescription?: string;
2734
+ /**
2735
+ * Identifies the single use type associated with the form of payment. This property will be
2736
+ * deprecated in the future major version of this API. If you wish to check the associated use
2737
+ * type, use the `useTypes` array instead.
2738
+ */
2739
+ useType?: BookingFormOfPaymentUseTypeEnum;
2740
+ /**
2741
+ * Identifies the single trip type associated with the form of payment. This property will be
2742
+ * deprecated in the future major version of this API. If you wish to check the associated trip
2743
+ * type, use the `tripTypes` array instead.
2744
+ */
2745
+ tripType?: BookingFormOfPaymentTripTypeEnum;
2746
+ /** Lists use types associated with the form of payment. */
2747
+ useTypes?: BookingFormOfPaymentUseTypeEnum[];
2748
+ /** Lists trip types associated with the form of payment. */
2749
+ tripTypes?: BookingFormOfPaymentTripTypeEnum[];
2750
+ /** If `true`, the card selected as form of payment belongs to a travel agency. */
2751
+ isAgencyPaymentCard?: boolean;
2752
+ /**
2753
+ * If `true`, the invoice form of payment free text description is preceded by a substring
2754
+ * `INV/`. Use with `INVOICE` and invoice description.
2755
+ */
2756
+ addInvoiceDescriptionPrefix?: boolean;
2757
+ };
2758
+ /**
2759
+ * Identifies the type of payment method. The `MISCELLANEOUS` payment method must be activated on
2760
+ * the agency level and requires a specific payment credit code. `INSTALLMENTS` is used for BSP
2761
+ * Brazil customers only and refers to payment by means of card installments commonly referred to
2762
+ * as "parcelado". `VIRTUAL_CARD`, `AGENCY_NAME`, `AGENCY_IATA`, `CORPORATE`, `COMPANY_NAME` are
2763
+ * used for hotel bookings. `VOUCHER` is used for vehicle booking.
2764
+ */
2765
+ type BookingFormOfPaymentTypeResponseEnum = 'PAYMENTCARD' | 'CASH' | 'CHECK' | 'MISCELLANEOUS' | 'INSTALLMENTS' | 'VIRTUAL_CARD' | 'AGENCY_NAME' | 'AGENCY_IATA' | 'CORPORATE' | 'COMPANY_NAME' | 'VOUCHER' | 'DOCKET' | 'GOVERNMENT_TRAVEL_REQUEST' | 'INVOICE' | 'ON_ACCOUNT' | (string & {});
2766
+ /** Identifies the meal provided on the flight, matching accordingly to the meal type code. */
2767
+ type BookingMealDescriptionEnum = 'Alcoholic beverages for purchase' | 'Breakfast' | 'Cold meal' | 'Complimentary alcoholic beverages' | 'Continental breakfast' | 'Dinner' | 'Food for purchase' | 'Food and beverage for purchase' | 'Hot meal' | 'Lunch' | 'Meal' | 'No meal service' | 'Refreshment' | 'Refreshment for purchase' | 'Snack' | (string & {});
2768
+ /**
2769
+ * Contains detailed information about the handling fee applied to the fare. This fee typically
2770
+ * covers administrative or processing costs.
2771
+ */
2772
+ interface BookingHandlingFee {
2773
+ /** The fee code. Ej.: `D`. */
2774
+ code?: string;
2775
+ /** The fee type. Ej.: `PTK`. */
2776
+ type?: string;
2777
+ /** The monetary amount of the fee. Ej.: `25.00`. */
2778
+ amount?: string;
1126
2779
  }
1127
-
1128
- /** Elemento de `errors[]` tal cual lo manda Sabre (`Error` del spec; los avisos comparten forma). */
1129
- interface BookingResponseError {
1130
- /** `BAD_REQUEST`, `APPLICATION_ERROR`, `WARNING`, … */
1131
- category: string;
1132
- /** P. ej. `UNABLE_TO_BOOK_FLIGHTS`. */
1133
- type: string;
1134
- description?: string;
1135
- fieldPath?: string;
1136
- fieldName?: string;
1137
- /** Puede traer datos del request (p. ej. un email): no se copia a los errores del SDK. */
1138
- fieldValue?: string;
2780
+ /** Contains room extra information. */
2781
+ interface BookingRoomExtraResponse {
2782
+ /** Identifies the type of the room extra. Ej.: `196`. */
2783
+ typeCode?: number;
2784
+ /** The three-letter ISO 4217 currency code. Ej.: `USD`. */
2785
+ currencyCode?: string;
2786
+ /** Identifies the name of the room extra. */
2787
+ typeName?: BookingRoomExtrasNameEnum;
2788
+ /** The number of room extras of this type. Ej.: `2`. */
2789
+ quantity?: number;
2790
+ /** The total monetary sum for room extras. Ej.: `100.00`. */
2791
+ amount?: string;
2792
+ }
2793
+ /** Contains commission details applicable to the hotel rate. */
2794
+ type BookingAgencyCommission = BookingCommission & {
2795
+ /**
2796
+ * Text describing commission details, as returned in the supplier’s rate display. Ej.:
2797
+ * `COMMISSIONABLE - 10.00 PERCENT`.
2798
+ */
2799
+ text?: string;
2800
+ };
2801
+ /** Hotel rate for a particular time range of the whole reservation. */
2802
+ interface BookingRateInterval {
2803
+ /** The monetary amount. Ej.: `100.00`. */
2804
+ amount?: string;
2805
+ /** The three-letter ISO 4217 currency code. Ej.: `USD`. */
2806
+ currencyCode?: string;
2807
+ /**
2808
+ * The start date of the rate applicability in [ISO
2809
+ * 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. Ej.: `2026-07-09`.
2810
+ */
2811
+ startDate?: string;
2812
+ /**
2813
+ * The end date of the rate applicability in [ISO
2814
+ * 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. Ej.: `2026-07-19`.
2815
+ */
2816
+ endDate?: string;
2817
+ }
2818
+ /** Contains monetary amount information of hotel penalty. */
2819
+ type BookingHotelPenaltyValue = BookingValue & {
2820
+ /**
2821
+ * The hotel refund penalty expressed as percentage. If present, ignore `amount` returned. Ej.:
2822
+ * `5.00`.
2823
+ */
2824
+ percentage?: string;
2825
+ /**
2826
+ * Hotel cancellation penalty returned as the number of nights. If present, ignore `amount`
2827
+ * returned. Ej.: `2`.
2828
+ */
2829
+ numberOfNights?: number;
2830
+ };
2831
+ /** Contains flight information used for cars bookings. */
2832
+ interface BookingAssociatedArrivalFlight {
2833
+ /**
2834
+ * The two-letter [IATA](https://www.iata.org/about/members/Pages/airline-list.aspx?All=true)
2835
+ * designator code of the marketing airline for the arrival flight. Ej.: `AA`.
2836
+ */
2837
+ arrivalAirlineCode?: string;
2838
+ /** The flight number associated with the marketing carrier for the arrival flight. Ej.: `123`. */
2839
+ arrivalFlightNumber?: number;
2840
+ }
2841
+ /** Identifies descriptive status of the corresponding coupon status code. */
2842
+ type BookingCouponStatusEnum = 'Airport Control' | 'Lifted' | 'Checked In' | 'Exchanged' | 'Flown' | 'Not Flown' | 'Refunded' | 'Voided' | 'Printed' | 'Okay' | 'Reactivated' | 'Irregular Operations' | 'Print Exchange' | 'Paper Ticket' | 'Suspended' | 'Locked' | (string & {});
2843
+ /** Identifies the coupon status code based on the IATA PADIS Codeset 4405. */
2844
+ type BookingCouponStatusCodeEnum = 'AL' | 'BD' | 'CK' | 'E' | 'B' | 'I' | 'RF' | 'V' | 'PR' | 'IO' | 'P' | 'PE' | 'T' | 'S' | 'XX' | (string & {});
2845
+ /** Contains a set of basic details related to the form of payment. */
2846
+ interface BookingBasicFormOfPayment {
2847
+ /** The vendor code of a credit or debit card. Use with `PAYMENTCARD`. Ej.: `VI`. */
2848
+ cardTypeCode?: string;
2849
+ /** The number of a credit or debit card. Use with `PAYMENTCARD`. Ej.: `4537156488578956`. */
2850
+ cardNumber?: string;
2851
+ /** The security code of a credit or debit card. Use with `PAYMENTCARD`. Ej.: `123`. */
2852
+ cardSecurityCode?: string;
2853
+ /** The expiration date of a credit or debit card. Use with `PAYMENTCARD`. Ej.: `2024-07`. */
2854
+ expiryDate?: string;
2855
+ /**
2856
+ * The number of months by which your payment can be extended. Use with `PAYMENTCARD` or
2857
+ * `MISCELLANEOUS`. Ej.: `12`.
2858
+ */
2859
+ extendedPayment?: number;
2860
+ /** The miscellaneous credit code. Use with `MISCELLANEOUS`. Ej.: `PL189947`. */
2861
+ miscellaneousCreditCode?: string;
2862
+ /** The number of installments. Use with `INSTALLMENTS`. Ej.: `4`. */
2863
+ numberOfInstallments?: number;
2864
+ /** The airline plan code. Use with `INSTALLMENTS`. Ej.: `RG065`. */
2865
+ airlinePlanCode?: string;
2866
+ /** The amount of the first installment. Use with `INSTALLMENTS`. Ej.: `100`. */
2867
+ installmentAmount?: string;
2868
+ }
2869
+ /** Contains payment card holder information. */
2870
+ interface BookingCardHolder {
2871
+ /** The card holder's first name. Ej.: `John`. */
2872
+ givenName: string;
2873
+ /** The card holder's last name. Ej.: `Smith`. */
2874
+ surname: string;
2875
+ /** The card holder's email address. Ej.: `john@smith.family.priv`. */
2876
+ email?: string;
2877
+ /** The formatted phone numbers of the card holder. Ej.: `+1-555-123-4567`. */
2878
+ phone?: string;
2879
+ /** The address of the traveler. */
2880
+ address?: BookingAddress;
2881
+ }
2882
+ /** Contains manual approval details of a form of payment. Use with `PAYMENTCARD`. */
2883
+ interface BookingManualApproval {
2884
+ /** The manual approval code of a credit or debit card. Use with `PAYMENTCARD`. Ej.: `12345`. */
2885
+ code: string;
2886
+ /**
2887
+ * The manual approval request date in [ISO
2888
+ * 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. Time should be provided
2889
+ * in UTC time zone. Ej.: `2024-07-09T09:15:00Z`.
2890
+ */
2891
+ requestDateTime: string;
2892
+ /**
2893
+ * The manual approval expiration date in [ISO
2894
+ * 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. Time should be provided
2895
+ * in UTC time zone. Ej.: `2024-07-09T09:15:00Z`.
2896
+ */
2897
+ expiryDateTime: string;
2898
+ /**
2899
+ * The two-letter [IATA](https://www.iata.org/about/members/Pages/airline-list.aspx?All=true)
2900
+ * designator code of the desired manual approval airline. Ej.: `AA`.
2901
+ */
2902
+ airlineCode: string;
2903
+ /** The monetary cash amount of the manual approval. Ej.: `100.00`. */
2904
+ amount: string;
2905
+ /** The [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) currency code. Ej.: `USD`. */
2906
+ currencyCode: string;
1139
2907
  }
2908
+ /** Contains strong customer authentication details for the payment card. */
2909
+ interface BookingStrongCustomerAuthentication {
2910
+ /**
2911
+ * The 3DS authentication value (MasterCard - AAV; Amex - AEVV; Visa - CAVV). A 20-byte value
2912
+ * that has been Base64 encoded, giving a 28-byte result. Ej.: `ABC123455533533444455555678`.
2913
+ */
2914
+ secureAuthenticationValue?: string;
2915
+ /**
2916
+ * The 3DS transaction ID returned by the 3DS Directory Server. A 20 byte unsigned binary value.
2917
+ * Ej.: `ABCDEFGHI123456789012!.1234567890123`.
2918
+ */
2919
+ secureTransactionId?: string;
2920
+ /**
2921
+ * Indicates that authentication was attempted for a transaction, but there was an authentication
2922
+ * outage in the authentication flow between the merchant, gateway 3-D Secure (3DS) server, and
2923
+ * the Directory Server. This means an authentication request was not possible and an
2924
+ * authentication response could not be received. This is not a formal exemption, but information
2925
+ * for issuers to consider. Ej.: `AO`.
2926
+ */
2927
+ issueCode?: string;
2928
+ /** Indicates whether authentication was successful. Ej.: `OK`. */
2929
+ resultCode?: string;
2930
+ /**
2931
+ * Determines how the card number was collected for the transaction. Can be `K` - keyed in for
2932
+ * this transaction, or `S` - card on file (previously stored credentials). Ej.: `K`.
2933
+ */
2934
+ cardNumberCollectionCode?: string;
2935
+ /**
2936
+ * Indicates which channel the transaction was initiated in. Can be `MO` - Mail Order, `TO` -
2937
+ * Telephone Order, `EC` - ECOM, `FA` - Face to Face. Ej.: `MO`.
2938
+ */
2939
+ channelCode?: string;
2940
+ /**
2941
+ * The Electronic Commerce Indicator (ECI) is two alphanumeric code that is returned by the
2942
+ * issuing banks and credit card specific networks. Ej.: `12`.
2943
+ */
2944
+ electronicCommerceIndicator?: string;
2945
+ /**
2946
+ * Determines which exemption was used by the Payment Service Provider (PSP). Can be `SC` -
2947
+ * Secure Corporate Exemption, `DA` - Delegated Authentication, `TR` - Transaction Risk Analysis
2948
+ * Exemption, `TB` - Trusted Beneficiary Exemption, `LV` - Low Value Exemption. Ej.: `SC`.
2949
+ */
2950
+ exemptionTypeCode?: string;
2951
+ /**
2952
+ * Identifies the SCA update date and time in [ISO
2953
+ * 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. Ej.:
2954
+ * `2024-07-07T16:00:00Z`.
2955
+ */
2956
+ updatedDateTime?: string;
2957
+ /**
2958
+ * Describes the agreed mandate between the cardholder and the agent/third party. Can be one of
2959
+ * the following values: `NA` - No agreement for future transactions, `NS` - Agreement for future
2960
+ * no show or cancellation fee, `AC` - Agreement for any payments due after check in to cover
2961
+ * charges during stay, `CO` - Any charges post checkout, `BP` - Agreement for pre-payment,
2962
+ * deposit or balance payment, `FR` - Agreement for recurring payment (fixed date and fixed
2963
+ * amount), `VR` - Agreement for recurring payment (fixed date and variable amount), `UR` -
2964
+ * Agreement for recurring payment (non fixed date and variable amount). It is possible to enter
2965
+ * more than one value using a comma as a separator e.g. NA, NS. Ej.: `NA`.
2966
+ */
2967
+ mandateTypeCode?: string;
2968
+ /** The name of the merchant containing up to 40 alphanumeric characters. Ej.: `TEST CREDIT CARD`. */
2969
+ merchantName?: string;
2970
+ /**
2971
+ * The identifier of the authorization (Authorization Trace ID/Authorization Trans ID) request
2972
+ * when performed by the booking agent. This value can be up to 16 alphanumeric and special
2973
+ * characters, and is returned from the initial authorization response. Ej.: `1234547839012345`.
2974
+ */
2975
+ originalPaymentReference?: string;
2976
+ /** Indicates purchase amount. Ej.: `1234.56`. */
2977
+ amount?: string;
2978
+ /** The three-letter ISO 4217 currency code. Ej.: `USD`. */
2979
+ currencyCode?: string;
2980
+ /**
2981
+ * The authentication value for tokens (e.g. TAVV). A 20-byte value that has been Base64 encoded,
2982
+ * giving a 28-byte result. Ej.: `ABC3434334343556677487312567`.
2983
+ */
2984
+ tokenAuthenticationValue?: string;
2985
+ /** Indicates whether the cardholder is enrolled in 3DS. Ej.: `PASS`. */
2986
+ verificationResultCode?: string;
2987
+ /**
2988
+ * The 3DS Program Protocol version. A 3 alphanumeric character value, without dots between. Ej.:
2989
+ * `120`.
2990
+ */
2991
+ version?: string;
2992
+ }
2993
+ /** Contains virtual card information. */
2994
+ interface BookingVirtualCard {
2995
+ /** The customer account code of a virtual card. Use with `VIRTUAL_CARD`. Ej.: `John`. */
2996
+ customerAccountCode?: string;
2997
+ /** The agency email address. Ej.: `john@smith.family.priv`. */
2998
+ agencyEmail?: string;
2999
+ /** The hotel's fax number. Ej.: `+1-555-123-4567`. */
3000
+ hotelFax?: string;
3001
+ /**
3002
+ * The full name of the hotel. Pass the value obtained from
3003
+ * HotelPriceCheckRS/PriceCheckInfo/HotelInfo/@HotelName. Ej.: `Ilia Hotel and Luxury Suites`.
3004
+ */
3005
+ hotelName?: string;
3006
+ /**
3007
+ * The type of the room provided by the hotel supplier. Pass the value obtained from
3008
+ * HotelPriceCheckRS/PriceCheckInfo/HotelRateInfo/Rooms/Room/RoomDescription/@Name. Ej.: `2
3009
+ * double beds`.
3010
+ */
3011
+ roomType?: string;
3012
+ /**
3013
+ * The detailed description of the room provided by the hotel supplier. Pass the value obtained
3014
+ * from HotelPriceCheckRS/PriceCheckInfo/HotelRateInfo/Rooms/Room/RoomDescription/Text. Ej.:
3015
+ * `Deluxe Room, 2 Double Beds`.
3016
+ */
3017
+ roomDescription?: string;
3018
+ /**
3019
+ * Total amount for the hotel booking. Pass the value obtained from
3020
+ * HotelPriceCheckRS/PriceCheckInfo/HotelRateInfo/RateInfos/RateInfo/@AmountAfterTax and
3021
+ * @CurrencyCode.
3022
+ */
3023
+ rateAmount?: BookingValue;
3024
+ /**
3025
+ * Lists all extra charges that can be covered by the virtual card. If the card is used to cover
3026
+ * room only please pass "Room Only" value.
3027
+ */
3028
+ virtualCardCharges?: string[];
3029
+ }
3030
+ /** Contains voucher information. */
3031
+ interface BookingVoucher {
3032
+ /** The billing number associated with the voucher. Ej.: `1234567`. */
3033
+ billingNumber?: string;
3034
+ /** Abbreviated code that indicates the type of voucher. Ej.: `FC`. */
3035
+ type?: string;
3036
+ }
3037
+ /** Identifies the use type associated with the selected form of payment. */
3038
+ type BookingFormOfPaymentUseTypeEnum = 'All' | 'Ancillary' | 'Airline' | 'Bus/Ground Transportation' | 'Car' | 'Cruise' | 'Hotel' | 'Insurance' | 'Low-Cost Carrier' | 'Other' | 'Rail' | 'Specialty Service' | 'Tour' | 'Interface Record' | 'Unknown' | (string & {});
3039
+ /** Identifies the trip type associated with the selected form of payment. */
3040
+ type BookingFormOfPaymentTripTypeEnum = 'All' | 'Corporate/Business' | 'Leisure' | 'Emergency' | 'Family' | 'Group' | 'Unknown' | (string & {});
3041
+ /** Identifies the type of the room extra. */
3042
+ type BookingRoomExtrasNameEnum = 'Unknown' | 'Crib' | 'Roll-away Bed' | 'Extra Person' | (string & {});
1140
3043
 
1141
3044
  type CreateBookingErrorPolicy = 'HALT_ON_ERROR' | 'DO_NOT_HALT_ON_FLIGHT_PRICING_ERROR' | 'DO_NOT_HALT_ON_HOTEL_BOOKING_ERROR' | 'DO_NOT_HALT_ON_ANCILLARY_BOOKING_ERROR' | 'DO_NOT_HALT_ON_SEAT_BOOKING_ERROR' | 'HALT_ON_INVALID_MINIMUM_CONNECTING_TIME_ERROR' | 'DO_NOT_HALT_ON_CAR_BOOKING_ERROR' | 'DO_NOT_HALT_ON_IDENTITY_DOCUMENT_WARNING';
1142
3045
  /** Body de `POST /v1/trip/orders/createBooking`. Ningún campo es obligatorio en el primer nivel. */
@@ -1327,21 +3230,12 @@ interface CreateBookingOptions {
1327
3230
  signal?: AbortSignal;
1328
3231
  /** Respuesta cruda del último intento HTTP. El body trae PII: ver `SabreRawResponse`. */
1329
3232
  onRawResponse?: SabreRawResponseCallback;
3233
+ /** Request crudo del último intento que se mandó, sin `Authorization`. Trae PII: ver `SabreRawRequest`. */
3234
+ onRawRequest?: SabreRawRequestCallback;
1330
3235
  }
1331
3236
  /** Elemento de `errors[]` de Create Booking. */
1332
3237
  type CreateBookingResponseError = BookingResponseError;
1333
- /**
1334
- * `Booking` del spec (mismo modelo que Get Booking). Se tipa el primer nivel; el detalle de
1335
- * `flights`, `travelers`, `fares`, etc. queda sin tipar en el Tier 1.
1336
- */
1337
- interface Booking {
1338
- bookingId?: string;
1339
- startDate?: string;
1340
- endDate?: string;
1341
- isCancelable?: boolean;
1342
- isTicketed?: boolean;
1343
- [field: string]: unknown;
1344
- }
3238
+
1345
3239
  /**
1346
3240
  * Reserva creada. Si Sabre la creó con avisos o con errores no fatales (p. ej. con
1347
3241
  * `errorHandlingPolicy: DO_NOT_HALT_ON_*`), no se lanza: van adjuntos aquí.
@@ -1396,6 +3290,8 @@ interface GetBookingOptions {
1396
3290
  signal?: AbortSignal;
1397
3291
  /** Respuesta cruda del último intento HTTP. El body trae PII: ver `SabreRawResponse`. */
1398
3292
  onRawResponse?: SabreRawResponseCallback;
3293
+ /** Request crudo del último intento que se mandó, sin `Authorization`. Trae PII: ver `SabreRawRequest`. */
3294
+ onRawRequest?: SabreRawRequestCallback;
1399
3295
  }
1400
3296
  /**
1401
3297
  * Reserva leída, con el `Booking` en el primer nivel tal cual lo define Sabre (no se normaliza
@@ -1482,6 +3378,8 @@ interface CancelBookingOptions {
1482
3378
  signal?: AbortSignal;
1483
3379
  /** Respuesta cruda del último intento HTTP. El body trae PII: ver `SabreRawResponse`. */
1484
3380
  onRawResponse?: SabreRawResponseCallback;
3381
+ /** Request crudo del último intento que se mandó, sin `Authorization`. Trae PII: ver `SabreRawRequest`. */
3382
+ onRawRequest?: SabreRawRequestCallback;
1485
3383
  }
1486
3384
  /** Cancelación con éxito: sin errores fatales y sin `NO_ITEMS_CANCELLED`. */
1487
3385
  interface CancelBookingResponse {
@@ -1588,9 +3486,14 @@ interface SoapRequest {
1588
3486
  /** `true` para devolver el `BinarySecurityToken` de la respuesta (solo `SessionCreateRQ`). */
1589
3487
  readSecurityToken?: boolean;
1590
3488
  signal?: AbortSignal;
1591
- /** Método público sin `legacy.`, p. ej. `'queue.access'`. Lo recibe `onRawResponse`. */
3489
+ /** Método público sin `legacy.`, p. ej. `'queue.access'`. Lo reciben `onRawResponse` y `onRawRequest`. */
1592
3490
  operation?: string;
1593
3491
  onRawResponse?: SabreRawResponseCallback;
3492
+ /**
3493
+ * No se llama con `usernameToken` (`SessionCreateRQ`): el sobre lleva `wsse:Password` y el
3494
+ * `ClientSecret`, y la regla de auth lo deja fuera (ADR-029).
3495
+ */
3496
+ onRawRequest?: SabreRawRequestCallback;
1594
3497
  }
1595
3498
  interface SoapResponse {
1596
3499
  /** Elemento hijo del `Body` (p. ej. `QueueAccessRS`), parseado y sin prefijos de namespace. */
@@ -1601,6 +3504,8 @@ interface SoapResponse {
1601
3504
  warnings: SabreWarning[];
1602
3505
  /** `eb:MessageId` de la respuesta, el dato que pide soporte de Sabre. */
1603
3506
  messageId: string | undefined;
3507
+ /** `eb:Timestamp` de la respuesta, en UTC con `Z` (ver `respondedAtOf`). */
3508
+ respondedAt: string | undefined;
1604
3509
  /** El sobre redactado, como `raw` de los errores que arme la operación al leer el payload. */
1605
3510
  raw: string;
1606
3511
  /** El `BinarySecurityToken` del header, solo con `readSecurityToken`. */
@@ -1660,9 +3565,9 @@ interface QueueItem {
1660
3565
  locator: string;
1661
3566
  /**
1662
3567
  * `Line/DateTime`, tal cual llegó: con año en las respuestas reales (`"2024-05-15T13:24"`), sin
1663
- * año en el design (`"12-21T07:00"`). Se toma como la colocación en la cola, pero en producción
1664
- * el de `list` y el de `access` no coinciden para un mismo PNR (#96): el de `list` es siempre
1665
- * posterior, y ninguna fuente dice qué fecha es cada uno. Se devuelve tal cual.
3568
+ * año en el design (`"12-21T07:00"`). Al entrar a una cola (`access`, `ignore`, `remove`, `place`)
3569
+ * es la **última modificación del PNR**, no la colocación en la cola: para un mismo PNR no
3570
+ * coincide con el de `list`, que sí es la colocación (producción, #96 y #155). Se devuelve tal cual.
1666
3571
  */
1667
3572
  placedAt?: string;
1668
3573
  /** `Line/POS/Source`: quién colocó el PNR. `agentSine` puede ser `SABRE`. */
@@ -1681,19 +3586,38 @@ interface QueueItem {
1681
3586
  paragraph: readonly string[];
1682
3587
  }
1683
3588
  /**
1684
- * Resultado de una operación que avanza en la cola. El fin de cola es un resultado, no un error:
1685
- * `END OF DISPLAY FOR REQUESTED DATA` llega como `{ done: true }`, también al entrar a una cola
1686
- * vacía, y deja la sesión fuera de la cola.
3589
+ * Un mensaje de la cola `S`, la de mensajes del PCC (ADR-028). No es un PNR: no trae localizador
3590
+ * ni datos de colocación, solo texto libre.
3591
+ */
3592
+ interface QueueMessage {
3593
+ /** `Paragraph/Text`, línea por línea y tal cual, con su sangría. */
3594
+ text: string[];
3595
+ }
3596
+ /**
3597
+ * Resultado de una operación que avanza en la cola. Lo que queda en pantalla se distingue por
3598
+ * `kind`: un PNR (`'pnr'`, en las colas numéricas y con nombre) o un mensaje (`'message'`, en la
3599
+ * cola `S`). El fin de cola es un resultado, no un error: `END OF DISPLAY FOR REQUESTED DATA`
3600
+ * llega como `{ done: true }`, también al entrar a una cola vacía, y deja la sesión fuera de la
3601
+ * cola.
1687
3602
  */
1688
3603
  type QueueStep = {
1689
3604
  done: false;
3605
+ kind: 'pnr';
1690
3606
  item: QueueItem;
1691
3607
  warnings: SabreWarning[];
3608
+ respondedAt?: string;
3609
+ } | {
3610
+ done: false;
3611
+ kind: 'message';
3612
+ message: QueueMessage;
3613
+ warnings: SabreWarning[];
3614
+ respondedAt?: string;
1692
3615
  } | {
1693
3616
  done: true;
1694
3617
  reason: QueueEndReason;
1695
3618
  message: string;
1696
3619
  warnings: SabreWarning[];
3620
+ respondedAt?: string;
1697
3621
  };
1698
3622
 
1699
3623
  interface QueueCountRequest {
@@ -1725,6 +3649,11 @@ interface QueueCountResponse {
1725
3649
  countedAt?: string;
1726
3650
  /** Los `stl:Warning` de la respuesta. No lanzan. */
1727
3651
  warnings: SabreWarning[];
3652
+ /**
3653
+ * `eb:Timestamp` de la respuesta de Sabre, en ISO 8601 UTC (`"2026-11-06T17:34:16Z"`). A
3654
+ * diferencia de las fechas del host, trae año y zona. Falta si Sabre no lo manda.
3655
+ */
3656
+ respondedAt?: string;
1728
3657
  }
1729
3658
 
1730
3659
  interface QueueListRequest {
@@ -1733,9 +3662,20 @@ interface QueueListRequest {
1733
3662
  pcc?: string;
1734
3663
  /** `true` para pedir también el pasajero principal de cada PNR (`Q/…/LN`). */
1735
3664
  primaryPassenger?: boolean;
3665
+ /**
3666
+ * Hasta 8 filtros, como en `access`, pero Sabre solo acepta `QD` (fecha de colocación en la cola,
3667
+ * p. ej. `{ function: 'QD', criteria: '05NOV' }`) o `AK` (el agente que lo colocó, PCC más firma,
3668
+ * p. ej. `{ function: 'AK', criteria: 'PCC1AAT' }`) en la lista: con otro código responde
3669
+ * `VALID SELECTION CODE FOR QUEUE LIST ARE QD OR AK` (producción, #155). El SDK lo rechaza sin red.
3670
+ */
3671
+ selection?: readonly QueueSelection[];
1736
3672
  }
1737
3673
  type QueueListOptions = RequestOptions;
1738
- /** Un PNR de la lista: los campos de su `Line`. */
3674
+ /**
3675
+ * Un PNR de la lista: los campos de su `Line`. Su `placedAt` es la **colocación en la cola**, la
3676
+ * fecha por la que filtra `QD`. No es la misma fecha que el `placedAt` de `access`, que es la última
3677
+ * modificación del PNR (producción, #155).
3678
+ */
1739
3679
  interface QueueListEntry extends Omit<QueueItem, 'paragraph'> {
1740
3680
  /** `Line@Number`: la posición en la lista. */
1741
3681
  position?: number;
@@ -1748,6 +3688,11 @@ interface QueueListResponse {
1748
3688
  /** `Paragraph/Text` tal cual: empieza con la cabecera `QUEUE LIST FOR <PCC> QUEUE <n>`. */
1749
3689
  paragraph: string[];
1750
3690
  warnings: SabreWarning[];
3691
+ /**
3692
+ * `eb:Timestamp` de la respuesta de Sabre, en ISO 8601 UTC (`"2026-11-06T17:34:16Z"`). A
3693
+ * diferencia de las fechas del host, trae año y zona. Falta si Sabre no lo manda.
3694
+ */
3695
+ respondedAt?: string;
1751
3696
  }
1752
3697
 
1753
3698
  /** Una cola de destino. */
@@ -1787,6 +3732,11 @@ interface QueuePlaceResult {
1787
3732
  /** Las líneas `Text`, tal cual (p. ej. `"OK 1030 NMIUTF"`). */
1788
3733
  text: string[];
1789
3734
  warnings: SabreWarning[];
3735
+ /**
3736
+ * `eb:Timestamp` de la respuesta de Sabre, en ISO 8601 UTC (`"2026-11-06T17:34:16Z"`). A
3737
+ * diferencia de las fechas del host, trae año y zona. Falta si Sabre no lo manda.
3738
+ */
3739
+ respondedAt?: string;
1790
3740
  }
1791
3741
  /**
1792
3742
  * Lo que devuelve `place`: un `QueueStep` dentro de una cola, y un `QueuePlaceResult` fuera. Se
@@ -1846,17 +3796,35 @@ declare class QueueManagement {
1846
3796
  * `TypeError` sin red.
1847
3797
  */
1848
3798
  count(request?: QueueCountRequest, options?: QueueCountOptions): Promise<QueueCountResponse>;
3799
+ /**
3800
+ * Get Queue Activity (`QueueAnalysisLLSRQ` 2.0.0, el `QA` del host): por cada cola del PCC, los
3801
+ * ocho contadores de actividad (`numMessages`, `ended`, `ignored`, `moved`, `removed`,
3802
+ * `transferred`, `leftMessageToContact` y `unableToReach`), más los totales. Cada `queue` se puede
3803
+ * pasar tal cual a las demás operaciones de cola. Ninguna fuente dice desde cuándo cuentan
3804
+ * (Q-097): el SDK los devuelve sin interpretar.
3805
+ *
3806
+ * Se puede llamar dentro o fuera de una cola, y no cambia `state`. Es una lectura: se reintenta
3807
+ * ante fallos transitorios. No pide duty code 9 (CERT y producción, Q-098). Un PCC que no tiene 3
3808
+ * o 4 caracteres alfanuméricos lanza `TypeError` sin red.
3809
+ */
3810
+ activity(request?: QueueActivityRequest, options?: QueueActivityOptions): Promise<QueueActivityResponse>;
1849
3811
  /**
1850
3812
  * La lista de localizadores de una cola (`QueueAccessLLSRQ` con `List`), sin recorrerla. Con
1851
3813
  * `primaryPassenger: true`, cada entrada trae también el pasajero principal. Una cola vacía da
1852
3814
  * una lista vacía.
1853
3815
  *
3816
+ * No pagina: Sabre devuelve la cola entera en una respuesta, también con más de 1000 PNR. Con
3817
+ * `selection`, solo los PNR que cumplen el filtro; Sabre acepta solo `QD` o `AK` en la lista.
3818
+ *
1854
3819
  * No cambia `state`. Es una lectura: se reintenta ante fallos transitorios. Lanza `TypeError`
1855
- * sin red si `queue` o `pcc` no son válidos, o si `primaryPassenger` no es un boolean.
3820
+ * sin red si `queue` o `pcc` no son válidos, si `primaryPassenger` no es un boolean, o si
3821
+ * `selection` no es válida o trae un código que no es `QD` ni `AK`.
1856
3822
  */
1857
3823
  list(request: QueueListRequest, options?: QueueListOptions): Promise<QueueListResponse>;
1858
3824
  /**
1859
- * Access Queue (`QueueAccessLLSRQ` 2.1.1): entra a una cola y devuelve su primer PNR. Una cola
3825
+ * Access Queue (`QueueAccessLLSRQ` 2.1.1): entra a una cola y devuelve su primer PNR
3826
+ * (`kind: 'pnr'`). En la cola `S`, la de mensajes, devuelve el primer mensaje
3827
+ * (`kind: 'message'`), y `ignore` pasa al siguiente sin borrarlo (CERT, 2026-11-06). Una cola
1860
3828
  * vacía, o sin PNR que cumplan `selection`, devuelve `{ done: true }` y la sesión sigue afuera.
1861
3829
  *
1862
3830
  * Lanza `TypeError` sin red si la sesión ya está dentro de una cola (o en `'unknown'`: hay que
@@ -1872,7 +3840,8 @@ declare class QueueManagement {
1872
3840
  ignore(options?: QueueNavigationOptions): Promise<QueueStep>;
1873
3841
  /**
1874
3842
  * Saca el PNR actual de la cola y pasa al siguiente (`QR`). Con `from` (de 1 a 3 colas), lo saca
1875
- * de esas colas a la vez. Fuera de una cola lanza `TypeError` sin red.
3843
+ * de esas colas a la vez. Fuera de una cola lanza `TypeError` sin red. En la cola `S` manda `QR`
3844
+ * igual, pero no hay evidencia de qué hace Sabre con el mensaje.
1876
3845
  */
1877
3846
  remove(request?: QueueRemoveRequest, options?: QueueNavigationOptions): Promise<QueueStep>;
1878
3847
  /**
@@ -1920,6 +3889,37 @@ declare class QueueManagement {
1920
3889
  place(request: QueuePlaceRequest, options?: QueuePlaceOptions): Promise<QueuePlaceResponse>;
1921
3890
  }
1922
3891
 
3892
+ /** @internal Lo que `SessionReservation` necesita de la sesión. */
3893
+ interface ReservationContext {
3894
+ send(request: SessionRequest): Promise<SoapResponse>;
3895
+ }
3896
+ declare class SessionReservation {
3897
+ #private;
3898
+ /** @internal Lo construye `SabreSession`. */
3899
+ constructor(context: ReservationContext);
3900
+ /**
3901
+ * Get Itinerary History (`TravelItineraryHistoryLLSRQ` 2.4.0, el `*H` del host): el historial
3902
+ * del PNR, una entrada por transacción. Cada una trae quién la firmó, cuándo y desde qué PCC, y
3903
+ * los elementos que cambió con su `action`: los segmentos de vuelo con su estado en ese momento,
3904
+ * y SSR, ticketing, teléfonos, nombres y emails como texto en `generalInfo`. Lo que no se tipa
3905
+ * queda en la respuesta cruda (`onRawResponse`). **Trae datos del pasajero.**
3906
+ *
3907
+ * El historial no registra las colocaciones en cola, ni las del sistema ni un `place` manual
3908
+ * (CERT, 2026-11-06, Q-097): para eso están `queue.list`/`access` o los remarks `QUEUE_PLACE` de
3909
+ * Get Booking.
3910
+ *
3911
+ * **Dentro de una cola, Sabre lo rechaza** para otro PNR (CERT, 2026-11-06, Q-102): lanza
3912
+ * `SabreBusinessError` con `NAK6 -NOT ALLOWED- FINISH OR IGNORE OTHER ACTIVITY`. El PNR del AAA
3913
+ * no cambia, `queue.state` sigue en `'inside'` y el recorrido sigue con `ignore`. Conviene
3914
+ * llamarlo fuera de una cola.
3915
+ *
3916
+ * Es una lectura: se reintenta ante fallos transitorios. Un `locator` que no es de 6 caracteres
3917
+ * alfanuméricos en mayúscula lanza `TypeError` sin red. Un PNR que no existe sale como
3918
+ * `SabreBusinessError` (`service: 'itineraryHistory'`).
3919
+ */
3920
+ history(locator: string, options?: ReservationHistoryOptions): Promise<ReservationHistoryResponse>;
3921
+ }
3922
+
1923
3923
  interface SabreCommandOptions extends RequestOptions {
1924
3924
  /**
1925
3925
  * `true` solo si el comando es una lectura (`W/PT¥*`, `DC¥…`): entra en la política de
@@ -1939,6 +3939,11 @@ interface SabreCommandResponse {
1939
3939
  warnings: SabreWarning[];
1940
3940
  /** `eb:MessageId` de la respuesta, el dato que pide soporte de Sabre. */
1941
3941
  messageId: string | undefined;
3942
+ /**
3943
+ * `eb:Timestamp` de la respuesta de Sabre, en ISO 8601 UTC (`"2026-11-06T17:34:16Z"`). A
3944
+ * diferencia de las fechas del host, trae año y zona. Falta si Sabre no lo manda.
3945
+ */
3946
+ respondedAt?: string;
1942
3947
  }
1943
3948
 
1944
3949
  /** Lo que una operación pide al transporte. La sesión agrega `CPAId`, `ConversationId` y el token. */
@@ -1967,6 +3972,8 @@ declare class SabreSession {
1967
3972
  #private;
1968
3973
  /** Queue Management: contar, recorrer y colocar en colas, dentro de esta sesión. */
1969
3974
  readonly queue: QueueManagement;
3975
+ /** La reserva: el historial de un PNR, dentro de esta sesión. */
3976
+ readonly reservation: SessionReservation;
1970
3977
  /** @internal Se crea con `SabreLegacy.openSession()`. */
1971
3978
  constructor(internal: {
1972
3979
  transport: SoapTransport;
@@ -2238,6 +4245,32 @@ interface QueueParagraph {
2238
4245
  */
2239
4246
  declare function parseQueueParagraph(lines: readonly string[], options: QueueParagraphOptions): QueueParagraph;
2240
4247
 
4248
+ /** Un remark `QUEUE_PLACE` ya separado en sus partes. */
4249
+ interface QueuePlaceRemark {
4250
+ /** El PCC de la cola, de 3 o 4 caracteres alfanuméricos (`'MEX'`, `'AB12'`). */
4251
+ pcc: string;
4252
+ /**
4253
+ * La fecha de la colocación, `DDMMM` sin año, tal cual llegó (`'25SEP'`). El año se resuelve con
4254
+ * `resolveHostDate(date, referenceDate)`.
4255
+ */
4256
+ date: string;
4257
+ /** El número de cola, de 0 a 511. */
4258
+ queue: number;
4259
+ /** El PIC (prefatory instruction code), de 0 a 191 o de 200 a 254. Llega con ceros a la izquierda. */
4260
+ pic: number;
4261
+ }
4262
+ /**
4263
+ * Parsea el `text` de un remark `QUEUE_PLACE` de Get Booking (`remarks[].type === 'QUEUE_PLACE'`).
4264
+ * La forma salió de remarks reales de producción (Q-090): `MEX25SEP146/015` da
4265
+ * `{ pcc: 'MEX', date: '25SEP', queue: 146, pic: 15 }`.
4266
+ *
4267
+ * Devuelve `null` si el texto no tiene esa forma, o si el día no está entre 01 y 31, el mes entre
4268
+ * `JAN` y `DEC`, la cola entre 0 y 511, o el PIC en 0–191 o 200–254. No lanza: con un valor que no
4269
+ * es un string también devuelve `null`. Ignora los espacios a los costados. Sabre manda el texto en
4270
+ * mayúsculas, así que uno en minúsculas da `null`.
4271
+ */
4272
+ declare function parseQueuePlaceRemark(text: string): QueuePlaceRemark | null;
4273
+
2241
4274
  interface SeatAvailabilityRequestSource {
2242
4275
  /** Grupo del itinerario: aporta la fecha de cada tramo. */
2243
4276
  group: ItineraryGroup;
@@ -2323,6 +4356,6 @@ interface BookingFlightDetailsSource {
2323
4356
  */
2324
4357
  declare function buildBookingFlightDetails(source: BookingFlightDetailsSource): FlightDetails;
2325
4358
 
2326
- declare const VERSION = "0.4.1";
4359
+ declare const VERSION = "0.5.1";
2327
4360
 
2328
- export { Air, type BaggageAllowanceDesc, type BaggageInformation, type BargainFinderMaxRequest, type BargainFinderMaxResponse, type BookContactInformation, type BookGenericSeat, type BookSeat, type BookTraveler, type Booking, type BookingAgency, type BookingFlightDetailsSource, type BookingItemReference, BookingManagement, type BookingResponseError, type BookingSeatSelection, type BookingSource, type BrandedFare, type BuildCredentialsOptions, type BuildCredentialsOptionsV2, type BuildCredentialsOptionsV3, type BuiltCredentialsV2, type BuiltCredentialsV3, type CancelBookingErrorPolicy, type CancelBookingNotification, type CancelBookingOptions, type CancelBookingRequest, type CancelBookingResponse, type CancelSegmentReference, type CreateBookingErrorPolicy, type CreateBookingOptions, type CreateBookingRequest, type CreateBookingResponse, type CreateBookingResponseError, type CurrencyConversion, type Fare, type FareComponent, type FareComponentDesc, type FareComponentDescSegment, type FareComponentSegment, type FareComponentSegmentDetail, type FareMessage, type FlightDetails, type FlightStatusCode, type FlightTicketOperation, type FlightToBook, type GetBookingExtraFeatures, type GetBookingOptions, type GetBookingRequest, type GetBookingResponse, type GetBookingReturnOnly, type GetSeatsRequest, type GetSeatsResponse, type GroupedItineraryResponse, type HostDateDirection, type Itinerary, type ItineraryGroup, type ItineraryMessage, type Leg, type LegDesc, type LegDescription, type LegSchedule, type LegScheduleRef, type LowFareSearchFlight, type LowFareSearchLocation, type LowFareSearchOriginDestination, type LowFareSearchPassengerTypeQuantity, type LowFareSearchRequestorId, type LowFareSearchSource, type LowFareSearchTpaExtensions, type LowFareSearchTravelPreferences, type LowFareSearchTravelerInfoSummary, type ObFeeDesc, type OpenSessionOptions, type OtaAirLowFareSearchRq, type PassengerInfo, type PassengerPricing, type PassengerTotalFare, type PaymentMethod, type PriceComparison, type PriceComparisonType, type PricedSeat, type PricingDetails, type PricingInformation, type PricingQualifiers, type QueueAccessOptions, type QueueAccessRequest, type QueueCount, type QueueCountOptions, type QueueCountRequest, type QueueCountResponse, type QueueEndReason, type QueueItem, type QueueListEntry, type QueueListOptions, type QueueListRequest, type QueueListResponse, QueueManagement, type QueueNavigationOptions, type QueueParagraph, type QueueParagraphAirSegment, type QueueParagraphMessage, type QueueParagraphOptions, type QueueParagraphOtherSegment, type QueueParagraphPassenger, type QueueParagraphReceivedFrom, type QueueParagraphSegment, type QueueParagraphTicketing, type QueueParagraphTicketingEntry, type QueuePlaceOptions, type QueuePlaceRequest, type QueuePlaceResponse, type QueuePlaceResult, type QueuePlaceTarget, type QueuePlacement, type QueueProcessAction, type QueueProcessRequest, type QueueProcessResult, QueueRef, type QueueRemoveRequest, type QueueRemoveTarget, type QueueSelection, type QueueState, type QueueStep, type RawSeatAvailabilityRs, type Ref, type RefundDocumentsType, type RequestOptions, type ResolveHostDateOptions, type RetryOptions, type RevalidateItineraryRequest, type RevalidateItineraryRequestSource, type RevalidateItineraryResponse, Sabre, type SabreAuthVersion, SabreBusinessError, type SabreBusinessErrorOptions, type SabreCommandOptions, type SabreCommandResponse, type SabreConfig, type SabreConfigV2, type SabreConfigV2FromCredentials, type SabreConfigV3, type SabreCredentials, type SabreCredentialsV2, type SabreEnvironment, SabreError, type SabreErrorOptions, SabreGatewayError, type SabreGatewayErrorOptions, SabreLegacy, type SabreLogEvent, type SabreLogLevel, type SabreLogger, SabreOrchestrationError, type SabreOrchestrationErrorOptions, type SabreProtocol, type SabreRawResponse, type SabreRawResponseCallback, type SabreServiceErrorOptions, SabreSession, SabreSessionError, type SabreSessionErrorKind, type SabreSessionErrorOptions, type SabreTokenStore, SabreWarning, type ScheduleCarrier, type ScheduleDesc, type ScheduleEndpoint, type ScheduleEquipment, type Seat, type SeatAreaPreference, type SeatAvailabilityByPayloadRq, type SeatAvailabilityByPnrLocatorRq, type SeatAvailabilityIssue, type SeatAvailabilityRequestSource, type SeatAvailabilityResponse, type SeatCabinCompartment, type SeatCabinFacility, type SeatCabinLayout, type SeatCabinRowPosition, type SeatCharacteristic, type SeatDisplayOnlyItem, type SeatFareComponent, type SeatFareDetail, type SeatFareSegmentAssociation, type SeatFlightLeg, type SeatKeyValuePair, type SeatLoyaltyProgramAccount, type SeatMap, type SeatOfferItem, type SeatOfferItemDetails, type SeatPassenger, type SeatPassengerPayloadRq, type SeatPassengerRs, type SeatPriceBreakdown, type SeatPriceDefinition, type SeatRow, type SeatSegment, type SeatSegmentPayloadRq, type SeatSegmentRs, type SeatServiceDefinition, type SeatSpecialServiceRequest, type SeatTax, type SpecificFare, type StoredToken, type TaxDesc, type TaxSummaryDesc, type TicketingPolicy, type TotalFare, type TravelerPhone, type TravelerTitle, VERSION, type ValidatingCarrierDesc, buildBookingFlightDetails, buildCredentials, buildRevalidateItineraryRequest, buildSeatAvailabilityRequest, parseQueueParagraph, resolveHostDate };
4361
+ export { Air, BargainFinderMaxRequest, BargainFinderMaxResponse, type BookContactInformation, type BookGenericSeat, type BookSeat, type BookTraveler, type Booking, type BookingAccountingFormOfPaymentTypeEnum, type BookingAccountingItem, type BookingAccountingItemCreationTypeEnum, type BookingAddress, type BookingAgency, type BookingAgencyCommission, type BookingAncillary, type BookingAncillarySourceEnum, type BookingAncillaryStatusNameEnum, type BookingAssociatedArrivalFlight, type BookingAssociatedFlightDetails, type BookingBaggageAllowance, type BookingBaggagePolicy, type BookingBasicFormOfPayment, type BookingBrandAttribute, type BookingCar, type BookingCarItem, type BookingCarReference, type BookingCarRentalSite, type BookingCardHolder, type BookingCommission, type BookingCommonOtherServiceInformation, type BookingContactInformation, type BookingCouponStatus, type BookingCouponStatusCodeEnum, type BookingCouponStatusEnum, type BookingCreationDetails, type BookingCruise, type BookingCruiseItem, type BookingCruiseReference, type BookingDateRangeRefundPenalty, type BookingDocumentSubTypeEnum, type BookingDocumentTypeEnum, type BookingEmployerIdTypeEnum, type BookingFare, type BookingFareApplicationTypeEnum, type BookingFareComponent, type BookingFareCreationDetails, type BookingFareDifferenceBreakdown, type BookingFareOffer, type BookingFareRule, type BookingFareRulePenalty, type BookingFareRulePenaltyApplicabilityEnum, type BookingFareService, type BookingFlight, type BookingFlightApplicabilityTypeEnum, type BookingFlightDetailsSource, type BookingFlightItem, type BookingFlightReference, type BookingFlightReferenceCoupon, type BookingFlightSourceEnum, type BookingFlightTicket, type BookingForceHotelUpdateDetails, type BookingFormOfPaymentResponse, type BookingFormOfPaymentTripTypeEnum, type BookingFormOfPaymentTypeResponseEnum, type BookingFormOfPaymentUseTypeEnum, type BookingFutureTicketingPolicy, type BookingGenderEnum, type BookingGenericAddress, type BookingGenericFormOfPayment, type BookingGenericTotalValues, type BookingGoodsAndServicesTax, type BookingGuaranteePaymentTypeEnum, type BookingGuaranteeTypeNameEnum, type BookingHandlingFee, type BookingHiddenStop, type BookingHotel, type BookingHotelAddress, type BookingHotelDateRangeRefundPenalty, type BookingHotelItem, type BookingHotelPaymentPolicyEnum, type BookingHotelPenaltyValue, type BookingHotelReference, type BookingHotelSourceEnum, type BookingIdentityDocument, type BookingIdentityDocumentReference, type BookingInitialSellingFare, type BookingItemReference, type BookingJourney, type BookingLoyaltyProgram, BookingManagement, type BookingManualApproval, type BookingMeal, type BookingMealDescriptionEnum, type BookingNonElectronicTicket, type BookingNonElectronicTicketStatusEnum, type BookingOriginalTotalValues, type BookingOtherServiceInformation, type BookingPassportTypeResponseEnum, type BookingPhone, type BookingPhoneResponse, type BookingPricingStatusCodeEnum, type BookingPricingStatusNameEnum, type BookingPricingTypeCodeEnum, type BookingPricingTypeNameEnum, type BookingProfile, type BookingProgramTypeEnum, type BookingRateInterval, type BookingReasonForIssuanceEnum, type BookingRemark, type BookingRemarkTypeEnum, type BookingResponseError, type BookingRoom, type BookingRoomExtraResponse, type BookingRoomExtrasNameEnum, type BookingSeat, type BookingSeatSelection, type BookingSegmentBasicAttributes, type BookingSegmentBasics, type BookingSegmentReference, type BookingSource, type BookingSpecialService, type BookingStatusNameEnum, type BookingStrongCustomerAuthentication, type BookingTariffBasisTypeEnum, type BookingTax, type BookingTaxComponent, type BookingTicketCoupon, type BookingTicketStatusEnum, type BookingTotalPayments, type BookingTotalValues, type BookingTrain, type BookingTrainItem, type BookingTrainReference, type BookingTraveler, type BookingTravelerTypeEnum, type BookingTravelersEmployer, type BookingTravelersGroup, type BookingValue, type BookingVehicleTypeNameEnum, type BookingVirtualCard, type BookingVisaTypeResponseEnum, type BookingVoucher, type BrandedFare, type BuildCredentialsOptions, type BuildCredentialsOptionsV2, type BuildCredentialsOptionsV3, type BuiltCredentialsV2, type BuiltCredentialsV3, type CancelBookingErrorPolicy, type CancelBookingNotification, type CancelBookingOptions, type CancelBookingRequest, type CancelBookingResponse, type CancelSegmentReference, type CreateBookingErrorPolicy, type CreateBookingOptions, type CreateBookingRequest, type CreateBookingResponse, type CreateBookingResponseError, type FlightDetails, type FlightStatusCode, type FlightTicketOperation, type FlightToBook, type GetBookingExtraFeatures, type GetBookingOptions, type GetBookingRequest, type GetBookingResponse, type GetBookingReturnOnly, type GetSeatsRequest, type GetSeatsResponse, GroupedItineraryResponse, type HostDateDirection, Itinerary, ItineraryGroup, type OpenSessionOptions, OtaAirLowFareSearchRq, type PassengerPricing, type PaymentMethod, type PriceComparison, type PriceComparisonType, type PricedSeat, type PricingDetails, type PricingQualifiers, type QueueAccessOptions, type QueueAccessRequest, QueueActivityOptions, QueueActivityRequest, QueueActivityResponse, type QueueCount, type QueueCountOptions, type QueueCountRequest, type QueueCountResponse, type QueueEndReason, type QueueItem, type QueueListEntry, type QueueListOptions, type QueueListRequest, type QueueListResponse, QueueManagement, type QueueMessage, type QueueNavigationOptions, type QueueParagraph, type QueueParagraphAirSegment, type QueueParagraphMessage, type QueueParagraphOptions, type QueueParagraphOtherSegment, type QueueParagraphPassenger, type QueueParagraphReceivedFrom, type QueueParagraphSegment, type QueueParagraphTicketing, type QueueParagraphTicketingEntry, type QueuePlaceOptions, type QueuePlaceRemark, type QueuePlaceRequest, type QueuePlaceResponse, type QueuePlaceResult, type QueuePlaceTarget, type QueuePlacement, type QueueProcessAction, type QueueProcessRequest, type QueueProcessResult, QueueRef, type QueueRemoveRequest, type QueueRemoveTarget, type QueueSelection, type QueueState, type QueueStep, type RawSeatAvailabilityRs, type RefundDocumentsType, RequestOptions, ReservationHistoryOptions, ReservationHistoryResponse, type ResolveHostDateOptions, RetryOptions, type RevalidateItineraryRequest, type RevalidateItineraryRequestSource, type RevalidateItineraryResponse, Sabre, type SabreAuthVersion, SabreBusinessError, type SabreCommandOptions, type SabreCommandResponse, type SabreConfig, type SabreConfigFromCredentials, type SabreConfigV2, type SabreConfigV2FromCredentials, type SabreConfigV3, type SabreCredentials, type SabreCredentialsAnyVersion, type SabreCredentialsV2, type SabreEnvironment, SabreError, SabreLegacy, type SabreLogEvent, type SabreLogLevel, type SabreLogger, SabreRawRequestCallback, SabreRawResponseCallback, SabreSession, type SabreTokenStore, SabreWarning, type Seat, type SeatAreaPreference, type SeatAvailabilityByPayloadRq, type SeatAvailabilityByPnrLocatorRq, type SeatAvailabilityIssue, type SeatAvailabilityRequestSource, type SeatAvailabilityResponse, type SeatCabinAisle, type SeatCabinCompartment, type SeatCabinFacility, type SeatCabinLayout, type SeatCabinRowPosition, type SeatCharacteristic, type SeatDisplayOnlyItem, type SeatFareComponent, type SeatFareDetail, type SeatFareSegmentAssociation, type SeatFlightLeg, type SeatKeyValuePair, type SeatLoyaltyProgramAccount, type SeatMap, type SeatOfferItem, type SeatOfferItemDetails, type SeatPassenger, type SeatPassengerPayloadRq, type SeatPassengerRs, type SeatPriceBreakdown, type SeatPriceDefinition, type SeatRow, type SeatSegment, type SeatSegmentPayloadRq, type SeatSegmentRs, type SeatServiceDefinition, type SeatSpecialServiceRequest, type SeatTax, SessionReservation, type SpecificFare, type StoredToken, type TicketingPolicy, type TravelerPhone, type TravelerTitle, VERSION, buildBookingFlightDetails, buildCredentials, buildRevalidateItineraryRequest, buildSeatAvailabilityRequest, parseQueueParagraph, parseQueuePlaceRemark, resolveHostDate };