Corsair
PluginsCal.com

Cal.com Database Schema

Database entities and querying synced Cal.com data

The Cal plugin syncs scheduling data to your database for fast queries.

New to Corsair? Learn about database operations, data synchronization, and multi-tenancy.

Full Implementation: See the Cal plugin source code.

Synced Entities

  • bookings - Booking records with attendee and time details

Database API

const bookings = await corsair.cal.db.bookings.search({
    data: { status: "upcoming" },
});

Bookings

Schema

{
    uid: string;               // Booking UID
    title: string;
    description?: string;
    start_time: string;        // ISO timestamp
    end_time: string;          // ISO timestamp
    status: string;            // upcoming | past | cancelled | rescheduled
    event_type_id?: number;
    organizer_email: string;
    organizer_name: string;
    attendee_email?: string;
    attendee_name?: string;
    location?: string;
    cancellation_reason?: string;
    reschedule_reason?: string;
    metadata?: Record<string, unknown>;
}

Querying Bookings

Search by status:

const upcoming = await corsair.cal.db.bookings.search({
    data: { status: "upcoming" }, 
});

Search by organizer:

const bookings = await corsair.cal.db.bookings.search({
    data: { organizer_email: "host@example.com" }, 
});

Example: Multi-Tenancy Query

const tenant = corsair.withTenant("user-123");

const bookings = await tenant.cal.db.bookings.search({
    data: { status: "upcoming" }, 
});