My App
RoomKitFrontend

useBookings

List bookings with filters and cursor pagination

Overview

useBookings fetches a paginated list of bookings matching the given filters. It calls GET {apiUrl}/bookings with query parameters.

import { useBookings } from '@roomkit/react';

Usage

function BookingList({ roomId }: { roomId: string }) {
    const { data, isLoading, error, refetch } = useBookings({
        filters: {
            roomId,
            startsAt: new Date('2026-03-01'),
            endsAt: new Date('2026-03-31'),
        },
        pagination: { limit: 20 },
    });

    if (isLoading) return <div>Loading...</div>;
    if (error) return <div>Error: {error.message}</div>;

    return (
        <ul>
            {data?.items.map((booking) => (
                <li key={booking.id}>
                    {booking.title} — {booking.status}
                </li>
            ))}
            {data?.nextCursor && (
                <button onClick={() => { /* load next page */ }}>
                    Load more
                </button>
            )}
        </ul>
    );
}

UseBookingsOptions

interface UseBookingsOptions {
    filters?: UseBookingsFilters;
    pagination?: Pagination;
    enabled?: boolean;
    onSuccess?: (data: PaginatedResult<Booking>) => void;
    onError?: (error: Error) => void;
}

UseBookingsFilters

interface UseBookingsFilters {
    personId?: string;
    roomId?: string;
    startsAt?: Date;
    endsAt?: Date;
    status?: string;
}
OptionTypeRequiredDescription
filtersUseBookingsFiltersNoFilter criteria
paginationPaginationNo{ cursor?, limit }
enabledbooleanNoSet to false to skip the request
onSuccess(data) => voidNoCalled when the request succeeds
onError(error) => voidNoCalled when the request fails

Return Value

FieldTypeDescription
dataPaginatedResult<Booking> | nullPaginated bookings
isLoadingbooleantrue while the request is in flight
errorError | nullThe error if the request failed
refetch() => Promise<void>Manually re-fetch the data

API Endpoint

GET {apiUrl}/bookings?personId=...&roomId=...&startsAt=...&endsAt=...&status=...&cursor=...&limit=...

On this page