Skip to main content
Use 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 with arga 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-06 or {"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_time selects 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, or agenda.

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 supply native_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.
Known limitations
  • 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.
MCP tools: 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.
See Scenario seeding for saving, provisioning, and resetting fixtures.