verification
use it
# add to stunt.yaml
services:
gcalendar:
adapter: embedded:gcalendar-style
# then
$ stunt upThe embedded: source extracts this adapter from the binary — no git clone, fully offline.
how to mock the Google Calendar API locally
Install stunt, paste the service block above into stunt.yaml, run stunt up — then point your client at localhost instead of Google Calendar API. It works offline, keeps state across requests and restarts, and every response is synthetic: the route shapes, status codes, pagination, and webhook delivery follow the real Google Calendar API v3 surface — the data is fake, the behavior is real.
backing stores
calendarsevents
api surface (10)
generated from the adapter manifest — exactly what boots, nothing more · covers 23% of the real API's 38 routes (derived from sdk google-api-go-client @ v0.293.0)
10 routes
GET/calendar/v3/users/me/calendarList
GET/calendar/v3/calendars/primary
POST/calendar/v3/calendars/{calendarId}/events/quickAdd
POST/calendar/v3/calendars/{calendarId}/events/import
GET/calendar/v3/calendars/{calendarId}/events
POST/calendar/v3/calendars/{calendarId}/events
GET/calendar/v3/calendars/{calendarId}/events/{eventId}/instances
GET/calendar/v3/calendars/{calendarId}/events/{eventId}
PATCH/calendar/v3/calendars/{calendarId}/events/{eventId}
DELETE/calendar/v3/calendars/{calendarId}/events/{eventId}
SDK-verified behaviors (8)
- ✓Calendars.Get resolves the primary calendar
- ✓CalendarList.List returns the seeded primary entry
- ✓Events.Insert + Events.Get round-trip the event body
- ✓Events.List Q matches summary/description text
- ✓Events.List MaxResults + PageToken walk pages
- ✓Events.Patch updates fields and bumps sequence + etag
- ✓Events.Instances expands an RRULE into per-occurrence events
- ✓Events.Delete then Get -> googleapi 404
Not implemented (4)
- No RRULE MONTHLY/YEARLY frequencies or BY* parts (BYDAY, BYSETPOS)
- No calendars CRUD or calendarList/ACL write endpoints
- No events watch, move, or freebusy.query endpoints
- No colors or users.settings endpoints
Differs from the real API (2)
- Event create without start/end defaults them (now+30m, +90m); real API requires both
- quickAdd uses the text verbatim as the summary with a now+30m slot; real Calendar parses natural-language dates
want more of the Google Calendar API surface? adapters are YAML + Starlark — the authoring guide covers adding routes, fixtures, and state machines. Open an issue for anything big first, or just file a PR — merged routes ship in the next release.