@voyantjs/customer-portal 0.5.0 → 0.6.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.
@@ -1,21 +1,19 @@
1
+ import type { ModuleContainer } from "@voyantjs/core";
1
2
  import type { PostgresJsDatabase } from "drizzle-orm/postgres-js";
2
3
  type Env = {
3
4
  Bindings: Record<string, unknown>;
4
5
  Variables: {
6
+ container?: ModuleContainer;
5
7
  db: PostgresJsDatabase;
6
8
  userId?: string;
7
9
  };
8
10
  };
9
- export declare const publicCustomerPortalRoutes: import("hono/hono-base").HonoBase<Env, {
11
+ export interface PublicCustomerPortalRouteOptions {
12
+ resolveDocumentDownloadUrl?: (bindings: unknown, storageKey: string) => Promise<string | null> | string | null;
13
+ }
14
+ export declare function createPublicCustomerPortalRoutes(options?: PublicCustomerPortalRouteOptions): import("hono/hono-base").HonoBase<Env, {
10
15
  "/me": {
11
16
  $get: {
12
- input: {};
13
- output: {
14
- error: string;
15
- };
16
- outputFormat: "json";
17
- status: 401;
18
- } | {
19
17
  input: {};
20
18
  output: {
21
19
  data: {
@@ -39,7 +37,7 @@ export declare const publicCustomerPortalRoutes: import("hono/hono-base").HonoBa
39
37
  addressLine2: string | null;
40
38
  } | null;
41
39
  documents: {
42
- type: "visa" | "other" | "passport" | "drivers_license" | "id_card";
40
+ type: "passport" | "visa" | "drivers_license" | "other" | "id_card";
43
41
  number: string;
44
42
  issuingAuthority: string | null;
45
43
  issuingCountry: string;
@@ -70,7 +68,7 @@ export declare const publicCustomerPortalRoutes: import("hono/hono-base").HonoBa
70
68
  country: string | null;
71
69
  billingAddress: {
72
70
  id: string;
73
- label: "other" | "service" | "primary" | "billing" | "shipping" | "mailing" | "meeting" | "legal";
71
+ label: "service" | "primary" | "other" | "billing" | "shipping" | "mailing" | "meeting" | "legal";
74
72
  fullText: string | null;
75
73
  line1: string | null;
76
74
  line2: string | null;
@@ -99,13 +97,6 @@ export declare const publicCustomerPortalRoutes: import("hono/hono-base").HonoBa
99
97
  } & {
100
98
  "/me": {
101
99
  $patch: {
102
- input: {};
103
- output: {
104
- error: string;
105
- };
106
- outputFormat: "json";
107
- status: 401;
108
- } | {
109
100
  input: {};
110
101
  output: {
111
102
  error: string;
@@ -143,7 +134,7 @@ export declare const publicCustomerPortalRoutes: import("hono/hono-base").HonoBa
143
134
  addressLine2: string | null;
144
135
  } | null;
145
136
  documents: {
146
- type: "visa" | "other" | "passport" | "drivers_license" | "id_card";
137
+ type: "passport" | "visa" | "drivers_license" | "other" | "id_card";
147
138
  number: string;
148
139
  issuingAuthority: string | null;
149
140
  issuingCountry: string;
@@ -174,7 +165,7 @@ export declare const publicCustomerPortalRoutes: import("hono/hono-base").HonoBa
174
165
  country: string | null;
175
166
  billingAddress: {
176
167
  id: string;
177
- label: "other" | "service" | "primary" | "billing" | "shipping" | "mailing" | "meeting" | "legal";
168
+ label: "service" | "primary" | "other" | "billing" | "shipping" | "mailing" | "meeting" | "legal";
178
169
  fullText: string | null;
179
170
  line1: string | null;
180
171
  line2: string | null;
@@ -196,13 +187,6 @@ export declare const publicCustomerPortalRoutes: import("hono/hono-base").HonoBa
196
187
  } & {
197
188
  "/bootstrap": {
198
189
  $post: {
199
- input: {};
200
- output: {
201
- error: string;
202
- };
203
- outputFormat: "json";
204
- status: 401;
205
- } | {
206
190
  input: {};
207
191
  output: {
208
192
  error: string;
@@ -242,7 +226,7 @@ export declare const publicCustomerPortalRoutes: import("hono/hono-base").HonoBa
242
226
  addressLine2: string | null;
243
227
  } | null;
244
228
  documents: {
245
- type: "visa" | "other" | "passport" | "drivers_license" | "id_card";
229
+ type: "passport" | "visa" | "drivers_license" | "other" | "id_card";
246
230
  number: string;
247
231
  issuingAuthority: string | null;
248
232
  issuingCountry: string;
@@ -273,7 +257,7 @@ export declare const publicCustomerPortalRoutes: import("hono/hono-base").HonoBa
273
257
  country: string | null;
274
258
  billingAddress: {
275
259
  id: string;
276
- label: "other" | "service" | "primary" | "billing" | "shipping" | "mailing" | "meeting" | "legal";
260
+ label: "service" | "primary" | "other" | "billing" | "shipping" | "mailing" | "meeting" | "legal";
277
261
  fullText: string | null;
278
262
  line1: string | null;
279
263
  line2: string | null;
@@ -301,7 +285,7 @@ export declare const publicCustomerPortalRoutes: import("hono/hono-base").HonoBa
301
285
  country: string | null;
302
286
  billingAddress: {
303
287
  id: string;
304
- label: "other" | "service" | "primary" | "billing" | "shipping" | "mailing" | "meeting" | "legal";
288
+ label: "service" | "primary" | "other" | "billing" | "shipping" | "mailing" | "meeting" | "legal";
305
289
  fullText: string | null;
306
290
  line1: string | null;
307
291
  line2: string | null;
@@ -325,13 +309,6 @@ export declare const publicCustomerPortalRoutes: import("hono/hono-base").HonoBa
325
309
  } & {
326
310
  "/companions": {
327
311
  $get: {
328
- input: {};
329
- output: {
330
- error: string;
331
- };
332
- outputFormat: "json";
333
- status: 401;
334
- } | {
335
312
  input: {};
336
313
  output: {
337
314
  data: {
@@ -360,7 +337,7 @@ export declare const publicCustomerPortalRoutes: import("hono/hono-base").HonoBa
360
337
  isDefault: boolean;
361
338
  }[];
362
339
  documents: {
363
- type: "visa" | "other" | "passport" | "drivers_license" | "id_card";
340
+ type: "passport" | "visa" | "drivers_license" | "other" | "id_card";
364
341
  number: string | null;
365
342
  issuingAuthority: string | null;
366
343
  country: string | null;
@@ -380,13 +357,6 @@ export declare const publicCustomerPortalRoutes: import("hono/hono-base").HonoBa
380
357
  } & {
381
358
  "/companions": {
382
359
  $post: {
383
- input: {};
384
- output: {
385
- error: string;
386
- };
387
- outputFormat: "json";
388
- status: 401;
389
- } | {
390
360
  input: {};
391
361
  output: {
392
362
  error: string;
@@ -422,7 +392,7 @@ export declare const publicCustomerPortalRoutes: import("hono/hono-base").HonoBa
422
392
  isDefault: boolean;
423
393
  }[];
424
394
  documents: {
425
- type: "visa" | "other" | "passport" | "drivers_license" | "id_card";
395
+ type: "passport" | "visa" | "drivers_license" | "other" | "id_card";
426
396
  number: string | null;
427
397
  issuingAuthority: string | null;
428
398
  country: string | null;
@@ -442,13 +412,6 @@ export declare const publicCustomerPortalRoutes: import("hono/hono-base").HonoBa
442
412
  } & {
443
413
  "/companions/import-booking-participants": {
444
414
  $post: {
445
- input: {};
446
- output: {
447
- error: string;
448
- };
449
- outputFormat: "json";
450
- status: 401;
451
- } | {
452
415
  input: {};
453
416
  output: {
454
417
  error: string;
@@ -485,7 +448,7 @@ export declare const publicCustomerPortalRoutes: import("hono/hono-base").HonoBa
485
448
  isDefault: boolean;
486
449
  }[];
487
450
  documents: {
488
- type: "visa" | "other" | "passport" | "drivers_license" | "id_card";
451
+ type: "passport" | "visa" | "drivers_license" | "other" | "id_card";
489
452
  number: string | null;
490
453
  issuingAuthority: string | null;
491
454
  country: string | null;
@@ -512,81 +475,9 @@ export declare const publicCustomerPortalRoutes: import("hono/hono-base").HonoBa
512
475
  companionId: string;
513
476
  };
514
477
  };
515
- output: {
516
- error: string;
517
- };
518
- outputFormat: "json";
519
- status: 401;
520
- } | {
521
- input: {
522
- param: {
523
- companionId: string;
524
- };
525
- };
526
- output: {
527
- error: string;
528
- };
529
- outputFormat: "json";
530
- status: 404;
531
- } | {
532
- input: {
533
- param: {
534
- companionId: string;
535
- };
536
- };
537
- output: {
538
- error: string;
539
- };
540
- outputFormat: "json";
541
- status: 403;
542
- } | {
543
- input: {
544
- param: {
545
- companionId: string;
546
- };
547
- };
548
- output: {
549
- data: {
550
- id: string;
551
- role: string;
552
- name: string;
553
- title: string | null;
554
- email: string | null;
555
- phone: string | null;
556
- isPrimary: boolean;
557
- notes: string | null;
558
- typeKey: string | null;
559
- person: {
560
- firstName: string | null;
561
- middleName: string | null;
562
- lastName: string | null;
563
- dateOfBirth: string | null;
564
- addresses: {
565
- type: string | null;
566
- country: string | null;
567
- state: string | null;
568
- city: string | null;
569
- postalCode: string | null;
570
- addressLine1: string | null;
571
- addressLine2: string | null;
572
- isDefault: boolean;
573
- }[];
574
- documents: {
575
- type: "visa" | "other" | "passport" | "drivers_license" | "id_card";
576
- number: string | null;
577
- issuingAuthority: string | null;
578
- country: string | null;
579
- issueDate: string | null;
580
- expiryDate: string | null;
581
- }[];
582
- };
583
- metadata: {
584
- [x: string]: import("hono/utils/types").JSONValue;
585
- } | null;
586
- };
587
- };
588
- outputFormat: "json";
589
- status: import("hono/utils/http-status").ContentfulStatusCode;
478
+ output: {};
479
+ outputFormat: string;
480
+ status: import("hono/utils/http-status").StatusCode;
590
481
  };
591
482
  };
592
483
  } & {
@@ -597,56 +488,14 @@ export declare const publicCustomerPortalRoutes: import("hono/hono-base").HonoBa
597
488
  companionId: string;
598
489
  };
599
490
  };
600
- output: {
601
- error: string;
602
- };
603
- outputFormat: "json";
604
- status: 401;
605
- } | {
606
- input: {
607
- param: {
608
- companionId: string;
609
- };
610
- };
611
- output: {
612
- error: string;
613
- };
614
- outputFormat: "json";
615
- status: 404;
616
- } | {
617
- input: {
618
- param: {
619
- companionId: string;
620
- };
621
- };
622
- output: {
623
- error: string;
624
- };
625
- outputFormat: "json";
626
- status: 403;
627
- } | {
628
- input: {
629
- param: {
630
- companionId: string;
631
- };
632
- };
633
- output: {
634
- success: true;
635
- };
636
- outputFormat: "json";
637
- status: import("hono/utils/http-status").ContentfulStatusCode;
491
+ output: {};
492
+ outputFormat: string;
493
+ status: import("hono/utils/http-status").StatusCode;
638
494
  };
639
495
  };
640
496
  } & {
641
497
  "/bookings": {
642
498
  $get: {
643
- input: {};
644
- output: {
645
- error: string;
646
- };
647
- outputFormat: "json";
648
- status: 401;
649
- } | {
650
499
  input: {};
651
500
  output: {
652
501
  error: string;
@@ -680,17 +529,6 @@ export declare const publicCustomerPortalRoutes: import("hono/hono-base").HonoBa
680
529
  } & {
681
530
  "/bookings/:bookingId": {
682
531
  $get: {
683
- input: {
684
- param: {
685
- bookingId: string;
686
- };
687
- };
688
- output: {
689
- error: string;
690
- };
691
- outputFormat: "json";
692
- status: 401;
693
- } | {
694
532
  input: {
695
533
  param: {
696
534
  bookingId: string;
@@ -731,7 +569,7 @@ export declare const publicCustomerPortalRoutes: import("hono/hono-base").HonoBa
731
569
  id: string;
732
570
  title: string;
733
571
  description: string | null;
734
- itemType: "other" | "unit" | "extra" | "service" | "fee" | "tax" | "discount" | "adjustment" | "accommodation" | "transport";
572
+ itemType: "service" | "other" | "unit" | "extra" | "fee" | "tax" | "discount" | "adjustment" | "accommodation" | "transport";
735
573
  status: "draft" | "on_hold" | "confirmed" | "expired" | "cancelled" | "fulfilled";
736
574
  serviceDate: string | null;
737
575
  startsAt: string | null;
@@ -763,7 +601,7 @@ export declare const publicCustomerPortalRoutes: import("hono/hono-base").HonoBa
763
601
  id: string;
764
602
  source: "legal" | "finance" | "booking_document";
765
603
  participantId: string | null;
766
- type: "visa" | "insurance" | "health" | "passport_copy" | "other" | "invoice" | "proforma" | "credit_note" | "contract";
604
+ type: "visa" | "other" | "insurance" | "health" | "passport_copy" | "invoice" | "proforma" | "credit_note" | "contract";
767
605
  fileName: string;
768
606
  fileUrl: string;
769
607
  mimeType: string | null;
@@ -774,7 +612,7 @@ export declare const publicCustomerPortalRoutes: import("hono/hono-base").HonoBa
774
612
  invoiceId: string;
775
613
  invoiceNumber: string;
776
614
  invoiceType: "invoice" | "proforma" | "credit_note";
777
- invoiceStatus: "draft" | "void" | "sent" | "partially_paid" | "paid" | "overdue";
615
+ invoiceStatus: "void" | "draft" | "sent" | "partially_paid" | "paid" | "overdue";
778
616
  currency: string;
779
617
  totalCents: number;
780
618
  paidCents: number;
@@ -782,7 +620,7 @@ export declare const publicCustomerPortalRoutes: import("hono/hono-base").HonoBa
782
620
  issueDate: string;
783
621
  dueDate: string;
784
622
  documentStatus: "pending" | "failed" | "ready" | "stale" | "missing";
785
- format: "pdf" | "json" | "html" | "xml" | null;
623
+ format: "html" | "json" | "pdf" | "xml" | null;
786
624
  generatedAt: string | null;
787
625
  downloadUrl: string | null;
788
626
  }[];
@@ -791,7 +629,7 @@ export declare const publicCustomerPortalRoutes: import("hono/hono-base").HonoBa
791
629
  invoiceId: string;
792
630
  invoiceNumber: string;
793
631
  invoiceType: "invoice" | "proforma" | "credit_note";
794
- status: "completed" | "pending" | "failed" | "refunded";
632
+ status: "pending" | "completed" | "failed" | "refunded";
795
633
  paymentMethod: "other" | "voucher" | "wallet" | "bank_transfer" | "credit_card" | "debit_card" | "cash" | "cheque" | "direct_bill";
796
634
  amountCents: number;
797
635
  currency: string;
@@ -805,7 +643,7 @@ export declare const publicCustomerPortalRoutes: import("hono/hono-base").HonoBa
805
643
  bookingItemId: string | null;
806
644
  participantId: string | null;
807
645
  fulfillmentType: "other" | "voucher" | "ticket" | "pdf" | "qr_code" | "barcode" | "mobile";
808
- deliveryChannel: "other" | "download" | "email" | "api" | "wallet";
646
+ deliveryChannel: "email" | "other" | "download" | "api" | "wallet";
809
647
  status: "pending" | "issued" | "reissued" | "revoked" | "failed";
810
648
  artifactUrl: string | null;
811
649
  }[];
@@ -818,17 +656,6 @@ export declare const publicCustomerPortalRoutes: import("hono/hono-base").HonoBa
818
656
  } & {
819
657
  "/bookings/:bookingId/documents": {
820
658
  $get: {
821
- input: {
822
- param: {
823
- bookingId: string;
824
- };
825
- };
826
- output: {
827
- error: string;
828
- };
829
- outputFormat: "json";
830
- status: 401;
831
- } | {
832
659
  input: {
833
660
  param: {
834
661
  bookingId: string;
@@ -850,7 +677,7 @@ export declare const publicCustomerPortalRoutes: import("hono/hono-base").HonoBa
850
677
  id: string;
851
678
  source: "legal" | "finance" | "booking_document";
852
679
  participantId: string | null;
853
- type: "visa" | "insurance" | "health" | "passport_copy" | "other" | "invoice" | "proforma" | "credit_note" | "contract";
680
+ type: "visa" | "other" | "insurance" | "health" | "passport_copy" | "invoice" | "proforma" | "credit_note" | "contract";
854
681
  fileName: string;
855
682
  fileUrl: string;
856
683
  mimeType: string | null;
@@ -873,8 +700,711 @@ export declare const publicCustomerPortalRoutes: import("hono/hono-base").HonoBa
873
700
  error: string;
874
701
  };
875
702
  outputFormat: "json";
876
- status: 401;
703
+ status: 404;
877
704
  } | {
705
+ input: {
706
+ param: {
707
+ bookingId: string;
708
+ };
709
+ };
710
+ output: {
711
+ data: {
712
+ email: string | null;
713
+ phone: string | null;
714
+ firstName: string | null;
715
+ lastName: string | null;
716
+ country: string | null;
717
+ state: string | null;
718
+ city: string | null;
719
+ address1: string | null;
720
+ postal: string | null;
721
+ };
722
+ };
723
+ outputFormat: "json";
724
+ status: import("hono/utils/http-status").ContentfulStatusCode;
725
+ };
726
+ };
727
+ }, "/", "/bookings/:bookingId/billing-contact">;
728
+ export declare const publicCustomerPortalRoutes: import("hono/hono-base").HonoBase<Env, {
729
+ "/me": {
730
+ $get: {
731
+ input: {};
732
+ output: {
733
+ data: {
734
+ userId: string;
735
+ email: string;
736
+ emailVerified: boolean;
737
+ firstName: string | null;
738
+ middleName: string | null;
739
+ lastName: string | null;
740
+ avatarUrl: string | null;
741
+ locale: string;
742
+ timezone: string | null;
743
+ seatingPreference: "aisle" | "window" | "middle" | "no_preference" | null;
744
+ dateOfBirth: string | null;
745
+ address: {
746
+ country: string | null;
747
+ state: string | null;
748
+ city: string | null;
749
+ postalCode: string | null;
750
+ addressLine1: string | null;
751
+ addressLine2: string | null;
752
+ } | null;
753
+ documents: {
754
+ type: "passport" | "visa" | "drivers_license" | "other" | "id_card";
755
+ number: string;
756
+ issuingAuthority: string | null;
757
+ issuingCountry: string;
758
+ nationality: string | null;
759
+ expiryDate: string;
760
+ issueDate: string | null;
761
+ }[];
762
+ marketingConsent: boolean;
763
+ marketingConsentAt: string | null;
764
+ marketingConsentSource: string | null;
765
+ notificationDefaults: {
766
+ [x: string]: import("hono/utils/types").JSONValue;
767
+ } | null;
768
+ uiPrefs: {
769
+ [x: string]: import("hono/utils/types").JSONValue;
770
+ } | null;
771
+ customerRecord: {
772
+ id: string;
773
+ firstName: string;
774
+ lastName: string;
775
+ preferredLanguage: string | null;
776
+ preferredCurrency: string | null;
777
+ birthday: string | null;
778
+ email: string | null;
779
+ phone: string | null;
780
+ address: string | null;
781
+ city: string | null;
782
+ country: string | null;
783
+ billingAddress: {
784
+ id: string;
785
+ label: "service" | "primary" | "other" | "billing" | "shipping" | "mailing" | "meeting" | "legal";
786
+ fullText: string | null;
787
+ line1: string | null;
788
+ line2: string | null;
789
+ city: string | null;
790
+ region: string | null;
791
+ postalCode: string | null;
792
+ country: string | null;
793
+ isPrimary: boolean;
794
+ } | null;
795
+ relation: string | null;
796
+ status: string;
797
+ } | null;
798
+ };
799
+ };
800
+ outputFormat: "json";
801
+ status: import("hono/utils/http-status").ContentfulStatusCode;
802
+ } | {
803
+ input: {};
804
+ output: {
805
+ error: string;
806
+ };
807
+ outputFormat: "json";
808
+ status: 404;
809
+ };
810
+ };
811
+ } & {
812
+ "/me": {
813
+ $patch: {
814
+ input: {};
815
+ output: {
816
+ error: string;
817
+ };
818
+ outputFormat: "json";
819
+ status: 404;
820
+ } | {
821
+ input: {};
822
+ output: {
823
+ error: string;
824
+ };
825
+ outputFormat: "json";
826
+ status: 409;
827
+ } | {
828
+ input: {};
829
+ output: {
830
+ data: {
831
+ userId: string;
832
+ email: string;
833
+ emailVerified: boolean;
834
+ firstName: string | null;
835
+ middleName: string | null;
836
+ lastName: string | null;
837
+ avatarUrl: string | null;
838
+ locale: string;
839
+ timezone: string | null;
840
+ seatingPreference: "aisle" | "window" | "middle" | "no_preference" | null;
841
+ dateOfBirth: string | null;
842
+ address: {
843
+ country: string | null;
844
+ state: string | null;
845
+ city: string | null;
846
+ postalCode: string | null;
847
+ addressLine1: string | null;
848
+ addressLine2: string | null;
849
+ } | null;
850
+ documents: {
851
+ type: "passport" | "visa" | "drivers_license" | "other" | "id_card";
852
+ number: string;
853
+ issuingAuthority: string | null;
854
+ issuingCountry: string;
855
+ nationality: string | null;
856
+ expiryDate: string;
857
+ issueDate: string | null;
858
+ }[];
859
+ marketingConsent: boolean;
860
+ marketingConsentAt: string | null;
861
+ marketingConsentSource: string | null;
862
+ notificationDefaults: {
863
+ [x: string]: import("hono/utils/types").JSONValue;
864
+ } | null;
865
+ uiPrefs: {
866
+ [x: string]: import("hono/utils/types").JSONValue;
867
+ } | null;
868
+ customerRecord: {
869
+ id: string;
870
+ firstName: string;
871
+ lastName: string;
872
+ preferredLanguage: string | null;
873
+ preferredCurrency: string | null;
874
+ birthday: string | null;
875
+ email: string | null;
876
+ phone: string | null;
877
+ address: string | null;
878
+ city: string | null;
879
+ country: string | null;
880
+ billingAddress: {
881
+ id: string;
882
+ label: "service" | "primary" | "other" | "billing" | "shipping" | "mailing" | "meeting" | "legal";
883
+ fullText: string | null;
884
+ line1: string | null;
885
+ line2: string | null;
886
+ city: string | null;
887
+ region: string | null;
888
+ postalCode: string | null;
889
+ country: string | null;
890
+ isPrimary: boolean;
891
+ } | null;
892
+ relation: string | null;
893
+ status: string;
894
+ } | null;
895
+ };
896
+ };
897
+ outputFormat: "json";
898
+ status: import("hono/utils/http-status").ContentfulStatusCode;
899
+ };
900
+ };
901
+ } & {
902
+ "/bootstrap": {
903
+ $post: {
904
+ input: {};
905
+ output: {
906
+ error: string;
907
+ };
908
+ outputFormat: "json";
909
+ status: 404;
910
+ } | {
911
+ input: {};
912
+ output: {
913
+ error: string;
914
+ };
915
+ outputFormat: "json";
916
+ status: 409;
917
+ } | {
918
+ input: {};
919
+ output: {
920
+ data: {
921
+ status: "already_linked" | "linked_existing_customer" | "created_customer" | "customer_selection_required";
922
+ profile: {
923
+ userId: string;
924
+ email: string;
925
+ emailVerified: boolean;
926
+ firstName: string | null;
927
+ middleName: string | null;
928
+ lastName: string | null;
929
+ avatarUrl: string | null;
930
+ locale: string;
931
+ timezone: string | null;
932
+ seatingPreference: "aisle" | "window" | "middle" | "no_preference" | null;
933
+ dateOfBirth: string | null;
934
+ address: {
935
+ country: string | null;
936
+ state: string | null;
937
+ city: string | null;
938
+ postalCode: string | null;
939
+ addressLine1: string | null;
940
+ addressLine2: string | null;
941
+ } | null;
942
+ documents: {
943
+ type: "passport" | "visa" | "drivers_license" | "other" | "id_card";
944
+ number: string;
945
+ issuingAuthority: string | null;
946
+ issuingCountry: string;
947
+ nationality: string | null;
948
+ expiryDate: string;
949
+ issueDate: string | null;
950
+ }[];
951
+ marketingConsent: boolean;
952
+ marketingConsentAt: string | null;
953
+ marketingConsentSource: string | null;
954
+ notificationDefaults: {
955
+ [x: string]: import("hono/utils/types").JSONValue;
956
+ } | null;
957
+ uiPrefs: {
958
+ [x: string]: import("hono/utils/types").JSONValue;
959
+ } | null;
960
+ customerRecord: {
961
+ id: string;
962
+ firstName: string;
963
+ lastName: string;
964
+ preferredLanguage: string | null;
965
+ preferredCurrency: string | null;
966
+ birthday: string | null;
967
+ email: string | null;
968
+ phone: string | null;
969
+ address: string | null;
970
+ city: string | null;
971
+ country: string | null;
972
+ billingAddress: {
973
+ id: string;
974
+ label: "service" | "primary" | "other" | "billing" | "shipping" | "mailing" | "meeting" | "legal";
975
+ fullText: string | null;
976
+ line1: string | null;
977
+ line2: string | null;
978
+ city: string | null;
979
+ region: string | null;
980
+ postalCode: string | null;
981
+ country: string | null;
982
+ isPrimary: boolean;
983
+ } | null;
984
+ relation: string | null;
985
+ status: string;
986
+ } | null;
987
+ } | null;
988
+ candidates: {
989
+ id: string;
990
+ firstName: string;
991
+ lastName: string;
992
+ preferredLanguage: string | null;
993
+ preferredCurrency: string | null;
994
+ birthday: string | null;
995
+ email: string | null;
996
+ phone: string | null;
997
+ address: string | null;
998
+ city: string | null;
999
+ country: string | null;
1000
+ billingAddress: {
1001
+ id: string;
1002
+ label: "service" | "primary" | "other" | "billing" | "shipping" | "mailing" | "meeting" | "legal";
1003
+ fullText: string | null;
1004
+ line1: string | null;
1005
+ line2: string | null;
1006
+ city: string | null;
1007
+ region: string | null;
1008
+ postalCode: string | null;
1009
+ country: string | null;
1010
+ isPrimary: boolean;
1011
+ } | null;
1012
+ relation: string | null;
1013
+ status: string;
1014
+ linkable: boolean;
1015
+ claimedByAnotherUser: boolean;
1016
+ }[];
1017
+ };
1018
+ };
1019
+ outputFormat: "json";
1020
+ status: import("hono/utils/http-status").ContentfulStatusCode;
1021
+ };
1022
+ };
1023
+ } & {
1024
+ "/companions": {
1025
+ $get: {
1026
+ input: {};
1027
+ output: {
1028
+ data: {
1029
+ id: string;
1030
+ role: string;
1031
+ name: string;
1032
+ title: string | null;
1033
+ email: string | null;
1034
+ phone: string | null;
1035
+ isPrimary: boolean;
1036
+ notes: string | null;
1037
+ typeKey: string | null;
1038
+ person: {
1039
+ firstName: string | null;
1040
+ middleName: string | null;
1041
+ lastName: string | null;
1042
+ dateOfBirth: string | null;
1043
+ addresses: {
1044
+ type: string | null;
1045
+ country: string | null;
1046
+ state: string | null;
1047
+ city: string | null;
1048
+ postalCode: string | null;
1049
+ addressLine1: string | null;
1050
+ addressLine2: string | null;
1051
+ isDefault: boolean;
1052
+ }[];
1053
+ documents: {
1054
+ type: "passport" | "visa" | "drivers_license" | "other" | "id_card";
1055
+ number: string | null;
1056
+ issuingAuthority: string | null;
1057
+ country: string | null;
1058
+ issueDate: string | null;
1059
+ expiryDate: string | null;
1060
+ }[];
1061
+ };
1062
+ metadata: {
1063
+ [x: string]: import("hono/utils/types").JSONValue;
1064
+ } | null;
1065
+ }[];
1066
+ };
1067
+ outputFormat: "json";
1068
+ status: import("hono/utils/http-status").ContentfulStatusCode;
1069
+ };
1070
+ };
1071
+ } & {
1072
+ "/companions": {
1073
+ $post: {
1074
+ input: {};
1075
+ output: {
1076
+ error: string;
1077
+ };
1078
+ outputFormat: "json";
1079
+ status: 409;
1080
+ } | {
1081
+ input: {};
1082
+ output: {
1083
+ data: {
1084
+ id: string;
1085
+ role: string;
1086
+ name: string;
1087
+ title: string | null;
1088
+ email: string | null;
1089
+ phone: string | null;
1090
+ isPrimary: boolean;
1091
+ notes: string | null;
1092
+ typeKey: string | null;
1093
+ person: {
1094
+ firstName: string | null;
1095
+ middleName: string | null;
1096
+ lastName: string | null;
1097
+ dateOfBirth: string | null;
1098
+ addresses: {
1099
+ type: string | null;
1100
+ country: string | null;
1101
+ state: string | null;
1102
+ city: string | null;
1103
+ postalCode: string | null;
1104
+ addressLine1: string | null;
1105
+ addressLine2: string | null;
1106
+ isDefault: boolean;
1107
+ }[];
1108
+ documents: {
1109
+ type: "passport" | "visa" | "drivers_license" | "other" | "id_card";
1110
+ number: string | null;
1111
+ issuingAuthority: string | null;
1112
+ country: string | null;
1113
+ issueDate: string | null;
1114
+ expiryDate: string | null;
1115
+ }[];
1116
+ };
1117
+ metadata: {
1118
+ [x: string]: import("hono/utils/types").JSONValue;
1119
+ } | null;
1120
+ };
1121
+ };
1122
+ outputFormat: "json";
1123
+ status: 201;
1124
+ };
1125
+ };
1126
+ } & {
1127
+ "/companions/import-booking-participants": {
1128
+ $post: {
1129
+ input: {};
1130
+ output: {
1131
+ error: string;
1132
+ };
1133
+ outputFormat: "json";
1134
+ status: 409;
1135
+ } | {
1136
+ input: {};
1137
+ output: {
1138
+ data: {
1139
+ created: {
1140
+ id: string;
1141
+ role: string;
1142
+ name: string;
1143
+ title: string | null;
1144
+ email: string | null;
1145
+ phone: string | null;
1146
+ isPrimary: boolean;
1147
+ notes: string | null;
1148
+ typeKey: string | null;
1149
+ person: {
1150
+ firstName: string | null;
1151
+ middleName: string | null;
1152
+ lastName: string | null;
1153
+ dateOfBirth: string | null;
1154
+ addresses: {
1155
+ type: string | null;
1156
+ country: string | null;
1157
+ state: string | null;
1158
+ city: string | null;
1159
+ postalCode: string | null;
1160
+ addressLine1: string | null;
1161
+ addressLine2: string | null;
1162
+ isDefault: boolean;
1163
+ }[];
1164
+ documents: {
1165
+ type: "passport" | "visa" | "drivers_license" | "other" | "id_card";
1166
+ number: string | null;
1167
+ issuingAuthority: string | null;
1168
+ country: string | null;
1169
+ issueDate: string | null;
1170
+ expiryDate: string | null;
1171
+ }[];
1172
+ };
1173
+ metadata: {
1174
+ [x: string]: import("hono/utils/types").JSONValue;
1175
+ } | null;
1176
+ }[];
1177
+ skippedCount: number;
1178
+ };
1179
+ };
1180
+ outputFormat: "json";
1181
+ status: import("hono/utils/http-status").ContentfulStatusCode;
1182
+ };
1183
+ };
1184
+ } & {
1185
+ "/companions/:companionId": {
1186
+ $patch: {
1187
+ input: {
1188
+ param: {
1189
+ companionId: string;
1190
+ };
1191
+ };
1192
+ output: {};
1193
+ outputFormat: string;
1194
+ status: import("hono/utils/http-status").StatusCode;
1195
+ };
1196
+ };
1197
+ } & {
1198
+ "/companions/:companionId": {
1199
+ $delete: {
1200
+ input: {
1201
+ param: {
1202
+ companionId: string;
1203
+ };
1204
+ };
1205
+ output: {};
1206
+ outputFormat: string;
1207
+ status: import("hono/utils/http-status").StatusCode;
1208
+ };
1209
+ };
1210
+ } & {
1211
+ "/bookings": {
1212
+ $get: {
1213
+ input: {};
1214
+ output: {
1215
+ error: string;
1216
+ };
1217
+ outputFormat: "json";
1218
+ status: 404;
1219
+ } | {
1220
+ input: {};
1221
+ output: {
1222
+ data: {
1223
+ bookingId: string;
1224
+ bookingNumber: string;
1225
+ status: "draft" | "on_hold" | "confirmed" | "in_progress" | "completed" | "expired" | "cancelled";
1226
+ sellCurrency: string;
1227
+ sellAmountCents: number | null;
1228
+ productTitle: string | null;
1229
+ paymentStatus: "partially_paid" | "paid" | "overdue" | "unpaid";
1230
+ startDate: string | null;
1231
+ endDate: string | null;
1232
+ pax: number | null;
1233
+ confirmedAt: string | null;
1234
+ completedAt: string | null;
1235
+ participantCount: number;
1236
+ primaryTravelerName: string | null;
1237
+ }[];
1238
+ };
1239
+ outputFormat: "json";
1240
+ status: import("hono/utils/http-status").ContentfulStatusCode;
1241
+ };
1242
+ };
1243
+ } & {
1244
+ "/bookings/:bookingId": {
1245
+ $get: {
1246
+ input: {
1247
+ param: {
1248
+ bookingId: string;
1249
+ };
1250
+ };
1251
+ output: {
1252
+ error: string;
1253
+ };
1254
+ outputFormat: "json";
1255
+ status: 404;
1256
+ } | {
1257
+ input: {
1258
+ param: {
1259
+ bookingId: string;
1260
+ };
1261
+ };
1262
+ output: {
1263
+ data: {
1264
+ bookingId: string;
1265
+ bookingNumber: string;
1266
+ status: "draft" | "on_hold" | "confirmed" | "in_progress" | "completed" | "expired" | "cancelled";
1267
+ sellCurrency: string;
1268
+ sellAmountCents: number | null;
1269
+ startDate: string | null;
1270
+ endDate: string | null;
1271
+ pax: number | null;
1272
+ confirmedAt: string | null;
1273
+ cancelledAt: string | null;
1274
+ completedAt: string | null;
1275
+ participants: {
1276
+ id: string;
1277
+ participantType: "staff" | "other" | "traveler" | "booker" | "contact" | "occupant";
1278
+ firstName: string;
1279
+ lastName: string;
1280
+ isPrimary: boolean;
1281
+ }[];
1282
+ items: {
1283
+ id: string;
1284
+ title: string;
1285
+ description: string | null;
1286
+ itemType: "service" | "other" | "unit" | "extra" | "fee" | "tax" | "discount" | "adjustment" | "accommodation" | "transport";
1287
+ status: "draft" | "on_hold" | "confirmed" | "expired" | "cancelled" | "fulfilled";
1288
+ serviceDate: string | null;
1289
+ startsAt: string | null;
1290
+ endsAt: string | null;
1291
+ quantity: number;
1292
+ sellCurrency: string;
1293
+ unitSellAmountCents: number | null;
1294
+ totalSellAmountCents: number | null;
1295
+ notes: string | null;
1296
+ participantLinks: {
1297
+ id: string;
1298
+ participantId: string;
1299
+ role: "other" | "traveler" | "occupant" | "primary_contact" | "service_assignee" | "beneficiary";
1300
+ isPrimary: boolean;
1301
+ }[];
1302
+ }[];
1303
+ billingContact: {
1304
+ email: string | null;
1305
+ phone: string | null;
1306
+ firstName: string | null;
1307
+ lastName: string | null;
1308
+ country: string | null;
1309
+ state: string | null;
1310
+ city: string | null;
1311
+ address1: string | null;
1312
+ postal: string | null;
1313
+ } | null;
1314
+ documents: {
1315
+ id: string;
1316
+ source: "legal" | "finance" | "booking_document";
1317
+ participantId: string | null;
1318
+ type: "visa" | "other" | "insurance" | "health" | "passport_copy" | "invoice" | "proforma" | "credit_note" | "contract";
1319
+ fileName: string;
1320
+ fileUrl: string;
1321
+ mimeType: string | null;
1322
+ reference: string | null;
1323
+ }[];
1324
+ financials: {
1325
+ documents: {
1326
+ invoiceId: string;
1327
+ invoiceNumber: string;
1328
+ invoiceType: "invoice" | "proforma" | "credit_note";
1329
+ invoiceStatus: "void" | "draft" | "sent" | "partially_paid" | "paid" | "overdue";
1330
+ currency: string;
1331
+ totalCents: number;
1332
+ paidCents: number;
1333
+ balanceDueCents: number;
1334
+ issueDate: string;
1335
+ dueDate: string;
1336
+ documentStatus: "pending" | "failed" | "ready" | "stale" | "missing";
1337
+ format: "html" | "json" | "pdf" | "xml" | null;
1338
+ generatedAt: string | null;
1339
+ downloadUrl: string | null;
1340
+ }[];
1341
+ payments: {
1342
+ id: string;
1343
+ invoiceId: string;
1344
+ invoiceNumber: string;
1345
+ invoiceType: "invoice" | "proforma" | "credit_note";
1346
+ status: "pending" | "completed" | "failed" | "refunded";
1347
+ paymentMethod: "other" | "voucher" | "wallet" | "bank_transfer" | "credit_card" | "debit_card" | "cash" | "cheque" | "direct_bill";
1348
+ amountCents: number;
1349
+ currency: string;
1350
+ paymentDate: string;
1351
+ referenceNumber: string | null;
1352
+ notes: string | null;
1353
+ }[];
1354
+ };
1355
+ fulfillments: {
1356
+ id: string;
1357
+ bookingItemId: string | null;
1358
+ participantId: string | null;
1359
+ fulfillmentType: "other" | "voucher" | "ticket" | "pdf" | "qr_code" | "barcode" | "mobile";
1360
+ deliveryChannel: "email" | "other" | "download" | "api" | "wallet";
1361
+ status: "pending" | "issued" | "reissued" | "revoked" | "failed";
1362
+ artifactUrl: string | null;
1363
+ }[];
1364
+ };
1365
+ };
1366
+ outputFormat: "json";
1367
+ status: import("hono/utils/http-status").ContentfulStatusCode;
1368
+ };
1369
+ };
1370
+ } & {
1371
+ "/bookings/:bookingId/documents": {
1372
+ $get: {
1373
+ input: {
1374
+ param: {
1375
+ bookingId: string;
1376
+ };
1377
+ };
1378
+ output: {
1379
+ error: string;
1380
+ };
1381
+ outputFormat: "json";
1382
+ status: 404;
1383
+ } | {
1384
+ input: {
1385
+ param: {
1386
+ bookingId: string;
1387
+ };
1388
+ };
1389
+ output: {
1390
+ data: {
1391
+ id: string;
1392
+ source: "legal" | "finance" | "booking_document";
1393
+ participantId: string | null;
1394
+ type: "visa" | "other" | "insurance" | "health" | "passport_copy" | "invoice" | "proforma" | "credit_note" | "contract";
1395
+ fileName: string;
1396
+ fileUrl: string;
1397
+ mimeType: string | null;
1398
+ reference: string | null;
1399
+ }[];
1400
+ };
1401
+ outputFormat: "json";
1402
+ status: import("hono/utils/http-status").ContentfulStatusCode;
1403
+ };
1404
+ };
1405
+ } & {
1406
+ "/bookings/:bookingId/billing-contact": {
1407
+ $get: {
878
1408
  input: {
879
1409
  param: {
880
1410
  bookingId: string;