Calendar 🟡 PREVIEW - Scheduling

Calendar event flow

Your personal scheduling assistant

Calendar Interface Screen

Overview

Calendar is your scheduling hub in General Bots Suite. Create events, manage appointments, schedule meetings, and let the AI help you find the perfect time. Calendar syncs with your other apps so you never miss an important date.


Features

Views

ViewDescription
DayHourly breakdown of single day
Week7-day overview
MonthFull month grid
AgendaList of upcoming events

Calendars

CalendarIconUse For
Personal🟢Private appointments
Work🔵Professional meetings
Team🟣Shared team events
Holidays🔴Public holidays

Event Types

TypeIconDescription
Meeting👥Group meetings
Call📞Phone/video calls
Reminder🔔Personal reminders
All-Day📅Full day events
Recurring🔄Repeating events

Keyboard Shortcuts

ShortcutAction
CCreate new event
TGo to today
DDay view
WWeek view
MMonth view
← / →Previous / Next period
DeleteDelete selected event
EnterOpen event details

Scheduling via Chat

Creating an Event

Checking Your Schedule

Finding Available Time

Rescheduling Events

Setting Reminders


API Endpoints

EndpointMethodDescription
/api/calendar/eventsGETList events
/api/calendar/eventsPOSTCreate event
/api/calendar/events/:idGETGet event details
/api/calendar/events/:idPATCHUpdate event
/api/calendar/events/:idDELETEDelete event
/api/calendar/availabilityGETCheck free/busy

Query Parameters

ParameterValuesDefault
startISO dateToday
endISO date+30 days
calendarCalendar nameAll
viewday, week, monthmonth

Create Event Request

{
    "title": "Team Meeting",
    "start": "2025-05-16T14:00:00Z",
    "end": "2025-05-16T15:00:00Z",
    "calendar": "work",
    "attendees": ["sarah@company.com"],
    "location": "Conference Room A",
    "reminder": 15,
    "recurrence": null
}

Event Response

{
    "id": "evt-123",
    "title": "Team Meeting",
    "start": "2025-05-16T14:00:00Z",
    "end": "2025-05-16T15:00:00Z",
    "calendar": "work",
    "attendees": [
        {
            "email": "sarah@company.com",
            "status": "accepted"
        }
    ],
    "location": "Conference Room A",
    "reminder": 15,
    "created": "2025-05-15T10:30:00Z"
}

Syncing with a Calendar Client (CalDAV)

Calendar clients that speak CalDAV (Thunderbird, Apple Calendar, DAVx5 on Android) can read and write the calendars of a bot:

SettingValue
Server URLhttps://<host>/.well-known/caldav (redirects to /caldav)
UsernameYour account address (the value is not checked against the token)
PasswordA GeneralBots token for your account
AuthenticationBasic

Supported operations: discovery (PROPFIND), event queries by time range and by href (REPORT with calendar-query / calendar-multiget), and reading, writing and deleting individual events (GET, PUT, DELETE on /caldav/calendars/<calendar>/<event>.ics).

Calendar properties such as display name and colour are not editable through the protocol, so PROPPATCH is answered with 403, which calendar clients treat as “use the server’s value”.


Storage and Scope

Every calendar and event row is written inside a tenant scope. The calendars and calendar_events tables each declare three scope columns, and all three are NOT NULL without a default:

ColumnMeaning
org_idOwning organization
bot_idDefault bot of the branch
branch_idBranch derived from the caller’s token

Requests resolve that scope from the Authorization header: the branch comes from the server-minted token claim, with a fallback to the user-to-organization binding; the organization is the branch’s owning tenant, and the bot is the branch’s default bot. Anonymous callers fall back to the global (nil) scope.

All four writers — the desktop save form, the REST API, BOOK / BOOK MEETING and CalDAV — write through that same scope, against a single table definition held in botschema. When a write fails, the caller receives an error rather than a success message: a booking is only confirmed after the row is stored.


Integration with Tasks

Tasks with due dates automatically appear on your calendar. When you complete a task, it’s marked as done on the calendar too.


Troubleshooting

Events Not Syncing

  1. Refresh the calendar
  2. Check internet connection
  3. Verify calendar is enabled in sidebar
  4. Wait a few minutes for sync
  5. In an external client, confirm the server URL is /.well-known/caldav and the password is a GeneralBots token

Can’t Create Events

  1. Verify you have write access to the calendar
  2. Check that start time is before end time
  3. Ensure date is not in the past

Missing Invitations

  1. Check spam/junk folder in email
  2. Verify attendee email addresses
  3. Check notification settings

See Also