gam7 7.23.4__tar.gz → 7.23.6__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of gam7 might be problematic. Click here for more details.
- {gam7-7.23.4 → gam7-7.23.6}/.github/workflows/build.yml +5 -4
- {gam7-7.23.4 → gam7-7.23.6}/.github/workflows/pypi.yml +1 -1
- {gam7-7.23.4 → gam7-7.23.6}/PKG-INFO +1 -1
- {gam7-7.23.4 → gam7-7.23.6}/src/GamCommands.txt +8 -3
- {gam7-7.23.4 → gam7-7.23.6}/src/GamUpdate.txt +14 -0
- {gam7-7.23.4 → gam7-7.23.6}/src/gam/__init__.py +98 -30
- {gam7-7.23.4 → gam7-7.23.6}/src/gam/gamlib/glclargs.py +1 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Administrators.md +8 -4
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Calendars-Events.md +7 -3
- {gam7-7.23.4 → gam7-7.23.6}/wiki/GamUpdates.md +17 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/How-to-Upgrade-Legacy-GAM-to-GAM7.md +1 -1
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Users-Calendars-Events.md +6 -3
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Users-People-Contacts-Profiles.md +8 -8
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Users-Tasks.md +3 -3
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Version-and-Help.md +3 -3
- {gam7-7.23.4 → gam7-7.23.6}/.github/ISSUE_TEMPLATE/aa-question.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/.github/ISSUE_TEMPLATE/za-bug-report.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/.github/ISSUE_TEMPLATE/zz-feature-request.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/.github/ISSUE_TEMPLATE.txt +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/.github/actions/decrypt.sh +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/.github/actions/entitlements.plist +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/.github/actions/package_exclusions.txt +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/.github/stale.yml +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/.github/workflows/codeql-analysis.yml +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/.github/workflows/get-cacerts.yml +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/.github/workflows/pushwiki.yml +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/LICENSE +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/README.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/pyproject.toml +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/src/.gitignore +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/src/LICENSE +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/src/README.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/src/callgam.py +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/src/gam/__main__.py +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/src/gam/atom/__init__.py +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/src/gam/atom/auth.py +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/src/gam/atom/client.py +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/src/gam/atom/core.py +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/src/gam/atom/data.py +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/src/gam/atom/http.py +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/src/gam/atom/http_core.py +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/src/gam/atom/http_interface.py +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/src/gam/atom/mock_http.py +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/src/gam/atom/mock_http_core.py +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/src/gam/atom/mock_service.py +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/src/gam/atom/service.py +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/src/gam/atom/token_store.py +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/src/gam/atom/url.py +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/src/gam/cacerts.pem +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/src/gam/cbcm-v1.1beta1.json +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/src/gam/contactdelegation-v1.json +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/src/gam/datastudio-v1.json +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/src/gam/gamlib/__init__.py +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/src/gam/gamlib/glaction.py +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/src/gam/gamlib/glapi.py +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/src/gam/gamlib/glcfg.py +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/src/gam/gamlib/glentity.py +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/src/gam/gamlib/glgapi.py +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/src/gam/gamlib/glgdata.py +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/src/gam/gamlib/glglobals.py +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/src/gam/gamlib/glindent.py +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/src/gam/gamlib/glmsgs.py +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/src/gam/gamlib/glskus.py +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/src/gam/gamlib/gluprop.py +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/src/gam/gamlib/glverlibs.py +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/src/gam/gamlib/yubikey.py +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/src/gam/gdata/__init__.py +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/src/gam/gdata/alt/__init__.py +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/src/gam/gdata/alt/app_engine.py +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/src/gam/gdata/alt/appengine.py +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/src/gam/gdata/apps/__init__.py +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/src/gam/gdata/apps/audit/__init__.py +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/src/gam/gdata/apps/audit/service.py +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/src/gam/gdata/apps/contacts/__init__.py +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/src/gam/gdata/apps/contacts/service.py +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/src/gam/gdata/apps/service.py +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/src/gam/gdata/service.py +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/src/gam/gdata/urlfetch.py +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/src/gam/meet-v2beta.json +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/src/gam/serviceaccountlookup-v1.json +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/src/gam-install.sh +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/src/gam-setup.bat +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/src/gam.exe.manifest +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/src/gam.py +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/src/gam.spec +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/src/gam.wxs +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/src/license.rtf +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/src/tools/a_atleast_b.py +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/src/tools/gen-wix-xml-filelist.py +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/src/tools/hooks/hook-googleapiclient.model.py +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/src/tools/hooks/hook-httplib2.py +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/src/tools/mkGamRef.py +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/src/tools/openssl.props +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/src/tools/ssd.mjs +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/src/version_info.txt.in +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/00scratch.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Addresses.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Alert-Center.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Aliases.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Authorization.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/BNF-Syntax.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Basic-Items.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Bulk-Processing.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Business-Account-Management.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/CSV-Input-Filtering.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/CSV-Output-Filtering.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/CSV-Special-Characters.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Calendars-Access.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Calendars.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Chat-Bot-Setup-Use.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Chrome-AUE-Counts.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Chrome-Browser-Cloud-Management.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Chrome-Installed-Apps.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Chrome-Needs-Attention-Counts.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Chrome-Policies.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Chrome-Printers.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Chrome-Profile-Management.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Chrome-Version-Counts.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Chrome-Version-History.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/ChromeOS-Devices.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Classroom-Courses.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Classroom-Guardians.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Classroom-Invitations.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Classroom-Membership.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Classroom-StudentGroups.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Cloud-Channel.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Cloud-Identity-Devices.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Cloud-Identity-Groups-Membership.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Cloud-Identity-Groups.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Cloud-Identity-Policies.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Cloud-Storage.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Collections-of-ChromeOS-Devices.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Collections-of-Items.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Collections-of-Users.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Command-Data-From-Google-Docs-Sheets-Storage.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Command-Line-Parsing.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Command-Logging-Progress.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Context-Aware-Access-Levels.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Customer.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Domain-People-Contacts-Profiles.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Domain-SharedContacts.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Domains-Verification.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Domains.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Downloads-Installs.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Drive-File-Selection.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Drive-Items.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Drive-REST-API-v3.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Email-Audit-Monitor.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Find-File-Owner.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/GAM-Public-Chat-Room.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/GAM-Release-Process.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/GAM-Return-Codes.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/GAM-with-minimal-GCP-rights.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/GAM7-FAQ.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/GAM7-on-Android-Devices.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/GAM7-on-Chrome-OS-Devices.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Global-Address-List.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Google-Data-Transfers.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Google-Network-Addresses.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Groups-Membership.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Groups.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/HTTPS-Proxy.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Home.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/How-to-Install-GAM7.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/How-to-Uninstall-GAM7.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/How-to-Update-GAM7.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/How-to-Upgrade-GAMADV-XTD3-to-GAM7.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Inbound-SSO.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Install-GAM-as-Python-Library.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Licenses.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/List-Items.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/List.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Meta-Commands-and-File-Redirection.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Mobile-Devices.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Organizational-Units.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Other-Resources.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Permission-Matches.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Python-Regular-Expressions.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/README.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Rclone.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Reports.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Reseller.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Resources.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Running-GAM7-securely-on-a-Google-Compute-Engine.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/SSL-Root-CA-Certificates.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Schemas.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Scripts.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Send-Email.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Shared-Drives.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Sites.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Tag-Replace.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Todrive.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Unmanaged-Accounts.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Upgrade-Benefits.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Users-Analytics-Admin.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Users-Application-Specific-Passwords.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Users-Backup-Verification-Codes.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Users-Calendars-Access.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Users-Calendars.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Users-Chat.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Users-Classification-Labels.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Users-Classroom-Profile.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Users-Contacts-Delegates.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Users-Contacts.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Users-Deprovision.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Users-Drive-Activity-Settings.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Users-Drive-Cleanup.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Users-Drive-Comments.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Users-Drive-Copy-Move.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Users-Drive-Files-Display.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Users-Drive-Files-Manage.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Users-Drive-Orphans.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Users-Drive-Ownership.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Users-Drive-Permissions.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Users-Drive-Query.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Users-Drive-Revisions.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Users-Drive-Shortcuts.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Users-Drive-Transfer.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Users-Forms.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Users-Gmail-CSE.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Users-Gmail-Delegates.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Users-Gmail-Filters.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Users-Gmail-Forwarding.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Users-Gmail-Labels.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Users-Gmail-Messages-Threads.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Users-Gmail-Profile.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Users-Gmail-S-MIME.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Users-Gmail-Send-As-Signature-Vacation.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Users-Gmail-Settings.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Users-Group-Membership.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Users-Keep-Notes.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Users-Looker-Studio.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Users-Meet.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Users-Photo.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Users-Profile-Photo.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Users-Profile-Sharing.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Users-Shared-Drives.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Users-Signout-Turnoff2SV.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Users-Spreadsheets.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Users-Tag-Manager.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Users-Tokens.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Users-Web-Resources-and-Sites.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Users-YouTube.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Users.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Using-GAM7-with-a-YubiKey.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Using-GAM7-with-a-delegated-admin-service-account.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Using-GAM7-with-keyless-authentication-Workload-Identity-Federation.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Vault-Takeout.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/Verifying-a-GAM7-Build-is-Legitimate-and-Official.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/_Sidebar.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/gam.cfg.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/legacy/l-AdminSettingsExamples.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/legacy/l-Android-Installation.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/legacy/l-BulkOperations.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/legacy/l-CalendarExamples.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/legacy/l-Chat-Bot.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/legacy/l-Chrome-Browser-Management.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/legacy/l-Chrome-OS-Installation.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/legacy/l-Chrome-Policy-Settings.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/legacy/l-Cloud-Identity-Groups.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/legacy/l-Command-Reference-Calendar-Resources.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/legacy/l-Command-Reference-Calendars.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/legacy/l-Command-Reference-Definitions.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/legacy/l-Command-Reference-Drive.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/legacy/l-Command-Reference-Email.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/legacy/l-Command-Reference-Group-Attributes.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/legacy/l-Command-Reference-Groups.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/legacy/l-Command-Reference-Users.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/legacy/l-Context-Aware-Access-Levels.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/legacy/l-Creating-client_secrets.json-and-oauth2service.json.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/legacy/l-CreatingClientSecretsFile.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/legacy/l-Custom-Schemas.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/legacy/l-Data-Transfers.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/legacy/l-DomainVerification.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/legacy/l-ExamplesAccountAuditing.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/legacy/l-ExamplesCSV.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/legacy/l-ExamplesEmailSettings.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/legacy/l-ExamplesOrganizations.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/legacy/l-GAM-Discussion-Group.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/legacy/l-GAM-on-Android-and-Chrome-OS.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/legacy/l-GAM-options-files.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/legacy/l-GAM-with--minimal-GCP-rights.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/legacy/l-GAM3CSVListings.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/legacy/l-GAM3DirectoryCommands.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/legacy/l-GAM3GroupSettings.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/legacy/l-Google-Vault---Takeout-Commands.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/legacy/l-GoogleDriveManagement.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/legacy/l-Grouping-18-or-Older-Users.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/legacy/l-Home.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/legacy/l-How-to-upgrade-from-Standard-GAM.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/legacy/l-Inbound-SSO-Settings.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/legacy/l-LicenseExamples.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/legacy/l-Managing-Admins.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/legacy/l-Managing-CloudPrint-Printers.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/legacy/l-Managing-Devices.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/legacy/l-Managing-Google-Classroom.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/legacy/l-OAuthKeyManagement.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/legacy/l-Printers.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/legacy/l-ResellerCommands.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/legacy/l-SecurityExamples.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/legacy/l-UnmanagedUsersExamples.md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/legacy/l-Using-GAM-with-a-delegated-admin-service-account-(DASA).md +0 -0
- {gam7-7.23.4 → gam7-7.23.6}/wiki/legacy/l-_Footer.md +0 -0
|
@@ -158,7 +158,7 @@ jobs:
|
|
|
158
158
|
with:
|
|
159
159
|
path: |
|
|
160
160
|
cache.tar.xz
|
|
161
|
-
key: gam-${{ matrix.jid }}-
|
|
161
|
+
key: gam-${{ matrix.jid }}-20251002
|
|
162
162
|
|
|
163
163
|
- name: Untar Cache archive
|
|
164
164
|
if: matrix.goal == 'build' && steps.cache-python-ssl.outputs.cache-hit == 'true'
|
|
@@ -168,7 +168,7 @@ jobs:
|
|
|
168
168
|
|
|
169
169
|
- name: Use pre-compiled Python for testing
|
|
170
170
|
if: matrix.python != ''
|
|
171
|
-
uses: actions/setup-python@
|
|
171
|
+
uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0
|
|
172
172
|
with:
|
|
173
173
|
python-version: ${{ matrix.python }}
|
|
174
174
|
allow-prereleases: true
|
|
@@ -1027,7 +1027,8 @@ jobs:
|
|
|
1027
1027
|
else
|
|
1028
1028
|
tar_folders="bin/"
|
|
1029
1029
|
fi
|
|
1030
|
-
|
|
1030
|
+
echo '.git*' > ./excludes.txt
|
|
1031
|
+
tar cJvvf cache.tar.xz --exclude-from=excludes.txt $tar_folders
|
|
1031
1032
|
|
|
1032
1033
|
merge:
|
|
1033
1034
|
if: (github.event_name == 'push' || github.event_name == 'schedule' || github.event_name == 'workflow_dispatch')
|
|
@@ -1077,7 +1078,7 @@ jobs:
|
|
|
1077
1078
|
echo "dateversion=${dateversion}" >> $GITHUB_OUTPUT
|
|
1078
1079
|
|
|
1079
1080
|
- name: Publish draft release
|
|
1080
|
-
uses: softprops/action-gh-release@
|
|
1081
|
+
uses: softprops/action-gh-release@6cbd405e2c4e67a21c47fa9e383d020e4e28b836 # v2.3.3
|
|
1081
1082
|
with:
|
|
1082
1083
|
draft: true
|
|
1083
1084
|
prerelease: false
|
|
@@ -368,6 +368,7 @@ If an item contains spaces, it should be surrounded by ".
|
|
|
368
368
|
## Named items
|
|
369
369
|
|
|
370
370
|
<AccessToken> ::= <String>
|
|
371
|
+
<AdminAssigneeType> ::= group|user|serviceaccount|unknown
|
|
371
372
|
<AlertID> ::= <String>
|
|
372
373
|
<APIScopeURL> ::= <String>
|
|
373
374
|
<APPID> ::= <String>
|
|
@@ -691,6 +692,7 @@ If an item contains spaces, it should be surrounded by ".
|
|
|
691
692
|
|
|
692
693
|
## Lists of basic items
|
|
693
694
|
|
|
695
|
+
<AdminAssigneeTypeList> ::= "<AdminAssigneeType>(,<AdminAssigneeType>)*"
|
|
694
696
|
<APIScopeURLList> ::= "<APIScopeURL>(,<APIScopeURL>)*"
|
|
695
697
|
<ASPIDList> ::= "<ASPID>(,<ASPID>)*"
|
|
696
698
|
<AssetTagList> ::= "<AssetTag>(,<AssetTag>)*"
|
|
@@ -1552,10 +1554,13 @@ gam create|add admin <EmailAddress>|<UniqueID> <RoleItem> customer|(org_unit <Or
|
|
|
1552
1554
|
gam delete admin <RoleAssignmentId>
|
|
1553
1555
|
|
|
1554
1556
|
gam print admins [todrive <ToDriveAttribute>*]
|
|
1555
|
-
[user|group <EmailAddress>|<UniqueID>] [role <RoleItem>]
|
|
1556
|
-
[
|
|
1557
|
+
[user|group <EmailAddress>|<UniqueID>] [role <RoleItem>]
|
|
1558
|
+
[types <AdminAssigneeTypeList>]
|
|
1559
|
+
[recursive] [condition] [privileges] [oneitemperrow]
|
|
1557
1560
|
gam show admins
|
|
1558
|
-
[user|group <EmailAddress>|<UniqueID>] [role <RoleItem>]
|
|
1561
|
+
[user|group <EmailAddress>|<UniqueID>] [role <RoleItem>]
|
|
1562
|
+
[types <AdminAssigneeTypeList>]
|
|
1563
|
+
[recursive] [condition] [privileges]
|
|
1559
1564
|
|
|
1560
1565
|
# Alert Center
|
|
1561
1566
|
|
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
7.23.06
|
|
2
|
+
|
|
3
|
+
Added option `types <AdminAssigneeTypeList>` to `gam print|show admins` that allows filtering
|
|
4
|
+
of admin assignments by the type of the assignee; by default, all assignee types are displayed.
|
|
5
|
+
```
|
|
6
|
+
<AdminAssigneeType> ::= group|user|serviceaccount|unknown
|
|
7
|
+
<AdminAssigneeTypeList> ::= "<AdminAssigneeType>(,<AdminAssigneeType>)*"
|
|
8
|
+
```
|
|
9
|
+
|
|
10
|
+
7.23.05
|
|
11
|
+
|
|
12
|
+
Added option `recursive` that will display assignments to the members
|
|
13
|
+
of security groups assigned to roles; the security group membership is recursively expanded.
|
|
14
|
+
|
|
1
15
|
7.23.04
|
|
2
16
|
|
|
3
17
|
Added option `addcsvdata <FieldName> <String>` to `gam <UserTypeEntity> print events`
|
|
@@ -25,7 +25,7 @@ https://github.com/GAM-team/GAM/wiki
|
|
|
25
25
|
"""
|
|
26
26
|
|
|
27
27
|
__author__ = 'GAM Team <google-apps-manager@googlegroups.com>'
|
|
28
|
-
__version__ = '7.23.
|
|
28
|
+
__version__ = '7.23.06'
|
|
29
29
|
__license__ = 'Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0)'
|
|
30
30
|
|
|
31
31
|
#pylint: disable=wrong-import-position
|
|
@@ -16990,21 +16990,38 @@ def doDeleteAdmin():
|
|
|
16990
16990
|
except (GAPI.forbidden, GAPI.permissionDenied) as e:
|
|
16991
16991
|
ClientAPIAccessDeniedExit(str(e))
|
|
16992
16992
|
|
|
16993
|
-
|
|
16993
|
+
ADMIN_ASSIGNEE_TYPE_TO_ASSIGNEDTO_FIELD_MAP = {
|
|
16994
16994
|
'user': 'assignedToUser',
|
|
16995
16995
|
'group': 'assignedToGroup',
|
|
16996
16996
|
'serviceaccount': 'assignedToServiceAccount',
|
|
16997
|
+
'unknown': 'assignedToUnknown',
|
|
16997
16998
|
}
|
|
16998
|
-
|
|
16999
|
+
ALL_ASSIGNEE_TYPES = ['user', 'group', 'serviceaccount']
|
|
17000
|
+
|
|
17001
|
+
PRINT_ADMIN_FIELDS = ['roleAssignmentId', 'roleId', 'assignedTo', 'scopeType', 'orgUnitId', 'assigneeType']
|
|
16999
17002
|
PRINT_ADMIN_TITLES = ['roleAssignmentId', 'roleId', 'role',
|
|
17000
17003
|
'assignedTo', 'assignedToUser', 'assignedToGroup', 'assignedToServiceAccount', 'assignedToUnknown',
|
|
17001
17004
|
'scopeType', 'orgUnitId', 'orgUnit']
|
|
17002
17005
|
|
|
17006
|
+
def getAssigneeTypes(myarg, typesSet):
|
|
17007
|
+
if myarg in {'type', 'types'}:
|
|
17008
|
+
for gtype in getString(Cmd.OB_ADMIN_ASSIGNEE_TYPE_LIST).lower().replace(',', ' ').split():
|
|
17009
|
+
if gtype in ADMIN_ASSIGNEE_TYPE_TO_ASSIGNEDTO_FIELD_MAP:
|
|
17010
|
+
typesSet.add(ADMIN_ASSIGNEE_TYPE_TO_ASSIGNEDTO_FIELD_MAP[gtype])
|
|
17011
|
+
else:
|
|
17012
|
+
invalidChoiceExit(gtype, ADMIN_ASSIGNEE_TYPE_TO_ASSIGNEDTO_FIELD_MAP, True)
|
|
17013
|
+
else:
|
|
17014
|
+
return False
|
|
17015
|
+
return True
|
|
17016
|
+
|
|
17003
17017
|
# gam print admins [todrive <ToDriveAttribute>*]
|
|
17004
|
-
# [user|group <EmailAddress>|<UniqueID>] [role <RoleItem>]
|
|
17005
|
-
# [
|
|
17018
|
+
# [user|group <EmailAddress>|<UniqueID>] [role <RoleItem>]
|
|
17019
|
+
# [types <AdminAssigneeTypeList>]
|
|
17020
|
+
# [recursive] [condition] [privileges] [oneitemperrow]
|
|
17006
17021
|
# gam show admins
|
|
17007
|
-
# [user|group <EmailAddress>|<UniqueID>] [role <RoleItem>]
|
|
17022
|
+
# [user|group <EmailAddress>|<UniqueID>] [role <RoleItem>]
|
|
17023
|
+
# [types <AdminAssigneeTypeList>]
|
|
17024
|
+
# [recursive] [condition] [privileges]
|
|
17008
17025
|
def doPrintShowAdmins():
|
|
17009
17026
|
def _getPrivileges(admin):
|
|
17010
17027
|
if showPrivileges:
|
|
@@ -17031,19 +17048,18 @@ def doPrintShowAdmins():
|
|
|
17031
17048
|
def _setNamesFromIds(admin, privileges):
|
|
17032
17049
|
admin['role'] = role_from_roleid(admin['roleId'])
|
|
17033
17050
|
assignedTo = admin['assignedTo']
|
|
17034
|
-
admin['assignedToUnknown'] = False
|
|
17035
17051
|
if assignedTo not in assignedToIdEmailMap:
|
|
17036
|
-
assigneeType = admin.get('assigneeType')
|
|
17037
|
-
assignedToField = ASSIGNEE_EMAILTYPE_TOFIELD_MAP.get(assigneeType, None)
|
|
17038
17052
|
assigneeEmail, assigneeType = convertUIDtoEmailAddressWithType(f'uid:{assignedTo}', cd, sal,
|
|
17039
|
-
emailTypes=
|
|
17040
|
-
if
|
|
17041
|
-
assignedToField =
|
|
17042
|
-
|
|
17053
|
+
emailTypes=ALL_ASSIGNEE_TYPES if admin.get('assigneeType') != 'group' else ['group'])
|
|
17054
|
+
if assigneeType in ADMIN_ASSIGNEE_TYPE_TO_ASSIGNEDTO_FIELD_MAP:
|
|
17055
|
+
assignedToField = ADMIN_ASSIGNEE_TYPE_TO_ASSIGNEDTO_FIELD_MAP[assigneeType]
|
|
17056
|
+
else:
|
|
17043
17057
|
assignedToField = 'assignedToUnknown'
|
|
17058
|
+
if assignedToField == 'assignedToUnknown':
|
|
17044
17059
|
assigneeEmail = True
|
|
17045
17060
|
assignedToIdEmailMap[assignedTo] = {'assignedToField': assignedToField, 'assigneeEmail': assigneeEmail}
|
|
17046
17061
|
admin[assignedToIdEmailMap[assignedTo]['assignedToField']] = assignedToIdEmailMap[assignedTo]['assigneeEmail']
|
|
17062
|
+
admin['assignedToField'] = assignedToIdEmailMap[assignedTo]['assignedToField']
|
|
17047
17063
|
if privileges is not None:
|
|
17048
17064
|
admin.update(privileges)
|
|
17049
17065
|
if 'orgUnitId' in admin:
|
|
@@ -17059,7 +17075,8 @@ def doPrintShowAdmins():
|
|
|
17059
17075
|
csvPF = CSVPrintFile(PRINT_ADMIN_TITLES) if Act.csvFormat() else None
|
|
17060
17076
|
roleId = None
|
|
17061
17077
|
userKey = None
|
|
17062
|
-
oneItemPerRow = showPrivileges = False
|
|
17078
|
+
oneItemPerRow = recursive = showPrivileges = False
|
|
17079
|
+
typesSet = set()
|
|
17063
17080
|
kwargs = {}
|
|
17064
17081
|
rolePrivileges = {}
|
|
17065
17082
|
fieldsList = PRINT_ADMIN_FIELDS
|
|
@@ -17072,6 +17089,17 @@ def doPrintShowAdmins():
|
|
|
17072
17089
|
userKey = kwargs['userKey'] = getEmailAddress()
|
|
17073
17090
|
elif myarg == 'role':
|
|
17074
17091
|
_, roleId = getRoleId()
|
|
17092
|
+
elif getAssigneeTypes(myarg, typesSet):
|
|
17093
|
+
pass
|
|
17094
|
+
elif myarg == 'recursive':
|
|
17095
|
+
recursive = True
|
|
17096
|
+
allGroupRoles = ','.join(sorted(ALL_GROUP_ROLES))
|
|
17097
|
+
memberOptions = initMemberOptions()
|
|
17098
|
+
memberOptions[MEMBEROPTION_INCLUDEDERIVEDMEMBERSHIP] = True
|
|
17099
|
+
memberOptions[MEMBEROPTION_DISPLAYMATCH] = False
|
|
17100
|
+
memberDisplayOptions = initIPSGMGroupMemberDisplayOptions()
|
|
17101
|
+
for role in [Ent.ROLE_MEMBER, Ent.ROLE_MANAGER, Ent.ROLE_OWNER]:
|
|
17102
|
+
memberDisplayOptions[role]['show'] = True
|
|
17075
17103
|
elif myarg == 'condition':
|
|
17076
17104
|
fieldsList.append('condition')
|
|
17077
17105
|
if csvPF:
|
|
@@ -17085,13 +17113,15 @@ def doPrintShowAdmins():
|
|
|
17085
17113
|
if roleId and not kwargs:
|
|
17086
17114
|
kwargs['roleId'] = roleId
|
|
17087
17115
|
roleId = None
|
|
17116
|
+
if not typesSet:
|
|
17117
|
+
typesSet = set(ADMIN_ASSIGNEE_TYPE_TO_ASSIGNEDTO_FIELD_MAP.values())
|
|
17088
17118
|
fields = getItemFieldsFromFieldsList('items', fieldsList)
|
|
17089
17119
|
printGettingAllAccountEntities(Ent.ADMIN_ROLE_ASSIGNMENT)
|
|
17090
17120
|
try:
|
|
17091
17121
|
admins = callGAPIpages(cd.roleAssignments(), 'list', 'items',
|
|
17092
17122
|
pageMessage=getPageMessage(),
|
|
17093
17123
|
throwReasons=[GAPI.INVALID, GAPI.USER_NOT_FOUND,
|
|
17094
|
-
GAPI.FORBIDDEN, GAPI.SERVICE_NOT_AVAILABLE,
|
|
17124
|
+
GAPI.NOT_FOUND, GAPI.FORBIDDEN, GAPI.SERVICE_NOT_AVAILABLE,
|
|
17095
17125
|
GAPI.BAD_REQUEST, GAPI.CUSTOMER_NOT_FOUND,
|
|
17096
17126
|
GAPI.FORBIDDEN, GAPI.PERMISSION_DENIED],
|
|
17097
17127
|
retryReasons=GAPI.SERVICE_NOT_AVAILABLE_RETRY_REASONS,
|
|
@@ -17099,39 +17129,77 @@ def doPrintShowAdmins():
|
|
|
17099
17129
|
except (GAPI.invalid, GAPI.userNotFound):
|
|
17100
17130
|
entityUnknownWarning(Ent.ADMINISTRATOR, userKey)
|
|
17101
17131
|
return
|
|
17102
|
-
except
|
|
17103
|
-
entityActionFailedExit([Ent.
|
|
17132
|
+
except GAPI.notFound as e:
|
|
17133
|
+
entityActionFailedExit([Ent.ADMIN_ROLE, kwargs['roleId']], str(e))
|
|
17134
|
+
except (GAPI.forbidden, GAPI.serviceNotAvailable) as e:
|
|
17135
|
+
entityActionFailedExit([Ent.ADMINISTRATOR, userKey], str(e))
|
|
17104
17136
|
except (GAPI.badRequest, GAPI.customerNotFound):
|
|
17105
17137
|
accessErrorExit(cd)
|
|
17106
17138
|
except (GAPI.forbidden, GAPI.permissionDenied) as e:
|
|
17107
17139
|
ClientAPIAccessDeniedExit(str(e))
|
|
17140
|
+
count = len(admins)
|
|
17141
|
+
groupMembers = {}
|
|
17142
|
+
expandedAdmins = []
|
|
17143
|
+
i = 0
|
|
17144
|
+
for admin in admins:
|
|
17145
|
+
i += 1
|
|
17146
|
+
if roleId and roleId != admin['roleId']:
|
|
17147
|
+
continue
|
|
17148
|
+
assignedTo = admin['assignedTo']
|
|
17149
|
+
if admin['assigneeType'] != 'group' or not recursive:
|
|
17150
|
+
_setNamesFromIds(admin, _getPrivileges(admin))
|
|
17151
|
+
if admin['assignedToField'] in typesSet:
|
|
17152
|
+
expandedAdmins.append(admin)
|
|
17153
|
+
continue
|
|
17154
|
+
if assignedTo not in groupMembers:
|
|
17155
|
+
membersList = []
|
|
17156
|
+
membersSet = set()
|
|
17157
|
+
level = 0
|
|
17158
|
+
getGroupMembers(cd, assignedTo, allGroupRoles, membersList, membersSet, i, count,
|
|
17159
|
+
memberOptions, memberDisplayOptions, level, {Ent.TYPE_USER})
|
|
17160
|
+
groupMembers[assignedTo] = membersList[:]
|
|
17161
|
+
_setNamesFromIds(admin, _getPrivileges(admin))
|
|
17162
|
+
if admin[assignedToIdEmailMap[assignedTo]['assignedToField']] not in typesSet:
|
|
17163
|
+
continue
|
|
17164
|
+
expandedAdmins.append(admin)
|
|
17165
|
+
if not groupMembers[assignedTo]:
|
|
17166
|
+
expandedAdmins.append(admin)
|
|
17167
|
+
continue
|
|
17168
|
+
admin['assigneeType'] = 'user'
|
|
17169
|
+
admin['assignedToGroup'] = assignedToIdEmailMap[assignedTo]['assigneeEmail']
|
|
17170
|
+
for member in groupMembers[assignedTo]:
|
|
17171
|
+
userAdmin = admin.copy()
|
|
17172
|
+
userAdmin['assignedTo'] = member['id']
|
|
17173
|
+
_setNamesFromIds(userAdmin, _getPrivileges(admin))
|
|
17174
|
+
expandedAdmins.append(userAdmin)
|
|
17175
|
+
admins = expandedAdmins
|
|
17176
|
+
count = len(expandedAdmins)
|
|
17108
17177
|
if not csvPF:
|
|
17109
|
-
count = len(admins)
|
|
17110
17178
|
performActionNumItems(count, Ent.ADMIN_ROLE_ASSIGNMENT)
|
|
17111
17179
|
Ind.Increment()
|
|
17112
17180
|
i = 0
|
|
17113
|
-
for admin in
|
|
17181
|
+
for admin in expandedAdmins:
|
|
17114
17182
|
i += 1
|
|
17115
|
-
if roleId and roleId != admin['roleId']:
|
|
17116
|
-
continue
|
|
17117
|
-
_setNamesFromIds(admin, _getPrivileges(admin))
|
|
17118
17183
|
printEntity([Ent.ADMIN_ROLE_ASSIGNMENT, admin['roleAssignmentId']], i, count)
|
|
17119
17184
|
Ind.Increment()
|
|
17120
17185
|
for field in PRINT_ADMIN_TITLES:
|
|
17121
17186
|
if field in admin:
|
|
17122
17187
|
if field == 'roleAssignmentId':
|
|
17123
17188
|
continue
|
|
17124
|
-
|
|
17125
|
-
|
|
17126
|
-
|
|
17127
|
-
|
|
17189
|
+
printKeyValueList([field, admin[field]])
|
|
17190
|
+
if showPrivileges:
|
|
17191
|
+
rolePrivileges = admin.get('rolePrivileges', [])
|
|
17192
|
+
jcount = len(rolePrivileges)
|
|
17193
|
+
if jcount > 0:
|
|
17194
|
+
printKeyValueList(['rolePrivileges', jcount])
|
|
17195
|
+
Ind.Increment()
|
|
17196
|
+
showJSON(None, rolePrivileges)
|
|
17197
|
+
Ind.Decrement()
|
|
17128
17198
|
Ind.Decrement()
|
|
17129
17199
|
Ind.Decrement()
|
|
17130
17200
|
else:
|
|
17131
|
-
for admin in
|
|
17132
|
-
|
|
17133
|
-
continue
|
|
17134
|
-
_setNamesFromIds(admin, _getPrivileges(admin))
|
|
17201
|
+
for admin in expandedAdmins:
|
|
17202
|
+
admin.pop('assignedToField')
|
|
17135
17203
|
if not oneItemPerRow or 'rolePrivileges' not in admin:
|
|
17136
17204
|
csvPF.WriteRowTitles(flattenJSON(admin))
|
|
17137
17205
|
else:
|
|
@@ -1138,6 +1138,7 @@ class GamCLArgs():
|
|
|
1138
1138
|
OB_ARGUMENT = 'argument'
|
|
1139
1139
|
OB_ASP_ID_LIST = 'ASPIDList'
|
|
1140
1140
|
OB_ASSET_ID = 'AssetID'
|
|
1141
|
+
OB_ADMIN_ASSIGNEE_TYPE_LIST = 'AdminAssigneeTypeList'
|
|
1141
1142
|
OB_BROWSER_ENROLLEMNT_TOKEN_ID = 'BrowserEnrollmentTokenID'
|
|
1142
1143
|
OB_BROWSER_ENTITY = 'BrowserEntity'
|
|
1143
1144
|
OB_BUILDING_ID = 'BuildingID'
|
|
@@ -1475,16 +1475,20 @@ gam delete admin <RoleAssignmentId>
|
|
|
1475
1475
|
## Display administrators
|
|
1476
1476
|
```
|
|
1477
1477
|
gam print admins [todrive <ToDriveAttribute>*]
|
|
1478
|
-
[user|group <EmailAddress>|<UniqueID>] [role <RoleItem>]
|
|
1479
|
-
[privileges] [oneitemperrow]
|
|
1478
|
+
[user|group <EmailAddress>|<UniqueID>] [role <RoleItem>]
|
|
1479
|
+
[recursive] [condition] [privileges] [oneitemperrow]
|
|
1480
1480
|
gam show admins
|
|
1481
|
-
[user|group <EmailAddress>|<UniqueID>] [role <RoleItem>]
|
|
1481
|
+
[user|group <EmailAddress>|<UniqueID>] [role <RoleItem>]
|
|
1482
|
+
[recursive] [condition] [privileges]
|
|
1482
1483
|
```
|
|
1483
1484
|
By default, all administrators and roles are displayed; choose from the following
|
|
1484
1485
|
options to limit the display:
|
|
1485
|
-
* `user <
|
|
1486
|
+
* `user|group <EmailAddress>|<UniqueID>` - Display assignments to this administrator
|
|
1486
1487
|
* `role <RoleItem>` - Display only administrators with this role
|
|
1487
1488
|
|
|
1489
|
+
By default, assignments to security groups are shown as a single item; use `recursive`
|
|
1490
|
+
to display assignments to the members of the security groups; the security group membershop is recursively expanded.
|
|
1491
|
+
|
|
1488
1492
|
* `condition` - Display any conditions associated with a role assignment
|
|
1489
1493
|
* `privileges` - Display privileges associated with each role assignment
|
|
1490
1494
|
|
|
@@ -567,7 +567,7 @@ By default, Gam displays the information as an indented list of keys and values.
|
|
|
567
567
|
```
|
|
568
568
|
gam calendar <CalendarEntity> show events [<EventEntity>] <EventDisplayProperty>*
|
|
569
569
|
[fields <EventFieldNameList>] [showdayofweek]
|
|
570
|
-
[countsly
|
|
570
|
+
[countsly|formatjson]
|
|
571
571
|
```
|
|
572
572
|
In `<EventEntity>`, any `<EventSelectProperty>` options must precede all other options.
|
|
573
573
|
|
|
@@ -586,8 +586,9 @@ By default, Gam displays event details, use `countsonly` to display only the num
|
|
|
586
586
|
```
|
|
587
587
|
gam calendar <CalendarEntity> print events [<EventEntity>] <EventDisplayProperty>*
|
|
588
588
|
[fields <EventFieldNameList>] [showdayofweek]
|
|
589
|
-
|
|
590
|
-
[
|
|
589
|
+
(addcsvdata <FieldName> <String>)*
|
|
590
|
+
[eventrowfilter]
|
|
591
|
+
[countsonly|(formatjson [quotechar <Character>])] [todrive <ToDriveAttribute>*]
|
|
591
592
|
```
|
|
592
593
|
In `<EventEntity>`, any `<EventSelectProperty>` options must precede all other options.
|
|
593
594
|
|
|
@@ -598,6 +599,9 @@ option `singleevents` to display all instances of a recurring event.
|
|
|
598
599
|
|
|
599
600
|
`showdayofweek` displays columns `start.dayOfWeek` and `end.dayOfWeek` when event start and end times are displayed.
|
|
600
601
|
|
|
602
|
+
Add additional columns of data from the command line to the output after the calendarId.
|
|
603
|
+
* `addcsvdata <FieldName> <String>`
|
|
604
|
+
|
|
601
605
|
By default, Gam displays the information as columns of fields; the following option causes the output to be in JSON format,
|
|
602
606
|
* `formatjson` - Display the fields in JSON format.
|
|
603
607
|
|
|
@@ -10,6 +10,23 @@ Add the `-s` option to the end of the above commands to suppress creating the `g
|
|
|
10
10
|
|
|
11
11
|
See [Downloads-Installs-GAM7](https://github.com/GAM-team/GAM/wiki/Downloads-Installs) for Windows or other options, including manual installation
|
|
12
12
|
|
|
13
|
+
### 7.23.05
|
|
14
|
+
|
|
15
|
+
Added option `recursive` to `gam print|show admins` that will display assignments to the members
|
|
16
|
+
of security groups assigned to roles; the security group membership is recursively expanded.
|
|
17
|
+
|
|
18
|
+
### 7.23.04
|
|
19
|
+
|
|
20
|
+
Added option `addcsvdata <FieldName> <String>` to `gam <UserTypeEntity> print events`
|
|
21
|
+
and `gam calendars <CalendarEntity> print events` that adds additional columns of data to the CSV file output.
|
|
22
|
+
An example would be to get the calendar name in addition to the calendar ID when printing events.
|
|
23
|
+
```
|
|
24
|
+
gam redirect csv ./Resources.csv print resources fields email,name
|
|
25
|
+
gam redirect csv ./ResourceEventCounts.csv multiprocess redirect stderr - multiprocess csv Resources.csv gam calendar "~resourceEmail" print events starttime -1y countsonly addcsvdata calendarName "~resourceName"
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Upgraded to OpenSSL 3.6.0.
|
|
29
|
+
|
|
13
30
|
### 7.23.03
|
|
14
31
|
|
|
15
32
|
Upgraded to OpenSSL 3.5.4.
|
|
@@ -252,7 +252,7 @@ writes the credentials into the file oauth2.txt.
|
|
|
252
252
|
admin@server:/Users/admin$ rm -f /Users/admin/GAMConfig/oauth2.txt
|
|
253
253
|
admin@server:/Users/admin$ gam version
|
|
254
254
|
WARNING: Config File: /Users/admin/GAMConfig/gam.cfg, Section: DEFAULT, Item: oauth2_txt, Value: /Users/admin/GAMConfig/oauth2.txt, Not Found
|
|
255
|
-
GAM 7.23.
|
|
255
|
+
GAM 7.23.05 - https://github.com/GAM-team/GAM - pyinstaller
|
|
256
256
|
GAM Team <google-apps-manager@googlegroups.com>
|
|
257
257
|
Python 3.13.7 64-bit final
|
|
258
258
|
macOS Tahoe 26.0.1 x86_64
|
|
@@ -653,7 +653,7 @@ By default, Gam displays the information as an indented list of keys and values.
|
|
|
653
653
|
```
|
|
654
654
|
gam <UserTypeEntity> show events <UserCalendarEntity> [<EventEntity>] <EventDisplayProperty>*
|
|
655
655
|
[fields <EventFieldNameList>] [showdayofweek]
|
|
656
|
-
[countsonly
|
|
656
|
+
[countsonly|formatjson]
|
|
657
657
|
```
|
|
658
658
|
In `<EventEntity>`, any `<EventSelectProperty>` options must precede all other options.
|
|
659
659
|
|
|
@@ -672,8 +672,8 @@ By default, Gam displays event details, use `countsonly` to display only the num
|
|
|
672
672
|
```
|
|
673
673
|
gam <UserTypeEntity> print events <UserCalendarEntity> [<EventEntity>] <EventDisplayProperty>*
|
|
674
674
|
[fields <EventFieldNameList>] [showdayofweek]
|
|
675
|
-
|
|
676
|
-
[formatjson [quotechar <Character>]] [todrive <ToDriveAttribute>*]
|
|
675
|
+
(addcsvdata <FieldName> <String>)*
|
|
676
|
+
[eventrowfilter] [countsonly|(formatjson [quotechar <Character>])] [todrive <ToDriveAttribute>*]
|
|
677
677
|
```
|
|
678
678
|
In `<EventEntity>`, any `<EventSelectProperty>` options must precede all other options.
|
|
679
679
|
|
|
@@ -684,6 +684,9 @@ option `singleevents` to display all instances of a recurring event.
|
|
|
684
684
|
|
|
685
685
|
`showdayofweek` displays columns `start.dayOfWeek` and `end.dayOfWeek` when event start and end times are displayed.
|
|
686
686
|
|
|
687
|
+
Add additional columns of data from the command line to the output after the calendarId.
|
|
688
|
+
* `addcsvdata <FieldName> <String>`
|
|
689
|
+
|
|
687
690
|
By default, Gam displays the information as columns of fields; the following option causes the output to be in JSON format,
|
|
688
691
|
* `formatjson` - Display the fields in JSON format.
|
|
689
692
|
|
|
@@ -398,8 +398,8 @@ By default, Gam displays the information as an indented list of keys and values.
|
|
|
398
398
|
gam <UserTypeEntity> show contacts
|
|
399
399
|
<PeoplePrintShowUserContactSelection>
|
|
400
400
|
[orderby firstname|lastname|(lastmodified ascending)|(lastnodified descending)
|
|
401
|
-
[
|
|
402
|
-
[formatjson]
|
|
401
|
+
[allfields|(fields <PeopleFieldNameList>)] [showgroups] [showmetadata]
|
|
402
|
+
[countsonly|formatjson]
|
|
403
403
|
```
|
|
404
404
|
By default, Gam displays all of a user's people contacts.
|
|
405
405
|
* `query <String>` - Display contacts based on the data in their fields
|
|
@@ -416,8 +416,8 @@ By default, Gam displays the information as an indented list of keys and values.
|
|
|
416
416
|
gam <UserTypeEntity> print contacts [todrive <ToDriveAttribute>*]
|
|
417
417
|
<PeoplePrintShowUserContactSelection>
|
|
418
418
|
[orderby firstname|lastname|(lastmodified ascending)|(lastnodified descending)
|
|
419
|
-
[
|
|
420
|
-
[formatjson [quotechar <Character>]]
|
|
419
|
+
[allfields|(fields <PeopleFieldNameList>)] [showgroups] [showmetadata]
|
|
420
|
+
[countsonly|(formatjson [quotechar <Character>])]
|
|
421
421
|
```
|
|
422
422
|
By default, Gam displays all of a user's people contacts.
|
|
423
423
|
* `query <String>` - Display contacts based on the data in their fields
|
|
@@ -547,8 +547,8 @@ User: user@domain.com, Delete maximum of 15 Other Contacts
|
|
|
547
547
|
```
|
|
548
548
|
gam <UserTypeEntity> show othercontacts
|
|
549
549
|
[<OtherContactsSelection>]
|
|
550
|
-
[
|
|
551
|
-
[formatjson]
|
|
550
|
+
[allfields|(fields <OtherContactsFieldNameList>)] [showmetadata]
|
|
551
|
+
[countsonly|formatjson]
|
|
552
552
|
```
|
|
553
553
|
By default, Gam displays all of a user's Other Contacts; use
|
|
554
554
|
`<OtherContactsSelection>` to display a selection of Other Contacts.
|
|
@@ -563,8 +563,8 @@ By default, Gam displays the information as an indented list of keys and values.
|
|
|
563
563
|
```
|
|
564
564
|
gam <UserTypeEntity> print othercontacts [todrive <ToDriveAttribute>*]
|
|
565
565
|
[<OtherContactsSelection>]
|
|
566
|
-
[
|
|
567
|
-
[formatjson [quotechar <Character>]]
|
|
566
|
+
[allfields|(fields <OtherContactsFieldNameList>)] [showmetadata]
|
|
567
|
+
[countsonly|(formatjson [quotechar <Character>])]
|
|
568
568
|
```
|
|
569
569
|
By default, Gam displays all of a user's Other Contacts; use
|
|
570
570
|
`<OtherContactsSelection>` to display a selection of Other Contacts.
|
|
@@ -122,7 +122,7 @@ gam <UserTypeEntity> show tasks [tasklists <TasklistEntity>]
|
|
|
122
122
|
[updatedmin <Time>]
|
|
123
123
|
[showcompleted [<Boolean>]] [showdeleted [<Boolean>]] [showhidden [<Boolean>]] [showall]
|
|
124
124
|
[orderby completed|due|updated]
|
|
125
|
-
[countsonly|
|
|
125
|
+
[compact|countsonly|formatjson]
|
|
126
126
|
```
|
|
127
127
|
The API only supports dates in `duemin` and `duemax' but you must supply a null time:
|
|
128
128
|
* `duemin YYYY-MM-DDT00:00:00Z` - Specify the starting due date
|
|
@@ -152,7 +152,7 @@ gam <UserTypeEntity> print tasks [tasklists <TasklistEntity>] [todrive <ToDriveA
|
|
|
152
152
|
[updatedmin <Time>]
|
|
153
153
|
[showcompleted [<Boolean>]] [showdeleted [<Boolean>]] [showhidden [<Boolean>]] [showall]
|
|
154
154
|
[orderby completed|due|updated]
|
|
155
|
-
[countsonly
|
|
155
|
+
[countsonly|(formatjson [quotechar <Character>])]
|
|
156
156
|
```
|
|
157
157
|
The API only supports dates in `duemin` and `duemax' but you must supply a null time:
|
|
158
158
|
* `duemin YYYY-MM-DDT00:00:00Z` - Specify the starting due date
|
|
@@ -230,7 +230,7 @@ By default, Gam displays the task lists as an indented list of keys and values.
|
|
|
230
230
|
|
|
231
231
|
```
|
|
232
232
|
gam <UserTypeEntity> print tasklists [todrive <ToDriveAttribute>*]
|
|
233
|
-
[countsonly
|
|
233
|
+
[countsonly|(formatjson [quotechar <Character>])]
|
|
234
234
|
```
|
|
235
235
|
By default, Gam displays the information as columns of fields; the following option causes the output to be in JSON format,
|
|
236
236
|
* `formatjson` - Display the fields in JSON format.
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Print the current version of Gam with details
|
|
4
4
|
```
|
|
5
5
|
gam version
|
|
6
|
-
GAM 7.23.
|
|
6
|
+
GAM 7.23.05 - https://github.com/GAM-team/GAM - pyinstaller
|
|
7
7
|
GAM Team <google-apps-manager@googlegroups.com>
|
|
8
8
|
Python 3.13.7 64-bit final
|
|
9
9
|
macOS Tahoe 26.0.1 x86_64
|
|
@@ -15,7 +15,7 @@ Time: 2023-06-02T21:10:00-07:00
|
|
|
15
15
|
Print the current version of Gam with details and time offset information
|
|
16
16
|
```
|
|
17
17
|
gam version timeoffset
|
|
18
|
-
GAM 7.23.
|
|
18
|
+
GAM 7.23.05 - https://github.com/GAM-team/GAM - pyinstaller
|
|
19
19
|
GAM Team <google-apps-manager@googlegroups.com>
|
|
20
20
|
Python 3.13.7 64-bit final
|
|
21
21
|
macOS Tahoe 26.0.1 x86_64
|
|
@@ -27,7 +27,7 @@ Your system time differs from www.googleapis.com by less than 1 second
|
|
|
27
27
|
Print the current version of Gam with extended details and SSL information
|
|
28
28
|
```
|
|
29
29
|
gam version extended
|
|
30
|
-
GAM 7.23.
|
|
30
|
+
GAM 7.23.05 - https://github.com/GAM-team/GAM - pyinstaller
|
|
31
31
|
GAM Team <google-apps-manager@googlegroups.com>
|
|
32
32
|
Python 3.13.7 64-bit final
|
|
33
33
|
macOS Tahoe 26.0.1 x86_64
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|