Apple Calendar and Reminders¶
The Apple Calendar and Apple Reminders connectors reach the accounts already set up in the Calendar and Reminders apps on your Mac (iCloud, Google, Exchange, or On My Mac). macOS grants the access through its own permission, so there is no sign-in and no OAuth client to register. Both run only in the desktop app on macOS.
Every call goes through the same approval, audit, and undo as the Email and Google Calendar connectors, and each one is recorded on the Audit Log page.
Connecting¶
Calendar and Reminders are connected separately, because macOS keeps a separate permission for each. Connecting one takes two steps.
The first step allows access. macOS shows its permission prompt the first time Backend.AI GO asks, and only when you ask: no connector call, and nothing running in the background, ever brings the prompt up. After you answer, the choice lives in System Settings > Privacy & Security > Calendars (or Reminders), and only that pane can change it. Glance uses the same two permissions, so allowing access for one also allows it for the other.
The second step connects the backend. It needs full access: with write-only Calendar access, or none, connecting is refused with a message naming the pane to change, because the connector reads every item back before it changes or undoes anything. A Mac has one account for these connectors, local.
Disconnecting removes the connector from Backend.AI GO and changes nothing in Calendar or Reminders; the permission stays as you set it. Connections are not yet kept across restarts, so after the app starts again, connect each one again.
What the connectors do¶
Apple Calendar answers the same calendar calls as Google Calendar, chosen by provider: "apple" and the account local. Reminders have their own calls.
| Connector | Operation | Kind | Approval |
|---|---|---|---|
| Apple Calendar | List calendars, list events, get an event | Read | None |
| Apple Calendar | Create an event | Write | None |
| Apple Calendar | Update an event | Destructive | Asked |
| Apple Calendar | Cancel an event | Destructive | Asked |
| Apple Reminders | List lists, list reminders, get a reminder | Read | None |
| Apple Reminders | Create a reminder | Write | None |
| Apple Reminders | Complete a reminder | Write | None |
| Apple Reminders | Update a reminder | Destructive | Asked |
| Apple Reminders | Delete a reminder | Destructive | Asked |
Policies you set for the calendar domain apply to Apple Calendar too: governance tags each call with its domain (domain:calendar, domain:reminders) as well as its connector (connector:apple_calendar, connector:apple_reminders).
Listing events covers a range of at most four years, the most macOS searches at once. Listing reminders returns incomplete reminders unless you ask for completed ones or all of them, earliest due date first, 100 at a time by default and at most 1,000; the result says when more matched. A reminder's due date is a day, or a day and a time, in the Mac's time zone, and its priority runs from 0 (none) through 1 (high), 5 (medium), and 9 (low).
What Apple Calendar leaves alone¶
Apple Calendar does not change an event that involves other people. macOS cannot add invitees or answer an invitation, and it cannot control whether a server calendar such as iCloud or Exchange notifies the other people when an event changes. So creating an event with invitees is refused (use the Google Calendar or Microsoft 365 connector to send invitations), and updating or cancelling an event that has invitees, whether you organized it or were invited, is refused as well. Change those in Calendar. Replying to an invitation is not offered at all.
It also changes single events only. A repeating event is refused by update and cancel, so cancelling removes exactly one event and never a series.
Since nothing the connector runs reaches anyone else, none of its calls waits out a sending window the way an email does.
Undo¶
Each change can be undone from its toast or from the Audit Log, and undo checks the item first: when it was changed since the connector wrote it, undo leaves it as it is and the entry records that the item changed.
| Operation | What undo does |
|---|---|
| Create an event or a reminder | Removes it, if it is unchanged since. |
| Update an event or a reminder | Puts the earlier fields back, if it is unchanged since the update. |
| Complete a reminder | Sets the previous state back, if the reminder was not modified since. |
| Cancel an event | Creates the event again in the same calendar, with its title, time, place, notes, link, and alerts. |
| Delete a reminder | Creates the reminder again in the same list, with its title, notes, due date, priority, alerts, and how often it repeats. |
The last two are best effort. The item that comes back is a new one with a new identifier, and a deleted reminder comes back without subtasks, tags, or images, which macOS does not make available. A repeat on particular weekdays or dates comes back as its plain frequency. Undo also refuses an entry written while a different calendar database was connected.
On a server or another platform¶
The routes exist everywhere, so the REST API is the same on every host. Where there is no Calendar app to reach (a headless server, Linux, Windows, or a macOS build without the connectors), every Apple request answers HTTP 412 with the code CONNECTOR_HOST_UNSUPPORTED, and nothing is connected.
REST API¶
The desktop app's Management API serves the same calls under /api/v1. Reading takes the agent_read scope and everything else agent_write.
| Method | Path | Does |
|---|---|---|
| GET | /connectors/apple/permissions | Each connector's permission and whether it is connected |
| POST | /connectors/apple/activate | Connect {"kind": "calendar"} or {"kind": "reminders"} |
| POST | /connectors/apple/deactivate | Disconnect one |
| POST | /connectors/reminders/list-lists | List the reminders lists |
| POST | /connectors/reminders/list | List reminders (listId, status, limit) |
| POST | /connectors/reminders/get | Get one reminder |
| POST | /connectors/reminders/create | Create a reminder |
| POST | /connectors/reminders/update | Update a reminder (clearDue removes the due date) |
| POST | /connectors/reminders/complete | Complete a reminder |
| POST | /connectors/reminders/delete | Delete a reminder |
Apple Calendar uses the calendar routes under /connectors/calendar/ with "provider": "apple" and "accountId": "local"; primary names the calendar macOS uses for new events. The permission prompt has no route, since it can only appear on the Mac itself.
Activation requires a readable, non-empty event store identifier. If macOS cannot provide it, try connecting again; an existing connection stays intact.