Files
GoogleDriveManagement/wiki/Calendars-Access.md
Ross Scroggs ac12adb1f2
Some checks are pending
Build and test GAM / build (false, build, 1, Build Intel Ubuntu Jammy, ubuntu-22.04) (push) Waiting to run
Build and test GAM / build (false, build, 10, Build x86_64 macOS 15, macos-15-intel) (push) Waiting to run
Build and test GAM / build (false, build, 11, Build x86_64 macOS 26, macos-26-intel) (push) Waiting to run
Build and test GAM / build (false, build, 12, Build Arm MacOS 26, macos-26) (push) Waiting to run
Build and test GAM / build (false, build, 13, Build Intel Windows, windows-2025-vs2026) (push) Waiting to run
Build and test GAM / build (false, build, 14, Build Arm Windows, windows-11-arm) (push) Waiting to run
Build and test GAM / build (false, build, 2, Build Intel Ubuntu Noble, ubuntu-24.04) (push) Waiting to run
Build and test GAM / build (false, build, 3, Build Arm Ubuntu Noble, ubuntu-24.04-arm) (push) Waiting to run
Build and test GAM / build (false, build, 4, Build Arm Ubuntu Jammy, ubuntu-22.04-arm) (push) Waiting to run
Build and test GAM / build (false, build, 5, Build Intel StaticX Legacy, ubuntu-22.04, yes) (push) Waiting to run
Build and test GAM / build (false, build, 6, Build Arm StaticX Legacy, ubuntu-22.04-arm, yes) (push) Waiting to run
Build and test GAM / build (false, build, 8, Build Arm MacOS 14, macos-14) (push) Waiting to run
Build and test GAM / build (false, build, 9, Build Arm MacOS 15, macos-15) (push) Waiting to run
Build and test GAM / build (false, test, 15, Test Python 3.10, ubuntu-24.04, 3.10) (push) Waiting to run
Build and test GAM / build (false, test, 16, Test Python 3.11, ubuntu-24.04, 3.11) (push) Waiting to run
Build and test GAM / build (false, test, 17, Test Python 3.12, ubuntu-24.04, 3.12) (push) Waiting to run
Build and test GAM / build (false, test, 18, Test Python 3.13, ubuntu-24.04, 3.13) (push) Waiting to run
Build and test GAM / build (false, test, 19, Test Python 3.15-dev, ubuntu-24.04, 3.15-dev) (push) Waiting to run
Build and test GAM / build (true, test, 20, Test Python 3.14 freethread, ubuntu-24.04, 3.14) (push) Waiting to run
Build and test GAM / publish (push) Blocked by required conditions
CodeQL / Analyze (python) (push) Waiting to run
Push wiki / pushwiki (push) Waiting to run
Update Vault API error handling
2026-06-27 14:26:02 -07:00

5.4 KiB

Calendars - Access

Notes

These commands use Client access for all commands except those that reference user's primary calendars where Service Account access is used. When using Client access on user's secondary calendars, some operations are restricted. In general, you should use the following commands to manage user's calendars access.

Client access works when accessing Resource calendars.

Calendar ACL roles (as seen in Calendar GUI):

  • reader - See all event details
  • writer & editor Make changes to events
  • owner - Make changes to events and manage sharing
  • freebusy & freebusyreader - See only free/busy (hide details)

Added writerwithoutprivateaccess to <CalendarACLRole> in 7.44.03; this will become effective 2026-06-29.

API documentation

Definitions

<CalendarItem> ::= <EmailAddress>
<CalendarList> ::= "<CalendarItem>(,<CalendarItem>)*"
<CalendarEntity> ::= <CalendarList> | <FileSelector> | <CSVkmdSelector> | <CSVDataSelector>
        See: https://github.com/GAM-team/GAM/wiki/Collections-of-Items

<CalendarACLRole> ::=
         editor|freebusy|freebusyreader|owner|reader|writer|writerwithoutprivateaccess|none
<CalendarACLScope> ::=
        <EmailAddress>|user:<EmailAdress>|group:<EmailAddress>|
        domain:<DomainName>|domain|default
<CalendarACLScopeList> ::=
        "<CalendarACLScope>(,<CalendarACLScope>)*"
<CalendarACLScopeEntity>::=
        <CalendarACLScopeList> | <FileSelector> | <CSVkmdSelector> | <CSVDataSelector>

<UniqueID> ::= id:<String>
<UserItem> ::= <EmailAddress>|<UniqueID>|<String>

Manage calendar access

gam calendars <CalendarEntity> add acls|calendaracls <CalendarACLRole> <CalendarACLScopeEntity> [sendnotifications <Boolean>]
gam calendars <CalendarEntity> update acls|calendaracls <CalendarACLRole> <CalendarACLScopeEntity> [sendnotifications <Boolean>]
gam calendars <CalendarEntity> delete acls|calendaracls [<CalendarACLRole>] <CalendarACLScopeEntity>

By default, when you add or update a calendar ACL, notification is sent to the members referenced in the <CalendarACLScopeEntity>. Use sendnotifications false to suppress sending the notification.

Display calendar access

gam calendars <CalendarEntity> info acls|calendaracls <CalendarACLScopeEntity> [formatjson]
gam calendars <CalendarEntity> show acls|calendaracls
        [noselfowner]
        [formatjson]

Option noselfowner suppresses the display of ACLs that reference the calendar itself as its owner.

By default, Gam displays the information as an indented list of keys and values.

  • formatjson - Display the fields in JSON format.
gam calendars <CalendarEntity> print acls|calendaracls [todrive <ToDriveAttribute>*]
        [noselfowner] (addcsvdata <FieldName> <String>)*
        [formatjson [quotechar <Character>]]

Option noselfowner suppresses the display of ACLs that reference the calendar itself as its owner.

Add additional columns of data from the command line to the output

  • addcsvdata <FieldName> <String>

By default, when writing CSV files, Gam uses a quote character of double quote ". The quote character is used to enclose columns that contain the quote character itself, the column delimiter (comma by default) and new-line characters. Any quote characters within the column are doubled. When using the formatjson option, double quotes are used extensively in the data resulting in hard to read/process output. The quotechar <Character> option allows you to choose an alternate quote character, single quote for instance, that makes for readable/processable output. quotechar defaults to gam.cfg/csv_output_quote_char. When uploading CSV files to Google, double quote " should be used.

Old format commands

These commands are backwards compatible with Legacy GAM.

gam calendar <CalendarEntity> add <CalendarACLRole> ([user] <EmailAddress>)|(group <EmailAddress>)|(domain [<DomainName>])|default [sendnotifications <Boolean>]
gam calendar <CalendarEntity> update <CalendarACLRole> ([user] <EmailAddress>)|(group <EmailAddress>)|(domain [<DomainName>])|default [sendnotifications <Boolean>]
gam calendar <CalendarEntity> delete [<CalendarACLRole>] ([user] <EmailAddress>)|(group <EmailAddress>)|(domain [<DomainName>])|default
gam calendar <CalendarEntity> showacl [formatjson]
gam calendar <CalendarEntity> printacl [todrive <ToDriveAttribute>*]
        (addcsvdata <FieldName> <String>)*
        [formatjson [quotechar <Character>]]

By default, when you add or update a calendar ACL, notification is sent to the members referenced in the <CalendarACLScopeEntity>. Use sendnotifications false to suppress sending the notification.

Transfer calendar ownership

You can transfer ownership of secondary calendars from one user to another.

gam <CalendarEntity> transfer ownership <UserItem>

See: https://workspaceupdates.googleblog.com/2026/06/secondary-calendar-management-API.html