8000 GamUpdates · GAM-team/GAM Wiki · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

GamUpdates

GitHub Action edited this page Jun 16, 2025 · 115 revisions

Update GAM7 to latest version

Automatic update to the latest version on Linux/Mac OS/Google Cloud Shell/Raspberry Pi/ChromeOS:

  • Do not create project or authorizations, default path $HOME/bin
    • bash <(curl -s -S -L https://git.io/gam-install) -l
  • Do not create project or authorizations, specify a path
    • bash <(curl -s -S -L https://git.io/gam-install) -l -d <Path>

By default, a folder, gam7, is created in the default or specified path and the files are downloaded into that folder. Add the -s option to the end of the above commands to suppress creating the gam7 folder; the files are downloaded directly into the default or specified path.

See Downloads-Installs-GAM7 for Windows or other options, including manual installation

7.09.07

Added webviewlink to <FileTreeFieldName> for use in gam <UserTypeEntity> print|show filetree.

7.09.06

Upddated gam print|show shareddrives, gam print|show shareddriveacls, gam print shareddriveorganizers to display the Shared Drives in ascending name order; the API returns them in an unidentifiable order.

7.09.05

Improved output of gam info|show chromeschemas [std] to more accurately display the schemas.

Fixed bugs in gam update chromepolicy that caused invalid error messaages.

7.09.04

Fixed bug in gam whatis <EmailItem> where the check for an invitable user always failed.

Fixed bug in gam print shareddriveorganizers where no organizers were displayed when domain in gam.cfg was blank.

Updated to Python 3.13.5

7.09.03

Updated gam <UserTypeEntity> create focustime|outofoffice ... timerange <Time> <Time> to check that the first <Time> is less than the second Time; previously the event was not created.

For new installs the enforce_expansive_access Boolean variable in gam.cfg now defaults to True. For existing installations, if enforce_expansive_access has not been added to gam.cfg, a default value of True will be used.

7.09.02

Added command gam info chromeschema std <SchemaName> to display a Chrome policy schema in the same format as Legacy GAM.

Improved output of gam show chromeschemas [std] and gam info chromeschema [std] to more accurately display the schemas.

7.09.01

Fixed bug in gam <UserTypeEntity> print diskusage where the ownedByMe column was blank for the top folder.

Fixed bug in gam update chromepolicy where the following error was generated when updating policies with simple numerical values.

ERROR: Missing argument: Expected <value>"

7.09.00

Removed the overly broad service account IAM and Access Management API scope https://www.googleapis.com/auth/cloud-platform from DWD. The gam <UserTypeEntity> check|Update serviceaccount commands issue an error message if this scope is enabled prompting you to update your service account authorization so that the scope can be removed.

GAM commands that need IAM access now use the more limited scope https://www.googleapis.com/auth/iam in a non-DWD manner.

Added enforce_expansive_access Boolean variable to gam.cfg that provides the default value for option enforceexpansiveaccess in all commands that delete or update drive file ACLs/permissions. It's default value is False.

gam <UserTypeEntity> delete permissions
gam <UserTypeEntity> delete drivefileacl
gam <UserTypeEntity> update drivefileacl
gam <UserTypeEntity> copy drivefile
gam <UserTypeEntity> move drivefile
gam <UserTypeEntity> transfer ownership
gam <UserTypeEntity> claim ownership
gam <UserTypeEntity> transfer drive

Fixed bug in gam print shareddriveorganizers that caused a trap when an organizer was a deleted user.

Updated to Python 3.13.4

7.08.02

Updated the defaults in gam print shareddriveorganizers to match the most common use case, not the script.

  • domainlist - The workspace primary domain
  • includetypes - user
  • oneorganizer - True
  • shownoorganizerdrives - True
  • includefileorganizers - False

To select organizers from any domain, use: domainlist ""

These commands produce the same result.

gam redirect csv ./TeamDriveOrganizers.csv print shareddriveorganizers domainlist mydomain.com includetypes user oneorganizer shownoorganizerdrives
gam redirect csv ./TeamDriveOrganizers.csv print shareddriveorganizers

7.08.01

Added option shareddrives (<SharedDriveIDList>|(select <FileSelector>|<CSVFileSelector>)) to gam print shareddriveorganizers that displays organizers for a specific list of Shared Drive IDs.

See: https://github.com/GAM-team/GAM/wiki/Shared-Drives#display-shared-drive-organizers

7.08.00

Added the following command that can be used instead of the GetTeamDriveOrganizers.py script.

gam [] print shareddriveorganizers [todrive *] [adminaccessasadmin] [shareddriveadminquery|query ] [orgunit|org|ou ] [matchname ] [domainlist ] [includetypes ] [oneorganizer []] [shownorganizerdrives [false|true|only]] [includefileorganizers []] [delimiter ]

See: https://github.com/GAM-team/GAM/wiki/Shared-Drives#display-shared-drive-organizers

The command defaults match the script defaults:
* `domainlist` - All domains
* `includetypes` - user,group
* `oneorganizer` - False
* `shownoorganizerdrives` - True
* `includefileorganizers` - False

For example, to get a single user organizer from your domain for all Shared Drives including no organizer drives:

gam redirect csv ./TeamDriveOrganizers.csv print shareddriveorganizers domainlist mydomain.com includetypes user oneorganizer shownoorganizerdrives


### 7.07.17

Added option `oneuserperrow` to `gam print devices` to have each of a
device's users displayed on a separate row with all of the other device fields.

### 7.07.16

Added `chromeostype`, `diskspaceusage` and `faninfo` to `<CrOSFieldName>` for use in `gam info|print cros`.

Fixed bugs/cleaned output in  `gam info|print cros`.

### 7.07.15

Added option `shareddrivesoption included|included_if_account_is_not_a_member|not_included` to `gam create vaultexport`.

The previous option `includeshareddrives <Boolean>` is mapped as follows:
* `includeshareddrives false` - `shareddrivesoption included_if_account_is_not_a_member`
* `includeshareddrives true` - `shareddrivesoption included`

### 7.07.14

Update `gam setup chat` output to include the following that shows the actual Cloud Pub/Sub Topic Name.

You'll use projects//topics/no-topic in Connection settings Cloud Pub/Sub Topic Name


### 7.07.13

Added option `showitemcountonly` to `gam [<UserTypeEntity>] print|show shareddrives` that causes GAM to display the
number of Shared Drives on stdout; no CSV file is written.

### 7.07.12

Fixed bug in `gam print|show oushareddrives` that caused a trap.

Improved getting Shared Drive names from IDs when accessing Shared Drives in external workspaces.

### 7.07.11

Updated `gam calendars <CalendarEntity> update events` and `gam <UserTypeEntity> update events <UserCalendarEntity>`
to handle the following error:

ERROR: 400: badRequest - Bad Request


Updated `gam <UserTypeEntity> move drivefile` to handle the following error:

ERROR: 400: shareOutNotPermitted


### 7.07.10

Updated `gam calendars <CalendarEntity> update events` and `gam <UserTypeEntity> update events <UserCalendarEntity>`
to handle the following error:

ERROR: 400: eventTypeRestriction - Attendees cannot be added to 'fromGmail' event with this visibility setting.


### 7.07.09

Updated `gam calendars <CalendarEntity> update events` and `gam <UserTypeEntity> update events <UserCalendarEntity>`
to handle the following error:

gamlib.glgapi.serviceNotAvailable: Authentication backend unavailable.


### 7.07.08

Fixed bug in `gam <UserTypeEntity> print filelist ... countsonly` that issued an
incorrect warning message like the following when `redirect csv <FileName> multiprocess` was specified.

WARNING: csv_output_row_filter column "^name$" does not match any output columns


### 7.07.07

Fixed bug in `gam report <ActivityApplictionName> ... countsonly eventrowfilter` that issued an
incorrect warning message like the following when `redirect csv <FileName> multiprocess` was specified.

WARNING: csv_output_row_filter column "^doc_title$" does not match any output columns


### 7.07.06

Added option `eventrowfilter` to `gam calendars <CalendarEntity> print events ... countsonly`
and `gam <UserTypeEntity> print events <UserCalendarEntity> ... countsonly` that causes
GAM to apply `config csv_output_row_filter` to the event details rather than the event counts.
This will be useful when `<EventSelectProperty>` and `<EventMatchProperty>` do not have the
capabilty to select the events of interest; e.g., you want to filter based on the event `created` property.

Dropped the extraneous `id` column for `gam calendars <CalendarEntity> print events ... countsonly`
and `gam <UserTypeEntity> print events <UserCalendarEntity> ... countsonly`.

### 7.07.05

Updated `gam <UserTypeEntity> move drivefile` to recognize the API error: `ERROR: 400: shareOutWarning`.

### 7.07.04

Updated `gam create vaultexport ... rooms <ChatSpaceList>` to strip `spaces/` from the Chat Space IDs.

Updated `gam <UserTypeEntity> copy drivefile` to recognize the API error: `ERROR: 400: shareOutWarning`.

### 7.07.03

Updated `gam create vaultexport` to allow allow specifying a list of items in a search method
with `shareddrives|rooms|sitesurl select <FileSelector>|<CSVFileSelector>`.

### 7.07.02

Fixed bug in `redirect csv ... transpose` where a CSV file with multiple rows was not properly transposed.

### 7.07.01

Fixed bug in `gam print|show chromepolicies` that caused a trap. Made additional
updates to handle changes in the Chrome Policy API.

### 7.07.00

As of mid-October 2024, Google deprecated the API that retrieved the Global Address List.

The following commands have been eliminated.

gam info gal gam print gal gam show gal


These commands are a work-around for `gam print gal`.

gam config csv_output_row_filter "includeInGlobalAddressList:boolean:true" redirect csv ./UserGAL.csv print users fields name,gal gam config csv_output_row_filter "includeInGlobalAddressList:boolean:true" batch_size 25 redirect csv ./GroupGAL.csv print groups fields name,gal


### 7.06.14

Updated `create|update adminrole` to allow specifying a collection of privileges
with `privileges select <FileSelector>|<CSVFileSelector>` which makes copying roles much simpler.

Added option `role <RoleItem>` to `gam print|show adminroles` to allow display of information
for a specific role.

### 7.06.13

Updated `gam print group-members ... recursive` and `gam print cigroup-members ... recursive`
to expand groups representing chat spaces.

### 7.06.12

Deleted commands to display Analytic UA properties; the API has been deprecated.

gam print|show analyticuaproperties


### 7.06.11

Improved `gam checkconn`.

Updated `gam print group-members` and `gam print cigroup-members` to recognize members
that are groups representing chat spaces. For now, these groups are not expanded when
`recursive` is specified.

### 7.06.10

Added the following license SKU.

1010020034 - Google Workspace Frontline Plus


### 7.06.09

Added `gemini` and `geminiforworkspace` to `<ActivityApplicationName>` for use in
`gam report <ActivityApplicationName>`.

### 7.06.08

Fixed problem where Yubikeys caused a trap.

### 7.06.07

Updated private key rotation progress messages in `gam create|use|update project`
and `gam upload sakey`.

Updated `gam use project` to display the following error message when the specifed project
already has a service account.

Re-run the command specify a new service account name with: saname '


### 7.06.06

Native support for Windows 11 Arm-based devices.

Renamed some MacOS and Linux binary installer files to align on terminology. Everything is "arm64" now, no "aarch64".

### 7.06.05

Updated code in `gam delete|update chromepolicy` to handle the `policyTargetKey[additionalTargetKeys]`
field in a more general manner for future use.

### 7.06.04

Fixed bug in `gam report <ActivityApplictionName>` where a report with no activities
was not displaying any output.

### 7.06.03

Fixed bug in `gam <UserTypeEntity> print|show drivelastmodification` that caused a trap
when an empty drive was specified.

### 7.06.02

Updated `gam <UserTypeEntity> print|show filecounts ... showlastmodification` to include
file mimetype and path information for the last modified file.

Added simple commands to get information about the last modified file on a drive.
By default, a user's My Drive is processed; optionally, a Shared Drive can be processed.

gam print drivelastmodification [todrive ] [select ] [pathdelimiter ] (addcsvdata ) gam show drivelastmodification [select ] [pathdelimiter ]


### 7.06.01

Updated `gam <UserTypeEntity> create|update drivefileacl ... expiration <Time>`
to handle additional API errors.

Updated to Python 3.13.3.

### 7.06.00

Upgraded to OpenSSL 3.5.0.

Fixed bug in `gam print cigroups` where `createTime`, `updateTime` and `statusTime`
were not converted according to `gam.cfg timezone`.

### 7.05.22

Updated progress messages for  `gam <UserTypeEntity> print filelist|filecounts|filesharecounts|filetree select shareddriveid <SharedDriveID>`
to display the ID of the SharedDrive that is being accessed.

Getting all Drive Files/Folders for user@domain.com on Shared Drive ID: <SharedDriveID Got 33 Drive Files/Folders for user@domain.com on Shared Drive ID: ...


### 7.05.21

Fixed bug in `gam update chromepolicy` that generated an error like the following
when JSON data was read from a file.

ERROR: JSON: {'error': {'code': 400, 'message': 'Invalid enum value: {prefix}{value} for enum type: chrome.policy.api.v1.devicepolicy.AllowNewUsersEnum', 'status': 'INVALID_ARGUMENT'}}


Fixed bug in `gam create chromepolicyimage` that caused a trap.

### 7.05.20

Updated code to validate both `<RegularExpression>` and `<ReplacementString>`
in the following command line options; this will expose errors when the command
is being parsed rather than at run-time.

replaceregex replacedescription replacefilename


### 7.05.19

Added `replaceregex <RegularExpression> <ReplacementString> <Tag> <String>` to the following commands:

gam sendemail subject gam sendemail subject


The `<RegularExpression>` is used as a match pattern against `<String>` to produce `<ReplacementString>`.
Instances of `{Tag}` will be replaced by `<ReplacementString>` in the message subject and body.

Added `replaceregex <RegularExpression> <ReplacementString> <Tag> <UserReplacement>` to the following commands:

gam create user gam update user gam update users gam update users gam draft message gam import message gam insert messageo gam create sendas gam update sendas gam signature gam vacation subject


The `<RegularExpression>` is used as a match pattern against `<UserReplacement>` to produce `<ReplacementString>`.
Instances of `{Tag}` will be replaced by `<ReplacementString>` in the indicated items.

For example, when adding a phone number to a signature, an unformatted number can be formatted:

replaceregex "(\d{3})(\d{3})(\d{4})" "(\1) \2-\3" Phone "9876543210" replaces 9876543210 with (987) 654-3210

replaceregex "(+\d{2})(\d{3})(\d{3})(\d{3})" "\1 \2 \3 \4" Phone "+61987654321" replaces +61421221506 with +61 987 654 321


### 7.05.18

Updated `gam calendars <CalendarEntity> show events` and `gam <UserTypeEntity> show events`
to display the event description according to `show_convert_cr_nl` in `gam.cfg`;
previously, GAM assumed `show_convert_cr_nl = true`.

show_convert_cr_nl = false description: Line 1 Line 2 Line 3

show_convert_cr_nl = true description: Line 1\nLine 2\nLine 3\n


### 7.05.17

Updated commands that delete drive ACLs to handle the following error:

ERROR: 403: cannotDeletePermission - The authenticated user does not have the required access to delete the permission.


### 7.05.16

Added option `transpose [<Boolean>]` to `redirect csv` that causes
GAM to transpose CSV output rows and columns. This will most useful
when a `countsonly` option is used in a `print` or `report` command.

### 7.05.15

Updated `gam <UserTypeEntity> get drivefile` and `gam <UserTypeEntity> create drivefile`
to allow downloading and uploading of Google Apps Scripts.

$ gam user user1@domain.com get drivefile 1ZY-YkS3E0OKipALra_XzfIh9cvxoILSbb8TRdHBFCpyB_mXI_J8FmjHv format json User: user1@domain.com, Download 1 Drive File User: user1@domain.com, Drive File: Test Project, Downloaded to: /Users/gamteam/GamWork/Test Project.json, Type: Google Doc $ gam user user2@domain.com create drivefile localfile "Test Project.json" mimetype application/vnd.google-apps.script+json drivefilename "Test Project" User: user2@domain.com, Drive File: Test Project(1Ok_svw55VTreZ5CzcViJDLfEzVRi-Un8D9eG6I5pIeVyRl2YsmNiy3C_), Created with content from: Test Project.json


### 7.05.14

Added the following License SKU:

ProductId SKUId Display Name 101039 1010390002 Assured Controls Plus


### 7.05.13

Updated license product names to match Google.

### 7.05.12

Fixed bug in `gam update chromepolicy` where `appid` was misinterpreted for `chrome.devices.kiosk` policies
and an error was generated.

ERROR: Chrome Policy Schema: customers/C123abc456/policySchemas/, Does not exist


### 7.05.11

Added the following License SKUs:

ProductId SKUId Display Name Google-Apps 1010070001 Google Workspace for Education Fundamentals Google-Apps 1010070004 Google Workspace for Education Gmail Only 101034 1010340007 Google Workspace for Education Fundamentals - Archived User


### 7.05.10

Updated various chat space commands to handle the following error:

ERROR: 503: serviceNotAvailable - The service is currently unavailable

### 7.05.09

Fixed bug in `gam calendars <CalendarEntity> print events matchfield attendeesstatus required accepted resource_calendar@resource.calendar.google.com`
that caused a trap.

### 7.05.08

Added error message to `gam report` commands to indicate forbidden access;
previously, no error message was displayed.

ERROR: Customer ID: C012abc34, Caller does not have access to the customers reporting data.


### 7.05.07

Fixed bug in `gam calendars <CalendarEntity> info events` and `gam <UserTypeEntity> info events`
where option `showdayofweek` was not recognized.

### 7.05.06

Improve message displayed when a command is issued that requires Google Chat Bot setup;
display a link to the Wiki `Set up a Chat Bot` instructions.

### 7.05.05

Added options `password prompt` and `password uniqueprompt` to `gam create user <EmailAddress>`
and `gam update users <UserTypeEntity>` that prompt you to enter a password from stdin.

See [User Passwords](https://github.com/GAM-team/GAM/wiki/Users#passwords)

### 7.05.04

Updated `gam calendars <CalendarEntity> update events` and `gam <UserTypeEntity> update events`
to handle the following error:

ERROR 400: malformedWorkingLocationEvent - A working location event must have a visibility setting of public.


### 7.05.03

Fixed bug in `gam all users print users issuspended false allfields` that caused a trap.

### 7.05.02

Chat usage reports are now available. Added `chat` to `<CustomerServiceName>` and `<UserServiceName>`
for use in `gam report customer|user`.

* https://workspaceupdates.googleblog.com/2025/02/chat-usage-analytics-updates.html

### 7.05.01

Updated from `v1beta1` to `v1` for `Cloud Identity - Policy`.

* See: https://workspaceupdates.googleblog.com/2025/02/policy-api-general-availability.html

### 7.05.00

Enabled support for Limited Access as described here:
* https://workspaceupdates.googleblog.com/2025/02/updating-access-experience-in-google-drive.html

Note that the rollout may take 15 days.

Added option `inheritedpermissionsdisabled [<Boolean>]` to `<DriveFileAttribute>`; this
attribute can be set on folders.

Added `inheritedpermissionsdisabled` to `<DriveFieldName>`.

Added `capabilities.candisableinheritedpermissions` and `capabilities.canenableinheritedpermissions`
to `<DriveCapabilitiesSubfieldName>`.

Added option `enforceexpansiveaccess [<Boolean>]` to all commands that delete or update
drive file ACLs/permissions.

gam delete permissions gam delete drivefileacl gam update drivefileacl gam copy drivefile gam move drivefile gam transfer ownership gam claim ownership gam transfer drive


### 7.04.05

Added initial support for Meet API v2beta; you must be in the Developer Preview program
for this to be effective.
* https://developers.google.com/meet/api/guides/beta/configuration-beta#auto-artifacts

Added `meet_v2_beta` Boolean variable to `gam.cfg`. When this variable is true,
the following options are added to `<MeetSpaceOptions>` used in `gam <UserTypeEntity> create|update meetspace`.
    moderation <Boolean> |
    chatrestriction hostsonly|norestriction |
    reactionrestriction hostsonly|norestriction |
    presentrestriction hostsonly|norestriction |
    defaultjoinasviewer <Boolean> |
    recording <Boolean> |
    transcription <Boolean> |
    smartnotes <Boolean>

This isn't called beta for nothing, I have found problems and reported them.

### 7.04.04

Updated `gam print group-members|cigroup-members` to include the `email` column
when `fields <MembersFieldNameList>` did not include `email`.

### 7.04.03

Added option `minimal|basic|full` to `gam print cigroup-members`:
* `minimal` - Fields displayed: group, id, role, email
* `basic` - Fields displayed: group, type, id, role, email, expireTime
* `full` - Fields displayed: group, type, id, role, email, createTime, updateTime, expireTime; this is the default

Added option `minimal|basic|full` to `gam show cigroup-members`:
* `minimal` - Fields displayed: role, email
* `basic` - Fields displayed: type, role, email, expireTime
* `full` - Fields displayed: type, role, email, createTime, updateTime, expireTime; this is the default

Upgraded `gam print cigroup-members ... recursive` to display sub-group email addresses rather than IDs.

### 7.04.02

Improved output formatting for the following commands:

gam info peoplecontact gam show peoplecontacts gam info peopleprofile gam show peopleprofile gam info contacts gam show contacts gam show peopleprofile


### 7.04.01

Fixed bug where multiple `querytime<String>` values in a query were not properly processed;
only the last `querytime<String>` was processed.

Command line: query "sync:#querytime1#..#querytime2# status:provisioned" querytime1 -2y querytime2 -40w Query: (sync:#querytime1#..2024-05-09T00:00:00 status:provisioned) Invalid


### 7.04.00

The Classic Sites API no longer functions, the following commands are deprecated:

gam [] create site gam [] update site gam [] info site gam [] print sites gam [] show sites gam [] create siteacls gam [] update siteacls gam [] delete siteacls gam [] info siteacls gam [] show siteacls gam [] print siteacls gam [] print siteactivity


### 7.03.09

Added option `maxmessagesperthread <Number>` to `gam <UserTypeEntity> print|show threads`
that limits the number of messages displayed per thread. The default is 0, there is no limit.
For example, this can be used if you only want to see the first message of each thread.

gam user user@domain.com print|show threads maxmessagesperthread 1


Fixed bug in `gam <UserTypeEntity> print filelist countsonly` where extraneous columns
were displayed.

Fixed bug in `gam <UserTypeEntity> print filelist countsonly showsize` where sizes were
all shown as 0 unless`sizefield size` was specified.

### 7.03.08

Improved pip install.

Yubikey as optional should now be working also. So:

pip install --upgrade gam7

skips Yubikey.

To install with yubikey support (assuming you have installed the necessary swig and libpcsclite-dev packages already) run:

pip install --upgrade gam7[yubikey]


### 7.03.07

Updated `gam create vaultexport` to include `corpus gemini`.

* See: https://workspaceupdates.googleblog.com/2025/02/google-vault-now-supports-gemini.html

### 7.03.06

Added option `rawfields "<BrowserFieldNameList>"` to `gam info|print|show browsers` that allows
specification of complex field lists with selected subfields.

* See: https://github.com/GAM-team/GAM/wiki/Chrome-Browser-Cloud-Management#raw-fields

### 7.03.05

GAM can now be installed by pip: pip install --upgrade gam7

### 7.03.04

Added option `security` to `gam create cigroup` that allows creation of a security group
in a single command.

Updated to Python 3.13.2.

### 7.03.03

Fixed bug in `gam update resoldcustomer` that caused the following error:

ERROR: Got an unexpected keyword argument customerAuthToken


### 7.03.02

Updated `gam <UserTypeEntity> show labels nested` to properly display label nesting
when labels have embedded `/` characters in their names.

### 7.03.01

Updated `gam create project` to retry the following unexpected error:

ERROR: 400 - invalidArgument - Service account gam-project-a1b2c@gam-project-a1b2c.iam.gserviceaccount.com does not exist.


### 7.03.00

Updated `gam create|use project` to discontinue use of the `Identity-Aware Proxy (IAP) OAuth Admin APIs`
that are being deprecated by Google. You will see a set of instructions detailing how to
configure the Oauth Consent screen and create the Oauth client.

Added options `copypermissionroles <DriveFileACLRoleList>` and `copypermissiontypes <DriveFileACLTypeList>`
to `gam <UserTypeEntity> copy drivefile` that provide more control over what permissions are copied
from the source files/folders to the destination files/folders.

### 7.02.11

Updated `gam report <ActivityApplicationName>` to display `id:<actor.profileId>` in the `emailAddress` column
when `actor.email` is empty. This typically occurs when the actor is not in your workspace.

Updated `gam <UserTypeEntity> copy drivefile` to ignore ACLs referencing deleted user/groups.

### 7.02.10

Added option `bydate` to `gam report <ActivityApplicationName> ... countsonly` that provides an additional display option.
* `countsonly` - Display a row per user across all dates with all event counts on one row
* `countsonly bydate` - Display a row per user per date for all dates with any events with all events counts on the row
* `countsonly summary` - Display a row per event with counts for each event summarized across users and dates

### 7.02.09

Added option `clearresources` to `<EventUpdateAttribute>` for use in `gam <UserTypeEntity> update events`
that allows clearing all resources from a user's calendar events. For example, to clear all resources from a user's future events:

gam user user@domain.com update events primary matchfield attendeespattern @resource.calendar.google.com after now clearresources


Added option `resource <ResourceID>` to `<EventAttribute>` for use in `gam <UserTypeEntity> create|update events`
that adds a resource to an event.

Added option `removeresource <ResourceID>` to `<EventUpdateAttribute>` for use in `gam <UserTypeEntity> update events`
that removes a resource from an event.

### 7.02.08

Fixed bug in `gam print|show chromepolicies` that caused a trap when neither
`ou|orgunit <OrgUnitItem>` nor `group <GroupItem>` was specified.

### 7.02.07

Updated `gam delete|update chromepolicy` to display the `<AppID>` or `<PrinterID>` (if specified)
in the command status messages.

### 7.02.06

Added option `<JSONData>` to `gam <UserTypeEntity> create|update form` that allows for
creation/modification of all fields in a form. `<JSONData>` is a list of form update requests.

* See: https://developers.google.com/forms/api/reference/rest/v1/forms/batchUpdate

### 7.02.05

Updated `gam [<UserTypeEntity>] show shareddriveacls ... formatjson` to not display this line
which interferes with the JSON output.

User: user@domain.com, Show N Shared Drives


### 7.02.04

Updated code to eliminate trap caused by bug introduced in 7.02.00 that occurs when an invalid domain or OU is specified.

### 7.02.03

Added option `archive` to `gam <UserTypeEntity> update license <NewSKUID> from <OldSKUID>` that causes GAM
to archive `<UserTypeEntity>` after updating their license to `<NewSKUID>`. This will be used when you want to
archive a user with a non-archivable license. The `<N
8000
ewSKUID>` license is assigned to the user and it then converts
to the equivalent Archived User license when the user is archived.

`<NewSKUID>` must be one of the following SKUs:

Google-Apps-Unlimited - G Suite Business 1010020020 - Google Workspace Enterprise Plus 1010020025 - Google Workspace Business Plus 1010020026 - Google Workspace Enterprise Standard 1010020027 - Google Workspace Business Starter 1010020028 - Google Workspace Business Standard


### 7.02.02

Updated `gam <UserTypeEntity> archive messages <GroupItem>` to retry the following unexpected error
that occurs after many messages have been successfully archived.
`ERROR: 404: notFound - Unable to lookup group`

### 7.02.01

Added options `locked` and `unlocked` to `gam update cigroups` that allow locking/unlocking groups.

* See: https://workspaceupdates.googleblog.com/2024/12/locked-groups-open-beta.html

You'll have to do a `gam oauth create` and enable the following scope to use these options:

[*] 22) Cloud Identity Groups API Beta (Enables group locking/unlocking)


### 7.02.00

Improved the error message displayed for user service account access commands when:
* The API is not enabled
* The user does not exist
* The user exists but is in a OU where the service is disabled

### 7.01.04

Admin role assignments are now in the v1 stable API, use that and remove custom local workaround for the beta. #1724

Remove duplicate local JSON discovery files. #1724

Suppress "UserWarning: Attribute's length must be..." messages on service accounts with long emails. #1725

Added options `internal`, `internaldomains <DomainNameList>` and `external` to these commands
that expand the options for viewing group members:

gam info group gam print groups gam print|show group-members gam info cigroup gam print cigroups gam print|show cigroup-members

By default, when listing group members, GAM does not take the domain of the member into account.
* `internal internaldomains <DomainNameList>` - Display members whose domain is in `<DomainNameList>`
* `external internaldomains <DomainNameList>` - Display members whose domain is not in `<DomainNameList>`
* `internal external internaldomains <DomainNameList>` - Display all members, indicate their category: internal or external
* `internaldomains <DomainNameList>` - Defaults to value of `domain` in `gam.cfg`

Members without an email address, e.g. `customer`, `chromeosdevice` and `cbcmbrowser` are considered internal.

Updated to Python 3.13.1.

### 7.01.03

Fixed bug in `gam update cigroups <GroupEntity> delete|sync|update` where `cbcmbrowser` and `chromeosdevice`
addresses were not properly handled.

### 7.01.02

Added option `positivecountsonly` to `gam <UserTypeEntity> print|show filecomments` that causes
GAM to display the number of comments and replies only for files that have comments.

Added `my_commentable_items` to `<DriveFileQueryShortcut>` that can be used with
`gam <UserTypeEntity> print|show filecomments my_commentable_items` to speed up processing.

Updated code that uses the Domain Shared Contacts API with an HTTPS proxy to avoid a trap:

Traceback (most recent call last): ... File "atom/http.py", line 250, in _prepare_connection AttributeError: module 'ssl' has no attribute 'wrap_socket'


### 7.01.01

Fixed bug in `gam <UserTypeEntity> print|show filetree` where no error message was generated
if a user had Drive disabled.

### 7.01.00

Fixed bug in `gam update chromepolicy` that caused some policy updates to fail.

Added option `showhtml` to `gam <UserTypeEntity> print|show messages` that, when used with `showbody`,
will display message body content of type HTML.

Added support for managing/displaying Chrome profiles.

* See: https://github.com/GAM-team/GAM/wiki/Chrome-Profile-Management

### 7.00.40

Updated `gam <UserTypeEntity> update serviceaccount` to properly set the readonly scope
for `[R] 35)  Meet API (supports readonly)` as it is a special case.

### 7.00.39

Supported MacOS versions are now in the download filename.

### 7.00.38

Fixed logic flaw in `gam print|show policies` where non-matching policies were displayed.

### 7.00.37

Added options `group <RegularExpression>` and `ou|org|orgunit <RegularExpression>`
to `gam print|show policies` that causes GAM to only display policies whose group email address
or OU path match the `<RegularExpression>`.

Updated `gam get|update|delete contactphotos` to use the People API for domain shared contact photos
as Google has deprecated the Domain Shared Contacts API for these commands. Unfortunately,
the People API fails with `gam update|delete contactphotos`.

### 7.00.36

Updated `gam print chromeapps` to correct a trap caused by an API change.

### 7.00.35

Classification labels are now available for Gmail in addition to Drive.

* See: https://workspaceupdates.googleblog.com/2024/11/open-beta-data-classification-labels-gmail.html

The following command synonyms are available, there is no change in functionality:

gam [] info classificationlabels|drivelabels gam [] print classificationlabels|drivelabels gam [] show classificationlabels|drivelabels gam [] create classificationlabelpermission|drivelabelpermission gam [] delete classificationlabelpermission|drivelabelpermission gam [] remove classificationlabelpermission|drivelabelpermission gam [] print classificationlabelpermissions|drivelabelpermission gam [] show classificationlabelpermissions|drivelabelpermission


### 7.00.34

Fixed bug introduced in 7.00.33 in `gam print group-members` that caused a trap.

### 7.00.33

Fixed bug in `gam print group-members ... cachememberinfo` that caused a trap.

### 7.00.32

Updated `gam info policies` to accept different policy specifications:
* `polices/<String>` - A policy name, `policies/ahv4hg7qc24kvaghb7zihwf4riid4`
* `settings/<String>` - A policy setting type, `settings/workspace_marketplace.apps_allowlist`
* `<String>` - A policy setting type, `workspace_marketplace.apps_allowlist`

### 7.00.31

Updated `gam info|print|show policies` to make additional API calls for `settings/workspace_marketplace.apps_allowlist`
to get the application name for the application ID. Use option `noappnames` to suppress these calls.

### 7.00.30

Added command to display selected Cloud Identity policies.

gam info policies [nowarnings] [formatjson]


Removed option `name <CIPolicyName>` from `gam print|show policies`; use `info policies`.

### 7.00.29

Added option `name <CIPolicyName>` to `gam print|show policies` that displays
information about a specific policy.

### 7.00.28

Fixed issue that caused `gam print/show policies` to fail on some group policies.

### 7.00.27

Updated `gam <UserTypeEntity> collect orphans` and all commands that print file paths to recognize
that a file owned by a user that has no parents is not an orphan if `sharedWithMeTime` is set.
This occurs when user A creates a file in a shared folder owned by user B and user B then removes
user A's access to the folder.

Added commands to display Cloud Identity policies.

gam print policies [todrive *] (filter ) [nowarnings] [formatjson [quotechar ]] gam show policies (filter ) [nowarnings] [formatjson]

### 7.00.26

Updated `drive_dir` in `gam.cfg` to allow the value `.` that causes `redirect csv|stdout|stderr <FileName>`
to write `<FileName>` in the current directory without having to prefix `<FileName>` with `./`.

Upgraded to OpenSSL 3.4.0.

### 7.00.25

Updated authentication process for `gam print|show projects`.

### 7.00.24

Updated `gam print|show projects ... showiampolicies 0|1|3` to use non-service account authentication.

### 7.00.23

Updated `gam <UserTypeEntity> create|delete chatmember` to accept external (non-domain) email addresses.

### 7.00.22

Fixed bug in `gam create vaultmatter ... showdetails` that caused a trap.

### 7.00.21

Added `csv_output_header_order` variable to `gam.cfg` that is a list of `<Strings>`
that are used to specify the order of column headers in the CSV file written by a gam print command.
Any headers in the file but not in the list will appear after the headers in the list.

This might be used when the CSV file data is to be processed by another program
that requires that the headers be in a particular order.

### 7.00.20

Fix Windows MSI installer issues on version upgrade. If you are having issues upgrading from a version older than 7.00.20 to this version or newer you may need to do a one time uninstall of GAM7 and then reinstall the new version. No configuration files will be lost during the uninstall / reinstall.

### 7.00.19

Updated `gam update shareddrive <SharedDriveEntity> ou <OrgUnitItem>` to handle the following error
that occurs when an invalid `<SharedDriveEntity>` is specified.

ERROR: 400: invalidArgument - Invalid org membership name 0AJ3b2FTPakToUk9PVAxx.~


Updated `gam print browsers` to properly format the time field `deviceIdentifiersHistory.records.0.firstRecordTime`.

### 7.00.18

Updated `gam create project` to use a default project name of `gam-project-a1b2c` (`a1b2c` is a random string of 5 characters)
instead of `gam-project-abc-123-xyz` to avoid the following warning:

Project: gam-project-abc-123-xyz, Service Account: gam-project-abc-123-xyz@gam-project-abc-123-xyz.iam.gserviceaccount.com, Extracting public certificate init.py:12382: UserWarning: Attribute's length must be >= 1 and <= 64, but it was 70 init.py:12383: UserWarning: Attribute's length must be >= 1 and <= 64, but it was 70 Project: gam-project-abc-123-xyz, Service Account: gam-project-abc-123-xyz@gam-project-abc-123-xyz.iam.gserviceaccount.com, Done generating private key and public certificate


### 7.00.17

Update all user calendar commands to disable falling back to client access if service account
authorization has never been performed.

### 7.00.16

Updated `gam <UserTypeEntity> claim|transfer ownership` to show `Got N Drive Files/Folders that matched query` messages
as files/folders are being identified for processing.

Added option `<JSONData>` to `gam create|update caalevel`.

### 7.00.15

Added options `timestamp [<Boolean>]` and `timeformat <String>` to `gam <UserTypeEntity> create|update drivefile` that allow
adding a timestamp to a created/updated file name.

### 7.00.14

Retry the following unexpected errors in `gam print users`.

ERROR: 400: failedPrecondition - Precondition check failed. ERROR: 500: unknownError - Unknown Error.


### 7.00.13

Version bump in order to confirm MSI installs are operating properly

### 7.00.12

Updated option `showlastmodification` to `gam <UserTypeEntity> print|show filecounts` to handle
the case where all users owning files are suspended. In this case the `lastModifyingUser` column
will show the user's display name as the API doesn't return the user's email address.

Updated support for `Folders with limited access`; this is a work in progress.

### 7.00.11

Updated to Python 3.12.7 where possible.

### 7.00.10

Handled the following error that occurs when `gam create user` is immediateley followed by `gam update user`.

ERROR: 412: conditionNotMet - User creation is not complete.


Updated support for `Folders with limited access`; this is a work in progress.

### 7.00.09

Added initial support for `Folders with limited access`; you must be enrolled in the Beta preview.

Updated `api_call_tries_limit` variable to `gam.cfg` that limits the number of tries
for Google API calls that return an error that indicates a retry should be performed.
The default value is 10 and the range of allowable values is 3-30.

### 7.00.08

Fixed bug in `gam <UserTypeEntity> delete groups` that caused the command to fail when `enable_dasa = true` in `gam.cfg`.

### 7.00.07

Updated `<PeopleContactAttribute>` fields `address,email,phone,url` to allow an empty type field.

address "" formatted "My Address" primary email "" user@gmail.com primary phone "" "510-555-1212" primary url "" "https://www.domain.com" primary


### 7.00.06

Updated `gam <UserTypeEntity> create|update chatspace` to support the new permissions settings
for Chat spaces that are in Developer Preview.

* See: https://developers.google.com/workspace/chat/api/reference/rest/v1/spaces#Space.FIELDS.predefined_permission_settings

### 7.00.05

Fixed bug that caused an error when creating a calendar birthday event.

### 7.00.04

Improved performance of `gam report users orgunit <OrgUnitPath>` when `showorgunit` is not specified.

Added option `birthday <Date>` to `gam <UserTypeEntity> create event <UserCalendarEntity>` that adds
an annual recurring event to the calendar.

Added `birthday` to `<EventType>` for use in various calendar event commands.

### 7.00.03

Updated `gam delete ou` and `gam print admins` to handle the following error:

ERROR: 503: serviceNotAvailable - The service is currently unavailable.


### 7.00.02

Added option `showlastmodification` to `gam <UserTypeEntity> print|show filecounts` that adds
the following fields to the output: `lastModifiedFileId,lastModifiedFileName,lastModifyingUser,lastModifiedTime`;
these are for the most recently modified file.

Added option `keepforever [<Boolean>]` to `gam <UserTypeEntity> update filerevisions` that allows setting
`Keep forever` in revisions.

Upgraded to Python 3.12.6 where possible.

### 7.00.01

Added option `shownames` to `gam <UserTypeEntity> print|show sheet` that causes GAM
to make an additional API call to get and display the sheet file name that is not supplied by the Sheets API.

### 7.00.00

Merged GAM-Team version

### 6.81.02

Updated `gam update group postmaster@domain.com` to handle the error that is generated.

### 6.81.01

Fixed bug in `gam <UserTypeEntity> create meetspace` that caused errors
due to Developer Preview options being included.

### 6.81.00

Added support for groups when defining Chrome policies.

Added support for the Meet API.

* See: https://github.com/GAM-team/GAM/wiki/Users-Meet

Added option `countsonly` to the following course commands that displays
the number of items in a course but not the details of the items.

gam print course-announcements gam print course-materials gam print course-submissions gam print course-topics gam print course-work


### 6.80.21

Updated `gam <UserTypeEntity> archive messages` to handle the following error:

googleapiclient.errors.MediaUploadSizeError: Media larger than: 26214400


### 6.80.20

Updated `gam report usage user` and `gam report users`  to handle the following error:

ERROR: 503: serviceNotAvailable - The service is currently unavailable.


### 6.80.19

Fixed bug in `gam create inboundssoprofile` that caused a trap due to
an unexpected API result.

Updated `gam create inboundssoprofile ... returnnameonly` to return `inProgress` if the API
does not return a complete result.

Upgraded to OpenSSL 3.3.2 where possible.

### 6.80.18

Updated `gam print|show admins` to handle the following error:

ERROR: 503: serviceNotAvailable - The service is currently unavailable.

6.80.17

Updated gam <UserTypeEntity> modify messages to improve error handling.

6.80.16

Fixed bug in gam print vaultcounts that caused a trap.

6.80.15

Fixed bug in gam <UserTypeEntity> print filelist ... countsrowfilter that caused a trap.

Added option continueoninvalidquery [<Boolean>] to gam <UserTypeEntity> print filelist|filecounts that can be used in special cases where a query of the form query "'labels/mRoha85IbwCRl490E00xGLvBsSbkwIiuZ6PRNNEbwxyz' in labels" causes Google to issue an error saying that the query is invalid when, in fact, it is but the user does not have a license that suppprts drive file labels. When continueoninvalidquery` is true, GAM prints an error message and proceeds to the next user rather that terminating as it does now. Of course, if the query really is invalid, you will get the message for every user.

6.80.14

Updated gam <UserTypeEntity> print messages|threads to display all default headers even if no messages are to be displayed. This eliminates error messages of the following form that occurred because only the headers User,threadId,id were displayed.

WARNING: csv_output_row_filter column "^Date$" does not match any output columns

6.80.13

Added my_publishable_items to <DriveFileQueryShortcut> that can be used in gam <UserTypeEntity> print filerevisions to select only those items that can be published to the web: documents, forms, presentations(slides), spreadsheets. With row filtering, this allows identification of files that have been published outside your domain.

6.80.12

Updated gam print vaultcounts to correctly display accounts with errors.

6.80.11

Updated gam <UserTypeEntity> delete|purge|trash|untrash <DriveFileEntity> shortcutandtarget that when <DriveFileEntity is a shortcut, to have GAM validate that the shortcut and target can be successfully processed before proceeding.

6.80.10

Added option followshortcuts [<Boolean>] to gam <UserTypeEntity> print|show fileinfo|filepath <DriveFileEntity> that when true and <DriveFileEntity is a shortcut, causes GAM to display information about the target of the shortcut rather than the shortcut itself.

Added option shortcutandtarget [<Boolean>] to gam <UserTypeEntity> delete|purge|trash|untrash <DriveFileEntity> that when true and <DriveFileEntity is a shortcut, causes GAM to process the shortcut and the target of the shortcut.

6.80.09

Added options allschemas|(schemas|custom|customschemas <SchemaNameList>) to gam print group-members that display any custom schema values for the group members.

6.80.08

Updated gam print|show oushareddrives to display the Shared Drive ID, name and orgUnitPath as individual, separate entities in the output.

6.80.07

Updated dateheaderformat iso in gam <UserTypeEntity> info|print|show messages to include a colon between the hours and minutes in the timezone portion of the string as in all other time strings.

6.80.06

Added option tdreturnidonly [<Boolean>] to <ToDriveAttribute> that when true (the default), causes GAM to display only the uploaded file ID to stdout. This can be captured and used in subsequent commands, tdfileid <DriveFileID> that will update the same file.

6.80.05

Added option individualstudentcoursework copy|delete|maptoall to gam create|update course ... copyfrom that controls how individual student coursework in the copyfrom course is processed.

  • individualstudentcoursework copy - Copy individual student coursework; this is the default. You will get an error if a student is not a member of the course
  • individualstudentcoursework delete - Delete individual student coursework
  • individualstudentcoursework maptoall - Map individual student coursework to all student coursework

For convenience, setting individualstudentassignments sets all of the following to the same value:

  • individualstudentannouncements
  • individualstudentmaterials
  • individualstudentcoursework

6.80.04

Cleaned up progress messages in gam create|update course ... copyfrom.

6.80.03

Added option stripcrsfromname to gam <UserTypeEntity> print driveactivity that causes carriage returns, linefeeds and nulls to be stripped from file names.

6.80.02

Added option addcsvdata <FieldName> <String> to gam <UserTypeEntity> print filecounts that adds additional columns of data to the CSV file output.

Added options individualstudentannouncements copy|delete|maptoall and individualstudentmaterials copy|delete|maptoall to gam create|update course ... copyfrom that controls how individual student announcements and materials in the copyfrom course are processed.

  • individualstudentannouncements copy - Copy individual student announcements; this is the default. You will get an error if a student is not a member of the course
  • individualstudentannouncements delete - Delete individual student announcements
  • individualstudentannouncements maptoall - Map individual student announcements to all student announcements
  • individualstudentmaterials copy - Copy individual student materials; this is the default. You will get an error if a student is not a member of the course
  • individualstudentmaterials delete - Delete individual student materials
  • individualstudentmaterials maptoall - Map individual student materials to all student materials

6.80.01

Added options showstudentsaslist [<Boolean>] and delimiter <Character> to gam print course-work. By default, when course work is assigned to individual students, the student IDs are displayed in multiple indexed columns. Use these options to display the student IDs in a single column as a delimited list.

Updated gam <UserTypeEntity> vacation [<Boolean>] to make <Boolean> optional; this allows changes to other fields without affecting the current responder state.

Updated gam <UserTypeEntity> print|show vacation to avoid a trap when invalid start or end dates have been entered in the Gmail user interface. Invalid dates are represented as 1970-01-01.

6.80.00

Fixed bug in gam <UserTypeEntity> print users ... license ... formatjson that caused a trap.

Upgraded to Python 3.12.5 where possible.

6.79.12

Fixed bug in gam user admin@domain.com print chatspaces asadmin that caused the following error:

Chat Admin: admin@domain.com(asadmin), Print Failed: This method doesn't support non-admin user authentication. Authenticate with an admin account.

6.79.11

Fixed bug in gam <UserItem> print|show chatmembers where the filter <String> was not applied.

6.79.10

Updated commands to handle a trap that occurs when oauth2service.json specifies a YubiKey but the YubiKey is not inserted.

6.79.09

Added option addcsvdata <FieldName> <String> to gam <UserTypeEntity> print teamdriveacls that adds additional columns of data to the CSV file output. This can be used when ACLs for selected users are to be replaced with a different user email address.

6.79.08

Clarified action to perform messages when creating/deleting/updating licenses.

6.79.07

Added option totalonly to gam <UserTypeEntity> print|show groups that displays the user email address and the total number of groups to which it belongs. This is in contrast to countsonly that has to make an additional API call per group per user to get the user's role. When countsonly is specified, an additional column Total is displayed that is the sum of the role counts.

6.79.06

Fixed bug in gam calendars <CalendarEntity> update event ... removeattendee <EmailAddress> that caused a trap if the event had no attendees.

6.79.05

Updated gam <UserTypeEntity> empty drivetrash <SharedDriveEntity> to handle this error that occurs when the user is not a Manager of the Shared Drive.

ERROR: 403: insufficientFilePermissions - The user does not have sufficient permissions for this file.

6.79.04

Added options filename <FileName> and movetoou <OrgUnitItem> to gam check ou <OrgUnitItem> that causes GAM to create a batch file of GAM commands that will move any remaining items in ou <OrgUnitItem> to movetoou <OrgUnitItem>; executing the batch file will then allow ou <OrgUnitItem> to be deleted if desired.

6.79.03

Added column|field assignedToUnknown to gam print|show admins that will be True when the API assignedTo value can not be converted to an email address; it will be False when the email address is determinable.

6.79.02

Updated gam print admins to handle the following error that occurs when a service account admin no longer exists.

ERROR: 404: notFound - Requested entity was not found.

6.79.01

Updated commands that take <RoleItem> as an argument to take the value in any case, e.g., _SEED_ADMIN_ROLE or _seed_admin_role.

6.79.00

Updated code to work around a Cryptography library change that caused service account private key creation to fail.

6.78.00

Added command to check if an OU contains items; this is useful when tryng to delete an OU as it must not contain any items in order to be deleted.

6.77.18

Added option showitemcountonly to gam print domainaliases that causes GAM to display the number of domain aliasess on stdout; no CSV file is written.

6.77.17

Added option showitemcountonly to gam print domains that causes GAM to display the number of domains on stdout; no CSV file is written.

6.77.16

Fixed bug in gam <UserTypeEntity> print filelist that caused a trap.

6.77.15

Updated gam calendars <CalendarEntity> import event icaluid <iCalUID> json <JSONdata> to handle API constraints on recurring events.

6.77.14

Fixed bug in gam calendars <CalendarEntity> import event icaluid <iCalUID> json <JSONdata> that caused an error.

6.77.13

Updated gam <UserTypeEntity> print|show filecounts to reflect that Shared Drives now have a capacity of 500000 files/folders/shortcuts.

6.77.12

Fixed bug in gam <UserTypeEntity> print chatspaces todrive that caused an error.

6.77.11

Added option convertmbtogb to gam report usage customer|user and gam report customer|user that causes GAM to convert parameters expressed in megabytes (name ends with _in_mb) to gigabytes (name converted to _in_gb) with two decimal places.

6.77.10

Fixed bug in gam <UserTypeEntity> get profilephoto where data written to stdout, e.g. > filename, was not properly base64 encoded.

6.77.09

Added option usertokencounts to gam <UserTypeEntity> print|show tokens that causes GAM to display each user and their number of access tokens; there are no details.

6.77.08

Fixed bugs in gam <UserTypeEntity> delete chatmember <ChatSpace> ... group <GroupItem> and gam <UserTypeEntity> sync chatmember <ChatSpace> ... groups <GroupEntity> that caused an error.

6.77.07

Fixed bug in gam <UserTypeEntity> create chatmember <ChatSpace> ... group <GroupItem> that caused an error.

6.77.06

Updated gam update ou <OrgUnitItem> ... parent <OrgUnitItem> to handle the following error that occurs when parent <OrgUnitItem> is the same as or a sub-OU of ou <OrgUnitItem>.

ERROR: 412: conditionNotMet - OrgUnit hierarchy has cycle

6.77.05

Added option onlyusers <UserTypeEntity> to gam <UserTypeEntity> claim ownership <DriveFileEntity> that causes GAM to only claim ownership of files/folders owned by onlyusers <UserTypeEntity>. This option is multually exclusive with skipusers <UserTypeEntity>.

6.77.04

Fixed bug in gam report users ... range <Date> <Date> where an extraneous API call was made if a date was reached where no API data was available.

6.77.03

Thanks to jay, added the following Colab License SKUs:

1010500001 - Colab Pro
1010500002 - Colab Pro+

Thanks to Jay, updated gam print|show admins to properly display addresses of service accounts with admin role assignments.

Added option limitdatechanges <Integer> to gam report users|customers.

If no report is available for the specified date, can an earlier date be used?

  • `limitdatechanges -1' - Back up to earlier dates to find report data; this is the default.
  • `limitdatechanges 0 | nodatechange' - Do not report on an earlier date if no report data is available for the specified date.
  • `limitdatechanges N' - Back up to earlier dates to find report data; do not back up more than N times.

By default, when gam report user user <UserItem> is specified and no report data is available, there is no output. If csv_output_users_audit = true in gam.cfg, then a row with columns email,date will be displayed where date is the earliest date for which report data was requested.

6.77.02

Cleaned up problems with some of the new Chat API asadmin commands. Some remaining problems may require a Google fix.

6.77.01

Thanks to Jay, added column verificationCodesCount to gam <UserTypeEntity> print backupcodes that displays the number of available backup codes in addtion to the codes.

Added option countsonly that displays only the number of available backup codes but not the codes themselves.

Thanks to Jay, added option nokey to gam create project that creates a project with no service account key, oauth2service.json.

6.77.00

Added option individualstudentassignments copy|delete|maptoall to gam create|update course ... copyfrom that controls how individual student assignments in the copyfrom course are processed.

  • individualstudentassignments copy - Copy individual student assignments; this is the default. You will get an error if the student is not a member of the course.
  • individualstudentassignments delete - Delete individual student assignments
  • individualstudentassignments maptoall - Map individual student assignments to all student assignments

Upgraded to Python 3.12.4 where possible.

Added option asadmin to the following Chat commands that allows admin access. These commands are in Developer Preview, your project must have Developer Preview enabled for the Chat API in order to use these commands.

gam <UserItem> delete chatspace asadmin
gam <UserItem> update chatspace asadmin
gam <UserItem> info chatspace asadmin
gam <UserItem> print|show chatspaces asadmin
gam <UserItem> create chatmember asadmin
gam <UserItem> delete|remove chatmember asadmin
gam <UserItem> update|modify chatmember asadmin
gam <UserItem> sync chatmembers asadmin
gam <UserItem> info chatmember asadmin
gam <UserItem> print|show chatmembers|asadmin

Added use_chat_admin_access Boolean variable to gam.cfg.

* When False, GAM uses user access when making all Chat API calls. For calls that support admin access,
    this can be overridden with the asadmin command line option.
* When True, GAM uses admin access for Chat API calls that support admin access; other calls will use user access.
* Default: False

6.76.15

Fixed bug in gam <UserTypeEntity> print|show filesharecounts summary only summaryuser <String> that printed an erroneous row if <UserTypeEntity> specified a single user and <String> matched the user's email address.

6.76.14

Added the following Gemini License SKUs:

1010470004 - Gemini Education
1010470005 - Gemini Education Premium

6.76.13

Updated gam <UserTypeEntity> show fileinfo ... showlabels and gam <UserTypeEntity> print filelist ... showlabels to retry these errors that occur when trying to get the drive labels for a file/folder.

ERROR: 500: unknownError - Unknown Error.
ERROR: 503: serviceNotAvailable - The service is currently unavailable.

Upgraded to OpenSSL 3.3.1 where possible.

6.76.12

Fixed bug in gam <UserTypeEntity> print|show chatspaces that caused the following error:

ERROR: Got 
8000
an unexpected keyword argument orderBy

6.76.11

Thanks to Jay, added gam report vault.

Thanks to Jay, added the following Gemini SKUs:

1010470006 - AI Security
1010470007 - AI Meetings and Messaging

Updated gam <UserTypeEntity> print filelist ... showshareddrivepermissions to display progress messages to stderr as a separate API call must be made for every file/folder on the Shared Drive to get its permissions. As this can take a long time, the progress messages indicate that progress is being made.

6.76.10

Added fromgmail to <EventType> that can be used in gam calendars <CalendarEntity> print|show events ... eventtype fromgmail.

6.76.09

Updated gam update|delete|info adminrole to handle the following error:

ERROR: 400: failedPrecondition - Precondition check failed.

6.76.08

Updated <SchemaNameList> to "<SchemaName>|<SchemaFieldName>(,<SchemaName>|<SchemaFieldName>)*" that allows schemas <SchemaNameList> in gam info user and gam print users to display all fields or selected fields of the specified custom schemas.

6.76.07

Fixed bug where control-C was not recognized when GAM had processed all rows in a CSV file and was Waiting for N running processes to finish before terminating.

6.76.06

Fixed bug in gam <UserTypeEntity> print messages ... positivecountsonly where message counts with value 0 were deiplayed.

Added option addcsvdata <FieldName> <String> to gam <UserTypeEntity> print|messages that adds additional columns of data to the CSV file output.

Added option showusagebytes to gam <UserTypeEntity> print|show drivesettings that displays the following fields in bytes usageBytes,usageInDriveBytes,usageInDriveTrashBytes in addition to the fields in their formatted form with units: usage,usageInDrive,usageInDriveTrash. This will be most useful with print as the rows can be sorted based on the usagexxxBytes columns.

6.76.05

Added options deletefromoldowner, addtonewowner <CalendarAttribute>* and nolistmessages to gam <UserTypeEntity> transfer calendars <UserItem> that allow manipulation of the source and target user's calendar lists.

6.76.04

Added the following fields to <CrOSFieldName>:

autoupdatethrough
extendedsupporteligible
extendedsupportstart
extendedsupportenabled

6.76.03

Added option folderpathonly [<Boolean>] to the following commands that causes GAM to display only the folder names when displaying the path to a file. This folder only path an be used in gam <UserTypeEntity> create drivefolderpath to recreate the folder hierarchy.

gam <UserTypeEntity> info drivefile ... filepath|fullpath
gam <UserTypeEntity> show fileinfo ... filepath|fullpath
gam <UserTypeEntity> print|show filepath
gam <UserTypeEntity> print filelist ... filepath|fullpath

6.76.02

Updated gam update group to handle the following error:

ERROR: 400: invalidArgument - Failed request validation in update settings: WHO_CAN_VIEW_MEMBERSHIP_CANNOT_BE_BROADER_THAN_WHO_CAN_SEE_GROUP

6.76.01

Fixed bug in gam create vaulthold matter <MatterItem> ... corpus calendar that caused a trap.

6.76.00

Updated versions of gam create|use project that use keyword options to also accept the following options to define non-default Service Account key characteristics.

(algorithm KEY_ALG_RSA_1024|KEY_ALG_RSA_2048)|
(localkeysize 1024|2048|4096 [validityhours <Number>])|
(yubikey yubikey_pin yubikey_slot AUTHENTICATION yubikey_serialnumber <String>)

6.75.05

Added option csv [todrive <ToDriveAttribute>*] to gam <UserTypeEntity> archive|delete|modify|spam|trash|untrash messages|threads that causes GAM to display the command results in CSV form.

6.75.04

Added a command to print user counts by OrgUnit. By default, all users in the workspace are counted; you can specify a domain to only count users in that domain.

gam print usercountsbyorgunit [todrive <ToDriveAttribute>*]
        [domain <String>]

Added option uploadattachments [<DriveFileParentAttribute>] to gam <UserTypeEntity> show messages|threads that causes GAM to upload all message attachments to the user's My Drive, the default, or to a specific folder. The existing option attachmentnamepattern <RegularExpression> can be used to select attachments to upload.

6.75.03

Fixed bug in gam batch|tbatch where the line sleep <Integer> in the batch file caused the error:

ERROR: Invalid argument: Expected <gam|commit-batch|print>

6.75.02

Updated gam report <ActivityApplictionName> to retry/handle the following error:

ERROR: 503: serviceNotAvailable - The service is currently unavailable.

6.75.01

Added option admin <EmailAddress> to gam upload sakey.

6.75.00

Updated gam create project to simplify handling the situation where your workspace is configured to disable service account private key uploads.

Added command gam upload sakey to aid in this process.

6.74.02

Fixed bug in gam <UserTypeEntity> print shareddrives ... formatjson that caused a trap.

6.74.01

Updated gam create|update drivefileacl <DriveFileEntity> ... expiration <Time> to handle the following error caused by tryig to add an expiration time to a member of a Shared Drive.

ERROR: 403: expirationDateNotAllowedForSharedDriveMembers - Expiration dates are not allowed for shared drive members.

6.74.00

Added truncate_client_id Boolean variable to gam.cfg. Prior to version 6.74.00, GAM stripped '.apps.googleusercontent.com' from client_id in oauth2.txt and passed the truncated value in API calls. At Jay's suggestion this is no longer performed by default; setting truncate_client_id = true restores the previous behavior.

Do gam oauth delete and gam oauth create to set the untruncated value of client_id in oauth2.txt.

6.73.00

The Google Chat API has been updated so that chat members can now have their role set to manager.

6.72.16

Updated emailaddressList <EmailAddressList> and domainlist|notdomainlist <DomainNameList> in <PermissionMatch> to perform case-insensitive matches as the API is returning mixed case ACL email addresses in some cases.

6.75.15

Updated all commands that display tasks to display the due date in GMT as the time portion is not supported by the API and converting the due date to local time may display the wrong date.

Renamed license SKU 1010400001 from Beyond Corp Enterprise to Chrome Enterprise Premium.

6.72.14

Upgraded to Python 3.12.3 where possible.

6.72.13

Added the following option to <EventMatchProperty> that can be used to select events based on the domains of the attendees.

matchfield attendeesonlydomainlist <DomainNameList>

This returns true if all attendee's email addresses are in a domain in <DomainNameList>; for example this lets you look for events with attendees only in your internal domains.

6.72.12

Added the following options to <EventMatchProperty> that can be used to select events based on the domains of the attendees.

matchfield attendeesdomainlist <DomainNameList>
matchfield attendeesnotdomainlist <DomainNameList>

The first returns true if any attendee's email address is in a domain in <DomainNameList>; for example this lets you look for events with attendees in specific external domains.

The second returns true if any attendee's email address is in a domain other than those in <DomainNameList>; for example this lets you look for events with attendees not in your internal domains.

6.72.11

Added option oneitemperrow to 'gam print vaultholds` to have each of a hold's accounts displayed on a separate row with all of the other hold fields.

6.72.10

Added timeofdayrange=<HH:MM>/<HH:MM> and timeofdayrange!=<HH:MM>/<HH:MM> to <RowValueFilter> that allows CSV row filtering based on time-of-day.

6.72.09

Updated countsonly option of gam <UserTypeEntity> print|show notes to additionally display the total number of notes.

6.72.08

Added option countsonly to gam <UserTypeEntity> print|show notes that displays the number of notes a user owns and the number of notes a user can edit.

6.72.07

Updated commands that send emails to not downshift 'First Last<firstlast@domain.com>' to 'first last<firstlast@domain.com>'.

6.72.06

Updated the following commands to properly handle emailaddress lists containing addresses of the form: 'First Last<firstlast@domain.com>'.

gam <UserTypeEntity> sendemail recipient|to <RecipientEntity> [cc <RecipientEntity>] [bcc <RecipientEntity>] [singlemessage]
gam create|update user ... notify <EmailAddressList>

6.72.05

Cleaned up code for all commands that display Chat objects.

6.72.04

Added commands to display Chat events.

6.72.03

Fixed bug in gam <UserTypeEntity> create chatspace that caused a trap.

6.72.02

Updated gam delete admin <RoleAssignmentId> to handle the following error that occurs when <RoleAssignmentId> references a user that has been deleted.

ERROR: 404: resourceNotFound - Does not exist

6.72.01

Improved commands to display drive file comments.

6.72.00

Added commands to display drive file comments.

6.71.18

Updated <CrOSFieldName> to include cpuinfo and backlightinfo.

6.71.17

Added depth column to output of gam <UserTypeEntity> print diskusage <DriveFileEntity> that can be used to filter the depth of the folders displayed. Depth -1 is the top level folder, depth 0 are its immediate children, depth 2 are the children of depth 1 and so forth.

gam config csv_output_row_filter "depth:count<1" user organizer@domain.com  print diskusage teamdriveid <TeamDriveID>

6.71.16

Updated gam <UserTypeEntity> create|update sendas <EmailAddress> ... replyto <EmailAddress> to allow uppercase letters in sendas <EmailAddress> and replyto <EmailAddress>.

6.71.15

Updated gam create project to handle the following error:

ERROR: 403: permissionDenied - Authentication error: 7; Error Details: User not allowed to access GCP services.

This error occurs when the Google Workspace admin or GCP project manager email address used in the command is in an OU where Google Cloud Platform is not enabled in Apps/Additional Google services.

6.71.14

Added a command to update a Gmail label's settings by specifying it's ID rather than it's name.

gam <UserTypeEntity> update labelid <LabelID> [name <String>]
        [messagelistvisibility hide|show] [labellistvisibility hide|show|showifunread]
        [backgroundcolor <LabelColorHex>] [textcolor <LabelColorHex>]

6.71.13

Updated <UserMultiAttribute>.location.buildingid <String> to allow non-validated building IDs by specifying nv: at the beginning of <String>; e.g., nv:Building X' sets the building ID to Building X`.

6.71.12

Added option showmimetype category <MimeTypeNameList> to gam <UserTypeEntity> print|show filecounts|filelist|filetree

<MimeTypeName> ::= application|audio|font|image|message|model|multipart|text|video
<MimeTypeNameList> ::= "<MimeTypeName>(,<MimeTypeName>)*"

gam user user@domain.com print filelist fields id,name,mimetype showmimetype prefixes audio,video

6.71.11

Added option addcsvdata <FieldName> <String> to gam print cros that adds additional columns of data to the CSV file output. Typically, you would read CSV file of device IDs/serial numbers to generate a CSV file of results and copy data from the input CSV to the outout CSV.

6.71.10

Reverted change made in 6.71.09 to gam <UserTypeEntity> print filelist when showmimetype and filepath|fullpath were both specified. The change improved the performance when showmimetype selected a small number of files; the information for just those files was downloaded and then additional API calls were made to construct the file paths. However, if a large number of files were selected, the additional APIs calls decreased performance.

Added option mimetypeinquery can be used when you expect the query to return a small number of files relative to the total number of files.

6.71.09

Improved the performance of gam <UserTypeEntity> print filelist when showmimetype and filepath|fullpath are both specified.

6.71.08

Added option oneitemperrow to 'gam print admins|adminroles` to have each of a roles privileges displayed on a separate row with all of the other admin/role fields. This produces a CSV file that can be used in subsequent commands without further script processing.

6.71.07

Added command to upload changes to Google Docs.

6.71.06

Added additional error handling to Gmail Client Side Encryption commands.

Added license product Education Endpoint Management

  • ProductID - 101049

Added license SKU Endpoint Education Upgrade

  • ProductID - 101049
  • SKUID - 1010490001 | eeu

6.71.05

Fixed a bug introduced in 6.71.00 that caused a trap in gam <UserTypeEntity> print filelist.

Added option tdfrom <EmailAddress> to <ToDriveAttribute> that causes GAM to use <EmailAddress> as the from address in all emails sent. By default, the from address is the Google Workspace Admin in gam oauth info.

6.71.04