@voyantjs/bookings 0.74.1 → 0.75.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.
@@ -2,15 +2,29 @@ import type { Context } from "hono";
2
2
  export declare const CHECKOUT_CAPABILITY_COOKIE = "voyant_checkout_session";
3
3
  export declare const CHECKOUT_CAPABILITY_HEADER = "X-Voyant-Checkout-Capability";
4
4
  export declare const CHECKOUT_CAPABILITY_SCOPE = "booking-checkout-session";
5
+ export declare const GUEST_BOOKING_ACCESS_COOKIE = "voyant_guest_booking";
6
+ export declare const GUEST_BOOKING_ACCESS_HEADER = "X-Voyant-Guest-Booking-Access";
7
+ export declare const GUEST_BOOKING_ACCESS_SCOPE = "guest-booking";
5
8
  export declare const checkoutCapabilityActions: readonly ["session:read", "session:update", "session:reprice", "session:finalize", "payment:read", "payment:start"];
6
9
  export type CheckoutCapabilityAction = (typeof checkoutCapabilityActions)[number];
10
+ export declare const guestBookingAccessActions: readonly ["overview:read", "payment:read", "payment:start"];
11
+ export type GuestBookingAccessAction = (typeof guestBookingAccessActions)[number];
7
12
  export declare function resolveCheckoutCapabilitySecret(env: Record<string, string | undefined>): string;
8
13
  export declare function resolveCheckoutCapabilityTtlSeconds(env: Record<string, string | undefined>): number;
14
+ export declare function resolveGuestBookingAccessSecret(env: Record<string, string | undefined>): string;
15
+ export declare function resolveGuestBookingAccessTtlSeconds(env: Record<string, string | undefined>): number;
9
16
  export declare function issueCheckoutCapability(bookingId: string, env: Record<string, string | undefined>): Promise<{
10
17
  token: string;
11
18
  payload: import("@voyantjs/hono").PublicCapabilityPayload;
12
19
  expiresAt: Date;
13
20
  }>;
21
+ export declare function issueGuestBookingAccess(bookingId: string, env: Record<string, string | undefined>): Promise<{
22
+ token: string;
23
+ payload: import("@voyantjs/hono").PublicCapabilityPayload;
24
+ expiresAt: Date;
25
+ }>;
14
26
  export declare function requireCheckoutCapability(c: Context, bookingId: string, action: CheckoutCapabilityAction, env: Record<string, string | undefined>): Promise<import("@voyantjs/hono").PublicCapabilityPayload>;
27
+ export declare function requireGuestBookingAccess(c: Context, bookingId: string, action: GuestBookingAccessAction, env: Record<string, string | undefined>): Promise<import("@voyantjs/hono").PublicCapabilityPayload>;
15
28
  export declare function checkoutCapabilityCookie(token: string, expiresAt: Date): string;
29
+ export declare function guestBookingAccessCookie(token: string, expiresAt: Date): string;
16
30
  //# sourceMappingURL=checkout-capability.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"checkout-capability.d.ts","sourceRoot":"","sources":["../src/checkout-capability.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAEnC,eAAO,MAAM,0BAA0B,4BAA4B,CAAA;AACnE,eAAO,MAAM,0BAA0B,iCAAiC,CAAA;AACxE,eAAO,MAAM,yBAAyB,6BAA6B,CAAA;AAEnE,eAAO,MAAM,yBAAyB,qHAO5B,CAAA;AAEV,MAAM,MAAM,wBAAwB,GAAG,CAAC,OAAO,yBAAyB,CAAC,CAAC,MAAM,CAAC,CAAA;AAKjF,wBAAgB,+BAA+B,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,UAQtF;AAED,wBAAgB,mCAAmC,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,UAQ1F;AAED,wBAAsB,uBAAuB,CAC3C,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;;;;GASxC;AAED,wBAAsB,yBAAyB,CAC7C,CAAC,EAAE,OAAO,EACV,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,wBAAwB,EAChC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,6DAiBxC;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,UAOtE"}
1
+ {"version":3,"file":"checkout-capability.d.ts","sourceRoot":"","sources":["../src/checkout-capability.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAEnC,eAAO,MAAM,0BAA0B,4BAA4B,CAAA;AACnE,eAAO,MAAM,0BAA0B,iCAAiC,CAAA;AACxE,eAAO,MAAM,yBAAyB,6BAA6B,CAAA;AACnE,eAAO,MAAM,2BAA2B,yBAAyB,CAAA;AACjE,eAAO,MAAM,2BAA2B,kCAAkC,CAAA;AAC1E,eAAO,MAAM,0BAA0B,kBAAkB,CAAA;AAEzD,eAAO,MAAM,yBAAyB,qHAO5B,CAAA;AAEV,MAAM,MAAM,wBAAwB,GAAG,CAAC,OAAO,yBAAyB,CAAC,CAAC,MAAM,CAAC,CAAA;AAEjF,eAAO,MAAM,yBAAyB,6DAA8D,CAAA;AAEpG,MAAM,MAAM,wBAAwB,GAAG,CAAC,OAAO,yBAAyB,CAAC,CAAC,MAAM,CAAC,CAAA;AAOjF,wBAAgB,+BAA+B,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,UAQtF;AAED,wBAAgB,mCAAmC,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,UAQ1F;AAED,wBAAgB,+BAA+B,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,UAMtF;AAED,wBAAgB,mCAAmC,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,UAQ1F;AAED,wBAAsB,uBAAuB,CAC3C,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;;;;GASxC;AAED,wBAAsB,uBAAuB,CAC3C,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;;;;GASxC;AAED,wBAAsB,yBAAyB,CAC7C,CAAC,EAAE,OAAO,EACV,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,wBAAwB,EAChC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,6DAiBxC;AAED,wBAAsB,yBAAyB,CAC7C,CAAC,EAAE,OAAO,EACV,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,wBAAwB,EAChC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,6DAiBxC;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,UAOtE;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,UAOtE"}
@@ -2,6 +2,9 @@ import { createPublicCapabilityToken, extractPublicCapabilityToken, serializePub
2
2
  export const CHECKOUT_CAPABILITY_COOKIE = "voyant_checkout_session";
3
3
  export const CHECKOUT_CAPABILITY_HEADER = "X-Voyant-Checkout-Capability";
4
4
  export const CHECKOUT_CAPABILITY_SCOPE = "booking-checkout-session";
5
+ export const GUEST_BOOKING_ACCESS_COOKIE = "voyant_guest_booking";
6
+ export const GUEST_BOOKING_ACCESS_HEADER = "X-Voyant-Guest-Booking-Access";
7
+ export const GUEST_BOOKING_ACCESS_SCOPE = "guest-booking";
5
8
  export const checkoutCapabilityActions = [
6
9
  "session:read",
7
10
  "session:update",
@@ -10,8 +13,11 @@ export const checkoutCapabilityActions = [
10
13
  "payment:read",
11
14
  "payment:start",
12
15
  ];
16
+ export const guestBookingAccessActions = ["overview:read", "payment:read", "payment:start"];
13
17
  const DEFAULT_TTL_SECONDS = 30 * 60;
14
18
  const MAX_TTL_SECONDS = 2 * 60 * 60;
19
+ const DEFAULT_GUEST_ACCESS_TTL_SECONDS = 30 * 60;
20
+ const MAX_GUEST_ACCESS_TTL_SECONDS = 2 * 60 * 60;
15
21
  export function resolveCheckoutCapabilitySecret(env) {
16
22
  return (env.VOYANT_CHECKOUT_CAPABILITY_SECRET ??
17
23
  env.CHECKOUT_CAPABILITY_SECRET ??
@@ -27,6 +33,19 @@ export function resolveCheckoutCapabilityTtlSeconds(env) {
27
33
  }
28
34
  return Math.min(Math.floor(parsed), MAX_TTL_SECONDS);
29
35
  }
36
+ export function resolveGuestBookingAccessSecret(env) {
37
+ return (env.VOYANT_GUEST_BOOKING_ACCESS_SECRET ??
38
+ env.GUEST_BOOKING_ACCESS_SECRET ??
39
+ resolveCheckoutCapabilitySecret(env));
40
+ }
41
+ export function resolveGuestBookingAccessTtlSeconds(env) {
42
+ const raw = env.VOYANT_GUEST_BOOKING_ACCESS_TTL_SECONDS ?? env.GUEST_BOOKING_ACCESS_TTL_SECONDS;
43
+ const parsed = raw ? Number(raw) : DEFAULT_GUEST_ACCESS_TTL_SECONDS;
44
+ if (!Number.isFinite(parsed) || parsed <= 0) {
45
+ return DEFAULT_GUEST_ACCESS_TTL_SECONDS;
46
+ }
47
+ return Math.min(Math.floor(parsed), MAX_GUEST_ACCESS_TTL_SECONDS);
48
+ }
30
49
  export async function issueCheckoutCapability(bookingId, env) {
31
50
  return createPublicCapabilityToken({
32
51
  secret: resolveCheckoutCapabilitySecret(env),
@@ -36,6 +55,15 @@ export async function issueCheckoutCapability(bookingId, env) {
36
55
  ttlSeconds: resolveCheckoutCapabilityTtlSeconds(env),
37
56
  });
38
57
  }
58
+ export async function issueGuestBookingAccess(bookingId, env) {
59
+ return createPublicCapabilityToken({
60
+ secret: resolveGuestBookingAccessSecret(env),
61
+ scope: GUEST_BOOKING_ACCESS_SCOPE,
62
+ subjectId: bookingId,
63
+ actions: [...guestBookingAccessActions],
64
+ ttlSeconds: resolveGuestBookingAccessTtlSeconds(env),
65
+ });
66
+ }
39
67
  export async function requireCheckoutCapability(c, bookingId, action, env) {
40
68
  const token = extractPublicCapabilityToken(c, {
41
69
  headerName: CHECKOUT_CAPABILITY_HEADER,
@@ -51,6 +79,21 @@ export async function requireCheckoutCapability(c, bookingId, action, env) {
51
79
  action,
52
80
  });
53
81
  }
82
+ export async function requireGuestBookingAccess(c, bookingId, action, env) {
83
+ const token = extractPublicCapabilityToken(c, {
84
+ headerName: GUEST_BOOKING_ACCESS_HEADER,
85
+ cookieName: GUEST_BOOKING_ACCESS_COOKIE,
86
+ });
87
+ if (!token) {
88
+ throw new UnauthorizedApiError("Missing guest booking access capability");
89
+ }
90
+ return verifyPublicCapabilityToken(token, {
91
+ secret: resolveGuestBookingAccessSecret(env),
92
+ scope: GUEST_BOOKING_ACCESS_SCOPE,
93
+ subjectId: bookingId,
94
+ action,
95
+ });
96
+ }
54
97
  export function checkoutCapabilityCookie(token, expiresAt) {
55
98
  return serializePublicCapabilityCookie({
56
99
  name: CHECKOUT_CAPABILITY_COOKIE,
@@ -59,3 +102,11 @@ export function checkoutCapabilityCookie(token, expiresAt) {
59
102
  path: "/v1/public",
60
103
  });
61
104
  }
105
+ export function guestBookingAccessCookie(token, expiresAt) {
106
+ return serializePublicCapabilityCookie({
107
+ name: GUEST_BOOKING_ACCESS_COOKIE,
108
+ token,
109
+ expiresAt,
110
+ path: "/v1/public",
111
+ });
112
+ }
package/dist/index.d.ts CHANGED
@@ -30,5 +30,5 @@ export { bookingTravelerBedPreferenceSchema, bookingTravelerDietarySchema, booki
30
30
  export type { Booking, BookingActivity, BookingAllocation, BookingDocument, BookingFulfillment, BookingGroup, BookingGroupMember, BookingItem, BookingItemTraveler, BookingNote, BookingPiiAccessLog, BookingPriceOverride, BookingRedemptionEvent, BookingSessionState, BookingStaffAssignment, BookingSupplierStatus, BookingTraveler, NewBooking, NewBookingActivity, NewBookingAllocation, NewBookingDocument, NewBookingFulfillment, NewBookingGroup, NewBookingGroupMember, NewBookingItem, NewBookingItemTraveler, NewBookingNote, NewBookingPiiAccessLog, NewBookingRedemptionEvent, NewBookingSessionState, NewBookingStaffAssignment, NewBookingSupplierStatus, NewBookingTraveler, } from "./schema.js";
31
31
  export { bookingActivityLog, bookingAllocations, bookingDocuments, bookingFulfillments, bookingGroupKindEnum, bookingGroupMemberRoleEnum, bookingGroupMembers, bookingGroups, bookingItems, bookingItemTravelers, bookingNotes, bookingPiiAccessLog, bookingRedemptionEvents, bookingSessionStates, bookingStaffAssignments, bookingSupplierStatuses, bookings, bookingTravelers, } from "./schema.js";
32
32
  export { type PublicBookingsServiceResolvers, publicBookingsService, resolveSessionPricingSnapshot, } from "./service-public.js";
33
- export { addBookingGroupMemberSchema, bookingGroupKindSchema, bookingGroupListQuerySchema, bookingGroupMemberRoleSchema, bookingListQuerySchema, bookingPriceOverrideSchema, cancelBookingSchema, completeBookingSchema, confirmBookingSchema, convertProductSchema, createBookingSchema, createTravelerWithTravelDetailsSchema, expireBookingSchema, expireStaleBookingsSchema, extendBookingHoldSchema, insertBookingAllocationSchema, insertBookingDocumentSchema, insertBookingFulfillmentSchema, insertBookingGroupSchema, insertBookingItemSchema, insertBookingItemTravelerSchema, insertBookingNoteSchema, insertBookingSchema, insertBookingTravelerDocumentSchema, insertSupplierStatusSchema, insertTravelerSchema, internalBookingOverviewLookupQuerySchema, overrideBookingStatusSchema, pricingPreviewSchema, publicBookingOverviewLookupQuerySchema, publicBookingSessionMutationSchema, publicBookingSessionRepriceItemSchema, publicBookingSessionRepriceResultSchema, publicBookingSessionRepriceSummarySchema, publicBookingSessionStateSchema, publicCreateBookingSessionSchema, publicRepriceBookingSessionSchema, publicUpdateBookingSessionSchema, publicUpsertBookingSessionStateSchema, recordBookingRedemptionSchema, reserveBookingFromTransactionSchema, reserveBookingSchema, sharingGroupsForSlotQuerySchema, startBookingSchema, updateBookingAllocationSchema, updateBookingFulfillmentSchema, updateBookingGroupSchema, updateBookingItemSchema, updateBookingSchema, updateSupplierStatusSchema, updateTravelerSchema, updateTravelerWithTravelDetailsSchema, upsertTravelerTravelDetailsSchema, } from "./validation.js";
33
+ export { addBookingGroupMemberSchema, bookingGroupKindSchema, bookingGroupListQuerySchema, bookingGroupMemberRoleSchema, bookingListQuerySchema, bookingPriceOverrideSchema, cancelBookingSchema, completeBookingSchema, confirmBookingSchema, convertProductSchema, createBookingSchema, createTravelerWithTravelDetailsSchema, expireBookingSchema, expireStaleBookingsSchema, extendBookingHoldSchema, insertBookingAllocationSchema, insertBookingDocumentSchema, insertBookingFulfillmentSchema, insertBookingGroupSchema, insertBookingItemSchema, insertBookingItemTravelerSchema, insertBookingNoteSchema, insertBookingSchema, insertBookingTravelerDocumentSchema, insertSupplierStatusSchema, insertTravelerSchema, internalBookingOverviewLookupQuerySchema, overrideBookingStatusSchema, pricingPreviewSchema, publicBookingOverviewAccessQuerySchema, publicBookingOverviewLookupQuerySchema, publicBookingSessionMutationSchema, publicBookingSessionRepriceItemSchema, publicBookingSessionRepriceResultSchema, publicBookingSessionRepriceSummarySchema, publicBookingSessionStateSchema, publicCreateBookingSessionSchema, publicGuestBookingAccessSchema, publicGuestBookingLookupResponseSchema, publicGuestBookingLookupSchema, publicRepriceBookingSessionSchema, publicUpdateBookingSessionSchema, publicUpsertBookingSessionStateSchema, recordBookingRedemptionSchema, reserveBookingFromTransactionSchema, reserveBookingSchema, sharingGroupsForSlotQuerySchema, startBookingSchema, updateBookingAllocationSchema, updateBookingFulfillmentSchema, updateBookingGroupSchema, updateBookingItemSchema, updateBookingSchema, updateSupplierStatusSchema, updateTravelerSchema, updateTravelerWithTravelDetailsSchema, upsertTravelerTravelDetailsSchema, } from "./validation.js";
34
34
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -44,4 +44,4 @@ export { publicBookingRoutes } from "./routes-public.js";
44
44
  export { bookingTravelerBedPreferenceSchema, bookingTravelerDietarySchema, bookingTravelerIdentitySchema, bookingTravelerTravelDetailInsertSchema, bookingTravelerTravelDetailSelectSchema, bookingTravelerTravelDetails, bookingTravelerTravelDetailUpdateSchema, decryptedBookingTravelerTravelDetailSchema, travelerAllocationMapSchema, } from "./schema/travel-details.js";
45
45
  export { bookingActivityLog, bookingAllocations, bookingDocuments, bookingFulfillments, bookingGroupKindEnum, bookingGroupMemberRoleEnum, bookingGroupMembers, bookingGroups, bookingItems, bookingItemTravelers, bookingNotes, bookingPiiAccessLog, bookingRedemptionEvents, bookingSessionStates, bookingStaffAssignments, bookingSupplierStatuses, bookings, bookingTravelers, } from "./schema.js";
46
46
  export { publicBookingsService, resolveSessionPricingSnapshot, } from "./service-public.js";
47
- export { addBookingGroupMemberSchema, bookingGroupKindSchema, bookingGroupListQuerySchema, bookingGroupMemberRoleSchema, bookingListQuerySchema, bookingPriceOverrideSchema, cancelBookingSchema, completeBookingSchema, confirmBookingSchema, convertProductSchema, createBookingSchema, createTravelerWithTravelDetailsSchema, expireBookingSchema, expireStaleBookingsSchema, extendBookingHoldSchema, insertBookingAllocationSchema, insertBookingDocumentSchema, insertBookingFulfillmentSchema, insertBookingGroupSchema, insertBookingItemSchema, insertBookingItemTravelerSchema, insertBookingNoteSchema, insertBookingSchema, insertBookingTravelerDocumentSchema, insertSupplierStatusSchema, insertTravelerSchema, internalBookingOverviewLookupQuerySchema, overrideBookingStatusSchema, pricingPreviewSchema, publicBookingOverviewLookupQuerySchema, publicBookingSessionMutationSchema, publicBookingSessionRepriceItemSchema, publicBookingSessionRepriceResultSchema, publicBookingSessionRepriceSummarySchema, publicBookingSessionStateSchema, publicCreateBookingSessionSchema, publicRepriceBookingSessionSchema, publicUpdateBookingSessionSchema, publicUpsertBookingSessionStateSchema, recordBookingRedemptionSchema, reserveBookingFromTransactionSchema, reserveBookingSchema, sharingGroupsForSlotQuerySchema, startBookingSchema, updateBookingAllocationSchema, updateBookingFulfillmentSchema, updateBookingGroupSchema, updateBookingItemSchema, updateBookingSchema, updateSupplierStatusSchema, updateTravelerSchema, updateTravelerWithTravelDetailsSchema, upsertTravelerTravelDetailsSchema, } from "./validation.js";
47
+ export { addBookingGroupMemberSchema, bookingGroupKindSchema, bookingGroupListQuerySchema, bookingGroupMemberRoleSchema, bookingListQuerySchema, bookingPriceOverrideSchema, cancelBookingSchema, completeBookingSchema, confirmBookingSchema, convertProductSchema, createBookingSchema, createTravelerWithTravelDetailsSchema, expireBookingSchema, expireStaleBookingsSchema, extendBookingHoldSchema, insertBookingAllocationSchema, insertBookingDocumentSchema, insertBookingFulfillmentSchema, insertBookingGroupSchema, insertBookingItemSchema, insertBookingItemTravelerSchema, insertBookingNoteSchema, insertBookingSchema, insertBookingTravelerDocumentSchema, insertSupplierStatusSchema, insertTravelerSchema, internalBookingOverviewLookupQuerySchema, overrideBookingStatusSchema, pricingPreviewSchema, publicBookingOverviewAccessQuerySchema, publicBookingOverviewLookupQuerySchema, publicBookingSessionMutationSchema, publicBookingSessionRepriceItemSchema, publicBookingSessionRepriceResultSchema, publicBookingSessionRepriceSummarySchema, publicBookingSessionStateSchema, publicCreateBookingSessionSchema, publicGuestBookingAccessSchema, publicGuestBookingLookupResponseSchema, publicGuestBookingLookupSchema, publicRepriceBookingSessionSchema, publicUpdateBookingSessionSchema, publicUpsertBookingSessionStateSchema, recordBookingRedemptionSchema, reserveBookingFromTransactionSchema, reserveBookingSchema, sharingGroupsForSlotQuerySchema, startBookingSchema, updateBookingAllocationSchema, updateBookingFulfillmentSchema, updateBookingGroupSchema, updateBookingItemSchema, updateBookingSchema, updateSupplierStatusSchema, updateTravelerSchema, updateTravelerWithTravelDetailsSchema, upsertTravelerTravelDetailsSchema, } from "./validation.js";
@@ -578,6 +578,101 @@ export declare const publicBookingRoutes: import("hono/hono-base").HonoBase<Env,
578
578
  status: import("hono/utils/http-status").ContentfulStatusCode;
579
579
  };
580
580
  };
581
- }, "/", "/overview">;
581
+ } & {
582
+ "/guest-lookup": {
583
+ $post: {
584
+ input: {};
585
+ output: {
586
+ error: string;
587
+ };
588
+ outputFormat: "json";
589
+ status: 404;
590
+ } | {
591
+ input: {};
592
+ output: {
593
+ error: string;
594
+ };
595
+ outputFormat: "json";
596
+ status: 429;
597
+ } | {
598
+ input: {};
599
+ output: {
600
+ data: {
601
+ overview: {
602
+ bookingId: string;
603
+ bookingNumber: string;
604
+ status: "expired" | "cancelled" | "completed" | "draft" | "on_hold" | "awaiting_payment" | "confirmed" | "in_progress";
605
+ sellCurrency: string;
606
+ sellAmountCents: number | null;
607
+ startDate: string | null;
608
+ endDate: string | null;
609
+ pax: number | null;
610
+ confirmedAt: string | null;
611
+ cancelledAt: string | null;
612
+ completedAt: string | null;
613
+ travelers: {
614
+ id: string;
615
+ participantType: "other" | "traveler" | "occupant";
616
+ firstName: string;
617
+ lastName: string;
618
+ isPrimary: boolean;
619
+ }[];
620
+ items: {
621
+ id: string;
622
+ title: string;
623
+ description: string | null;
624
+ itemType: "service" | "other" | "unit" | "extra" | "fee" | "tax" | "discount" | "adjustment" | "accommodation" | "transport";
625
+ status: "expired" | "cancelled" | "draft" | "on_hold" | "confirmed" | "fulfilled";
626
+ serviceDate: string | null;
627
+ startsAt: string | null;
628
+ endsAt: string | null;
629
+ quantity: number;
630
+ sellCurrency: string;
631
+ unitSellAmountCents: number | null;
632
+ totalSellAmountCents: number | null;
633
+ costCurrency: string | null;
634
+ unitCostAmountCents: number | null;
635
+ totalCostAmountCents: number | null;
636
+ notes: string | null;
637
+ productId: string | null;
638
+ optionId: string | null;
639
+ optionUnitId: string | null;
640
+ pricingCategoryId: string | null;
641
+ travelerLinks: {
642
+ id: string;
643
+ travelerId: string;
644
+ role: string;
645
+ isPrimary: boolean;
646
+ }[];
647
+ }[];
648
+ documents: {
649
+ id: string;
650
+ travelerId: string | null;
651
+ type: "visa" | "other" | "insurance" | "health" | "passport_copy";
652
+ fileName: string;
653
+ fileUrl: string;
654
+ }[];
655
+ fulfillments: {
656
+ id: string;
657
+ bookingItemId: string | null;
658
+ travelerId: string | null;
659
+ fulfillmentType: "other" | "voucher" | "ticket" | "pdf" | "qr_code" | "barcode" | "mobile";
660
+ deliveryChannel: "api" | "email" | "other" | "download" | "wallet";
661
+ status: "failed" | "pending" | "issued" | "reissued" | "revoked";
662
+ artifactUrl: string | null;
663
+ }[];
664
+ };
665
+ guestBookingAccess: {
666
+ token: string;
667
+ expiresAt: string;
668
+ actions: ("payment:read" | "payment:start" | "overview:read")[];
669
+ };
670
+ };
671
+ };
672
+ outputFormat: "json";
673
+ status: import("hono/utils/http-status").ContentfulStatusCode;
674
+ };
675
+ };
676
+ }, "/", "/guest-lookup">;
582
677
  export type PublicBookingRoutes = typeof publicBookingRoutes;
583
678
  //# sourceMappingURL=routes-public.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"routes-public.d.ts","sourceRoot":"","sources":["../src/routes-public.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,KAAK,GAAG,EAA2B,MAAM,oBAAoB,CAAA;AAyFtE,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;+BA0BsC,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBAqJxE,CAAA;AAEJ,MAAM,MAAM,mBAAmB,GAAG,OAAO,mBAAmB,CAAA"}
1
+ {"version":3,"file":"routes-public.d.ts","sourceRoot":"","sources":["../src/routes-public.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,KAAK,GAAG,EAA2B,MAAM,oBAAoB,CAAA;AAyKtE,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;+BA0BsC,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBAsLxE,CAAA;AAEJ,MAAM,MAAM,mBAAmB,GAAG,OAAO,mBAAmB,CAAA"}
@@ -1,10 +1,10 @@
1
1
  import { idempotencyKey, parseJsonBody, parseQuery, UnauthorizedApiError } from "@voyantjs/hono";
2
2
  import { Hono } from "hono";
3
- import { checkoutCapabilityActions, checkoutCapabilityCookie, issueCheckoutCapability, requireCheckoutCapability, } from "./checkout-capability.js";
3
+ import { checkoutCapabilityActions, checkoutCapabilityCookie, guestBookingAccessActions, guestBookingAccessCookie, issueCheckoutCapability, issueGuestBookingAccess, requireCheckoutCapability, requireGuestBookingAccess, } from "./checkout-capability.js";
4
4
  import { BOOKING_ROUTE_RUNTIME_CONTAINER_KEY, buildBookingRouteRuntime, } from "./route-runtime.js";
5
5
  import { getRuntimeEnv, notFound } from "./routes-shared.js";
6
6
  import { publicBookingsService } from "./service-public.js";
7
- import { publicBookingOverviewLookupQuerySchema, publicBookingSessionMutationSchema, publicCreateBookingSessionSchema, publicRepriceBookingSessionSchema, publicUpdateBookingSessionSchema, publicUpsertBookingSessionStateSchema, } from "./validation-public.js";
7
+ import { publicBookingOverviewAccessQuerySchema, publicBookingSessionMutationSchema, publicCreateBookingSessionSchema, publicGuestBookingLookupSchema, publicRepriceBookingSessionSchema, publicUpdateBookingSessionSchema, publicUpsertBookingSessionStateSchema, } from "./validation-public.js";
8
8
  function hasSessionResult(result) {
9
9
  return "session" in result;
10
10
  }
@@ -38,6 +38,16 @@ function attachCheckoutCapability(session, issued) {
38
38
  },
39
39
  };
40
40
  }
41
+ function attachGuestBookingAccess(overview, issued) {
42
+ return {
43
+ overview,
44
+ guestBookingAccess: {
45
+ token: issued.token,
46
+ expiresAt: issued.expiresAt.toISOString(),
47
+ actions: [...guestBookingAccessActions],
48
+ },
49
+ };
50
+ }
41
51
  async function requireSessionCapability(c, action) {
42
52
  const sessionId = c.req.param("sessionId");
43
53
  if (!sessionId) {
@@ -51,6 +61,57 @@ function sessionCapability(action) {
51
61
  await next();
52
62
  };
53
63
  }
64
+ function guestBookingLookupLimit(env) {
65
+ const raw = env.VOYANT_GUEST_BOOKING_LOOKUP_LIMIT_PER_MINUTE ?? env.GUEST_BOOKING_LOOKUP_LIMIT_PER_MINUTE;
66
+ const parsed = raw ? Number(raw) : 10;
67
+ if (!Number.isFinite(parsed) || parsed <= 0) {
68
+ return 10;
69
+ }
70
+ return Math.min(Math.floor(parsed), 100);
71
+ }
72
+ function clientIp(c) {
73
+ return (c.req.header("CF-Connecting-IP") ??
74
+ c.req.header("X-Real-IP") ??
75
+ c.req.header("X-Forwarded-For")?.split(",")[0]?.trim() ??
76
+ "unknown");
77
+ }
78
+ async function enforceGuestBookingLookupRateLimit(c, bookingCode) {
79
+ const kv = c.env?.RATE_LIMIT;
80
+ if (!kv)
81
+ return null;
82
+ const now = new Date();
83
+ const pad = (value) => String(value).padStart(2, "0");
84
+ const windowKey = `${now.getUTCFullYear()}${pad(now.getUTCMonth() + 1)}${pad(now.getUTCDate())}${pad(now.getUTCHours())}${pad(now.getUTCMinutes())}`;
85
+ const key = [
86
+ "lim",
87
+ "guest-booking-lookup",
88
+ clientIp(c),
89
+ bookingCode.trim().toLowerCase(),
90
+ windowKey,
91
+ ].join(":");
92
+ const limit = guestBookingLookupLimit(getRuntimeEnv(c));
93
+ const raw = await kv.get(key);
94
+ let current = 0;
95
+ if (raw) {
96
+ try {
97
+ current = Number(JSON.parse(raw).count || 0);
98
+ }
99
+ catch {
100
+ current = 0;
101
+ }
102
+ }
103
+ const nextCount = current + 1;
104
+ await kv.put(key, JSON.stringify({ count: nextCount }), { expirationTtl: 120 });
105
+ const resetIn = 60000 - (now.getUTCSeconds() * 1000 + now.getUTCMilliseconds());
106
+ c.header("X-RateLimit-Limit", String(limit));
107
+ c.header("X-RateLimit-Remaining", String(Math.max(0, limit - nextCount)));
108
+ c.header("X-RateLimit-Reset", String(Date.now() + resetIn));
109
+ if (nextCount <= limit) {
110
+ return null;
111
+ }
112
+ c.header("Retry-After", "60");
113
+ return c.json({ error: "Too Many Requests" }, 429);
114
+ }
54
115
  function getRouteRuntime(c) {
55
116
  const container = c.var.container;
56
117
  try {
@@ -148,6 +209,38 @@ export const publicBookingRoutes = new Hono()
148
209
  return c.json({ data: result.session });
149
210
  })
150
211
  .get("/overview", async (c) => {
151
- const overview = await publicBookingsService.getOverview(c.get("db"), await parseQuery(c, publicBookingOverviewLookupQuerySchema));
152
- return overview ? c.json({ data: overview }) : notFound(c, "Booking overview not found");
212
+ const query = await parseQuery(c, publicBookingOverviewAccessQuerySchema);
213
+ const overview = query.email
214
+ ? await publicBookingsService.getOverview(c.get("db"), {
215
+ bookingId: query.bookingId,
216
+ bookingNumber: query.bookingNumber,
217
+ bookingCode: query.bookingCode,
218
+ email: query.email,
219
+ })
220
+ : await publicBookingsService.getOverviewByGuestAccess(c.get("db"), query);
221
+ if (!overview) {
222
+ if (!query.email) {
223
+ throw new UnauthorizedApiError("Missing guest booking access capability");
224
+ }
225
+ return notFound(c, "Booking overview not found");
226
+ }
227
+ if (!query.email) {
228
+ await requireGuestBookingAccess(c, overview.bookingId, "overview:read", getRuntimeEnv(c));
229
+ }
230
+ return c.json({ data: overview });
231
+ })
232
+ .post("/guest-lookup", async (c) => {
233
+ const input = await parseJsonBody(c, publicGuestBookingLookupSchema);
234
+ const rateLimited = await enforceGuestBookingLookupRateLimit(c, input.bookingCode);
235
+ if (rateLimited)
236
+ return rateLimited;
237
+ const overview = await publicBookingsService.getOverview(c.get("db"), input);
238
+ if (!overview) {
239
+ return notFound(c, "Booking overview not found");
240
+ }
241
+ const capability = await issueGuestBookingAccess(overview.bookingId, getRuntimeEnv(c));
242
+ c.header("Set-Cookie", guestBookingAccessCookie(capability.token, capability.expiresAt), {
243
+ append: true,
244
+ });
245
+ return c.json({ data: attachGuestBookingAccess(overview, capability) });
153
246
  });
@@ -1,6 +1,6 @@
1
1
  import type { PostgresJsDatabase } from "drizzle-orm/postgres-js";
2
2
  import type { ResolveBookingBillingPerson, ResolveBookingTravelerPerson } from "./route-runtime.js";
3
- import type { InternalBookingOverviewLookupQuery, PublicBookingOverviewLookupQuery, PublicBookingSessionMutationInput, PublicBookingSessionRepriceInput, PublicCreateBookingSessionInput, PublicUpdateBookingSessionInput, PublicUpsertBookingSessionStateInput } from "./validation-public.js";
3
+ import type { InternalBookingOverviewLookupQuery, PublicBookingOverviewAccessQuery, PublicBookingOverviewLookupQuery, PublicBookingSessionMutationInput, PublicBookingSessionRepriceInput, PublicCreateBookingSessionInput, PublicUpdateBookingSessionInput, PublicUpsertBookingSessionStateInput } from "./validation-public.js";
4
4
  /**
5
5
  * Optional resolver bundle for storefront/public booking flows. When
6
6
  * supplied, billing-contact + traveler payloads are run through the
@@ -761,6 +761,70 @@ export declare const publicBookingsService: {
761
761
  artifactUrl: string | null;
762
762
  }[];
763
763
  } | null>;
764
+ getOverviewByGuestAccess(db: PostgresJsDatabase, query: PublicBookingOverviewAccessQuery): Promise<{
765
+ bookingId: string;
766
+ bookingNumber: string;
767
+ status: "expired" | "cancelled" | "completed" | "draft" | "on_hold" | "awaiting_payment" | "confirmed" | "in_progress";
768
+ sellCurrency: string;
769
+ sellAmountCents: number | null;
770
+ startDate: string | null;
771
+ endDate: string | null;
772
+ pax: number | null;
773
+ confirmedAt: string | null;
774
+ cancelledAt: string | null;
775
+ completedAt: string | null;
776
+ travelers: {
777
+ id: string;
778
+ participantType: "other" | "traveler" | "occupant";
779
+ firstName: string;
780
+ lastName: string;
781
+ isPrimary: boolean;
782
+ }[];
783
+ items: {
784
+ id: string;
785
+ title: string;
786
+ description: string | null;
787
+ itemType: "service" | "other" | "unit" | "extra" | "fee" | "tax" | "discount" | "adjustment" | "accommodation" | "transport";
788
+ status: "expired" | "cancelled" | "draft" | "on_hold" | "confirmed" | "fulfilled";
789
+ serviceDate: string | null;
790
+ startsAt: string | null;
791
+ endsAt: string | null;
792
+ quantity: number;
793
+ sellCurrency: string;
794
+ unitSellAmountCents: number | null;
795
+ totalSellAmountCents: number | null;
796
+ costCurrency: string | null;
797
+ unitCostAmountCents: number | null;
798
+ totalCostAmountCents: number | null;
799
+ notes: string | null;
800
+ productId: string | null;
801
+ optionId: string | null;
802
+ optionUnitId: string | null;
803
+ pricingCategoryId: string | null;
804
+ travelerLinks: {
805
+ id: string;
806
+ travelerId: string;
807
+ role: string;
808
+ isPrimary: boolean;
809
+ }[];
810
+ }[];
811
+ documents: {
812
+ id: string;
813
+ travelerId: string | null;
814
+ type: "visa" | "other" | "insurance" | "health" | "passport_copy";
815
+ fileName: string;
816
+ fileUrl: string;
817
+ }[];
818
+ fulfillments: {
819
+ id: string;
820
+ bookingItemId: string | null;
821
+ travelerId: string | null;
822
+ fulfillmentType: "other" | "voucher" | "ticket" | "pdf" | "qr_code" | "barcode" | "mobile";
823
+ deliveryChannel: "api" | "email" | "other" | "download" | "wallet";
824
+ status: "failed" | "pending" | "issued" | "reissued" | "revoked";
825
+ artifactUrl: string | null;
826
+ }[];
827
+ } | null>;
764
828
  getOverviewByLookup(db: PostgresJsDatabase, query: InternalBookingOverviewLookupQuery): Promise<{
765
829
  bookingId: string;
766
830
  bookingNumber: string;
@@ -1 +1 @@
1
- {"version":3,"file":"service-public.d.ts","sourceRoot":"","sources":["../src/service-public.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service-public.d.ts","sourceRoot":"","sources":["../src/service-public.ts"],"names":[],"mappings":"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"}
@@ -341,7 +341,7 @@ async function buildOverviewSnapshot(db, query) {
341
341
  ]);
342
342
  const email = query.email?.trim().toLowerCase() ?? null;
343
343
  if (email) {
344
- const authorized = participants.some((participant) => participant.email?.toLowerCase() === email);
344
+ const authorized = participants.some((participant) => constantTimeEqualString(participant.email?.trim().toLowerCase() ?? "", email));
345
345
  if (!authorized) {
346
346
  return null;
347
347
  }
@@ -417,6 +417,14 @@ async function buildOverviewSnapshot(db, query) {
417
417
  })),
418
418
  };
419
419
  }
420
+ function constantTimeEqualString(left, right) {
421
+ let result = left.length ^ right.length;
422
+ const length = Math.max(left.length, right.length);
423
+ for (let index = 0; index < length; index += 1) {
424
+ result |= (left.charCodeAt(index) || 0) ^ (right.charCodeAt(index) || 0);
425
+ }
426
+ return result === 0;
427
+ }
420
428
  function buildUnitWarnings(unit, quantity, sessionPax) {
421
429
  const warnings = [];
422
430
  if (!unit) {
@@ -1113,6 +1121,9 @@ export const publicBookingsService = {
1113
1121
  async getOverview(db, query) {
1114
1122
  return buildOverviewSnapshot(db, query);
1115
1123
  },
1124
+ async getOverviewByGuestAccess(db, query) {
1125
+ return buildOverviewSnapshot(db, query);
1126
+ },
1116
1127
  async getOverviewByLookup(db, query) {
1117
1128
  return buildOverviewSnapshot(db, query);
1118
1129
  },
@@ -199,7 +199,19 @@ export declare const publicRepriceBookingSessionSchema: z.ZodObject<{
199
199
  }, z.core.$strip>>;
200
200
  }, z.core.$strip>;
201
201
  export declare const publicBookingOverviewLookupQuerySchema: z.ZodObject<{
202
- bookingNumber: z.ZodString;
202
+ email: z.ZodString;
203
+ bookingId: z.ZodOptional<z.ZodString>;
204
+ bookingNumber: z.ZodOptional<z.ZodString>;
205
+ bookingCode: z.ZodOptional<z.ZodString>;
206
+ }, z.core.$strip>;
207
+ export declare const publicBookingOverviewAccessQuerySchema: z.ZodObject<{
208
+ email: z.ZodOptional<z.ZodString>;
209
+ bookingId: z.ZodOptional<z.ZodString>;
210
+ bookingNumber: z.ZodOptional<z.ZodString>;
211
+ bookingCode: z.ZodOptional<z.ZodString>;
212
+ }, z.core.$strip>;
213
+ export declare const publicGuestBookingLookupSchema: z.ZodObject<{
214
+ bookingCode: z.ZodString;
203
215
  email: z.ZodString;
204
216
  }, z.core.$strip>;
205
217
  export declare const internalBookingOverviewLookupQuerySchema: z.ZodObject<{
@@ -338,6 +350,15 @@ export declare const publicCheckoutCapabilitySchema: z.ZodObject<{
338
350
  "payment:start": "payment:start";
339
351
  }>>;
340
352
  }, z.core.$strip>;
353
+ export declare const publicGuestBookingAccessSchema: z.ZodObject<{
354
+ token: z.ZodString;
355
+ expiresAt: z.ZodString;
356
+ actions: z.ZodArray<z.ZodEnum<{
357
+ "payment:read": "payment:read";
358
+ "payment:start": "payment:start";
359
+ "overview:read": "overview:read";
360
+ }>>;
361
+ }, z.core.$strip>;
341
362
  export declare const publicBookingSessionSchema: z.ZodObject<{
342
363
  sessionId: z.ZodString;
343
364
  bookingNumber: z.ZodString;
@@ -890,13 +911,154 @@ export declare const publicBookingOverviewSchema: z.ZodObject<{
890
911
  artifactUrl: z.ZodNullable<z.ZodString>;
891
912
  }, z.core.$strip>>;
892
913
  }, z.core.$strip>;
914
+ export declare const publicGuestBookingLookupResponseSchema: z.ZodObject<{
915
+ overview: z.ZodObject<{
916
+ bookingId: z.ZodString;
917
+ bookingNumber: z.ZodString;
918
+ status: z.ZodEnum<{
919
+ expired: "expired";
920
+ cancelled: "cancelled";
921
+ completed: "completed";
922
+ draft: "draft";
923
+ on_hold: "on_hold";
924
+ awaiting_payment: "awaiting_payment";
925
+ confirmed: "confirmed";
926
+ in_progress: "in_progress";
927
+ }>;
928
+ sellCurrency: z.ZodString;
929
+ sellAmountCents: z.ZodNullable<z.ZodNumber>;
930
+ startDate: z.ZodNullable<z.ZodString>;
931
+ endDate: z.ZodNullable<z.ZodString>;
932
+ pax: z.ZodNullable<z.ZodNumber>;
933
+ confirmedAt: z.ZodNullable<z.ZodString>;
934
+ cancelledAt: z.ZodNullable<z.ZodString>;
935
+ completedAt: z.ZodNullable<z.ZodString>;
936
+ travelers: z.ZodArray<z.ZodObject<{
937
+ id: z.ZodString;
938
+ participantType: z.ZodEnum<{
939
+ other: "other";
940
+ traveler: "traveler";
941
+ occupant: "occupant";
942
+ }>;
943
+ firstName: z.ZodString;
944
+ lastName: z.ZodString;
945
+ isPrimary: z.ZodBoolean;
946
+ }, z.core.$strip>>;
947
+ items: z.ZodArray<z.ZodObject<{
948
+ id: z.ZodString;
949
+ title: z.ZodString;
950
+ description: z.ZodNullable<z.ZodString>;
951
+ itemType: z.ZodEnum<{
952
+ service: "service";
953
+ other: "other";
954
+ unit: "unit";
955
+ extra: "extra";
956
+ fee: "fee";
957
+ tax: "tax";
958
+ discount: "discount";
959
+ adjustment: "adjustment";
960
+ accommodation: "accommodation";
961
+ transport: "transport";
962
+ }>;
963
+ status: z.ZodEnum<{
964
+ expired: "expired";
965
+ cancelled: "cancelled";
966
+ draft: "draft";
967
+ on_hold: "on_hold";
968
+ confirmed: "confirmed";
969
+ fulfilled: "fulfilled";
970
+ }>;
971
+ serviceDate: z.ZodNullable<z.ZodString>;
972
+ startsAt: z.ZodNullable<z.ZodString>;
973
+ endsAt: z.ZodNullable<z.ZodString>;
974
+ quantity: z.ZodNumber;
975
+ sellCurrency: z.ZodString;
976
+ unitSellAmountCents: z.ZodNullable<z.ZodNumber>;
977
+ totalSellAmountCents: z.ZodNullable<z.ZodNumber>;
978
+ costCurrency: z.ZodNullable<z.ZodString>;
979
+ unitCostAmountCents: z.ZodNullable<z.ZodNumber>;
980
+ totalCostAmountCents: z.ZodNullable<z.ZodNumber>;
981
+ notes: z.ZodNullable<z.ZodString>;
982
+ productId: z.ZodNullable<z.ZodString>;
983
+ optionId: z.ZodNullable<z.ZodString>;
984
+ optionUnitId: z.ZodNullable<z.ZodString>;
985
+ pricingCategoryId: z.ZodNullable<z.ZodString>;
986
+ travelerLinks: z.ZodArray<z.ZodObject<{
987
+ id: z.ZodString;
988
+ travelerId: z.ZodString;
989
+ role: z.ZodEnum<{
990
+ other: "other";
991
+ traveler: "traveler";
992
+ occupant: "occupant";
993
+ beneficiary: "beneficiary";
994
+ }>;
995
+ isPrimary: z.ZodBoolean;
996
+ }, z.core.$strip>>;
997
+ }, z.core.$strip>>;
998
+ documents: z.ZodArray<z.ZodObject<{
999
+ id: z.ZodString;
1000
+ travelerId: z.ZodNullable<z.ZodString>;
1001
+ type: z.ZodEnum<{
1002
+ visa: "visa";
1003
+ other: "other";
1004
+ insurance: "insurance";
1005
+ health: "health";
1006
+ passport_copy: "passport_copy";
1007
+ }>;
1008
+ fileName: z.ZodString;
1009
+ fileUrl: z.ZodString;
1010
+ }, z.core.$strip>>;
1011
+ fulfillments: z.ZodArray<z.ZodObject<{
1012
+ id: z.ZodString;
1013
+ bookingItemId: z.ZodNullable<z.ZodString>;
1014
+ travelerId: z.ZodNullable<z.ZodString>;
1015
+ fulfillmentType: z.ZodEnum<{
1016
+ other: "other";
1017
+ voucher: "voucher";
1018
+ ticket: "ticket";
1019
+ pdf: "pdf";
1020
+ qr_code: "qr_code";
1021
+ barcode: "barcode";
1022
+ mobile: "mobile";
1023
+ }>;
1024
+ deliveryChannel: z.ZodEnum<{
1025
+ api: "api";
1026
+ email: "email";
1027
+ other: "other";
1028
+ download: "download";
1029
+ wallet: "wallet";
1030
+ }>;
1031
+ status: z.ZodEnum<{
1032
+ failed: "failed";
1033
+ pending: "pending";
1034
+ issued: "issued";
1035
+ reissued: "reissued";
1036
+ revoked: "revoked";
1037
+ }>;
1038
+ artifactUrl: z.ZodNullable<z.ZodString>;
1039
+ }, z.core.$strip>>;
1040
+ }, z.core.$strip>;
1041
+ guestBookingAccess: z.ZodObject<{
1042
+ token: z.ZodString;
1043
+ expiresAt: z.ZodString;
1044
+ actions: z.ZodArray<z.ZodEnum<{
1045
+ "payment:read": "payment:read";
1046
+ "payment:start": "payment:start";
1047
+ "overview:read": "overview:read";
1048
+ }>>;
1049
+ }, z.core.$strip>;
1050
+ }, z.core.$strip>;
893
1051
  export type PublicCreateBookingSessionInput = z.infer<typeof publicCreateBookingSessionSchema>;
894
1052
  export type PublicUpdateBookingSessionInput = z.infer<typeof publicUpdateBookingSessionSchema>;
895
1053
  export type PublicBookingSessionMutationInput = z.infer<typeof publicBookingSessionMutationSchema>;
896
1054
  export type PublicCheckoutCapability = z.infer<typeof publicCheckoutCapabilitySchema>;
1055
+ export type PublicGuestBookingAccess = z.infer<typeof publicGuestBookingAccessSchema>;
897
1056
  export type PublicBookingSessionState = z.infer<typeof publicBookingSessionStateSchema>;
898
1057
  export type PublicUpsertBookingSessionStateInput = z.infer<typeof publicUpsertBookingSessionStateSchema>;
899
1058
  export type PublicBookingSessionRepriceInput = z.infer<typeof publicRepriceBookingSessionSchema>;
900
1059
  export type PublicBookingOverviewLookupQuery = z.infer<typeof publicBookingOverviewLookupQuerySchema>;
1060
+ export type PublicBookingOverviewAccessQuery = z.infer<typeof publicBookingOverviewAccessQuerySchema>;
1061
+ export type PublicGuestBookingLookupInput = z.infer<typeof publicGuestBookingLookupSchema>;
1062
+ export type PublicGuestBookingLookupResponse = z.infer<typeof publicGuestBookingLookupResponseSchema>;
901
1063
  export type InternalBookingOverviewLookupQuery = z.infer<typeof internalBookingOverviewLookupQuerySchema>;
902
1064
  //# sourceMappingURL=validation-public.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"validation-public.d.ts","sourceRoot":"","sources":["../src/validation-public.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validation-public.d.ts","sourceRoot":"","sources":["../src/validation-public.ts"],"names":[],"mappings":"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"}
@@ -106,8 +106,29 @@ export const publicRepriceBookingSessionSchema = z.object({
106
106
  applyToSession: z.boolean().default(false),
107
107
  selections: z.array(publicBookingSessionRepriceSelectionSchema).min(1),
108
108
  });
109
- export const publicBookingOverviewLookupQuerySchema = z.object({
110
- bookingNumber: z.string().min(1).max(50),
109
+ const publicBookingOverviewLocatorShape = {
110
+ bookingId: z.string().min(1).max(50).optional(),
111
+ bookingNumber: z.string().min(1).max(50).optional(),
112
+ bookingCode: z.string().min(1).max(50).optional(),
113
+ };
114
+ export const publicBookingOverviewLookupQuerySchema = z
115
+ .object({
116
+ ...publicBookingOverviewLocatorShape,
117
+ email: z.string().email(),
118
+ })
119
+ .refine((value) => Boolean(value.bookingId || value.bookingNumber || value.bookingCode), {
120
+ message: "Provide a bookingId, bookingNumber, or bookingCode",
121
+ });
122
+ export const publicBookingOverviewAccessQuerySchema = z
123
+ .object({
124
+ ...publicBookingOverviewLocatorShape,
125
+ email: z.string().email().optional(),
126
+ })
127
+ .refine((value) => Boolean(value.bookingId || value.bookingNumber || value.bookingCode), {
128
+ message: "Provide a bookingId, bookingNumber, or bookingCode",
129
+ });
130
+ export const publicGuestBookingLookupSchema = z.object({
131
+ bookingCode: z.string().min(1).max(50),
111
132
  email: z.string().email(),
112
133
  });
113
134
  export const internalBookingOverviewLookupQuerySchema = z
@@ -196,6 +217,11 @@ export const publicCheckoutCapabilitySchema = z.object({
196
217
  "payment:start",
197
218
  ])),
198
219
  });
220
+ export const publicGuestBookingAccessSchema = z.object({
221
+ token: z.string().min(1),
222
+ expiresAt: z.string(),
223
+ actions: z.array(z.enum(["overview:read", "payment:read", "payment:start"])),
224
+ });
199
225
  export const publicBookingSessionSchema = z.object({
200
226
  sessionId: z.string(),
201
227
  bookingNumber: z.string(),
@@ -287,3 +313,7 @@ export const publicBookingOverviewSchema = z.object({
287
313
  documents: z.array(publicBookingOverviewDocumentSchema),
288
314
  fulfillments: z.array(publicBookingOverviewFulfillmentSchema),
289
315
  });
316
+ export const publicGuestBookingLookupResponseSchema = z.object({
317
+ overview: publicBookingOverviewSchema,
318
+ guestBookingAccess: publicGuestBookingAccessSchema,
319
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@voyantjs/bookings",
3
- "version": "0.74.1",
3
+ "version": "0.75.0",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "exports": {
@@ -79,15 +79,15 @@
79
79
  "drizzle-orm": "^0.45.2",
80
80
  "hono": "^4.12.10",
81
81
  "zod": "^4.3.6",
82
- "@voyantjs/action-ledger": "0.74.1",
83
- "@voyantjs/core": "0.74.1",
84
- "@voyantjs/db": "0.74.1",
85
- "@voyantjs/hono": "0.74.1",
86
- "@voyantjs/utils": "0.74.1"
82
+ "@voyantjs/action-ledger": "0.75.0",
83
+ "@voyantjs/core": "0.75.0",
84
+ "@voyantjs/db": "0.75.0",
85
+ "@voyantjs/hono": "0.75.0",
86
+ "@voyantjs/utils": "0.75.0"
87
87
  },
88
88
  "devDependencies": {
89
89
  "typescript": "^6.0.2",
90
- "@voyantjs/products": "0.74.1",
90
+ "@voyantjs/products": "0.75.0",
91
91
  "@voyantjs/voyant-typescript-config": "0.1.0"
92
92
  },
93
93
  "files": [