google_calendar in twins and put this configuration under seed_config.google_calendar.
Google Calendar with calendars and events.
Example seed
This is the complete Scenario request body for creating a Scenario. You can also import it witharga test-runner scenarios import --file scenario.json.
Parameters
Top-level fields: seed_config.google_calendar
Calendars: google_calendar.calendars[]
Events: calendars[].events[]
These are the event fields explicitly forwarded by the Scenario seeder. Other fields supported by the Calendar API may require normal provider API calls after seeding or a complete exported snapshot.
Time behavior:
- A timed boundary can be a string such as
2026-11-06T14:00:00Z, or{"dateTime":"2026-11-06T14:00:00Z","timeZone":"UTC"}. - An all-day boundary can be
2026-11-06or{"date":"2026-11-06"}. - When one boundary is omitted, the seeder derives it using
duration_minutes. - When both are omitted, the event uses the reference clock’s current date in the event/calendar timezone.
start_timeselects a time on that date; otherwise timed events start at the reference time.
Nested event objects
organizer and creator accept email, displayName / display_name / name, and self.
Attendee objects are preserved as Google-style objects. Their standard fields include id, email, displayName, organizer, self, resource, optional, responseStatus, comment, additionalGuests, and asyncOperation. responseStatus uses needsAction, accepted, declined, or tentative.
Reminders allow at most five overrides. Each
method is email or popup, and minutes is an integer from 0 to 40320. Set useDefault to false when supplying nonempty overrides.
Conference entry points accept Google fields such as entryPointType, uri, label, pin, accessCode, meetingCode, passcode, and password. Conference metadata can include conferenceId, conferenceSolution, signature, notes, and createRequest. A nonempty conference configuration without entry points generates a twin Meet link.
Sharing grants: calendars[].acl[]
For a public
default scope, the allowed roles are none, freeBusyReader, and reader.
Subscription preferences: calendars[].preferences
Each
notificationSettings.notifications[] entry accepts:
method:email.type:eventCreation,eventChange,eventCancellation,eventResponse, oragenda.
Rooms: google_calendar.rooms[]
Personal task lists: google_calendar.task_lists
Accepts an array of list objects or an object keyed by list ID. Each list accepts:
Personal tasks: task_lists[].tasks[] or google_calendar.side_tasks.<id>
Task and list IDs contain 1-128 letters, digits, underscores, or hyphens. IDs must match native map keys when maps are used. Nested tasks must reference their containing list; active standalone tasks must reference an existing list.
Task preferences: google_calendar.task_preferences
These are personal Calendar side-panel task fixtures.
Snapshot restore
You can alternatively supplynative_snapshot containing a complete exported native state. Reuse the export intact. A legacy runtime_snapshot restore path is also retained.
API coverage and limitations
Twin name:google_calendar
CLI quickstart: Use the Google Workspace CLI with Arga twins
Supports
- Google Calendar API v3 calendars, calendar list, events, ACL rules, settings, colors, and free/busy queries.
- Watch channels and webhook delivery for events, ACL, calendar list, and settings resources.
- Calendar CRUD, event import, quick-add, instances, move operations, and delete flows.
- Calendar and event state starts empty unless seeded or created by the app under test.
- Advanced Google Calendar edge cases outside the modeled v3 resources may be approximated or return structured errors.
- Watch delivery is deterministic and inspectable, which is useful for tests but not identical to every production timing detail.
get_twin_catalog, provision_twins, start_url_validation, get_validation_results.
Google Drive, Docs, and Sheets remain separate provisioning and API surfaces. When you provision any two or more under the same Twin Run ID, the selected twins share one run-scoped Google file state. Metadata, content, permissions, revisions, creates, edits, renames, trash, and deletes stay synchronized. Different Twin Run IDs never share this state.

