./sysutils/gam, Command line tool for Google Workspace admins

[ CVSweb ] [ Homepage ] [ RSS ] [ Required by ] [ Add to tracker ]


Branch: CURRENT, Version: 7.36.01, Package name: gam-7.36.01, Maintainer: pkgsrc-users

GAM is a command line tool for Google Workspace admins to manage domain
and user settings quickly and easily.


Master sites:

Filesize: 1872.246 KB

Version history: (Expand)


CVS history: (Expand)


   2026-03-16 10:04:39 by Stephen Borrill | Files touched by this commit (2) | Package updated
Log message: gam: update to 7.36.01 Changes since 7.34.02: 7.36.01 Fixed bug in gam info|print|show policies where the policyQuery/query field was \ not displayed. Added option noidmapping to gam info|print|show policies to suppress adding the \ policyQuery/groupEmail and policyQuery/orgUnitPath name fields that are mapped \ from the policyQuery/group and policyQuery/orgInit id fields. 7.36.00 Added options filtermultiattrtype and filtermultiattrcustom to gam info user and \ gam print users that support filtering display based on type or customType. 7.35.03 Updated gam <UserTypeEntity> print filelist|filecounts to handle options \ showsize and showsizeunits as independent options. showsize - Display a column Size with a byte count showsizeunits - Display a column SizeUnits with a formatted size with units If you select both options, you can sort multiple rows using the Size column. 7.35.02 Added option showsizeunits to gam gam <UserTypeEntity> print \ filelist|filecounts as an alternative to option showsize. showsize - 31549200951 - This is a byte count showsizeunits - 31.55 GB - This is as shown in the Admin console 7.35.01 The following commands have been updated to not verify the existence of gam.cfg \ credentials files as the WARNING messages about the missing files can be \ confusing to new users setting up GAM. gam checkconn gam oauth|oauth2 gam version 7.35.00 Windows gam-7.wx.yz-x86_64.msi has been replaced with gam-7.wx.yz-x86_64.exe. Windows gam-7.wx.yz-arm64.msi has been replaced with gam-7.wx.yz-arm64.exe. Updated cacerts.pem to avoid to following error in gam checkconn. Checking raw.githubusercontent.com (185.199.110.133) (2)... \ ERROR Certificate verification failed. If you are behind a firewall / proxy server \ that does TLS / SSL inspection you may need to point GAM at your certificate \ authority file by setting cacerts_pem = /path/to/your/certauth.pem in gam.cfg. If you have customized cacerts.pem, update your version with the Operating CA: \ Let's Encrypt values from the GAM default version. 7.34.13 Fixed bug in gam info policies <CIPolicyNameEntity> ... formatjson where \ extraneous line Show Info 1 Policy was displayed. 7.34.12 Fixed build errors that prevented Windows zip files from being created. Added option returnidonly to gam create|update printer that causes GAM to return \ just the ID of the printer. 7.34.11 Updated gam-install.sh script for macOS/Linux to properly config GAM when the \ answer to the following question is No. Can you run a full browser on this machine? (usually Y for macOS, N for Linux if \ you SSH into this machine) 7.34.10 Fixed bug where formatjson quotechar <Character> on the command line did \ not override redirect csv <FileName> multiprocess quotechar \ <Character>. 7.34.09 Updated gam <UserTypeEntity> update photo to delete the user's existing \ photo before performing the update as the API update will succeed but not \ replace a user's existing self-set photo. 7.34.08 Rebuild to avoid the following error: requests/__init__.py:113: RequestsDependencyWarning: urllib3 (2.6.3) or chardet \ (6.0.0.post1)/charset_normalizer (3.4.4) doesn't match a supported version! 7.34.07 Added the following command to create a guest user. See: https://support.google.com/a/answer/16558545 gam create guestuser <EmailAddress> Added the following items to <UserFieldName>: guestaccountinfo - Additional guest-related metadata fields isguestuser - Indicates if the inserted user is a guest 7.34.06 Added option copyfolderpermissions [<Boolean>] to gam \ <UserTypeEntity> copy|move drivefile. When copyfolderpermissions false is specified, no folder permissions are copied; \ this simplifies disabling all folder permission copying. When not specified or copyfolderpermissions [true] is specified, folder \ permissions are copied based on the following options: copymergewithparentfolderpermissions [<Boolean>] copymergedtopfolderpermissions [<Boolean>] copytopfolderpermissions [<Boolean>] copytopfolderiheritedpermissions [<Boolean>] copytopfoldernoniheritedpermissions never|always|syncallfolders|syncupdatedfolders copymergedsubfolderpermissions [<Boolean>] copysubfolderpermissions [<Boolean>] copysubfolderinheritedpermissions [<Boolean>] copysubfoldernoniheritedpermissions never|always|syncallfolders|syncupdatedfolders 7.34.05 Updated gam report <ActivityApplictionName> to perform a reverse \ chronological sort on all rows across multiple users and/or event names; this is \ consistent with the behavior in the Admin console. Use option notimesort to \ suppress this sort. 7.34.04 Updated gam <UserTypeEntity> create drivefileacl <DriveFileEntity> \ user <UserItem> role owner to better handle the case where the current \ owner of a file is suspended. Previously, the command was displayed as an error \ even though the ownership was changed. gam user currentowner@domain.com add drivefileacl <DriveFileID> user \ newowner@domain.com role owner User: currentowner@domain.com, Add 1 Drive File/Folder ACL User: currentowner@domain.com, Drive File/Folder ID: <DriveFileID>, \ Permission ID: newowner@domain.com, Add Failed: Sorry, the items were \ successfully shared but emails could not be sent to newowner@domain.com. Now the command is displayed as a success with a note indicating that the \ ownership change email was not sent. gam user currentowner@domain.com add drivefileacl <DriveFileID> user \ newowner@domain.com role owner User: currentowner@domain.com, Add 1 Drive File/Folder ACL User: currentowner@domain.com, Drive File/Folder ID: <DriveFileID>, \ Permission ID: newowner@domain.com, Added: Sorry, the items were successfully \ shared but emails could not be sent to newowner@domain.com. New Owner id: 10834698115409747890 type: user emailAddress: newowner@domain.com domain: domain.com role: owner permissionDetails: role: writer type: file inherited: True inheritedFrom: Unknown role: owner type: file inherited: False deleted: False pendingOwner: False 7.34.03 Updated to Python 3.14.3 Updated Cryptography to 46.0.5 Updated gam course <CourseID> create student|teacher <EmailAddress> \ error message when <EmailAddress> is not in a trusted domain to remove \ suggestion about creating an invitation. 
   2026-02-16 10:41:37 by Stephen Borrill | Files touched by this commit (2) | Package updated
Log message: gam: update to 7.34.02 Changes from 7.33.02: Updated GAM to prevent errors like the following: ERROR: Unable to find the server at oauth2.googleapis.com ERROR: Unable to find the server at gmail.googleapis.com 7.34.01 Updated gam create|update adminrole to handle the following errors: ERROR: 400: invalid - Invalid Role privileges ERROR: 400: required - Required parameter: [resource.privileges[n].service_id] 7.34.00 Added variable csv_output_header_required to gam.cfg that is a comma separated \ list of <Strings> that are required to be in the list of column headers in \ the CSV file written by a gam print command. This will typically be used to \ specify headers that are required in subsequent commands that process the CSV \ file even if the API didn't return any data for those columns. Updated the following commands to not require the Directory API - Domains scope \ unless the internal or external options are used to request the member category. gam info|print groups gam print|show group-members gam info|print cigroups gam print|show cigroup-members gam <UserTypeEntity> print|show filesharecounts 7.33.03 Fixed bug in gam [<UserTypeEntity>] sendemail ... from \ <EmailAddress> replyto <EmailAddress> where an <EmailAddress> \ of the form Text <user@domain.com> had the Text removed. 
   2026-02-10 12:24:57 by Stephen Borrill | Files touched by this commit (2)
Log message: gam: Update to 7.33.02 Changes since 7.32.06 7.33.02 Added hideinvitationssetting to <UserCalendarSettingsField> used by gam \ <UserTypeEntity> print|show calsettings. 7.33.01 Added option shownopolicy to gam print chromepolicies that will display output \ like the following if no policies apply to the selected OU or group. gam print chromepolicies ou /Test appid chrome:emidddocikgklceeeifefomdnbkldhng \ namespace chrome.users.apps shownopolicy Getting all Chrome Policies that match query (chrome.users.apps.*) for /Test Got 0 Chrome Policies that matched query (chrome.users.apps.*) for /Test... name,orgUnitPath,parentOrgUnitPath,direct,appId noPolicy,/Test,/,False,chrome:emidddocikgklceeeifefomdnbkldhng 7.33.00 Added variable developer_preview_apis to gam.cfg that is a comma separated list \ of APIs requiring a Developer Preview key. Currently, chat is the only API that requires a Developer Preview key; it is \ required for the User Sections commands. See: https://github.com/GAM-team/GAM/wiki/Users-Chat#introduction See: https://github.com/GAM-team/GAM/wiki/Users-Chat#manage-chat-user-sections 7.32.07 Added option includepermissionsforview published to gam <UserTypeEntity> \ print filelist and gam <UserTypeEntity> show fileinfo. From the Drive API \ documentation: Specifies which additional view's permissions to include in the response. Only \ published is supported. 
   2026-01-30 12:32:35 by Stephen Borrill | Files touched by this commit (2) | Package updated
Log message: gam: update to 7.32.06 Changes since 7.29.01: 7.32.06 Added options to gam <UserTypeEntity> copy drivefile ... copysubfiles to \ limit copying to files whose modifiedTime meets specified requirements. start|starttime <Date>|<Time> - If specified, modifiedTime must \ be >= the value end|endtime <Date>|<Time> - If specified, modifiedTime must be \ <= the value range <Date>|<Time> <Date>|<Time> - first value \ <= modifiedTime <= second value 7.32.05 Fixed bug in gam <UserTypeEntity> print messages|threads ... headers \ <SMTPHeaderList> where headers other than those specified in \ <SMTPHeaderList> were displayed. Updated gam info users <UserTypeEntity> to display the following data when \ the Licensing API does not return data due to quota limits. Previously, no \ License data was displayed and there was no way to know if it was omitted due to \ API quota limits vs the user has no license? Licenses: (1) Not available/incomplete If a user has no licenses, this will be displayed. Licenses: (0) You should use license_skus = <SKUIDList> in gam.cfg to list all of the \ licensing SKUs used in your workspace. Without this list, GAM has to make 70+ \ API calls to get the licenses for a user; this can cause quota limit errors. 7.32.04 Support for student groups in Google Classroom no longer requires Developer \ Preview membership. Upgraded to OpenSSL 3.6.1. 7.32.03 Added option template as an additional formating option for gam \ <UserTypeEntity> show signature that displays just the HTML data; this \ simplifies capturing the data for use as input to GAM. $ gam redirect stdout ./SigTemplate.html user user@domain.com show signature template $ more SigTemplate.html <div dir="ltr"><div dir="ltr"><div \ dir="ltr"> <p \ style="margin:0px;font-size-adjust:none;font-stretch:normal;font-size:12px; \ line-height:normal;font-family:Monaco;color:rgb(0,0,0)"> <span style="background-color:rgb(82,208,206)">{RT}Email: \ {Email}{/RT}</span></p> <p \ style="margin:0px;font-size-adjust:none;font-stretch:normal;font-size:12px; \ line-height:normal;font-family:Monaco;color:rgb(0,0,0)"> <span style="background-color:rgb(82,208,206)">{RT}Phone: \ {Phone}{/RT}</span></p> <p \ style="margin:0px;font-size-adjust:none;font-stretch:normal;font-size:12px; \ line-height:normal;font-family:Monaco;color:rgb(0,0,0)"> <span style="background-color:rgb(82,208,206)">{RT}Mobile: \ {Mobile}{/RT}</span></p> </div><br></div>\n</div> 7.32.02 Added variable oauth2_txt_lock_mode to gam.cfg, the default is 644 and valid \ values are: 644, 664, 666. This value is used to set the file permissions on the \ oauth2.txt.lock file. In very special cases where daemon processes, e.g. \ Apache/httpd, are running GAM, the value 666 may have to be used. 7.32.01 Added option (addcsvdata <FieldName> <String>)* to gam \ <CrOSTypeEntity> issuecommand command <CrOSCommand> csv and gam \ <CrOSTypeEntity> getcommand commandid <CommandID> csv that adds \ additional columns of data to the CSV file output. See: https://github.com/GAM-team/GAM/wiki/ChromeOS-Devices#bulk-action-example 7.32.00 Added option verifyallowexternal to gam print cigroup-members|group-members that \ causes GAM to only display external members in groups with \ `allowExternalMembers=False'. This option can be used to help verify that \ internal-only groups don't have external members. Updated option internaldomains for the following commands: gam info|print groups gam print|show group-members gam info|print cigroups gam print|show cigroup-members gam <UserTypeEntity> print|show filesharecounts Which domains are considered internal domains: internaldomains all - All of your workspace domains; this is the default internaldomains primary - Your workspace primary domain internaldomains <DomainNameList> - A list of domain names Added option csv to gam <CrOSTypeEntity> issuecommand command \ <CrOSCommand> and gam <CrOSTypeEntity> getcommand commandid \ <CommandID> so that command details are displayed in CSV format. This can \ be used to log commands issued to devices and then monitor the results. Added option filemimetype category <MimeTypeNameList> to gam \ <UserTypeEntity> copy drivefile to support copying of files based on their \ MimeType category. Added option attendeeslist to gam calendars <CalendarEntity> print events \ and gam <UserTypeEntity> print events that causes GAM to display the \ attendee email addresses in a single column attendeesList; no attendee details \ are displayed. The email addresses are separated by csv_output_field_delimiter \ from gam.cfg. Fixed bug in gam sendemail ... replyto <EmailAddress> that caused a \ message delivery error if <EmailAddress> did not include a domain name. Added support for users's chat sections. See: https://github.com/GAM-team/GAM/wiki/Users-Chat#manage-chat-users-sections This is in Deveoper Preview; you must have a developer_preview_api_key in \ gam.cfg to use these commands. 7.31.06 Added option batchsize <Integer> to gam calendar <CalendarEntity> \ delete|purge events and gam <UserTypeEntity> delete|purge events \ <UserCalendarEntity> that causes GAM to delete events with batch API calls \ rather than with individual API calls. 7.31.05 Added option variables <RESearchPattern> to gam select section \ <SectionName> verify and gam config verify that causes GAM to only display \ variables with names selected by <RESearchPattern>. gam select School verify variables "^(customer|domain)" Section: School customer_id = C03abc123 domain = school.edu gam config verify variables 'dir' Section: DEFAULT cache_dir = ~/GamConfig/gamcache ; /Users/gamteam/GamConfig/gamcache config_dir = ~/GamConfig ; /Users/gamteam/GamConfig drive_dir = ~/GamWork ; /Users/gamteam/GamWork gmail_cse_incert_dir = ~/GmailCSE/Certs ; /Users/gamteam/GmailCSE/Certs gmail_cse_inkey_dir = ~/GmailCSE/Keys ; /Users/gamteam/GmailCSE/Keys input_dir = . 7.31.04 Fixed bug in gam report admin|chrome that caused to events to not be displayed. Updated gam <UserTypeEntity> print|show messages|threads ... query \ <QueryGmail> to display the query. 7.31.03 Due to the following Calendar API update, the gam <UserTypeEntity> \ transfer calendars command has been removed. See: \ https://developers.google.com/workspace/calendar/release-notes#October_27_2025 \ Data ownership can be transferred in the Google Calendar UI. 7.31.02 Added the following options to gam <UserTypeEntity> copy drivefile to \ limit copying to those files owned by selected users. copysubfilesownedby users <EmailAddressList> - Only files owned by \ users in <EmailAddressList> are copied. copysubfilesownedby notusers <EmailAddressList> - Only files not owned \ by users in <EmailAddressList> are copied. copysubfilesownedby regex <REMatchPattern> - Only files owned by users \ whose email addresses match <REMatchPattern> are copied. copysubfilesownedby notregex <REMatchPattern> - Only files owned by \ users whose email addresses do not match <REMatchPattern> are copied. 7.31.01 Code cleanup for addcsvdata <FieldName> <String>. 7.31.00 Fixed bug in gam report chrome (user <UserItem>)|(select \ <UserTypeEntity>) where no activities were returned. report chrome does \ not use the parameter userKey=<EmailAddress> as do other applications but \ requires parameter filter DEVICE_USER==<EmailAddress>. Updated gam report admin (user <UserItem>)|(select <UserTypeEntity>) \ to use parameter filter USER_EMAIL==<EmailAddress> to display activiities \ affecting the user <EmailAddress>. Use option userisactor to use the \ parameter userKey=<EmailAddress> that displays activities where user \ <EmailAddress> executed the command that generated the activity. Fixed bug in gam print cros|filelist|users ... (addcsvdata <FieldName> \ <String>)+ formatjson where the addcsvdata columns were not displayed but \ the additional field values were included in the JSON data. Now, the addcsvdata \ columns are displayed but the additional field values are only included in the \ JSON data when option includdecsvdatainjson is specified. Added option addcsvdata <FieldName> <String> to gam \ <UserTypeEntity> print cigroups|groups that adds additional columns of \ data to the CSV file output. Added option addcsvdata <FieldName> <String> to gam \ <UserTypeEntity> print cigroupmembere|group-members that adds additional \ columns of data to the CSV file output. 7.30.05 Added option gmaileventtypes <NumberRangeList> to gam report gmail that \ can be used to limit the event types displayed. <NumberRange> ::= <Number>|(<Number>/<Number>) <NumberRangeList> ::= "<NumberRange>(,<NumberRange>)*" gam report gmail user user@domain.com gmaileventtypes 1,10/11 See: \ https://developers.google.com/workspace/admin/reports/v1/appendix/activity/gmail Updated sorting of column headers in gam report <ActivityApplicationName>. 7.30.04 Updated gam report gmail to avoid the following error when incomplete start/end \ time information is provided. ERROR: Invalid request: Start time and end time should both be provided, and the \ scan duration should not be greater than 30 days. No time information provided - GAM sets range -30d today Only start <Time> provided - GAM sets end <Time>+30d Only end <Time> provided - GAM sets start <Time>-30d 7.30.03 Updated gam report <ActivityApplicationName> to reflect the changes \ described here: See: \ https://workspaceupdates.googleblog.com/2025/12/google-workspace-audit-log-api.html Added option resourcedetailsfilter <String> to gam report \ <ActivityApplicationName> described here: See: \ https://developers.google.com/workspace/admin/reports/reference/rest/v1/activities/list#query-parameters For gam <UserTypeEntity> print <Objects>, expanded the list of \ <Objects> covered by gam.cfg csv_output_users_audit = True. 7.30.02 Added option conferencedata meet <MeetID> to <EventAttribute> that \ allows specifying a reference to an existing Google Meet when creating/updating \ a calendar event. Upgraded to Python 3.14.2. 7.30.01 Fixed bug introduced in 7.30.00 that caused errors when reading CSV files. Added the following options to gam <UserTypeEntity> create \ focustime|outofoffice: ((date yyyy-mm-dd)| (range yyyy-mm-dd yyyy-mm-dd)| (daily yyyy-mm-dd N)| (weekly yyyy-mm-dd N)) Added the following options to gam <UserTypeEntity> create \ focustime|outofoffice|workinglocation: noreminders|(reminder email|popup <Number>)+ 7.30.00 Added input_dir directory variable to gam.cfg that is used to select a directory \ for reading files with non-absolute file names. The default is an empty string \ that matches the current behavior where these files are read from the current \ working directory. This will be most useful in multiple domain situations where \ each domain will have distinct drive_dir and input_dir values. Added support for the new resource calendar setting autoAcceptInvitations. 7.29.04 Updated gam delete chromepolicy chrome.users.apps.InstallType ou \ <OrgUnitItem> appid <AppID> to allow deleting an app, i.e., \ explicitly remove it from management. <OrgUnitItem> must specify where it \ was added for management. 7.29.03 Remove debugging message from gam <UserTypeEntity> move drivefile \ <DriveFileEntity>. 7.29.02 Fixed bug in gam <UserTypeEntity> move drivefile <DriveFileEntity> \ where the following options were only applied to top level files or folders \ re-created in the destination. Now, domain and email address mappings apply to \ all moved files/folders. excludepermissionsfromdomains <DomainNameList> includepermissionsfromdomains <DomainNameList> mappermissionsdomain <DomainName> <DomainName> mappermissionsemail <EmailAddress> <EmailAddress> mappermissionsemailfile <CSVFileInput> endcsv Upgraded to Python 3.14.1. 
   2025-12-02 15:24:21 by Stephen Borrill | Files touched by this commit (3) | Package updated
Log message: gam: update to 7.29.01 Changes since 7.19.02: 7.29.01 Added option oneitemperrow to gam <UserTypeEntity> print calendars ... \ permissions to have each of a calendar's permissions displayed on a separate row \ with all of the other calendar fields. Updated gam yubikey reset_piv to handle YubiKey firmware updates that caused an \ error. 7.29.00 Added options mappermissionsemail <EmailAddress> <EmailAddress> and \ mappermissionsemailfile <CSVFileInput> endcsv to these commands: gam [<UserTypeEntity>] copy shareddriveacls <SharedDriveEntity> to \ <SharedDriveEntity> gam [<UserTypeEntity>] sync shareddriveacls <SharedDriveEntity> with \ <SharedDriveEntity> gam <UserTypeEntity> copy drivefile <DriveFileEntity> gam <UserTypeEntity> move drivefile <DriveFileEntity> When mappermissionsemail <EmailAddress> <EmailAddress> is specifed, \ an ACL that references the first <EmailAddress> in the source will be \ modified to reference the second <EmailAddress> in the destination. Bulk permission email address mapping can be specified with \ mappermissionsemailfile <CSVFileInput> endcsv. <CSVFileInput> must \ include these columns: sourceEmail and destinationEmail. These options will be most useful with inter-workspace Shared Drive copies and moves. 7.28.13 Added option addcsvdata <FieldName> <String> to gam \ <UserTypeEntity> print messages that adds additional columns of data to \ the CSV file output. 7.28.12 Updated gam delete project to handle the following error: ERROR: 400: failedPrecondition - Project not active 7.28.11 Removed all options/fields referencing inheritance from gam \ create|update|info|print org as this option/field is deprecated. 7.28.10 Added a command gam print course-counts that displays the count of the number of \ courses in which a teacher or student is a participant. 7.28.09 Fixed bug in gam print cigroups ... descriptionmatchpattern [not] \ <REMatchPattern> that caused a trap. 7.28.08 Updated gam <UserTypeEntity> print|show chatmessages to cache the sender \ UID to email address map so that each sender UID only has to be looked up once; \ this improves performance. 7.28.07 Fixed bug in gam report users ... aggregatebydate|aggregatebyuser where \ accounts:used_quota_in_percentage was incorrectly displayed. 7.28.06 Updated gam <UserTypeEntity> info|print|show calendars and gam calendars \ <CalendarEntity> print|show settings to display the new dataOwner field 7.28.04 Updated commands that display Chrome device counts to display the date in the output. 7.28.03 Improved commands to display Chrome device counts. 7.28.02 Added commands to display Chrome device counts. 7.28.01 Updated gam <UserTypeEntity> show fileinfo <DriveFileEntity> to \ display displayName as the key field of a permission not deleted. 7.28.00 Added option addcsvdata <FieldName> <String> to gam report [usage] \ customers|users that adds additional columns of data to the CSV file output. \ This will be most useful when reading a CSV of user information and you want to \ include some of the user information, e.g., orgUnitPath, in the output. gam redirect csv ./Users.csv print users fields ou gam redirect csv ./UserStorageInfo.csv multiprocess csv Users.csv gam report \ users user "~primaryEmail" parameters \ accounts:drive_used_quota_in_mb,accounts:gmail_used_quota_in_mb,accounts:gplus_photos_used_quota_in_mb,accounts:total_quota_in_mb,accounts:used_quota_in_mb,accounts:used_quota_in_percentage \ addcsvdata orgUnitPath "~orgUnitPath" 7.27.05 Added option addcsvdata <FieldName> <String> to gam print courses \ that adds additional columns of data to the CSV file output. The following scope is no longer necessary: Cloud Identity API - Groups Beta \ (Enables group locking/unlocking) as this scope Cloud Identity API - Groups now \ provides group locking/unlocking. 7.27.04 Added options to gam <UserTypeEntity> create delegate that support sending \ email notifications when a user adds a delegate. 7.27.03 Updated gam <UserTypeEntity> create|update|sync chatmember role \ specification to role member|manager|owner. This is the mapping between the Chat \ UI and Chat API; GAM uses the Chat UI role names. UI: Member, API: ROLE_MEMBER UI: Manager, API: ROLE_ASSISTANT_MANAGER UI: Owner, API: ROLE_MANAGER Updated gam <UserTypeEntity> update chatspace options for permission settings. [managemembersandgroups owners|managers|members] [modifyspacedetails owners|managers|members] [togglehistory owners|managers|members] [useatmentionall owners|managers|members] [manageapps owners|managers|members] [managewebhooks owners|managers|members] [replymessages owners|managers|members] 7.27.02 Added option clearattachments <String> to gam [<UserTypeMessage>] \ update chatmessage that clears all attachments from a Chat message. If \ <ChatContent> is not specified, the current message text is retained and \ <String> is appended; <String> must be specified but can be empty in \ which case the current message test is preserved as-is. 7.27.01 Fixed bug in gam <UserTypeEntity> claim ownership <DriveFileEntity> \ ... onlyUsers|skipusers <UserTypeEntity> where the email addresses in \ onlyUsers|skipusers <UserTypeEntity> were not normalized. 7.27.00 Added debug_redaction Boolean variable to gam.cfg. When True, the default, \ sensitive data like access/refresh tokens, client secret and authorization codes \ are redacted from debug output. This allows you to post debug output without \ compromising your account information. Even with debug redaction, anything \ shared publicly should be double-checked for sensitive content. 7.25.01 Fixed bug in gam config timezone <String> to handle timezone abbreviations \ correctly; they were incorrectly shifted to lowercase. 7.25.00 Removed a capabilty added in 7.24.00 that allowed reading command data from \ Google Docs and Sheets when a user's service account access to Drive and Sheets \ had been disabled. Jay was concerned that this change could be exploited to give \ access to all user's files. This capability has been replaced by issuing the following commands. The admin \ specified in gam oauth create can read command data from Docs and Sheets to \ which it has access. gam config commanddata_clientaccess true save gam oauth create Enable the following and proceed to authorization. [*] 42) Drive API - commanddata_clientaccess [*] 54) Sheets API - commanddata_clientaccess Fixed in bug in gam report that caused a trap with either of the thismonth or \ previousmonths options were used. Upgraded to Python 3.14.0. 7.24.01 Updated GAM to handle the following error that occurs when GAM tries to \ authenticate as a user that has been disabled by Google. ERROR: Authentication Token Error - invalid_account: Forbidden 7.24.00 If you want to disable a user's service account access to Drive and Sheets but \ still allow reading command data from Google Docs and Sheets, issue the \ following command and make these settings: gam user user@domain.com update serviceaccount [ ] 20) Drive API (supports readonly) [*] 21) Drive API - read command data [ ] 42) Sheets API (supports readonly) [*] 43) Sheets API - read command data 7.23.07 Fixed bug in gam print|show admins where all admin assignments were not \ displayed when types <AdminAssigneeTypeList> was not specified, i.e., all \ assignments should be displayed. 7.23.06 Added option types <AdminAssigneeTypeList> to gam print|show admins that \ allows filtering of admin assignments by the type of the assignee; by default, \ all assignee types are displayed. <AdminAssigneeType> ::= group|user|serviceaccount|unknown <AdminAssigneeTypeList> ::= \ "<AdminAssigneeType>(,<AdminAssigneeType>)*" 7.23.05 Added option recursive to gam print|show admins that will display assignments to \ the members of security groups assigned to roles; the security group membership \ is recursively expanded. 7.23.04 Added option addcsvdata <FieldName> <String> to gam \ <UserTypeEntity> print events and gam calendars <CalendarEntity> \ print events that adds additional columns of data to the CSV file output. An \ example would be to get the calendar name in addition to the calendar ID when \ printing events. gam redirect csv ./Resources.csv print resources fields email,name gam redirect csv ./ResourceEventCounts.csv multiprocess redirect stderr - \ multiprocess csv Resources.csv gam calendar "~resourceEmail" print \ events starttime -1y countsonly addcsvdata calendarName \ "~resourceName" Upgraded to OpenSSL 3.6.0. 7.23.03 Upgraded to OpenSSL 3.5.4. 7.23.02 Added option oneitemperrow to 'gam print course-materials|course-work` to have \ each of a course's materials displayed on a separate row with all of the other \ course fields. This produces a CSV file that can be used in subsequent commands \ to process the materials without further script processing. 7.23.00 Added chat_max_results variable to gam.cfg. chat_max_results When retrieving lists of Chat items from API, how many should be retrieved in each API call Default: 100 Range: 1 - 1000 Previously, this vaule was always set to 1000 which could cause errors. 7.22.07 Added options showdetails and returnidonly to gam create|copy vaultquery. Added option <JSONData> to gam create vaultexport|vaultquery and gam print \ vaultcounts``. 7.22.06 Added commands to create, copy and delete Vault saved queries. gam create vaultquery <MatterItem> [name <String>] corpus calendar|drive|gemini|groups|hangouts_chat|mail|voice [scope all_data|held_data|unprocessed_data] (accounts <EmailAddressEntity>) | (orgunit|org|ou \ <OrgUnitPath>) | everyone (documentids (<DriveFileIDList>|(select \ <FileSelector>|<CSVFileSelector>))) | (shareddrives|teamdrives (<SharedDriveIDList>|(select \ <FileSelector>|<CSVFileSelector>))) | [(includeshareddrives <Boolean>)|(shareddrivesoption \ included|included_if_account_is_not_a_member|not_included)] (sitesurl (<URLList>||(select \ <FileSelector>|<CSVFileSelector>))) [driveversiondate <Date>|<Time>] [includerooms <Boolean>] (rooms (<ChatSpaceList>|(select \ <FileSelector>|<CSVFileSelector>))) | [terms <String>] [start|starttime <Date>|<Time>] \ [end|endtime <Date>|<Time>] [timezone <TimeZone>] [locationquery <StringList>] [peoplequery <StringList>] \ [minuswords <StringList>] [responsestatuses <AttendeeStatus>(,<AttendeeStatus>)*] \ [calendarversiondate <Date>|<Time>] (covereddata calllogs|textmessages|voicemails)* [shownames] [formatjson] gam copy vaultquery <MatterItem> <QueryItem> [targetmatter \ <MatterItem"] [name <String>] [shownames] [formatjson] gam delete vaultquery <QueryItem> matter <MatterItem> gam delete vaultquery <MatterItem> <QueryItem> Added a variant of gam print vaultcounts that gets its query parameters from a \ saved Vault query. gam print vaultcounts [todrive <ToDriveAttributes>*] matter <MatterItem> <QueryItem> [wait <Integer>] 7.22.05 Added a variant of gam create vaultexport that gets its query parameters from a \ saved Vault query. gam create vaultexport|export matter <MatterItem> [name <String>] vaultquery <QueryItem> [driveclientsideencryption any|encrypted|unencrypted] [includeaccessinfo <Boolean>] [excludedrafts <Boolean>] [mailclientsideencryption \ any|encrypted|unencrypted] [showconfidentialmodecontent <Boolean>] [usenewexport \ <Boolean>] [exportlinkeddrivefiles <Boolean>] [format ics|mbox|pst|xml] [region any|europe|us] [showdetails|returnidonly] 7.22.04 Added a variant of gam create vaulthold that gets its parameters from a saved \ Vault query. gam create vaulthold matter <MatterItem> [name <String>] vaultquery <QueryItem> [showdetails|returnidonly] 7.22.03 Fix backwards compatability bug introduced in 7.22.00 for gam print users that \ changed suspended from a field name to a query option; it is now correctly \ interpreted as a field name. 7.22.02 An update to the httplib2 library caused GAM proxy connections to fail; this has \ been fixed by including the pysocks library needed by the latest httplib2 \ library. 7.22.00 Expanded <UserTypeEntity> to allow specification of non-archived/archived \ users. See Collections of Users These commands have also been updated to deal with archived users: gam print aliases gam update groups gam info orgs gam print orgs gam print users Added datetime <DateTimeFormat> command that can be embedded in Gam batch \ files. The current time is formatted with <DateTimeFormat> and subsequent \ lines in <BatchContent> will have %datetime% replaced with the formatted \ time value. 7.21.03 Added option notifyrecoveryemail to gam create user and gam \ <UserTypeEntity> update user password <String> that sends the \ passsword notification email to the user's recovery email address (if defined). 7.21.02 GAM now builds on macOS 26 Tahoe and properly identifies the OS. A custom build of the cryptography library is no longer needed for Windows arm64 \ builds as the project now releases their own build for the OS. Upgrade to OpenSSL 3.5.3 latest 7.21.01 Replaced datetime, dateutil, calendar and iso8601 Python libraries with arrow \ library. This should have no performance impact; report any problems. You can now use timezone names when setting timezone in gam.cfg. gam config timezone America/Los_Angeles save 7.20.04 Cleaned up Python library imports: googleapiclient, iso8601 7.20.03 Rebranded license SKU 1010470004 from Gemini Education to Google AI Pro for \ Education. Additional updates to student groups in Google Classroom. 7.20.02 Upgraded gam create course-studentgroups to allow specification of multiple \ student group titles; multiple student groups can be created in a single \ command. ((title <String>)|(select <StringEntity))+ 7.20.01 Added option showaccesssettings to gam [<UserTypeEntity>] print|show \ chatspaces. When listing Chat Spaces, the Chat API does not return the \ accessSettings field; if you need to see this field, add showaccesssettings to \ the command. This requires an additional Chat API call per chat space of type \ SPACE to get the accessSettings field. 7.20.00 Added initial support for student groups in Google Classroom. This is a work in \ progress and requires Developer Preview membership. 7.19.03 Fixed bug where specifying a <UserItem> as id:1234567890 could lead to \ errors like this: ERROR: 400: invalidArgument - Resource name has invalid email. 
   2025-08-29 15:50:22 by Thomas Klausner | Files touched by this commit (1)
Log message: gam: fix tool dependency Prefer REPLACE_PYTHON to CHECK_INTERPRETER_SKIP. 
   2025-08-29 15:42:24 by Stephen Borrill | Files touched by this commit (4) | Package updated
Log message: gam: update to 7.19.02 Changes since 7.10.07: 7.19.02 Update gam info user <UserItem> to eliminate 5 second delay when getting \ license info. 7.19.01 Updated gam <UserTypeEntity> print|show signature to handle the following \ error that occurs when an alias is specified: ERROR: 404: notFound - Requested entity was not found. 7.19.00 Eliminated drive_v3_beta and meet_v2_beta from gam.cfg as the API betas are no \ longer used. Updated Meet API scopes so that GAM can read metadata about additional Meet spaces. [*] 34) Meet API - Manage/Display Meeting Spaces [*] 35) Meet API - Read Meeting Spaces metadata 7.18.07 Updated gam <UserTypeEntity> print drivelastmodification to put addcsvdata \ columns after User,id,name rather than after the last column. 7.18.06 Updated gam <UserTypeEntity> delete|modify messages to improve the \ handling of the following error: quotaExceeded - User-rate limit exceeded 7.18.05 Added support for Inbound SSO OIDC profiles. Currently, if you enter gam select <SectionName> and nothing else on the \ command line, GAM performs no action. Now, it will be treated as if you entered: \ gam select <SectionName> save Updated to Python 3.13.7. 7.18.04 Added commands to display/manage Alert Center Pub/Sub notifications. See: https://github.com/GAM-team/GAM/wiki/Alert-Center#configuring-settings 7.18.03 Updated gam oauth create to give a warning if the number of selected scopes will \ probably cause Google to generate a "Something went wrong" error. 7.18.02 Upgraded to OpenSSL 3.5.2. 7.18.01 Added option nosystemroles to gam print|show adminroles that causes GAM to only \ display non-system roles. Added option formatjson to gam info|print|show adminroles; this will be most \ useful when the privileges option is used. Updated gam create|update adminrole to allow specification of privileges with \ JSON data: privileges <JSONData>. These two updates make it easier to copy \ admin roles. Updated gam create|update adminrole to allow output of the created/updated role \ data in CSV format; by default, GAM displays <RoleName>(<RoleID>) \ created|updated. csv [todrive <ToDriveAttribute>*] [formatjson [quotechar \ <Character>]] (addcsvdata <FieldName> <String>)* 7.18.00 Added commands to display Business Profile Accounts. These are special purpose \ commands and will not generally be used. gam show businessprofileaccounts gam print businessprofileaccounts [todrive <ToDriveAttribute>*] 7.17.03 Fixed bug in gam <UserItem> print|show chatspaces asadmin fields \ <ChatSpaceFieldNameList> that caused a trap when displayname was not in \ <ChatSpaceFieldNameList>. 7.17.02 Updated gam <UserTypeEntity> print|show webmastersites to handle the \ following error that occurs if you haven't updated your project to include the \ Google Search Console API: ERROR: 403: permissionDenied - Google Search Console API has not been used in \ project 111055363999 before or it is disabled. Enable it by visiting \ https://console.developers.google.com/apis/api/searchconsole.googleapis.com/overview?project=111055363999 \ then retry. If you enabled this API recently, wait a few minutes for the action \ to propagate to our systems and retry. 7.17.01 Fixed bug in gam <UserTypeEntity> show webmastersites that caused a trap. 7.17.00 Added commands to discover Sites and WebResources that managed users (previously \ unmanaged) may have access to for better governance and visibility. These are \ special purpose commands and will not generally be used. gam <UserTypeEntity> show webresources gam <UserTypeEntity> print webresources [todrive <ToDriveAttribute>*] gam <UserTypeEntity> show webmastersites gam <UserTypeEntity> print webmastersites [todrive <ToDriveAttribute>*] 7.16.01 The Drive API now supports setting download restrictions on individual files. Added downloadrestictions and <DriveDownloadRestrictionsSubfieldName> to \ <DriveFieldName>. <DriveDownloadRestrictionsSubfieldName> ::= downloadrestrictions.itemdownloadrestriction| downloadrestrictions.effectivedownloadrestrictionwithcontext Added itemdownloadrestriction (restrictedforreaders [<Boolean>]) \ (restrictedforwriters [<Boolean>]) to <DriveFileAttribute>. From the Drive API documentation: itemDownloadRestriction - The download restriction of the file applied directly \ by the owner or organizer. This does not take into account shared drive settings \ or DLP rules. effectiveDownloadRestrictionWithContext - Output only. The effective download \ restriction applied to this file. This considers all restriction settings and \ DLP rules. restrictedForReaders - Whether download and copy is restricted for readers. restrictedForWriters - Whether download and copy is restricted for writers. If \ true, download is also restricted for readers. 7.16.00 Removed drive_v3_native_names from gam.cfg; GAM now only uses Drive API v3 \ fields names on output. If you had drive_v3_native_names = False in gam.cfg or \ are updating from Legacy GAM: See: https://github.com/GAM-team/GAM/wiki/Drive-REST-API-v3 7.15.01 Added downloadrestrictions.restrictedforreaders and \ downloadrestrictions.restrictedforwriters to \ <SharedDriveRestrictionsSubfieldName>; previously, only the abbreviations \ downloadrestrictedforreaders and downloadrestrictedforwriters were supported \ (they are still supported). Updated gam <UserTypeEntity> copy drivefile to handle unexpected data \ returned by Google that caused a trap. 7.15.00 Updated gam print shareddriveorganizers to make shownoorganizerdrives default to \ True as documented; it was defaulting to False. Cleaned up code for processing Python dictionary structures; this should have no \ noticable effect. 7.14.04 Fixed bug in gam print|show cigroups cimember <UserItem> that generated \ the following error: ERROR: Cloud Identity Group: groups/-, Print Failed: Error(4013): Insufficient \ permissions to retrieve memberships. Updated gam <UserTypeEntity> update user suspended off and gam \ <UserTypeEntity> unsuspend users to handle the following error that occurs \ when trying to unsuspend a user that has been suspended for abuse: ERROR: 412: adminCannotUnsuspend - Cannot restore a user suspended for abuse. See: https://support.google.com/a/answer/1110339 7.14.03 Fixed bug in gam print cigroup-members includederivedmembership that caused a trap. 7.14.02 Fixed bug in gam print|show cigroups|cigroups-members cimember <UserItem> \ that generated the following error: Cloud Identity Group Print Failed: Request contains an invalid argument. 7.14.01 Don't install yubikey library via pip by default. To install with yubikey \ support use pip install gam7[yubikey] 7.14.00 Added commands to display Google Tag Manager accounts, containers, workspaces, \ tags and user permissions. See: https://github.com/GAM-team/GAM/wiki/Users-Tag-Manager 7.13.03 Added option csv [todrive <ToDriveAttribute>*] [formatjson [quotechar \ <Character>]]] to gam create chromeprofilecommand so that command details \ are displayed in CSV format. Added option commands \ <ChromeProfileCommandNameList>|<FileSelector>|<CSVFileSelector> \ to <ChromeProfileNameEntity> so that gam print|show chromeprofilecommands \ can directly display the commands generated by gam create chromeprofilecommand \ with the csv option. 7.13.02 Fixed bug in gam create chromeprofilecommand where select|filter were not recognized. Updated gam create datatransfer <OldOwnerID> datastudio <NewOwnerID> \ that generated the following error due to an unhandled API change: ERROR: Invalid choice (google data studio): Expected <calendar|looker \ studio|drive and docs> 7.13.01 Enhanced gam create|print|show chromeprofilecommand to allow specification of \ multiple Chrome browser profiles rather than just one. <ChromeProfilePermanentID> ::= <String> <ChromeProfileName> ::= \ customers/<CustomerID>/profiles/<ChromeProfilePermanentID> | \ <ChromeProfilePermanentID> <ChromeProfileNameList> ::= \ "<ChromeProfileName>(,<ChromeProfileName>)*" <ChromeProfileNameEntity> ::= <ChromeProfileNameEntity> ::= <ChromeProfileNameList> | (select <FileSelector>|<CSVFileSelector>) | (filter <String> (filtertime<String> <Time>)* [orderby \ <ChromeProfileOrderByFieldName> [ascending|descending]]) gam create|print_show chromeprofilecommand <ChromeProfileNameEntity> 7.13.00 Added commands that send remote commands to Chrome browser profiles and display \ the results; at the moment, these commands can clear the browser cache and \ cookies. See: \ https://github.com/GAM-team/GAM/wiki/Chrome-Profile-Management#create-a-chrome-profile-command 7.12.02 Updated gam print users to handle the following error: ERROR: 503: serviceNotAvailable - The service is currently unavailable 7.12.01 Added support for plan free in gam create resoldsubscription. The free plan is exclusive to the Cloud Identity SKU and does not incur any \ billing. 7.12.00 Started updated handling of missing scopes messages in client access commands; \ this is a work in progress. Updated gam info|show shareddrive to handle changes in the Drive API that caused \ traps. Added downloadrestrictedforreaders and downloadrestrictedforwriters to \ <SharedDriveRestrictionsSubfieldName> to support new Shared Drive \ restrictions. Updated gam course <CourseID> create|update announcement to accept input \ from a literal string, a file or a Google Doc. <CourseAnnouncementContent> ::= ((text <String>)| (textfile <FileName> [charset <Charset>])| (gdoc <UserGoogleDoc>)| (gcsdoc <StorageBucketObjectName>)) Added command gam check suspended <UserItem> that checks the suspension \ status of a user and sets the return code to 0 if the user is not suspended or \ 26 if it is. $ gam check suspended testok@domain.com User: testok@domain.com, Account Suspended: False $ echo $? 0 $ gam check suspended testsusp@domain.com User: testsusp@domain.com, Account Suspended: True, Suspension Reason: ADMIN $ echo $? 26 Updated gam <UserTypeEntity> sendemail to verify that one of \ recipient|to|from immediately follows sendemail. 7.11.00 Added commands to manage classroom/course announcements. See: \ https://github.com/GAM-team/GAM/wiki/Classroom-Courses#manage-course-announcements Upgraded to OpenSSL 3.5.1. 7.10.10 Added choices text and hyperlink to option showwebviewlink in gam \ [<UserTypeEntity>] print|show shareddrives. showwebviewlink text - Displays \ https://drive.google.com/drive/folders/<SharedDriveID> showwebviewlink hyperlink - Displays \ =HYPERLINK("https://drive.google.com/drive/folders/<SharedDriveID>", \ "<SharedDriveName>") 7.10.09 Added option showwebviewlink to gam [<UserTypeEntity>] print|show \ shareddrives that displays the web view link for the Shared Drive: \ https://drive.google.com/drive/folders/<SharedDriveID>. 7.10.08 Fixed bug in commands that modify messages where the labelids \ <LabelIdList> option could not be used unless one of these options was \ also specified: query, matchlabel, ids; it can be now be used by itself. 
   2025-06-30 14:36:42 by Stephen Borrill | Files touched by this commit (2) | Package updated
Log message: gam: update to 7.10.07 Changes since 7.10.01: 7.10.07 Updated gam <UserTypeEntity> copy|move drivefile to hanndle additional \ instances of the cannotModifyInheritedPermission error. Added license SKU Google AI Ultra for Business ProductID - 101047 SKUID - 1010470008 | geminiultra 7.10.06 Added option clientstates to gam print devices to include client states in \ device output. 7.10.05 Google renamed an error: cannotModifyInheritedTeamDrivePermission became \ cannotModifyInheritedPermission. GAM will now handle the new error. 7.10.04 Updated gam report <ActivityApplicationName> to accept accept application \ names as defined in the Reports API discovery document; this means that GAM does \ not have to be updated when Google defines a new application name. gemini_in_workspace_apps is now available in gam report. 7.10.03 Fixed bug in commands that modify messages where the labelids \ <LabelIdList> option was not being applied. 7.10.02 Added option labelids <LabelIdList> to all commands that process messages; \ this option causes GAM to only return messages with labels that match all of the \ specified label IDs. Updated gam <UserTypeEntity> print|show forms to always display \ isPublished and isAcceptingResponses in publishSettings/publishState regardless \ of their value; the API doesn't return these values when they are False.