@voyantjs/customer-portal 0.5.0 → 0.6.2

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,961 @@
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
17
  input: {};
18
+ output: {
19
+ data: {
20
+ userId: string;
21
+ email: string;
22
+ emailVerified: boolean;
23
+ firstName: string | null;
24
+ middleName: string | null;
25
+ lastName: string | null;
26
+ avatarUrl: string | null;
27
+ locale: string;
28
+ timezone: string | null;
29
+ seatingPreference: "aisle" | "window" | "middle" | "no_preference" | null;
30
+ dateOfBirth: string | null;
31
+ address: {
32
+ country: string | null;
33
+ state: string | null;
34
+ city: string | null;
35
+ postalCode: string | null;
36
+ addressLine1: string | null;
37
+ addressLine2: string | null;
38
+ } | null;
39
+ documents: {
40
+ type: "passport" | "visa" | "drivers_license" | "other" | "id_card";
41
+ number: string;
42
+ issuingAuthority: string | null;
43
+ issuingCountry: string;
44
+ nationality: string | null;
45
+ expiryDate: string;
46
+ issueDate: string | null;
47
+ }[];
48
+ marketingConsent: boolean;
49
+ marketingConsentAt: string | null;
50
+ marketingConsentSource: string | null;
51
+ notificationDefaults: {
52
+ [x: string]: import("hono/utils/types").JSONValue;
53
+ } | null;
54
+ uiPrefs: {
55
+ [x: string]: import("hono/utils/types").JSONValue;
56
+ } | null;
57
+ customerRecord: {
58
+ id: string;
59
+ firstName: string;
60
+ lastName: string;
61
+ preferredLanguage: string | null;
62
+ preferredCurrency: string | null;
63
+ birthday: string | null;
64
+ email: string | null;
65
+ phone: string | null;
66
+ address: string | null;
67
+ city: string | null;
68
+ country: string | null;
69
+ billingAddress: {
70
+ id: string;
71
+ label: "service" | "primary" | "other" | "billing" | "shipping" | "mailing" | "meeting" | "legal";
72
+ fullText: string | null;
73
+ line1: string | null;
74
+ line2: string | null;
75
+ city: string | null;
76
+ region: string | null;
77
+ postalCode: string | null;
78
+ country: string | null;
79
+ isPrimary: boolean;
80
+ } | null;
81
+ relation: string | null;
82
+ status: string;
83
+ } | null;
84
+ };
85
+ };
86
+ outputFormat: "json";
87
+ status: import("hono/utils/http-status").ContentfulStatusCode;
88
+ } | {
89
+ input: {};
90
+ output: {
91
+ error: string;
92
+ };
93
+ outputFormat: "json";
94
+ status: 404;
95
+ };
96
+ };
97
+ } | (import("hono/types").MergeSchemaPath<{
98
+ "/contact-exists": {
99
+ $get: {
100
+ input: {};
101
+ output: {
102
+ data: {
103
+ email: string;
104
+ authAccountExists: boolean;
105
+ customerRecordExists: boolean;
106
+ linkedCustomerRecordExists: boolean;
107
+ };
108
+ };
109
+ outputFormat: "json";
110
+ status: import("hono/utils/http-status").ContentfulStatusCode;
111
+ };
112
+ };
113
+ } & {
114
+ "/contact-exists/phone": {
115
+ $get: {
116
+ input: {};
117
+ output: {
118
+ data: {
119
+ phone: string;
120
+ customerRecordExists: boolean;
121
+ linkedCustomerRecordExists: boolean;
122
+ };
123
+ };
124
+ outputFormat: "json";
125
+ status: import("hono/utils/http-status").ContentfulStatusCode;
126
+ };
127
+ };
128
+ }, "/"> & {
129
+ "/me": {
130
+ $get: {
131
+ input: {};
132
+ output: {
133
+ data: {
134
+ userId: string;
135
+ email: string;
136
+ emailVerified: boolean;
137
+ firstName: string | null;
138
+ middleName: string | null;
139
+ lastName: string | null;
140
+ avatarUrl: string | null;
141
+ locale: string;
142
+ timezone: string | null;
143
+ seatingPreference: "aisle" | "window" | "middle" | "no_preference" | null;
144
+ dateOfBirth: string | null;
145
+ address: {
146
+ country: string | null;
147
+ state: string | null;
148
+ city: string | null;
149
+ postalCode: string | null;
150
+ addressLine1: string | null;
151
+ addressLine2: string | null;
152
+ } | null;
153
+ documents: {
154
+ type: "passport" | "visa" | "drivers_license" | "other" | "id_card";
155
+ number: string;
156
+ issuingAuthority: string | null;
157
+ issuingCountry: string;
158
+ nationality: string | null;
159
+ expiryDate: string;
160
+ issueDate: string | null;
161
+ }[];
162
+ marketingConsent: boolean;
163
+ marketingConsentAt: string | null;
164
+ marketingConsentSource: string | null;
165
+ notificationDefaults: {
166
+ [x: string]: import("hono/utils/types").JSONValue;
167
+ } | null;
168
+ uiPrefs: {
169
+ [x: string]: import("hono/utils/types").JSONValue;
170
+ } | null;
171
+ customerRecord: {
172
+ id: string;
173
+ firstName: string;
174
+ lastName: string;
175
+ preferredLanguage: string | null;
176
+ preferredCurrency: string | null;
177
+ birthday: string | null;
178
+ email: string | null;
179
+ phone: string | null;
180
+ address: string | null;
181
+ city: string | null;
182
+ country: string | null;
183
+ billingAddress: {
184
+ id: string;
185
+ label: "service" | "primary" | "other" | "billing" | "shipping" | "mailing" | "meeting" | "legal";
186
+ fullText: string | null;
187
+ line1: string | null;
188
+ line2: string | null;
189
+ city: string | null;
190
+ region: string | null;
191
+ postalCode: string | null;
192
+ country: string | null;
193
+ isPrimary: boolean;
194
+ } | null;
195
+ relation: string | null;
196
+ status: string;
197
+ } | null;
198
+ };
199
+ };
200
+ outputFormat: "json";
201
+ status: import("hono/utils/http-status").ContentfulStatusCode;
202
+ } | {
203
+ input: {};
204
+ output: {
205
+ error: string;
206
+ };
207
+ outputFormat: "json";
208
+ status: 404;
209
+ };
210
+ };
211
+ })) & {
212
+ "/me": {
213
+ $patch: {
214
+ input: {};
215
+ output: {
216
+ error: string;
217
+ };
218
+ outputFormat: "json";
219
+ status: 404;
220
+ } | {
221
+ input: {};
222
+ output: {
223
+ error: string;
224
+ };
225
+ outputFormat: "json";
226
+ status: 409;
227
+ } | {
228
+ input: {};
229
+ output: {
230
+ data: {
231
+ userId: string;
232
+ email: string;
233
+ emailVerified: boolean;
234
+ firstName: string | null;
235
+ middleName: string | null;
236
+ lastName: string | null;
237
+ avatarUrl: string | null;
238
+ locale: string;
239
+ timezone: string | null;
240
+ seatingPreference: "aisle" | "window" | "middle" | "no_preference" | null;
241
+ dateOfBirth: string | null;
242
+ address: {
243
+ country: string | null;
244
+ state: string | null;
245
+ city: string | null;
246
+ postalCode: string | null;
247
+ addressLine1: string | null;
248
+ addressLine2: string | null;
249
+ } | null;
250
+ documents: {
251
+ type: "passport" | "visa" | "drivers_license" | "other" | "id_card";
252
+ number: string;
253
+ issuingAuthority: string | null;
254
+ issuingCountry: string;
255
+ nationality: string | null;
256
+ expiryDate: string;
257
+ issueDate: string | null;
258
+ }[];
259
+ marketingConsent: boolean;
260
+ marketingConsentAt: string | null;
261
+ marketingConsentSource: string | null;
262
+ notificationDefaults: {
263
+ [x: string]: import("hono/utils/types").JSONValue;
264
+ } | null;
265
+ uiPrefs: {
266
+ [x: string]: import("hono/utils/types").JSONValue;
267
+ } | null;
268
+ customerRecord: {
269
+ id: string;
270
+ firstName: string;
271
+ lastName: string;
272
+ preferredLanguage: string | null;
273
+ preferredCurrency: string | null;
274
+ birthday: string | null;
275
+ email: string | null;
276
+ phone: string | null;
277
+ address: string | null;
278
+ city: string | null;
279
+ country: string | null;
280
+ billingAddress: {
281
+ id: string;
282
+ label: "service" | "primary" | "other" | "billing" | "shipping" | "mailing" | "meeting" | "legal";
283
+ fullText: string | null;
284
+ line1: string | null;
285
+ line2: string | null;
286
+ city: string | null;
287
+ region: string | null;
288
+ postalCode: string | null;
289
+ country: string | null;
290
+ isPrimary: boolean;
291
+ } | null;
292
+ relation: string | null;
293
+ status: string;
294
+ } | null;
295
+ };
296
+ };
297
+ outputFormat: "json";
298
+ status: import("hono/utils/http-status").ContentfulStatusCode;
299
+ };
300
+ };
301
+ }) & {
302
+ "/bootstrap": {
303
+ $post: {
304
+ input: {};
305
+ output: {
306
+ error: string;
307
+ };
308
+ outputFormat: "json";
309
+ status: 404;
310
+ } | {
311
+ input: {};
312
+ output: {
313
+ error: string;
314
+ };
315
+ outputFormat: "json";
316
+ status: 409;
317
+ } | {
318
+ input: {};
319
+ output: {
320
+ data: {
321
+ status: "already_linked" | "linked_existing_customer" | "created_customer" | "customer_selection_required";
322
+ profile: {
323
+ userId: string;
324
+ email: string;
325
+ emailVerified: boolean;
326
+ firstName: string | null;
327
+ middleName: string | null;
328
+ lastName: string | null;
329
+ avatarUrl: string | null;
330
+ locale: string;
331
+ timezone: string | null;
332
+ seatingPreference: "aisle" | "window" | "middle" | "no_preference" | null;
333
+ dateOfBirth: string | null;
334
+ address: {
335
+ country: string | null;
336
+ state: string | null;
337
+ city: string | null;
338
+ postalCode: string | null;
339
+ addressLine1: string | null;
340
+ addressLine2: string | null;
341
+ } | null;
342
+ documents: {
343
+ type: "passport" | "visa" | "drivers_license" | "other" | "id_card";
344
+ number: string;
345
+ issuingAuthority: string | null;
346
+ issuingCountry: string;
347
+ nationality: string | null;
348
+ expiryDate: string;
349
+ issueDate: string | null;
350
+ }[];
351
+ marketingConsent: boolean;
352
+ marketingConsentAt: string | null;
353
+ marketingConsentSource: string | null;
354
+ notificationDefaults: {
355
+ [x: string]: import("hono/utils/types").JSONValue;
356
+ } | null;
357
+ uiPrefs: {
358
+ [x: string]: import("hono/utils/types").JSONValue;
359
+ } | null;
360
+ customerRecord: {
361
+ id: string;
362
+ firstName: string;
363
+ lastName: string;
364
+ preferredLanguage: string | null;
365
+ preferredCurrency: string | null;
366
+ birthday: string | null;
367
+ email: string | null;
368
+ phone: string | null;
369
+ address: string | null;
370
+ city: string | null;
371
+ country: string | null;
372
+ billingAddress: {
373
+ id: string;
374
+ label: "service" | "primary" | "other" | "billing" | "shipping" | "mailing" | "meeting" | "legal";
375
+ fullText: string | null;
376
+ line1: string | null;
377
+ line2: string | null;
378
+ city: string | null;
379
+ region: string | null;
380
+ postalCode: string | null;
381
+ country: string | null;
382
+ isPrimary: boolean;
383
+ } | null;
384
+ relation: string | null;
385
+ status: string;
386
+ } | null;
387
+ } | null;
388
+ candidates: {
389
+ id: string;
390
+ firstName: string;
391
+ lastName: string;
392
+ preferredLanguage: string | null;
393
+ preferredCurrency: string | null;
394
+ birthday: string | null;
395
+ email: string | null;
396
+ phone: string | null;
397
+ address: string | null;
398
+ city: string | null;
399
+ country: string | null;
400
+ billingAddress: {
401
+ id: string;
402
+ label: "service" | "primary" | "other" | "billing" | "shipping" | "mailing" | "meeting" | "legal";
403
+ fullText: string | null;
404
+ line1: string | null;
405
+ line2: string | null;
406
+ city: string | null;
407
+ region: string | null;
408
+ postalCode: string | null;
409
+ country: string | null;
410
+ isPrimary: boolean;
411
+ } | null;
412
+ relation: string | null;
413
+ status: string;
414
+ linkable: boolean;
415
+ claimedByAnotherUser: boolean;
416
+ }[];
417
+ };
418
+ };
419
+ outputFormat: "json";
420
+ status: import("hono/utils/http-status").ContentfulStatusCode;
421
+ };
422
+ };
423
+ }) & {
424
+ "/companions": {
425
+ $get: {
426
+ input: {};
427
+ output: {
428
+ data: {
429
+ id: string;
430
+ role: string;
431
+ name: string;
432
+ title: string | null;
433
+ email: string | null;
434
+ phone: string | null;
435
+ isPrimary: boolean;
436
+ notes: string | null;
437
+ typeKey: string | null;
438
+ person: {
439
+ firstName: string | null;
440
+ middleName: string | null;
441
+ lastName: string | null;
442
+ dateOfBirth: string | null;
443
+ addresses: {
444
+ type: string | null;
445
+ country: string | null;
446
+ state: string | null;
447
+ city: string | null;
448
+ postalCode: string | null;
449
+ addressLine1: string | null;
450
+ addressLine2: string | null;
451
+ isDefault: boolean;
452
+ }[];
453
+ documents: {
454
+ type: "passport" | "visa" | "drivers_license" | "other" | "id_card";
455
+ number: string | null;
456
+ issuingAuthority: string | null;
457
+ country: string | null;
458
+ issueDate: string | null;
459
+ expiryDate: string | null;
460
+ }[];
461
+ };
462
+ metadata: {
463
+ [x: string]: import("hono/utils/types").JSONValue;
464
+ } | null;
465
+ }[];
466
+ };
467
+ outputFormat: "json";
468
+ status: import("hono/utils/http-status").ContentfulStatusCode;
469
+ };
470
+ };
471
+ }) & {
472
+ "/companions": {
473
+ $post: {
474
+ input: {};
475
+ output: {
476
+ error: string;
477
+ };
478
+ outputFormat: "json";
479
+ status: 409;
480
+ } | {
481
+ input: {};
482
+ output: {
483
+ data: {
484
+ id: string;
485
+ role: string;
486
+ name: string;
487
+ title: string | null;
488
+ email: string | null;
489
+ phone: string | null;
490
+ isPrimary: boolean;
491
+ notes: string | null;
492
+ typeKey: string | null;
493
+ person: {
494
+ firstName: string | null;
495
+ middleName: string | null;
496
+ lastName: string | null;
497
+ dateOfBirth: string | null;
498
+ addresses: {
499
+ type: string | null;
500
+ country: string | null;
501
+ state: string | null;
502
+ city: string | null;
503
+ postalCode: string | null;
504
+ addressLine1: string | null;
505
+ addressLine2: string | null;
506
+ isDefault: boolean;
507
+ }[];
508
+ documents: {
509
+ type: "passport" | "visa" | "drivers_license" | "other" | "id_card";
510
+ number: string | null;
511
+ issuingAuthority: string | null;
512
+ country: string | null;
513
+ issueDate: string | null;
514
+ expiryDate: string | null;
515
+ }[];
516
+ };
517
+ metadata: {
518
+ [x: string]: import("hono/utils/types").JSONValue;
519
+ } | null;
520
+ };
521
+ };
522
+ outputFormat: "json";
523
+ status: 201;
524
+ };
525
+ };
526
+ }) & {
527
+ "/companions/import-booking-participants": {
528
+ $post: {
529
+ input: {};
530
+ output: {
531
+ error: string;
532
+ };
533
+ outputFormat: "json";
534
+ status: 409;
535
+ } | {
536
+ input: {};
537
+ output: {
538
+ data: {
539
+ created: {
540
+ id: string;
541
+ role: string;
542
+ name: string;
543
+ title: string | null;
544
+ email: string | null;
545
+ phone: string | null;
546
+ isPrimary: boolean;
547
+ notes: string | null;
548
+ typeKey: string | null;
549
+ person: {
550
+ firstName: string | null;
551
+ middleName: string | null;
552
+ lastName: string | null;
553
+ dateOfBirth: string | null;
554
+ addresses: {
555
+ type: string | null;
556
+ country: string | null;
557
+ state: string | null;
558
+ city: string | null;
559
+ postalCode: string | null;
560
+ addressLine1: string | null;
561
+ addressLine2: string | null;
562
+ isDefault: boolean;
563
+ }[];
564
+ documents: {
565
+ type: "passport" | "visa" | "drivers_license" | "other" | "id_card";
566
+ number: string | null;
567
+ issuingAuthority: string | null;
568
+ country: string | null;
569
+ issueDate: string | null;
570
+ expiryDate: string | null;
571
+ }[];
572
+ };
573
+ metadata: {
574
+ [x: string]: import("hono/utils/types").JSONValue;
575
+ } | null;
576
+ }[];
577
+ skippedCount: number;
578
+ };
579
+ };
580
+ outputFormat: "json";
581
+ status: import("hono/utils/http-status").ContentfulStatusCode;
582
+ };
583
+ };
584
+ }) & {
585
+ "/companions/:companionId": {
586
+ $patch: {
587
+ input: {
588
+ param: {
589
+ companionId: string;
590
+ };
591
+ };
592
+ output: {};
593
+ outputFormat: string;
594
+ status: import("hono/utils/http-status").StatusCode;
595
+ };
596
+ };
597
+ }) & {
598
+ "/companions/:companionId": {
599
+ $delete: {
600
+ input: {
601
+ param: {
602
+ companionId: string;
603
+ };
604
+ };
605
+ output: {};
606
+ outputFormat: string;
607
+ status: import("hono/utils/http-status").StatusCode;
608
+ };
609
+ };
610
+ }) & {
611
+ "/bookings": {
612
+ $get: {
613
+ input: {};
614
+ output: {
615
+ error: string;
616
+ };
617
+ outputFormat: "json";
618
+ status: 404;
619
+ } | {
620
+ input: {};
621
+ output: {
622
+ data: {
623
+ bookingId: string;
624
+ bookingNumber: string;
625
+ status: "draft" | "on_hold" | "confirmed" | "in_progress" | "completed" | "expired" | "cancelled";
626
+ sellCurrency: string;
627
+ sellAmountCents: number | null;
628
+ productTitle: string | null;
629
+ paymentStatus: "partially_paid" | "paid" | "overdue" | "unpaid";
630
+ startDate: string | null;
631
+ endDate: string | null;
632
+ pax: number | null;
633
+ confirmedAt: string | null;
634
+ completedAt: string | null;
635
+ participantCount: number;
636
+ primaryTravelerName: string | null;
637
+ }[];
638
+ };
639
+ outputFormat: "json";
640
+ status: import("hono/utils/http-status").ContentfulStatusCode;
641
+ };
642
+ };
643
+ }) & {
644
+ "/bookings/:bookingId": {
645
+ $get: {
646
+ input: {
647
+ param: {
648
+ bookingId: string;
649
+ };
650
+ };
651
+ output: {
652
+ error: string;
653
+ };
654
+ outputFormat: "json";
655
+ status: 404;
656
+ } | {
657
+ input: {
658
+ param: {
659
+ bookingId: string;
660
+ };
661
+ };
662
+ output: {
663
+ data: {
664
+ bookingId: string;
665
+ bookingNumber: string;
666
+ status: "draft" | "on_hold" | "confirmed" | "in_progress" | "completed" | "expired" | "cancelled";
667
+ sellCurrency: string;
668
+ sellAmountCents: number | null;
669
+ startDate: string | null;
670
+ endDate: string | null;
671
+ pax: number | null;
672
+ confirmedAt: string | null;
673
+ cancelledAt: string | null;
674
+ completedAt: string | null;
675
+ participants: {
676
+ id: string;
677
+ participantType: "staff" | "other" | "traveler" | "booker" | "contact" | "occupant";
678
+ firstName: string;
679
+ lastName: string;
680
+ isPrimary: boolean;
681
+ }[];
682
+ items: {
683
+ id: string;
684
+ title: string;
685
+ description: string | null;
686
+ itemType: "service" | "other" | "unit" | "extra" | "fee" | "tax" | "discount" | "adjustment" | "accommodation" | "transport";
687
+ status: "draft" | "on_hold" | "confirmed" | "expired" | "cancelled" | "fulfilled";
688
+ serviceDate: string | null;
689
+ startsAt: string | null;
690
+ endsAt: string | null;
691
+ quantity: number;
692
+ sellCurrency: string;
693
+ unitSellAmountCents: number | null;
694
+ totalSellAmountCents: number | null;
695
+ notes: string | null;
696
+ participantLinks: {
697
+ id: string;
698
+ participantId: string;
699
+ role: "other" | "traveler" | "occupant" | "primary_contact" | "service_assignee" | "beneficiary";
700
+ isPrimary: boolean;
701
+ }[];
702
+ }[];
703
+ billingContact: {
704
+ email: string | null;
705
+ phone: string | null;
706
+ firstName: string | null;
707
+ lastName: string | null;
708
+ country: string | null;
709
+ state: string | null;
710
+ city: string | null;
711
+ address1: string | null;
712
+ postal: string | null;
713
+ } | null;
714
+ documents: {
715
+ id: string;
716
+ source: "legal" | "finance" | "booking_document";
717
+ participantId: string | null;
718
+ type: "visa" | "other" | "insurance" | "health" | "passport_copy" | "invoice" | "proforma" | "credit_note" | "contract";
719
+ fileName: string;
720
+ fileUrl: string;
721
+ mimeType: string | null;
722
+ reference: string | null;
723
+ }[];
724
+ financials: {
725
+ documents: {
726
+ invoiceId: string;
727
+ invoiceNumber: string;
728
+ invoiceType: "invoice" | "proforma" | "credit_note";
729
+ invoiceStatus: "void" | "draft" | "sent" | "partially_paid" | "paid" | "overdue";
730
+ currency: string;
731
+ totalCents: number;
732
+ paidCents: number;
733
+ balanceDueCents: number;
734
+ issueDate: string;
735
+ dueDate: string;
736
+ documentStatus: "pending" | "failed" | "ready" | "stale" | "missing";
737
+ format: "html" | "json" | "pdf" | "xml" | null;
738
+ generatedAt: string | null;
739
+ downloadUrl: string | null;
740
+ }[];
741
+ payments: {
742
+ id: string;
743
+ invoiceId: string;
744
+ invoiceNumber: string;
745
+ invoiceType: "invoice" | "proforma" | "credit_note";
746
+ status: "pending" | "completed" | "failed" | "refunded";
747
+ paymentMethod: "other" | "voucher" | "wallet" | "bank_transfer" | "credit_card" | "debit_card" | "cash" | "cheque" | "direct_bill";
748
+ amountCents: number;
749
+ currency: string;
750
+ paymentDate: string;
751
+ referenceNumber: string | null;
752
+ notes: string | null;
753
+ }[];
754
+ };
755
+ fulfillments: {
756
+ id: string;
757
+ bookingItemId: string | null;
758
+ participantId: string | null;
759
+ fulfillmentType: "other" | "voucher" | "ticket" | "pdf" | "qr_code" | "barcode" | "mobile";
760
+ deliveryChannel: "email" | "other" | "download" | "api" | "wallet";
761
+ status: "pending" | "issued" | "reissued" | "revoked" | "failed";
762
+ artifactUrl: string | null;
763
+ }[];
764
+ };
765
+ };
766
+ outputFormat: "json";
767
+ status: import("hono/utils/http-status").ContentfulStatusCode;
768
+ };
769
+ };
770
+ }) & {
771
+ "/bookings/:bookingId/documents": {
772
+ $get: {
773
+ input: {
774
+ param: {
775
+ bookingId: string;
776
+ };
777
+ };
778
+ output: {
779
+ error: string;
780
+ };
781
+ outputFormat: "json";
782
+ status: 404;
783
+ } | {
784
+ input: {
785
+ param: {
786
+ bookingId: string;
787
+ };
788
+ };
789
+ output: {
790
+ data: {
791
+ id: string;
792
+ source: "legal" | "finance" | "booking_document";
793
+ participantId: string | null;
794
+ type: "visa" | "other" | "insurance" | "health" | "passport_copy" | "invoice" | "proforma" | "credit_note" | "contract";
795
+ fileName: string;
796
+ fileUrl: string;
797
+ mimeType: string | null;
798
+ reference: string | null;
799
+ }[];
800
+ };
801
+ outputFormat: "json";
802
+ status: import("hono/utils/http-status").ContentfulStatusCode;
803
+ };
804
+ };
805
+ }) & {
806
+ "/bookings/:bookingId/billing-contact": {
807
+ $get: {
808
+ input: {
809
+ param: {
810
+ bookingId: string;
811
+ };
812
+ };
13
813
  output: {
14
814
  error: string;
15
815
  };
16
816
  outputFormat: "json";
17
- status: 401;
817
+ status: 404;
818
+ } | {
819
+ input: {
820
+ param: {
821
+ bookingId: string;
822
+ };
823
+ };
824
+ output: {
825
+ data: {
826
+ email: string | null;
827
+ phone: string | null;
828
+ firstName: string | null;
829
+ lastName: string | null;
830
+ country: string | null;
831
+ state: string | null;
832
+ city: string | null;
833
+ address1: string | null;
834
+ postal: string | null;
835
+ };
836
+ };
837
+ outputFormat: "json";
838
+ status: import("hono/utils/http-status").ContentfulStatusCode;
839
+ };
840
+ };
841
+ }, "/", "/bookings/:bookingId/billing-contact">;
842
+ export declare const publicCustomerPortalRoutes: import("hono/hono-base").HonoBase<Env, ((((((((((({
843
+ "/me": {
844
+ $get: {
845
+ input: {};
846
+ output: {
847
+ data: {
848
+ userId: string;
849
+ email: string;
850
+ emailVerified: boolean;
851
+ firstName: string | null;
852
+ middleName: string | null;
853
+ lastName: string | null;
854
+ avatarUrl: string | null;
855
+ locale: string;
856
+ timezone: string | null;
857
+ seatingPreference: "aisle" | "window" | "middle" | "no_preference" | null;
858
+ dateOfBirth: string | null;
859
+ address: {
860
+ country: string | null;
861
+ state: string | null;
862
+ city: string | null;
863
+ postalCode: string | null;
864
+ addressLine1: string | null;
865
+ addressLine2: string | null;
866
+ } | null;
867
+ documents: {
868
+ type: "passport" | "visa" | "drivers_license" | "other" | "id_card";
869
+ number: string;
870
+ issuingAuthority: string | null;
871
+ issuingCountry: string;
872
+ nationality: string | null;
873
+ expiryDate: string;
874
+ issueDate: string | null;
875
+ }[];
876
+ marketingConsent: boolean;
877
+ marketingConsentAt: string | null;
878
+ marketingConsentSource: string | null;
879
+ notificationDefaults: {
880
+ [x: string]: import("hono/utils/types").JSONValue;
881
+ } | null;
882
+ uiPrefs: {
883
+ [x: string]: import("hono/utils/types").JSONValue;
884
+ } | null;
885
+ customerRecord: {
886
+ id: string;
887
+ firstName: string;
888
+ lastName: string;
889
+ preferredLanguage: string | null;
890
+ preferredCurrency: string | null;
891
+ birthday: string | null;
892
+ email: string | null;
893
+ phone: string | null;
894
+ address: string | null;
895
+ city: string | null;
896
+ country: string | null;
897
+ billingAddress: {
898
+ id: string;
899
+ label: "service" | "primary" | "other" | "billing" | "shipping" | "mailing" | "meeting" | "legal";
900
+ fullText: string | null;
901
+ line1: string | null;
902
+ line2: string | null;
903
+ city: string | null;
904
+ region: string | null;
905
+ postalCode: string | null;
906
+ country: string | null;
907
+ isPrimary: boolean;
908
+ } | null;
909
+ relation: string | null;
910
+ status: string;
911
+ } | null;
912
+ };
913
+ };
914
+ outputFormat: "json";
915
+ status: import("hono/utils/http-status").ContentfulStatusCode;
18
916
  } | {
917
+ input: {};
918
+ output: {
919
+ error: string;
920
+ };
921
+ outputFormat: "json";
922
+ status: 404;
923
+ };
924
+ };
925
+ } | (import("hono/types").MergeSchemaPath<{
926
+ "/contact-exists": {
927
+ $get: {
928
+ input: {};
929
+ output: {
930
+ data: {
931
+ email: string;
932
+ authAccountExists: boolean;
933
+ customerRecordExists: boolean;
934
+ linkedCustomerRecordExists: boolean;
935
+ };
936
+ };
937
+ outputFormat: "json";
938
+ status: import("hono/utils/http-status").ContentfulStatusCode;
939
+ };
940
+ };
941
+ } & {
942
+ "/contact-exists/phone": {
943
+ $get: {
944
+ input: {};
945
+ output: {
946
+ data: {
947
+ phone: string;
948
+ customerRecordExists: boolean;
949
+ linkedCustomerRecordExists: boolean;
950
+ };
951
+ };
952
+ outputFormat: "json";
953
+ status: import("hono/utils/http-status").ContentfulStatusCode;
954
+ };
955
+ };
956
+ }, "/"> & {
957
+ "/me": {
958
+ $get: {
19
959
  input: {};
20
960
  output: {
21
961
  data: {
@@ -39,7 +979,7 @@ export declare const publicCustomerPortalRoutes: import("hono/hono-base").HonoBa
39
979
  addressLine2: string | null;
40
980
  } | null;
41
981
  documents: {
42
- type: "visa" | "other" | "passport" | "drivers_license" | "id_card";
982
+ type: "passport" | "visa" | "drivers_license" | "other" | "id_card";
43
983
  number: string;
44
984
  issuingAuthority: string | null;
45
985
  issuingCountry: string;
@@ -70,7 +1010,7 @@ export declare const publicCustomerPortalRoutes: import("hono/hono-base").HonoBa
70
1010
  country: string | null;
71
1011
  billingAddress: {
72
1012
  id: string;
73
- label: "other" | "service" | "primary" | "billing" | "shipping" | "mailing" | "meeting" | "legal";
1013
+ label: "service" | "primary" | "other" | "billing" | "shipping" | "mailing" | "meeting" | "legal";
74
1014
  fullText: string | null;
75
1015
  line1: string | null;
76
1016
  line2: string | null;
@@ -96,16 +1036,9 @@ export declare const publicCustomerPortalRoutes: import("hono/hono-base").HonoBa
96
1036
  status: 404;
97
1037
  };
98
1038
  };
99
- } & {
1039
+ })) & {
100
1040
  "/me": {
101
1041
  $patch: {
102
- input: {};
103
- output: {
104
- error: string;
105
- };
106
- outputFormat: "json";
107
- status: 401;
108
- } | {
109
1042
  input: {};
110
1043
  output: {
111
1044
  error: string;
@@ -143,7 +1076,7 @@ export declare const publicCustomerPortalRoutes: import("hono/hono-base").HonoBa
143
1076
  addressLine2: string | null;
144
1077
  } | null;
145
1078
  documents: {
146
- type: "visa" | "other" | "passport" | "drivers_license" | "id_card";
1079
+ type: "passport" | "visa" | "drivers_license" | "other" | "id_card";
147
1080
  number: string;
148
1081
  issuingAuthority: string | null;
149
1082
  issuingCountry: string;
@@ -174,7 +1107,7 @@ export declare const publicCustomerPortalRoutes: import("hono/hono-base").HonoBa
174
1107
  country: string | null;
175
1108
  billingAddress: {
176
1109
  id: string;
177
- label: "other" | "service" | "primary" | "billing" | "shipping" | "mailing" | "meeting" | "legal";
1110
+ label: "service" | "primary" | "other" | "billing" | "shipping" | "mailing" | "meeting" | "legal";
178
1111
  fullText: string | null;
179
1112
  line1: string | null;
180
1113
  line2: string | null;
@@ -193,16 +1126,9 @@ export declare const publicCustomerPortalRoutes: import("hono/hono-base").HonoBa
193
1126
  status: import("hono/utils/http-status").ContentfulStatusCode;
194
1127
  };
195
1128
  };
196
- } & {
1129
+ }) & {
197
1130
  "/bootstrap": {
198
1131
  $post: {
199
- input: {};
200
- output: {
201
- error: string;
202
- };
203
- outputFormat: "json";
204
- status: 401;
205
- } | {
206
1132
  input: {};
207
1133
  output: {
208
1134
  error: string;
@@ -242,7 +1168,7 @@ export declare const publicCustomerPortalRoutes: import("hono/hono-base").HonoBa
242
1168
  addressLine2: string | null;
243
1169
  } | null;
244
1170
  documents: {
245
- type: "visa" | "other" | "passport" | "drivers_license" | "id_card";
1171
+ type: "passport" | "visa" | "drivers_license" | "other" | "id_card";
246
1172
  number: string;
247
1173
  issuingAuthority: string | null;
248
1174
  issuingCountry: string;
@@ -273,7 +1199,7 @@ export declare const publicCustomerPortalRoutes: import("hono/hono-base").HonoBa
273
1199
  country: string | null;
274
1200
  billingAddress: {
275
1201
  id: string;
276
- label: "other" | "service" | "primary" | "billing" | "shipping" | "mailing" | "meeting" | "legal";
1202
+ label: "service" | "primary" | "other" | "billing" | "shipping" | "mailing" | "meeting" | "legal";
277
1203
  fullText: string | null;
278
1204
  line1: string | null;
279
1205
  line2: string | null;
@@ -301,7 +1227,7 @@ export declare const publicCustomerPortalRoutes: import("hono/hono-base").HonoBa
301
1227
  country: string | null;
302
1228
  billingAddress: {
303
1229
  id: string;
304
- label: "other" | "service" | "primary" | "billing" | "shipping" | "mailing" | "meeting" | "legal";
1230
+ label: "service" | "primary" | "other" | "billing" | "shipping" | "mailing" | "meeting" | "legal";
305
1231
  fullText: string | null;
306
1232
  line1: string | null;
307
1233
  line2: string | null;
@@ -322,16 +1248,9 @@ export declare const publicCustomerPortalRoutes: import("hono/hono-base").HonoBa
322
1248
  status: import("hono/utils/http-status").ContentfulStatusCode;
323
1249
  };
324
1250
  };
325
- } & {
1251
+ }) & {
326
1252
  "/companions": {
327
1253
  $get: {
328
- input: {};
329
- output: {
330
- error: string;
331
- };
332
- outputFormat: "json";
333
- status: 401;
334
- } | {
335
1254
  input: {};
336
1255
  output: {
337
1256
  data: {
@@ -360,7 +1279,7 @@ export declare const publicCustomerPortalRoutes: import("hono/hono-base").HonoBa
360
1279
  isDefault: boolean;
361
1280
  }[];
362
1281
  documents: {
363
- type: "visa" | "other" | "passport" | "drivers_license" | "id_card";
1282
+ type: "passport" | "visa" | "drivers_license" | "other" | "id_card";
364
1283
  number: string | null;
365
1284
  issuingAuthority: string | null;
366
1285
  country: string | null;
@@ -377,16 +1296,9 @@ export declare const publicCustomerPortalRoutes: import("hono/hono-base").HonoBa
377
1296
  status: import("hono/utils/http-status").ContentfulStatusCode;
378
1297
  };
379
1298
  };
380
- } & {
1299
+ }) & {
381
1300
  "/companions": {
382
1301
  $post: {
383
- input: {};
384
- output: {
385
- error: string;
386
- };
387
- outputFormat: "json";
388
- status: 401;
389
- } | {
390
1302
  input: {};
391
1303
  output: {
392
1304
  error: string;
@@ -422,7 +1334,7 @@ export declare const publicCustomerPortalRoutes: import("hono/hono-base").HonoBa
422
1334
  isDefault: boolean;
423
1335
  }[];
424
1336
  documents: {
425
- type: "visa" | "other" | "passport" | "drivers_license" | "id_card";
1337
+ type: "passport" | "visa" | "drivers_license" | "other" | "id_card";
426
1338
  number: string | null;
427
1339
  issuingAuthority: string | null;
428
1340
  country: string | null;
@@ -439,16 +1351,9 @@ export declare const publicCustomerPortalRoutes: import("hono/hono-base").HonoBa
439
1351
  status: 201;
440
1352
  };
441
1353
  };
442
- } & {
1354
+ }) & {
443
1355
  "/companions/import-booking-participants": {
444
1356
  $post: {
445
- input: {};
446
- output: {
447
- error: string;
448
- };
449
- outputFormat: "json";
450
- status: 401;
451
- } | {
452
1357
  input: {};
453
1358
  output: {
454
1359
  error: string;
@@ -485,7 +1390,7 @@ export declare const publicCustomerPortalRoutes: import("hono/hono-base").HonoBa
485
1390
  isDefault: boolean;
486
1391
  }[];
487
1392
  documents: {
488
- type: "visa" | "other" | "passport" | "drivers_license" | "id_card";
1393
+ type: "passport" | "visa" | "drivers_license" | "other" | "id_card";
489
1394
  number: string | null;
490
1395
  issuingAuthority: string | null;
491
1396
  country: string | null;
@@ -504,7 +1409,7 @@ export declare const publicCustomerPortalRoutes: import("hono/hono-base").HonoBa
504
1409
  status: import("hono/utils/http-status").ContentfulStatusCode;
505
1410
  };
506
1411
  };
507
- } & {
1412
+ }) & {
508
1413
  "/companions/:companionId": {
509
1414
  $patch: {
510
1415
  input: {
@@ -512,84 +1417,12 @@ export declare const publicCustomerPortalRoutes: import("hono/hono-base").HonoBa
512
1417
  companionId: string;
513
1418
  };
514
1419
  };
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;
1420
+ output: {};
1421
+ outputFormat: string;
1422
+ status: import("hono/utils/http-status").StatusCode;
590
1423
  };
591
1424
  };
592
- } & {
1425
+ }) & {
593
1426
  "/companions/:companionId": {
594
1427
  $delete: {
595
1428
  input: {
@@ -597,56 +1430,14 @@ export declare const publicCustomerPortalRoutes: import("hono/hono-base").HonoBa
597
1430
  companionId: string;
598
1431
  };
599
1432
  };
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;
1433
+ output: {};
1434
+ outputFormat: string;
1435
+ status: import("hono/utils/http-status").StatusCode;
638
1436
  };
639
1437
  };
640
- } & {
1438
+ }) & {
641
1439
  "/bookings": {
642
1440
  $get: {
643
- input: {};
644
- output: {
645
- error: string;
646
- };
647
- outputFormat: "json";
648
- status: 401;
649
- } | {
650
1441
  input: {};
651
1442
  output: {
652
1443
  error: string;
@@ -677,20 +1468,9 @@ export declare const publicCustomerPortalRoutes: import("hono/hono-base").HonoBa
677
1468
  status: import("hono/utils/http-status").ContentfulStatusCode;
678
1469
  };
679
1470
  };
680
- } & {
1471
+ }) & {
681
1472
  "/bookings/:bookingId": {
682
1473
  $get: {
683
- input: {
684
- param: {
685
- bookingId: string;
686
- };
687
- };
688
- output: {
689
- error: string;
690
- };
691
- outputFormat: "json";
692
- status: 401;
693
- } | {
694
1474
  input: {
695
1475
  param: {
696
1476
  bookingId: string;
@@ -731,7 +1511,7 @@ export declare const publicCustomerPortalRoutes: import("hono/hono-base").HonoBa
731
1511
  id: string;
732
1512
  title: string;
733
1513
  description: string | null;
734
- itemType: "other" | "unit" | "extra" | "service" | "fee" | "tax" | "discount" | "adjustment" | "accommodation" | "transport";
1514
+ itemType: "service" | "other" | "unit" | "extra" | "fee" | "tax" | "discount" | "adjustment" | "accommodation" | "transport";
735
1515
  status: "draft" | "on_hold" | "confirmed" | "expired" | "cancelled" | "fulfilled";
736
1516
  serviceDate: string | null;
737
1517
  startsAt: string | null;
@@ -763,7 +1543,7 @@ export declare const publicCustomerPortalRoutes: import("hono/hono-base").HonoBa
763
1543
  id: string;
764
1544
  source: "legal" | "finance" | "booking_document";
765
1545
  participantId: string | null;
766
- type: "visa" | "insurance" | "health" | "passport_copy" | "other" | "invoice" | "proforma" | "credit_note" | "contract";
1546
+ type: "visa" | "other" | "insurance" | "health" | "passport_copy" | "invoice" | "proforma" | "credit_note" | "contract";
767
1547
  fileName: string;
768
1548
  fileUrl: string;
769
1549
  mimeType: string | null;
@@ -774,7 +1554,7 @@ export declare const publicCustomerPortalRoutes: import("hono/hono-base").HonoBa
774
1554
  invoiceId: string;
775
1555
  invoiceNumber: string;
776
1556
  invoiceType: "invoice" | "proforma" | "credit_note";
777
- invoiceStatus: "draft" | "void" | "sent" | "partially_paid" | "paid" | "overdue";
1557
+ invoiceStatus: "void" | "draft" | "sent" | "partially_paid" | "paid" | "overdue";
778
1558
  currency: string;
779
1559
  totalCents: number;
780
1560
  paidCents: number;
@@ -782,7 +1562,7 @@ export declare const publicCustomerPortalRoutes: import("hono/hono-base").HonoBa
782
1562
  issueDate: string;
783
1563
  dueDate: string;
784
1564
  documentStatus: "pending" | "failed" | "ready" | "stale" | "missing";
785
- format: "pdf" | "json" | "html" | "xml" | null;
1565
+ format: "html" | "json" | "pdf" | "xml" | null;
786
1566
  generatedAt: string | null;
787
1567
  downloadUrl: string | null;
788
1568
  }[];
@@ -791,7 +1571,7 @@ export declare const publicCustomerPortalRoutes: import("hono/hono-base").HonoBa
791
1571
  invoiceId: string;
792
1572
  invoiceNumber: string;
793
1573
  invoiceType: "invoice" | "proforma" | "credit_note";
794
- status: "completed" | "pending" | "failed" | "refunded";
1574
+ status: "pending" | "completed" | "failed" | "refunded";
795
1575
  paymentMethod: "other" | "voucher" | "wallet" | "bank_transfer" | "credit_card" | "debit_card" | "cash" | "cheque" | "direct_bill";
796
1576
  amountCents: number;
797
1577
  currency: string;
@@ -805,7 +1585,7 @@ export declare const publicCustomerPortalRoutes: import("hono/hono-base").HonoBa
805
1585
  bookingItemId: string | null;
806
1586
  participantId: string | null;
807
1587
  fulfillmentType: "other" | "voucher" | "ticket" | "pdf" | "qr_code" | "barcode" | "mobile";
808
- deliveryChannel: "other" | "download" | "email" | "api" | "wallet";
1588
+ deliveryChannel: "email" | "other" | "download" | "api" | "wallet";
809
1589
  status: "pending" | "issued" | "reissued" | "revoked" | "failed";
810
1590
  artifactUrl: string | null;
811
1591
  }[];
@@ -815,20 +1595,9 @@ export declare const publicCustomerPortalRoutes: import("hono/hono-base").HonoBa
815
1595
  status: import("hono/utils/http-status").ContentfulStatusCode;
816
1596
  };
817
1597
  };
818
- } & {
1598
+ }) & {
819
1599
  "/bookings/:bookingId/documents": {
820
1600
  $get: {
821
- input: {
822
- param: {
823
- bookingId: string;
824
- };
825
- };
826
- output: {
827
- error: string;
828
- };
829
- outputFormat: "json";
830
- status: 401;
831
- } | {
832
1601
  input: {
833
1602
  param: {
834
1603
  bookingId: string;
@@ -850,7 +1619,7 @@ export declare const publicCustomerPortalRoutes: import("hono/hono-base").HonoBa
850
1619
  id: string;
851
1620
  source: "legal" | "finance" | "booking_document";
852
1621
  participantId: string | null;
853
- type: "visa" | "insurance" | "health" | "passport_copy" | "other" | "invoice" | "proforma" | "credit_note" | "contract";
1622
+ type: "visa" | "other" | "insurance" | "health" | "passport_copy" | "invoice" | "proforma" | "credit_note" | "contract";
854
1623
  fileName: string;
855
1624
  fileUrl: string;
856
1625
  mimeType: string | null;
@@ -861,20 +1630,9 @@ export declare const publicCustomerPortalRoutes: import("hono/hono-base").HonoBa
861
1630
  status: import("hono/utils/http-status").ContentfulStatusCode;
862
1631
  };
863
1632
  };
864
- } & {
1633
+ }) & {
865
1634
  "/bookings/:bookingId/billing-contact": {
866
1635
  $get: {
867
- input: {
868
- param: {
869
- bookingId: string;
870
- };
871
- };
872
- output: {
873
- error: string;
874
- };
875
- outputFormat: "json";
876
- status: 401;
877
- } | {
878
1636
  input: {
879
1637
  param: {
880
1638
  bookingId: string;