PERS SDK - v2.3.26 / Exports / BookingManager
Booking Manager - High-level interface for booking operations
Provides a simplified API for managing bookings (hotel stays, reservations, etc.) Used for tracking user stays and eligibility checks on redemptions.
Example
// Get all bookings
const allBookings = await sdk.bookings.getAll();
// Filter by user
const userBookings = await sdk.bookings.getAll({ userId: 'user-123' });
// Filter by status
const activeBookings = await sdk.bookings.getAll({ status: 'active' });Example
const booking = await sdk.bookings.create({
userId: 'user-123',
locationName: 'Grand Hotel',
checkInDate: '2026-06-01',
checkOutDate: '2026-06-05',
guests: 2
});Example
// Check if user has valid (active or future) booking
const hasBooking = await sdk.bookings.hasValidBooking('user-123');
if (hasBooking) {
// User is eligible for booking-required redemption
}• new BookingManager(apiClient, events?): BookingManager
| Name | Type |
|---|---|
apiClient | PersApiClient |
events? | PersEventEmitter |
managers/booking-manager.ts:57
▸ getAll(options?): Promise<BookingDTO[]>
Get all bookings with optional filters
| Name | Type | Description |
|---|---|---|
options? | BookingQueryOptions | Filter options (userId, businessId, status) |
Promise<BookingDTO[]>
Promise resolving to array of bookings
Example
// All bookings
const bookings = await sdk.bookings.getAll();
// Filter by user
const userBookings = await sdk.bookings.getAll({ userId: 'user-123' });
// Filter by status
const activeBookings = await sdk.bookings.getAll({ status: 'active' });
const futureBookings = await sdk.bookings.getAll({ status: 'future' });
const pastBookings = await sdk.bookings.getAll({ status: 'past' });managers/booking-manager.ts:85
▸ getByUser(userId, status?): Promise<BookingDTO[]>
Get bookings for a specific user
Convenience method for filtering bookings by user ID.
| Name | Type | Description |
|---|---|---|
userId | string | User ID to filter by |
status? | BookingStatus | Optional status filter |
Promise<BookingDTO[]>
Promise resolving to user's bookings
managers/booking-manager.ts:98
▸ getByBusiness(businessId, status?): Promise<BookingDTO[]>
Get bookings for a specific business
Convenience method for filtering bookings by business ID.
| Name | Type | Description |
|---|---|---|
businessId | string | Business ID to filter by |
status? | BookingStatus | Optional status filter |
Promise<BookingDTO[]>
Promise resolving to business's bookings
managers/booking-manager.ts:111
▸ getById(id): Promise<BookingDTO>
Get a single booking by ID
| Name | Type | Description |
|---|---|---|
id | string | Booking UUID |
Promise<BookingDTO>
Promise resolving to booking data
Throws
When booking not found
managers/booking-manager.ts:122
▸ create(data): Promise<BookingDTO>
Create a new booking
Creates a booking for a user at a specific location. Used for tracking hotel stays, reservations, etc. for eligibility checks.
| Name | Type | Description |
|---|---|---|
data | CreateBookingDTO | Booking creation data |
Promise<BookingDTO>
Promise resolving to created booking
Throws
When check-out date is not after check-in date
Example
const booking = await sdk.bookings.create({
userId: 'user-123',
locationName: 'Grand Hotel',
locationType: 'hotel',
checkInDate: '2026-06-01',
checkOutDate: '2026-06-05',
confirmationNumber: 'CONF123',
guests: 2,
notes: 'Ocean view room'
});managers/booking-manager.ts:150
▸ update(id, data): Promise<BookingDTO>
Update an existing booking
| Name | Type | Description |
|---|---|---|
id | string | Booking UUID |
data | UpdateBookingDTO | Booking update data (partial update supported) |
Promise<BookingDTO>
Promise resolving to updated booking
Throws
When booking not found
Throws
When check-out date is not after check-in date
Example
const updated = await sdk.bookings.update('booking-123', {
checkInDate: '2026-06-02',
checkOutDate: '2026-06-07'
});managers/booking-manager.ts:176
▸ delete(id): Promise<{ success: boolean }>
Delete a booking
| Name | Type | Description |
|---|---|---|
id | string | Booking UUID |
Promise<{ success: boolean }>
Promise resolving to success status
Throws
When booking not found
managers/booking-manager.ts:192
▸ hasValidBooking(userId, options?): Promise<boolean>
Check if a user has a valid (active or future) booking
Useful for eligibility checks on redemptions that require a valid booking.
| Name | Type | Description |
|---|---|---|
userId | string | User ID to check |
options? | BookingValidationOptions | Validation options (status filter, business filter) |
Promise<boolean>
Promise resolving to true if user has valid booking
Example
const hasBooking = await sdk.bookings.hasValidBooking('user-123');
if (!hasBooking) {
console.log('User must have an active or upcoming booking');
}
// Check for active booking only
const hasActive = await sdk.bookings.hasValidBooking('user-123', { status: 'active' });
// Check for booking at specific business
const hasHotelBooking = await sdk.bookings.hasValidBooking('user-123', {
businessId: 'hotel-123'
});managers/booking-manager.ts:227
▸ getBookingService(): BookingService
Get the booking service for advanced operations
BookingService instance with full API access