@voyantjs/bookings 0.6.8 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/README.md +2 -2
  2. package/dist/index.d.ts +8 -8
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +5 -5
  5. package/dist/pii.d.ts +10 -9
  6. package/dist/pii.d.ts.map +1 -1
  7. package/dist/pii.js +33 -33
  8. package/dist/products-ref.d.ts +93 -1
  9. package/dist/products-ref.d.ts.map +1 -1
  10. package/dist/products-ref.js +12 -1
  11. package/dist/routes-groups.d.ts +25 -5
  12. package/dist/routes-groups.d.ts.map +1 -1
  13. package/dist/routes-groups.js +3 -3
  14. package/dist/routes-public.d.ts +19 -21
  15. package/dist/routes-public.d.ts.map +1 -1
  16. package/dist/routes-public.js +1 -1
  17. package/dist/routes-shared.d.ts +3 -2
  18. package/dist/routes-shared.d.ts.map +1 -1
  19. package/dist/routes.d.ts +283 -188
  20. package/dist/routes.d.ts.map +1 -1
  21. package/dist/routes.js +89 -102
  22. package/dist/schema/travel-details.d.ts +27 -27
  23. package/dist/schema/travel-details.d.ts.map +1 -1
  24. package/dist/schema/travel-details.js +19 -14
  25. package/dist/schema-core.d.ts +194 -305
  26. package/dist/schema-core.d.ts.map +1 -1
  27. package/dist/schema-core.js +19 -10
  28. package/dist/schema-items.d.ts +15 -15
  29. package/dist/schema-items.d.ts.map +1 -1
  30. package/dist/schema-items.js +12 -12
  31. package/dist/schema-operations.d.ts +1 -1
  32. package/dist/schema-operations.js +3 -3
  33. package/dist/schema-relations.d.ts +26 -9
  34. package/dist/schema-relations.d.ts.map +1 -1
  35. package/dist/schema-relations.js +36 -21
  36. package/dist/schema-shared.d.ts +3 -2
  37. package/dist/schema-shared.d.ts.map +1 -1
  38. package/dist/schema-shared.js +4 -5
  39. package/dist/schema-staff.d.ts +267 -0
  40. package/dist/schema-staff.d.ts.map +1 -0
  41. package/dist/schema-staff.js +31 -0
  42. package/dist/schema.d.ts +1 -0
  43. package/dist/schema.d.ts.map +1 -1
  44. package/dist/schema.js +1 -0
  45. package/dist/service-groups.d.ts +3 -7
  46. package/dist/service-groups.d.ts.map +1 -1
  47. package/dist/service-groups.js +6 -10
  48. package/dist/service-public.d.ts +102 -55
  49. package/dist/service-public.d.ts.map +1 -1
  50. package/dist/service-public.js +119 -54
  51. package/dist/service.d.ts +327 -104
  52. package/dist/service.d.ts.map +1 -1
  53. package/dist/service.js +530 -130
  54. package/dist/transactions-ref.d.ts +930 -66
  55. package/dist/transactions-ref.d.ts.map +1 -1
  56. package/dist/transactions-ref.js +56 -2
  57. package/dist/validation-public.d.ts +29 -69
  58. package/dist/validation-public.d.ts.map +1 -1
  59. package/dist/validation-public.js +21 -20
  60. package/dist/validation-shared.d.ts +4 -5
  61. package/dist/validation-shared.d.ts.map +1 -1
  62. package/dist/validation-shared.js +2 -10
  63. package/dist/validation.d.ts +248 -44
  64. package/dist/validation.d.ts.map +1 -1
  65. package/dist/validation.js +103 -28
  66. package/package.json +6 -6
@@ -23,6 +23,16 @@ export declare const insertBookingSchema: z.ZodObject<{
23
23
  }>>;
24
24
  externalBookingRef: z.ZodNullable<z.ZodOptional<z.ZodString>>;
25
25
  communicationLanguage: z.ZodNullable<z.ZodOptional<z.ZodString>>;
26
+ contactFirstName: z.ZodNullable<z.ZodOptional<z.ZodString>>;
27
+ contactLastName: z.ZodNullable<z.ZodOptional<z.ZodString>>;
28
+ contactEmail: z.ZodNullable<z.ZodOptional<z.ZodString>>;
29
+ contactPhone: z.ZodNullable<z.ZodOptional<z.ZodString>>;
30
+ contactPreferredLanguage: z.ZodNullable<z.ZodOptional<z.ZodString>>;
31
+ contactCountry: z.ZodNullable<z.ZodOptional<z.ZodString>>;
32
+ contactRegion: z.ZodNullable<z.ZodOptional<z.ZodString>>;
33
+ contactCity: z.ZodNullable<z.ZodOptional<z.ZodString>>;
34
+ contactAddressLine1: z.ZodNullable<z.ZodOptional<z.ZodString>>;
35
+ contactPostalCode: z.ZodNullable<z.ZodOptional<z.ZodString>>;
26
36
  sellCurrency: z.ZodString;
27
37
  baseCurrency: z.ZodNullable<z.ZodOptional<z.ZodString>>;
28
38
  sellAmountCents: z.ZodNullable<z.ZodOptional<z.ZodNumber>>;
@@ -65,6 +75,16 @@ export declare const updateBookingSchema: z.ZodObject<{
65
75
  }>>>;
66
76
  externalBookingRef: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
67
77
  communicationLanguage: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
78
+ contactFirstName: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
79
+ contactLastName: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
80
+ contactEmail: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
81
+ contactPhone: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
82
+ contactPreferredLanguage: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
83
+ contactCountry: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
84
+ contactRegion: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
85
+ contactCity: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
86
+ contactAddressLine1: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
87
+ contactPostalCode: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
68
88
  sellCurrency: z.ZodOptional<z.ZodString>;
69
89
  baseCurrency: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
70
90
  sellAmountCents: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodNumber>>>;
@@ -98,6 +118,16 @@ export declare const createBookingSchema: z.ZodObject<{
98
118
  organizationId: z.ZodNullable<z.ZodOptional<z.ZodString>>;
99
119
  externalBookingRef: z.ZodNullable<z.ZodOptional<z.ZodString>>;
100
120
  communicationLanguage: z.ZodNullable<z.ZodOptional<z.ZodString>>;
121
+ contactFirstName: z.ZodNullable<z.ZodOptional<z.ZodString>>;
122
+ contactLastName: z.ZodNullable<z.ZodOptional<z.ZodString>>;
123
+ contactEmail: z.ZodNullable<z.ZodOptional<z.ZodString>>;
124
+ contactPhone: z.ZodNullable<z.ZodOptional<z.ZodString>>;
125
+ contactPreferredLanguage: z.ZodNullable<z.ZodOptional<z.ZodString>>;
126
+ contactCountry: z.ZodNullable<z.ZodOptional<z.ZodString>>;
127
+ contactRegion: z.ZodNullable<z.ZodOptional<z.ZodString>>;
128
+ contactCity: z.ZodNullable<z.ZodOptional<z.ZodString>>;
129
+ contactAddressLine1: z.ZodNullable<z.ZodOptional<z.ZodString>>;
130
+ contactPostalCode: z.ZodNullable<z.ZodOptional<z.ZodString>>;
101
131
  sellCurrency: z.ZodString;
102
132
  baseCurrency: z.ZodNullable<z.ZodOptional<z.ZodString>>;
103
133
  sellAmountCents: z.ZodNullable<z.ZodOptional<z.ZodNumber>>;
@@ -131,17 +161,36 @@ export declare const bookingListQuerySchema: z.ZodObject<{
131
161
  expired: "expired";
132
162
  }>>;
133
163
  search: z.ZodOptional<z.ZodString>;
164
+ productId: z.ZodOptional<z.ZodString>;
165
+ optionId: z.ZodOptional<z.ZodString>;
166
+ personId: z.ZodOptional<z.ZodString>;
167
+ organizationId: z.ZodOptional<z.ZodString>;
134
168
  limit: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
135
169
  offset: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
136
170
  }, z.core.$strip>;
171
+ export declare const bookingAggregatesQuerySchema: z.ZodObject<{
172
+ from: z.ZodOptional<z.ZodString>;
173
+ to: z.ZodOptional<z.ZodString>;
174
+ }, z.core.$strip>;
137
175
  export declare const convertProductSchema: z.ZodObject<{
138
176
  productId: z.ZodString;
139
177
  optionId: z.ZodNullable<z.ZodOptional<z.ZodString>>;
178
+ slotId: z.ZodNullable<z.ZodOptional<z.ZodString>>;
140
179
  bookingNumber: z.ZodString;
141
180
  personId: z.ZodNullable<z.ZodOptional<z.ZodString>>;
142
181
  organizationId: z.ZodNullable<z.ZodOptional<z.ZodString>>;
143
182
  internalNotes: z.ZodNullable<z.ZodOptional<z.ZodString>>;
144
183
  }, z.core.$strip>;
184
+ /**
185
+ * Admin pricing-preview request. Mirrors the storefront pricing session
186
+ * resolver input so the operator dialog sees the same numbers the customer
187
+ * would see for the same product + option + catalog.
188
+ */
189
+ export declare const pricingPreviewSchema: z.ZodObject<{
190
+ productId: z.ZodString;
191
+ optionId: z.ZodNullable<z.ZodOptional<z.ZodString>>;
192
+ catalogId: z.ZodNullable<z.ZodOptional<z.ZodString>>;
193
+ }, z.core.$strip>;
145
194
  export declare const updateBookingStatusSchema: z.ZodObject<{
146
195
  status: z.ZodEnum<{
147
196
  cancelled: "cancelled";
@@ -208,6 +257,16 @@ export declare const reserveBookingSchema: z.ZodObject<{
208
257
  }>>;
209
258
  externalBookingRef: z.ZodNullable<z.ZodOptional<z.ZodString>>;
210
259
  communicationLanguage: z.ZodNullable<z.ZodOptional<z.ZodString>>;
260
+ contactFirstName: z.ZodNullable<z.ZodOptional<z.ZodString>>;
261
+ contactLastName: z.ZodNullable<z.ZodOptional<z.ZodString>>;
262
+ contactEmail: z.ZodNullable<z.ZodOptional<z.ZodString>>;
263
+ contactPhone: z.ZodNullable<z.ZodOptional<z.ZodString>>;
264
+ contactPreferredLanguage: z.ZodNullable<z.ZodOptional<z.ZodString>>;
265
+ contactCountry: z.ZodNullable<z.ZodOptional<z.ZodString>>;
266
+ contactRegion: z.ZodNullable<z.ZodOptional<z.ZodString>>;
267
+ contactCity: z.ZodNullable<z.ZodOptional<z.ZodString>>;
268
+ contactAddressLine1: z.ZodNullable<z.ZodOptional<z.ZodString>>;
269
+ contactPostalCode: z.ZodNullable<z.ZodOptional<z.ZodString>>;
211
270
  sellCurrency: z.ZodString;
212
271
  baseCurrency: z.ZodNullable<z.ZodOptional<z.ZodString>>;
213
272
  sellAmountCents: z.ZodNullable<z.ZodOptional<z.ZodNumber>>;
@@ -276,6 +335,17 @@ export declare const expireStaleBookingsSchema: z.ZodObject<{
276
335
  }, z.core.$strip>;
277
336
  export declare const reserveBookingFromTransactionSchema: z.ZodObject<{
278
337
  bookingNumber: z.ZodString;
338
+ contactFirstName: z.ZodNullable<z.ZodOptional<z.ZodString>>;
339
+ contactLastName: z.ZodNullable<z.ZodOptional<z.ZodString>>;
340
+ contactEmail: z.ZodNullable<z.ZodOptional<z.ZodString>>;
341
+ contactPhone: z.ZodNullable<z.ZodOptional<z.ZodString>>;
342
+ contactPreferredLanguage: z.ZodNullable<z.ZodOptional<z.ZodString>>;
343
+ contactCountry: z.ZodNullable<z.ZodOptional<z.ZodString>>;
344
+ contactRegion: z.ZodNullable<z.ZodOptional<z.ZodString>>;
345
+ contactCity: z.ZodNullable<z.ZodOptional<z.ZodString>>;
346
+ contactAddressLine1: z.ZodNullable<z.ZodOptional<z.ZodString>>;
347
+ contactPostalCode: z.ZodNullable<z.ZodOptional<z.ZodString>>;
348
+ internalNotes: z.ZodNullable<z.ZodOptional<z.ZodString>>;
279
349
  sourceType: z.ZodDefault<z.ZodEnum<{
280
350
  internal: "internal";
281
351
  reseller: "reseller";
@@ -287,18 +357,50 @@ export declare const reserveBookingFromTransactionSchema: z.ZodObject<{
287
357
  }>>;
288
358
  holdMinutes: z.ZodDefault<z.ZodNumber>;
289
359
  holdExpiresAt: z.ZodNullable<z.ZodOptional<z.ZodString>>;
290
- internalNotes: z.ZodNullable<z.ZodOptional<z.ZodString>>;
291
360
  note: z.ZodNullable<z.ZodOptional<z.ZodString>>;
292
361
  includeParticipants: z.ZodDefault<z.ZodBoolean>;
293
362
  }, z.core.$strip>;
294
- export declare const insertParticipantSchema: z.ZodObject<{
363
+ export declare const insertTravelerSchema: z.ZodObject<{
364
+ firstName: z.ZodString;
365
+ lastName: z.ZodString;
366
+ email: z.ZodNullable<z.ZodOptional<z.ZodString>>;
367
+ phone: z.ZodNullable<z.ZodOptional<z.ZodString>>;
368
+ preferredLanguage: z.ZodNullable<z.ZodOptional<z.ZodString>>;
369
+ accessibilityNeeds: z.ZodNullable<z.ZodOptional<z.ZodString>>;
370
+ specialRequests: z.ZodNullable<z.ZodOptional<z.ZodString>>;
371
+ travelerCategory: z.ZodNullable<z.ZodOptional<z.ZodEnum<{
372
+ other: "other";
373
+ adult: "adult";
374
+ child: "child";
375
+ infant: "infant";
376
+ senior: "senior";
377
+ }>>>;
378
+ isPrimary: z.ZodNullable<z.ZodOptional<z.ZodBoolean>>;
379
+ notes: z.ZodNullable<z.ZodOptional<z.ZodString>>;
380
+ }, z.core.$strip>;
381
+ export declare const updateTravelerSchema: z.ZodObject<{
382
+ firstName: z.ZodOptional<z.ZodString>;
383
+ lastName: z.ZodOptional<z.ZodString>;
384
+ email: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
385
+ phone: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
386
+ preferredLanguage: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
387
+ accessibilityNeeds: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
388
+ specialRequests: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
389
+ travelerCategory: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodEnum<{
390
+ other: "other";
391
+ adult: "adult";
392
+ child: "child";
393
+ infant: "infant";
394
+ senior: "senior";
395
+ }>>>>;
396
+ isPrimary: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodBoolean>>>;
397
+ notes: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
398
+ }, z.core.$strip>;
399
+ export declare const insertTravelerRecordSchema: z.ZodObject<{
295
400
  personId: z.ZodNullable<z.ZodOptional<z.ZodString>>;
296
401
  participantType: z.ZodDefault<z.ZodEnum<{
297
- staff: "staff";
298
402
  other: "other";
299
403
  traveler: "traveler";
300
- booker: "booker";
301
- contact: "contact";
302
404
  occupant: "occupant";
303
405
  }>>;
304
406
  travelerCategory: z.ZodNullable<z.ZodOptional<z.ZodEnum<{
@@ -318,14 +420,11 @@ export declare const insertParticipantSchema: z.ZodObject<{
318
420
  isPrimary: z.ZodDefault<z.ZodBoolean>;
319
421
  notes: z.ZodNullable<z.ZodOptional<z.ZodString>>;
320
422
  }, z.core.$strip>;
321
- export declare const updateParticipantSchema: z.ZodObject<{
423
+ export declare const updateTravelerRecordSchema: z.ZodObject<{
322
424
  personId: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
323
425
  participantType: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
324
- staff: "staff";
325
426
  other: "other";
326
427
  traveler: "traveler";
327
- booker: "booker";
328
- contact: "contact";
329
428
  occupant: "occupant";
330
429
  }>>>;
331
430
  travelerCategory: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodEnum<{
@@ -345,23 +444,7 @@ export declare const updateParticipantSchema: z.ZodObject<{
345
444
  isPrimary: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
346
445
  notes: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
347
446
  }, z.core.$strip>;
348
- export declare const insertPassengerSchema: z.ZodObject<{
349
- firstName: z.ZodString;
350
- lastName: z.ZodString;
351
- email: z.ZodNullable<z.ZodOptional<z.ZodString>>;
352
- phone: z.ZodNullable<z.ZodOptional<z.ZodString>>;
353
- specialRequests: z.ZodNullable<z.ZodOptional<z.ZodString>>;
354
- isLeadPassenger: z.ZodNullable<z.ZodOptional<z.ZodBoolean>>;
355
- }, z.core.$strip>;
356
- export declare const updatePassengerSchema: z.ZodObject<{
357
- firstName: z.ZodOptional<z.ZodString>;
358
- lastName: z.ZodOptional<z.ZodString>;
359
- email: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
360
- phone: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
361
- specialRequests: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
362
- isLeadPassenger: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodBoolean>>>;
363
- }, z.core.$strip>;
364
- export declare const upsertParticipantTravelDetailsSchema: z.ZodObject<{
447
+ export declare const upsertTravelerTravelDetailsSchema: z.ZodObject<{
365
448
  nationality: z.ZodNullable<z.ZodOptional<z.ZodString>>;
366
449
  passportNumber: z.ZodNullable<z.ZodOptional<z.ZodString>>;
367
450
  passportExpiry: z.ZodNullable<z.ZodOptional<z.ZodString>>;
@@ -505,9 +588,9 @@ export declare const updateBookingAllocationSchema: z.ZodObject<{
505
588
  releasedAt: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
506
589
  metadata: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>>;
507
590
  }, z.core.$strip>;
508
- export declare const insertBookingFulfillmentSchema: z.ZodObject<{
591
+ export declare const insertBookingFulfillmentSchema: z.ZodPipe<z.ZodObject<{
509
592
  bookingItemId: z.ZodNullable<z.ZodOptional<z.ZodString>>;
510
- participantId: z.ZodNullable<z.ZodOptional<z.ZodString>>;
593
+ travelerId: z.ZodNullable<z.ZodOptional<z.ZodString>>;
511
594
  fulfillmentType: z.ZodEnum<{
512
595
  other: "other";
513
596
  voucher: "voucher";
@@ -535,10 +618,30 @@ export declare const insertBookingFulfillmentSchema: z.ZodObject<{
535
618
  payload: z.ZodNullable<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
536
619
  issuedAt: z.ZodNullable<z.ZodOptional<z.ZodString>>;
537
620
  revokedAt: z.ZodNullable<z.ZodOptional<z.ZodString>>;
538
- }, z.core.$strip>;
539
- export declare const updateBookingFulfillmentSchema: z.ZodObject<{
621
+ }, z.core.$strip>, z.ZodTransform<{
622
+ travelerId: string | null;
623
+ fulfillmentType: "other" | "voucher" | "ticket" | "pdf" | "qr_code" | "barcode" | "mobile";
624
+ deliveryChannel: "email" | "other" | "download" | "api" | "wallet";
625
+ status: "pending" | "issued" | "reissued" | "revoked" | "failed";
626
+ bookingItemId?: string | null | undefined;
627
+ artifactUrl?: string | null | undefined;
628
+ payload?: Record<string, unknown> | null | undefined;
629
+ issuedAt?: string | null | undefined;
630
+ revokedAt?: string | null | undefined;
631
+ }, {
632
+ fulfillmentType: "other" | "voucher" | "ticket" | "pdf" | "qr_code" | "barcode" | "mobile";
633
+ deliveryChannel: "email" | "other" | "download" | "api" | "wallet";
634
+ status: "pending" | "issued" | "reissued" | "revoked" | "failed";
635
+ bookingItemId?: string | null | undefined;
636
+ travelerId?: string | null | undefined;
637
+ artifactUrl?: string | null | undefined;
638
+ payload?: Record<string, unknown> | null | undefined;
639
+ issuedAt?: string | null | undefined;
640
+ revokedAt?: string | null | undefined;
641
+ }>>;
642
+ export declare const updateBookingFulfillmentSchema: z.ZodPipe<z.ZodObject<{
540
643
  bookingItemId: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
541
- participantId: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
644
+ travelerId: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
542
645
  fulfillmentType: z.ZodOptional<z.ZodEnum<{
543
646
  other: "other";
544
647
  voucher: "voucher";
@@ -566,10 +669,30 @@ export declare const updateBookingFulfillmentSchema: z.ZodObject<{
566
669
  payload: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>>;
567
670
  issuedAt: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
568
671
  revokedAt: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
569
- }, z.core.$strip>;
570
- export declare const recordBookingRedemptionSchema: z.ZodObject<{
672
+ }, z.core.$strip>, z.ZodTransform<{
673
+ travelerId: string | null | undefined;
674
+ bookingItemId?: string | null | undefined;
675
+ fulfillmentType?: "other" | "voucher" | "ticket" | "pdf" | "qr_code" | "barcode" | "mobile" | undefined;
676
+ deliveryChannel?: "email" | "other" | "download" | "api" | "wallet" | undefined;
677
+ status?: "pending" | "issued" | "reissued" | "revoked" | "failed" | undefined;
678
+ artifactUrl?: string | null | undefined;
679
+ payload?: Record<string, unknown> | null | undefined;
680
+ issuedAt?: string | null | undefined;
681
+ revokedAt?: string | null | undefined;
682
+ }, {
683
+ bookingItemId?: string | null | undefined;
684
+ travelerId?: string | null | undefined;
685
+ fulfillmentType?: "other" | "voucher" | "ticket" | "pdf" | "qr_code" | "barcode" | "mobile" | undefined;
686
+ deliveryChannel?: "email" | "other" | "download" | "api" | "wallet" | undefined;
687
+ status?: "pending" | "issued" | "reissued" | "revoked" | "failed" | undefined;
688
+ artifactUrl?: string | null | undefined;
689
+ payload?: Record<string, unknown> | null | undefined;
690
+ issuedAt?: string | null | undefined;
691
+ revokedAt?: string | null | undefined;
692
+ }>>;
693
+ export declare const recordBookingRedemptionSchema: z.ZodPipe<z.ZodObject<{
571
694
  bookingItemId: z.ZodNullable<z.ZodOptional<z.ZodString>>;
572
- participantId: z.ZodNullable<z.ZodOptional<z.ZodString>>;
695
+ travelerId: z.ZodNullable<z.ZodOptional<z.ZodString>>;
573
696
  redeemedAt: z.ZodNullable<z.ZodOptional<z.ZodString>>;
574
697
  redeemedBy: z.ZodNullable<z.ZodOptional<z.ZodString>>;
575
698
  location: z.ZodNullable<z.ZodOptional<z.ZodString>>;
@@ -580,19 +703,59 @@ export declare const recordBookingRedemptionSchema: z.ZodObject<{
580
703
  scan: "scan";
581
704
  }>>;
582
705
  metadata: z.ZodNullable<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
583
- }, z.core.$strip>;
584
- export declare const insertBookingItemParticipantSchema: z.ZodObject<{
585
- participantId: z.ZodString;
706
+ }, z.core.$strip>, z.ZodTransform<{
707
+ travelerId: string | null;
708
+ method: "other" | "manual" | "api" | "scan";
709
+ bookingItemId?: string | null | undefined;
710
+ redeemedAt?: string | null | undefined;
711
+ redeemedBy?: string | null | undefined;
712
+ location?: string | null | undefined;
713
+ metadata?: Record<string, unknown> | null | undefined;
714
+ }, {
715
+ method: "other" | "manual" | "api" | "scan";
716
+ bookingItemId?: string | null | undefined;
717
+ travelerId?: string | null | undefined;
718
+ redeemedAt?: string | null | undefined;
719
+ redeemedBy?: string | null | undefined;
720
+ location?: string | null | undefined;
721
+ metadata?: Record<string, unknown> | null | undefined;
722
+ }>>;
723
+ export declare const insertBookingItemTravelerSchema: z.ZodPipe<z.ZodObject<{
724
+ travelerId: z.ZodOptional<z.ZodString>;
586
725
  role: z.ZodDefault<z.ZodEnum<{
587
726
  other: "other";
588
727
  traveler: "traveler";
589
728
  occupant: "occupant";
590
- primary_contact: "primary_contact";
591
- service_assignee: "service_assignee";
592
729
  beneficiary: "beneficiary";
593
730
  }>>;
594
731
  isPrimary: z.ZodDefault<z.ZodBoolean>;
595
- }, z.core.$strip>;
732
+ }, z.core.$strip>, z.ZodTransform<{
733
+ travelerId: string;
734
+ role: "other" | "traveler" | "occupant" | "beneficiary";
735
+ isPrimary: boolean;
736
+ }, {
737
+ role: "other" | "traveler" | "occupant" | "beneficiary";
738
+ isPrimary: boolean;
739
+ travelerId?: string | undefined;
740
+ }>>;
741
+ export declare const insertBookingItemParticipantSchema: z.ZodPipe<z.ZodObject<{
742
+ travelerId: z.ZodOptional<z.ZodString>;
743
+ role: z.ZodDefault<z.ZodEnum<{
744
+ other: "other";
745
+ traveler: "traveler";
746
+ occupant: "occupant";
747
+ beneficiary: "beneficiary";
748
+ }>>;
749
+ isPrimary: z.ZodDefault<z.ZodBoolean>;
750
+ }, z.core.$strip>, z.ZodTransform<{
751
+ travelerId: string;
752
+ role: "other" | "traveler" | "occupant" | "beneficiary";
753
+ isPrimary: boolean;
754
+ }, {
755
+ role: "other" | "traveler" | "occupant" | "beneficiary";
756
+ isPrimary: boolean;
757
+ travelerId?: string | undefined;
758
+ }>>;
596
759
  export declare const insertSupplierStatusSchema: z.ZodObject<{
597
760
  supplierServiceId: z.ZodNullable<z.ZodOptional<z.ZodString>>;
598
761
  serviceName: z.ZodString;
@@ -625,9 +788,8 @@ export declare const updateSupplierStatusSchema: z.ZodObject<{
625
788
  export declare const insertBookingNoteSchema: z.ZodObject<{
626
789
  content: z.ZodString;
627
790
  }, z.core.$strip>;
628
- export declare const insertBookingDocumentSchema: z.ZodObject<{
629
- participantId: z.ZodNullable<z.ZodOptional<z.ZodString>>;
630
- passengerId: z.ZodNullable<z.ZodOptional<z.ZodString>>;
791
+ export declare const insertBookingDocumentSchema: z.ZodPipe<z.ZodObject<{
792
+ travelerId: z.ZodNullable<z.ZodOptional<z.ZodString>>;
631
793
  type: z.ZodEnum<{
632
794
  visa: "visa";
633
795
  other: "other";
@@ -639,7 +801,49 @@ export declare const insertBookingDocumentSchema: z.ZodObject<{
639
801
  fileUrl: z.ZodString;
640
802
  expiresAt: z.ZodNullable<z.ZodOptional<z.ZodString>>;
641
803
  notes: z.ZodNullable<z.ZodOptional<z.ZodString>>;
642
- }, z.core.$strip>;
804
+ }, z.core.$strip>, z.ZodTransform<{
805
+ travelerId: string | null;
806
+ type: "visa" | "other" | "insurance" | "health" | "passport_copy";
807
+ fileName: string;
808
+ fileUrl: string;
809
+ expiresAt?: string | null | undefined;
810
+ notes?: string | null | undefined;
811
+ }, {
812
+ type: "visa" | "other" | "insurance" | "health" | "passport_copy";
813
+ fileName: string;
814
+ fileUrl: string;
815
+ travelerId?: string | null | undefined;
816
+ expiresAt?: string | null | undefined;
817
+ notes?: string | null | undefined;
818
+ }>>;
819
+ export declare const insertBookingTravelerDocumentSchema: z.ZodPipe<z.ZodObject<{
820
+ travelerId: z.ZodNullable<z.ZodOptional<z.ZodString>>;
821
+ type: z.ZodEnum<{
822
+ visa: "visa";
823
+ other: "other";
824
+ insurance: "insurance";
825
+ health: "health";
826
+ passport_copy: "passport_copy";
827
+ }>;
828
+ fileName: z.ZodString;
829
+ fileUrl: z.ZodString;
830
+ expiresAt: z.ZodNullable<z.ZodOptional<z.ZodString>>;
831
+ notes: z.ZodNullable<z.ZodOptional<z.ZodString>>;
832
+ }, z.core.$strip>, z.ZodTransform<{
833
+ travelerId: string | null;
834
+ type: "visa" | "other" | "insurance" | "health" | "passport_copy";
835
+ fileName: string;
836
+ fileUrl: string;
837
+ expiresAt?: string | null | undefined;
838
+ notes?: string | null | undefined;
839
+ }, {
840
+ type: "visa" | "other" | "insurance" | "health" | "passport_copy";
841
+ fileName: string;
842
+ fileUrl: string;
843
+ travelerId?: string | null | undefined;
844
+ expiresAt?: string | null | undefined;
845
+ notes?: string | null | undefined;
846
+ }>>;
643
847
  export declare const bookingGroupKindSchema: z.ZodEnum<{
644
848
  other: "other";
645
849
  shared_room: "shared_room";
@@ -1 +1 @@
1
- {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAiDvB,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAoB,CAAA;AACpD,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAA8B,CAAA;AAE9D,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAW5B,CAAA;AAEJ,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;iBAKjC,CAAA;AAEF,eAAO,MAAM,oBAAoB;;;;;;;iBAO/B,CAAA;AAEF,eAAO,MAAM,yBAAyB;;;;;;;;;;;iBAGpC,CAAA;AAEF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAqBnC,CAAA;AAEF,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAmB7B,CAAA;AAEJ,eAAO,MAAM,uBAAuB;;;iBAYhC,CAAA;AAEJ,eAAO,MAAM,oBAAoB;;iBAE/B,CAAA;AAEF,eAAO,MAAM,mBAAmB;;iBAE9B,CAAA;AAEF,eAAO,MAAM,mBAAmB;;iBAE9B,CAAA;AAEF,eAAO,MAAM,yBAAyB;;;iBAGpC,CAAA;AAEF,eAAO,MAAM,mCAAmC;;;;;;;;;;;;;;;;iBAa9C,CAAA;AAmBF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAwB,CAAA;AAC5D,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAkC,CAAA;AAatE,eAAO,MAAM,qBAAqB;;;;;;;iBAAsB,CAAA;AACxD,eAAO,MAAM,qBAAqB;;;;;;;iBAAgC,CAAA;AAIlE,eAAO,MAAM,oCAAoC;;;;;;;iBAO/C,CAAA;AA6BF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAwB,CAAA;AAC5D,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAkC,CAAA;AAEtE,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;iBAcxC,CAAA;AAEF,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;iBAA0C,CAAA;AAgBpF,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAA+B,CAAA;AAC1E,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAyC,CAAA;AAIpF,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;iBAQxC,CAAA;AAIF,eAAO,MAAM,kCAAkC;;;;;;;;;;;iBAI7C,CAAA;AAcF,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;iBAA2B,CAAA;AAClE,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;iBAErC,CAAA;AAIF,eAAO,MAAM,uBAAuB;;iBAElC,CAAA;AAIF,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;iBAQtC,CAAA;AAIF,eAAO,MAAM,sBAAsB;;;EAAmC,CAAA;AACtE,eAAO,MAAM,4BAA4B;;;EAAgC,CAAA;AAWzE,eAAO,MAAM,wBAAwB;;;;;;;;;;iBAAyB,CAAA;AAC9D,eAAO,MAAM,wBAAwB;;;;;;;;;;iBAAmC,CAAA;AAExE,eAAO,MAAM,2BAA2B;;;;;;iBAGtC,CAAA;AAEF,eAAO,MAAM,2BAA2B;;;;;;;;;iBAMtC,CAAA;AAEF,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA"}
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,16 @@ const bookingCoreSchema = z.object({
9
9
  sourceType: bookingSourceTypeSchema.default("manual"),
10
10
  externalBookingRef: z.string().optional().nullable(),
11
11
  communicationLanguage: z.string().max(35).optional().nullable(),
12
+ contactFirstName: z.string().max(255).optional().nullable(),
13
+ contactLastName: z.string().max(255).optional().nullable(),
14
+ contactEmail: z.string().email().optional().nullable(),
15
+ contactPhone: z.string().max(50).optional().nullable(),
16
+ contactPreferredLanguage: z.string().max(35).optional().nullable(),
17
+ contactCountry: z.string().max(100).optional().nullable(),
18
+ contactRegion: z.string().max(255).optional().nullable(),
19
+ contactCity: z.string().max(255).optional().nullable(),
20
+ contactAddressLine1: z.string().max(255).optional().nullable(),
21
+ contactPostalCode: z.string().max(50).optional().nullable(),
12
22
  sellCurrency: z.string().min(3).max(3),
13
23
  baseCurrency: z.string().min(3).max(3).optional().nullable(),
14
24
  sellAmountCents: z.number().int().min(0).optional().nullable(),
@@ -44,17 +54,36 @@ export const createBookingSchema = bookingCoreSchema
44
54
  export const bookingListQuerySchema = z.object({
45
55
  status: bookingStatusSchema.optional(),
46
56
  search: z.string().optional(),
57
+ productId: z.string().optional(),
58
+ optionId: z.string().optional(),
59
+ personId: z.string().optional(),
60
+ organizationId: z.string().optional(),
47
61
  limit: z.coerce.number().int().min(1).max(100).default(50),
48
62
  offset: z.coerce.number().int().min(0).default(0),
49
63
  });
64
+ export const bookingAggregatesQuerySchema = z.object({
65
+ from: z.string().datetime().optional(),
66
+ to: z.string().datetime().optional(),
67
+ });
50
68
  export const convertProductSchema = z.object({
51
69
  productId: z.string().min(1),
52
70
  optionId: z.string().optional().nullable(),
71
+ slotId: z.string().optional().nullable(),
53
72
  bookingNumber: z.string().min(1).max(50),
54
73
  personId: z.string().optional().nullable(),
55
74
  organizationId: z.string().optional().nullable(),
56
75
  internalNotes: z.string().optional().nullable(),
57
76
  });
77
+ /**
78
+ * Admin pricing-preview request. Mirrors the storefront pricing session
79
+ * resolver input so the operator dialog sees the same numbers the customer
80
+ * would see for the same product + option + catalog.
81
+ */
82
+ export const pricingPreviewSchema = z.object({
83
+ productId: z.string().min(1),
84
+ optionId: z.string().optional().nullable(),
85
+ catalogId: z.string().optional().nullable(),
86
+ });
58
87
  export const updateBookingStatusSchema = z.object({
59
88
  status: bookingStatusSchema,
60
89
  note: z.string().optional().nullable(),
@@ -127,8 +156,23 @@ export const expireStaleBookingsSchema = z.object({
127
156
  before: z.string().datetime().optional().nullable(),
128
157
  note: z.string().optional().nullable(),
129
158
  });
130
- export const reserveBookingFromTransactionSchema = z.object({
131
- bookingNumber: z.string().min(1).max(50),
159
+ export const reserveBookingFromTransactionSchema = bookingCoreSchema
160
+ .pick({
161
+ bookingNumber: true,
162
+ sourceType: true,
163
+ contactFirstName: true,
164
+ contactLastName: true,
165
+ contactEmail: true,
166
+ contactPhone: true,
167
+ contactPreferredLanguage: true,
168
+ contactCountry: true,
169
+ contactRegion: true,
170
+ contactCity: true,
171
+ contactAddressLine1: true,
172
+ contactPostalCode: true,
173
+ internalNotes: true,
174
+ })
175
+ .extend({
132
176
  sourceType: bookingSourceTypeSchema.default("internal"),
133
177
  holdMinutes: z
134
178
  .number()
@@ -137,12 +181,11 @@ export const reserveBookingFromTransactionSchema = z.object({
137
181
  .max(24 * 60)
138
182
  .default(30),
139
183
  holdExpiresAt: z.string().datetime().optional().nullable(),
140
- internalNotes: z.string().optional().nullable(),
141
184
  note: z.string().optional().nullable(),
142
185
  includeParticipants: z.boolean().default(true),
143
186
  });
144
- // ---------- participants ----------
145
- const participantCoreSchema = z.object({
187
+ // ---------- traveler records ----------
188
+ const travelerRecordCoreSchema = z.object({
146
189
  personId: z.string().optional().nullable(),
147
190
  participantType: bookingParticipantTypeSchema.default("traveler"),
148
191
  travelerCategory: bookingTravelerCategorySchema.optional().nullable(),
@@ -156,21 +199,25 @@ const participantCoreSchema = z.object({
156
199
  isPrimary: z.boolean().default(false),
157
200
  notes: z.string().optional().nullable(),
158
201
  });
159
- export const insertParticipantSchema = participantCoreSchema;
160
- export const updateParticipantSchema = participantCoreSchema.partial();
161
- // ---------- passengers (legacy compatibility) ----------
162
- const passengerCoreSchema = z.object({
202
+ // ---------- travelers ----------
203
+ const travelerCoreSchema = z.object({
163
204
  firstName: z.string().min(1).max(255),
164
205
  lastName: z.string().min(1).max(255),
165
206
  email: z.string().email().optional().nullable(),
166
207
  phone: z.string().max(50).optional().nullable(),
208
+ preferredLanguage: z.string().max(35).optional().nullable(),
209
+ accessibilityNeeds: z.string().optional().nullable(),
167
210
  specialRequests: z.string().optional().nullable(),
168
- isLeadPassenger: z.boolean().optional().nullable(),
211
+ travelerCategory: bookingTravelerCategorySchema.optional().nullable(),
212
+ isPrimary: z.boolean().optional().nullable(),
213
+ notes: z.string().optional().nullable(),
169
214
  });
170
- export const insertPassengerSchema = passengerCoreSchema;
171
- export const updatePassengerSchema = passengerCoreSchema.partial();
172
- // ---------- participant travel details ----------
173
- export const upsertParticipantTravelDetailsSchema = z.object({
215
+ export const insertTravelerSchema = travelerCoreSchema;
216
+ export const updateTravelerSchema = travelerCoreSchema.partial();
217
+ export const insertTravelerRecordSchema = travelerRecordCoreSchema;
218
+ export const updateTravelerRecordSchema = travelerRecordCoreSchema.partial();
219
+ // ---------- traveler travel details ----------
220
+ export const upsertTravelerTravelDetailsSchema = z.object({
174
221
  nationality: z.string().max(100).optional().nullable(),
175
222
  passportNumber: z.string().max(255).optional().nullable(),
176
223
  passportExpiry: z.string().optional().nullable(),
@@ -222,9 +269,9 @@ export const insertBookingAllocationSchema = z.object({
222
269
  });
223
270
  export const updateBookingAllocationSchema = insertBookingAllocationSchema.partial();
224
271
  // ---------- booking fulfillments ----------
225
- const bookingFulfillmentCoreSchema = z.object({
272
+ const bookingFulfillmentInputSchema = z.object({
226
273
  bookingItemId: z.string().optional().nullable(),
227
- participantId: z.string().optional().nullable(),
274
+ travelerId: z.string().optional().nullable(),
228
275
  fulfillmentType: bookingFulfillmentTypeSchema,
229
276
  deliveryChannel: bookingFulfillmentDeliveryChannelSchema,
230
277
  status: bookingFulfillmentStatusSchema.default("issued"),
@@ -233,24 +280,47 @@ const bookingFulfillmentCoreSchema = z.object({
233
280
  issuedAt: z.string().datetime().optional().nullable(),
234
281
  revokedAt: z.string().datetime().optional().nullable(),
235
282
  });
236
- export const insertBookingFulfillmentSchema = bookingFulfillmentCoreSchema;
237
- export const updateBookingFulfillmentSchema = bookingFulfillmentCoreSchema.partial();
283
+ export const insertBookingFulfillmentSchema = bookingFulfillmentInputSchema.transform(({ travelerId, ...rest }) => ({
284
+ ...rest,
285
+ travelerId: travelerId ?? null,
286
+ }));
287
+ export const updateBookingFulfillmentSchema = bookingFulfillmentInputSchema
288
+ .partial()
289
+ .transform(({ travelerId, ...rest }) => ({
290
+ ...rest,
291
+ travelerId: travelerId !== undefined ? (travelerId ?? null) : undefined,
292
+ }));
238
293
  // ---------- booking redemption events ----------
239
- export const recordBookingRedemptionSchema = z.object({
294
+ export const recordBookingRedemptionSchema = z
295
+ .object({
240
296
  bookingItemId: z.string().optional().nullable(),
241
- participantId: z.string().optional().nullable(),
297
+ travelerId: z.string().optional().nullable(),
242
298
  redeemedAt: z.string().datetime().optional().nullable(),
243
299
  redeemedBy: z.string().max(255).optional().nullable(),
244
300
  location: z.string().max(500).optional().nullable(),
245
301
  method: bookingRedemptionMethodSchema.default("manual"),
246
302
  metadata: z.record(z.string(), z.unknown()).optional().nullable(),
247
- });
303
+ })
304
+ .transform(({ travelerId, ...rest }) => ({
305
+ ...rest,
306
+ travelerId: travelerId ?? null,
307
+ }));
248
308
  // ---------- booking item participants ----------
249
- export const insertBookingItemParticipantSchema = z.object({
250
- participantId: z.string().min(1),
309
+ export const insertBookingItemTravelerSchema = z
310
+ .object({
311
+ travelerId: z.string().min(1).optional(),
251
312
  role: bookingItemParticipantRoleSchema.default("traveler"),
252
313
  isPrimary: z.boolean().default(false),
253
- });
314
+ })
315
+ .refine((value) => Boolean(value.travelerId), {
316
+ message: "travelerId is required",
317
+ path: ["travelerId"],
318
+ })
319
+ .transform(({ travelerId, ...rest }) => ({
320
+ ...rest,
321
+ travelerId: travelerId,
322
+ }));
323
+ export const insertBookingItemParticipantSchema = insertBookingItemTravelerSchema;
254
324
  // ---------- supplier statuses ----------
255
325
  const supplierStatusCoreSchema = z.object({
256
326
  supplierServiceId: z.string().optional().nullable(),
@@ -270,15 +340,20 @@ export const insertBookingNoteSchema = z.object({
270
340
  content: z.string().min(1).max(10000),
271
341
  });
272
342
  // ---------- documents ----------
273
- export const insertBookingDocumentSchema = z.object({
274
- participantId: z.string().optional().nullable(),
275
- passengerId: z.string().optional().nullable(),
343
+ export const insertBookingDocumentSchema = z
344
+ .object({
345
+ travelerId: z.string().optional().nullable(),
276
346
  type: bookingDocumentTypeSchema,
277
347
  fileName: z.string().min(1).max(500),
278
348
  fileUrl: z.string().url(),
279
349
  expiresAt: z.string().optional().nullable(),
280
350
  notes: z.string().optional().nullable(),
281
- });
351
+ })
352
+ .transform(({ travelerId, ...rest }) => ({
353
+ ...rest,
354
+ travelerId: travelerId ?? null,
355
+ }));
356
+ export const insertBookingTravelerDocumentSchema = insertBookingDocumentSchema;
282
357
  // ---------- booking groups ----------
283
358
  export const bookingGroupKindSchema = z.enum(["shared_room", "other"]);
284
359
  export const bookingGroupMemberRoleSchema = z.enum(["primary", "shared"]);