gam7 7.10.6__tar.gz → 7.10.8__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.10.6 → gam7-7.10.8}/.github/workflows/build.yml +0 -4
- {gam7-7.10.6 → gam7-7.10.8}/.github/workflows/pushwiki.yml +2 -0
- {gam7-7.10.6 → gam7-7.10.8}/PKG-INFO +1 -1
- {gam7-7.10.6 → gam7-7.10.8}/src/GamCommands.txt +1 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/GamUpdate.txt +17 -2
- {gam7-7.10.6 → gam7-7.10.8}/src/gam/__init__.py +62 -19
- {gam7-7.10.6 → gam7-7.10.8}/src/gam/gamlib/glapi.py +41 -17
- {gam7-7.10.6 → gam7-7.10.8}/src/gam/gamlib/glgapi.py +1 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/gam/gamlib/glmsgs.py +3 -3
- {gam7-7.10.6 → gam7-7.10.8}/src/gam/gamlib/glskus.py +2 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Authorization.md +10 -15
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Cloud-Identity-Devices.md +1 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Cloud-Identity-Policies.md +16 -2
- {gam7-7.10.6 → gam7-7.10.8}/wiki/GamUpdates.md +14 -1
- {gam7-7.10.6 → gam7-7.10.8}/wiki/How-to-Upgrade-Legacy-GAM-to-GAM7.md +2 -2
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Licenses.md +1 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Version-and-Help.md +6 -6
- {gam7-7.10.6 → gam7-7.10.8}/.github/ISSUE_TEMPLATE/aa-question.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/.github/ISSUE_TEMPLATE/za-bug-report.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/.github/ISSUE_TEMPLATE/zz-feature-request.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/.github/ISSUE_TEMPLATE.txt +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/.github/actions/decrypt.sh +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/.github/actions/entitlements.plist +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/.github/actions/package_exclusions.txt +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/.github/stale.yml +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/.github/workflows/codeql-analysis.yml +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/.github/workflows/get-cacerts.yml +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/.github/workflows/pypi.yml +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/.pre-commit-config.yaml +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/LICENSE +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/README.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/pyproject.toml +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/.gitignore +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/LICENSE +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/cacerts.pem +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/callgam.py +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/gam/__main__.py +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/gam/atom/__init__.py +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/gam/atom/auth.py +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/gam/atom/client.py +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/gam/atom/core.py +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/gam/atom/data.py +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/gam/atom/http.py +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/gam/atom/http_core.py +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/gam/atom/http_interface.py +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/gam/atom/mock_http.py +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/gam/atom/mock_http_core.py +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/gam/atom/mock_service.py +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/gam/atom/service.py +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/gam/atom/token_store.py +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/gam/atom/url.py +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/gam/cacerts.pem +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/gam/cbcm-v1.1beta1.json +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/gam/contactdelegation-v1.json +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/gam/datastudio-v1.json +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/gam/gamlib/__init__.py +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/gam/gamlib/glaction.py +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/gam/gamlib/glcfg.py +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/gam/gamlib/glclargs.py +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/gam/gamlib/glentity.py +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/gam/gamlib/glgdata.py +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/gam/gamlib/glglobals.py +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/gam/gamlib/glindent.py +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/gam/gamlib/gluprop.py +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/gam/gamlib/glverlibs.py +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/gam/gamlib/yubikey.py +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/gam/gdata/__init__.py +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/gam/gdata/alt/__init__.py +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/gam/gdata/alt/app_engine.py +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/gam/gdata/alt/appengine.py +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/gam/gdata/apps/__init__.py +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/gam/gdata/apps/audit/__init__.py +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/gam/gdata/apps/audit/service.py +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/gam/gdata/apps/contacts/__init__.py +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/gam/gdata/apps/contacts/service.py +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/gam/gdata/apps/service.py +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/gam/gdata/service.py +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/gam/gdata/urlfetch.py +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/gam/googleapiclient/__init__.py +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/gam/googleapiclient/_auth.py +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/gam/googleapiclient/_helpers.py +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/gam/googleapiclient/channel.py +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/gam/googleapiclient/discovery.py +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/gam/googleapiclient/discovery_cache/__init__.py +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/gam/googleapiclient/discovery_cache/appengine_memcache.py +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/gam/googleapiclient/discovery_cache/base.py +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/gam/googleapiclient/discovery_cache/file_cache.py +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/gam/googleapiclient/errors.py +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/gam/googleapiclient/http.py +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/gam/googleapiclient/mimeparse.py +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/gam/googleapiclient/model.py +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/gam/googleapiclient/schema.py +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/gam/googleapiclient/version.py +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/gam/iso8601/__init__.py +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/gam/iso8601/iso8601.py +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/gam/meet-v2beta.json +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/gam/serviceaccountlookup-v1.json +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/gam/six.py +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/gam-install.sh +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/gam-setup.bat +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/gam.exe.manifest +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/gam.py +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/gam.spec +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/gam.wxs +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/license.rtf +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/requirements-dev.txt +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/requirements.txt +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/setup.cfg +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/setup.py +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/tools/a_atleast_b.py +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/tools/gen-wix-xml-filelist.py +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/tools/mkGamRef.py +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/tools/openssl.props +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/src/version_info.txt.in +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/00scratch.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Addresses.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Administrators.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Alert-Center.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Aliases.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/BNF-Syntax.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Basic-Items.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Bulk-Processing.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/CSV-Input-Filtering.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/CSV-Output-Filtering.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/CSV-Special-Characters.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Calendars-Access.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Calendars-Events.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Calendars.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Chat-Bot.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Chrome-AUE-Counts.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Chrome-Browser-Cloud-Management.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Chrome-Installed-Apps.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Chrome-Needs-Attention-Counts.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Chrome-Policies.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Chrome-Printers.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Chrome-Profile-Management.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Chrome-Version-Counts.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Chrome-Version-History.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/ChromeOS-Devices.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Classroom-Courses.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Classroom-Guardians.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Classroom-Invitations.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Classroom-Membership.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Cloud-Channel.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Cloud-Identity-Groups-Membership.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Cloud-Identity-Groups.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Cloud-Storage.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Collections-of-ChromeOS-Devices.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Collections-of-Items.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Collections-of-Users.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Command-Data-From-Google-Docs-Sheets-Storage.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Command-Line-Parsing.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Command-Logging-Progress.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Context-Aware-Access-Levels.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Customer.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Domain-People-Contacts-Profiles.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Domain-SharedContacts.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Domains-Verification.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Domains.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Downloads-Installs.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Drive-File-Selection.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Drive-Items.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Drive-REST-API-v3.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Email-Audit-Monitor.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Find-File-Owner.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/GAM-Public-Chat-Room.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/GAM-Return-Codes.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/GAM-with-minimal-GCP-rights.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/GAM7-on-Android-Devices.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/GAM7-on-Chrome-OS-Devices.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Google-Data-Transfers.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Google-Network-Addresses.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Groups-Membership.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Groups.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/HTTPS-Proxy.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Home.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/How-to-Install-GAM7.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/How-to-Uninstall-GAM7.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/How-to-Update-GAM7.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/How-to-Upgrade-GAMADV-XTD3-to-GAM7.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Inbound-SSO.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Install-GAM-as-Python-Library.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/List-Items.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/List.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Meta-Commands-and-File-Redirection.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Mobile-Devices.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Organizational-Units.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Other-Resources.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Permission-Matches.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Python-Regular-Expressions.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/README.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Rclone.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Reports.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Reseller.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Resources.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Running-GAM7-securely-on-a-Google-Compute-Engine.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/SSL-Root-CA-Certificates.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Schemas.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Scripts.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Send-Email.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Shared-Drives.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Sites.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Tag-Replace.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Todrive.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Unmanaged-Accounts.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Upgrade-Benefits.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Users-Analytics-Admin.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Users-Application-Specific-Passwords.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Users-Backup-Verification-Codes.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Users-Calendars-Access.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Users-Calendars-Events.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Users-Calendars.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Users-Chat.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Users-Classification-Labels.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Users-Classroom-Profile.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Users-Contacts-Delegates.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Users-Contacts.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Users-Deprovision.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Users-Drive-Activity-Settings.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Users-Drive-Cleanup.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Users-Drive-Comments.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Users-Drive-Copy-Move.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Users-Drive-Files-Display.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Users-Drive-Files-Manage.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Users-Drive-Orphans.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Users-Drive-Ownership.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Users-Drive-Permissions.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Users-Drive-Query.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Users-Drive-Revisions.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Users-Drive-Shortcuts.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Users-Drive-Transfer.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Users-Forms.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Users-Gmail-CSE.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Users-Gmail-Delegates.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Users-Gmail-Filters.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Users-Gmail-Forwarding.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Users-Gmail-Labels.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Users-Gmail-Messages-Threads.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Users-Gmail-Profile.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Users-Gmail-S-MIME.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Users-Gmail-Send-As-Signature-Vacation.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Users-Gmail-Settings.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Users-Group-Membership.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Users-Keep-Notes.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Users-Looker-Studio.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Users-Meet.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Users-People-Contacts-Profiles.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Users-Photo.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Users-Profile-Photo.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Users-Profile-Sharing.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Users-Shared-Drives.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Users-Signout-Turnoff2SV.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Users-Spreadsheets.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Users-Tasks.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Users-Tokens.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Users-YouTube.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Users.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Using-GAM7-with-a-YubiKey.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Using-GAM7-with-a-delegated-admin-service-account.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Vault-Takeout.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/Verifying-a-GAM7-Build-is-Legitimate-and-Official.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/_Sidebar.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/gam.cfg.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/l-AdminSettingsExamples.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/l-Android-Installation.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/l-BulkOperations.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/l-CalendarExamples.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/l-Chat-Bot.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/l-Chrome-Browser-Management.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/l-Chrome-OS-Installation.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/l-Chrome-Policy-Settings.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/l-Cloud-Identity-Groups.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/l-Command-Reference-Calendar-Resources.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/l-Command-Reference-Calendars.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/l-Command-Reference-Definitions.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/l-Command-Reference-Drive.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/l-Command-Reference-Email.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/l-Command-Reference-Group-Attributes.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/l-Command-Reference-Groups.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/l-Command-Reference-Users.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/l-Context-Aware-Access-Levels.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/l-Creating-client_secrets.json-and-oauth2service.json.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/l-CreatingClientSecretsFile.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/l-Custom-Schemas.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/l-Data-Transfers.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/l-DomainVerification.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/l-ExamplesAccountAuditing.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/l-ExamplesCSV.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/l-ExamplesEmailSettings.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/l-ExamplesOrganizations.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/l-GAM-Discussion-Group.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/l-GAM-on-Android-and-Chrome-OS.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/l-GAM-options-files.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/l-GAM-with--minimal-GCP-rights.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/l-GAM3CSVListings.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/l-GAM3DirectoryCommands.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/l-GAM3GroupSettings.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/l-GAM7-FAQ.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/l-Google-Vault---Takeout-Commands.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/l-GoogleDriveManagement.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/l-Grouping-18-or-Older-Users.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/l-Home.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/l-How-to-upgrade-from-Standard-GAM.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/l-Inbound-SSO-Settings.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/l-LicenseExamples.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/l-Managing-Admins.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/l-Managing-CloudPrint-Printers.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/l-Managing-Devices.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/l-Managing-Google-Classroom.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/l-OAuthKeyManagement.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/l-Printers.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/l-ResellerCommands.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/l-Running-GAM-on-Google-Compute-Engine-(GCE)-Securely.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/l-SecurityExamples.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/l-UnmanagedUsersExamples.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/l-Use-a-Yubikey.md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/l-Using-GAM-with-a-delegated-admin-service-account-(DASA).md +0 -0
- {gam7-7.10.6 → gam7-7.10.8}/wiki/l-_Footer.md +0 -0
|
@@ -457,10 +457,6 @@ jobs:
|
|
|
457
457
|
- name: Custom wheels for Win arm64
|
|
458
458
|
if: runner.os == 'Windows' && runner.arch == 'ARM64'
|
|
459
459
|
run: |
|
|
460
|
-
latest_lxml_whl=$(curl https://api.github.com/repos/GAM-team/lxml-wheel/releases/latest -s | jq -r .assets.[0].browser_download_url)
|
|
461
|
-
echo "Downloading ${latest_lxml_whl}..."
|
|
462
|
-
curl -O -L "$latest_lxml_whl"
|
|
463
|
-
"$PYTHON" -m pip install lxml*.whl
|
|
464
460
|
latest_crypt_whl=$(curl https://api.github.com/repos/jay0lee/cryptography/releases/latest -s | jq -r .assets.[0].browser_download_url)
|
|
465
461
|
echo "Downloading ${latest_crypt_whl}..."
|
|
466
462
|
curl -O -L "$latest_crypt_whl"
|
|
@@ -279,6 +279,7 @@ If an item contains spaces, it should be surrounded by ".
|
|
|
279
279
|
geminiedu | 1010470004 | Gemini Education |
|
|
280
280
|
geminiedupremium| 1010470005 | Gemini Education Premium |
|
|
281
281
|
geminient| duetai | 1010470001 | Gemini Enterprise |
|
|
282
|
+
geminiultra | 1010470008 | Google AI Ultra for Business |
|
|
282
283
|
gsuitebasic | gafb | gafw | basic | Google-Apps-For-Business |
|
|
283
284
|
gsuitebusiness | gau | gsb | unlimited | Google-Apps-Unlimited |
|
|
284
285
|
gsuitebusinessarchived | gsbau | businessarchived | 1010340002 | Google Workspace Business - Archived User |
|
|
@@ -1,10 +1,25 @@
|
|
|
1
|
+
7.10.08
|
|
2
|
+
|
|
3
|
+
Fixed bug in commands that modify messages where the `labelids <LabelIdList>` option
|
|
4
|
+
could not be used unless one of these options was also specified: `query`, `matchlabel`, `ids`;
|
|
5
|
+
it can be now be used by itself.
|
|
6
|
+
|
|
7
|
+
7.10.07
|
|
8
|
+
|
|
9
|
+
Updated `gam <UserTypeEntity> copy|move drivefile` to hanndle additional instances of
|
|
10
|
+
the `cannotModifyInheritedPermission` error.
|
|
11
|
+
|
|
12
|
+
Added license SKU `Google AI Ultra for Business`
|
|
13
|
+
* ProductID - 101047
|
|
14
|
+
* SKUID - 1010470008 | geminiultra
|
|
15
|
+
|
|
1
16
|
7.10.06
|
|
2
17
|
|
|
3
|
-
|
|
18
|
+
Added option `clientstates` to `gam print devices` to include client states in device output.
|
|
4
19
|
|
|
5
20
|
7.10.05
|
|
6
21
|
|
|
7
|
-
Google renamed an error: cannotModifyInheritedTeamDrivePermission became cannotModifyInheritedPermission
|
|
22
|
+
Google renamed an error: `cannotModifyInheritedTeamDrivePermission` became `cannotModifyInheritedPermission`.
|
|
8
23
|
GAM will now handle the new error.
|
|
9
24
|
|
|
10
25
|
7.10.04
|
|
@@ -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.10.
|
|
28
|
+
__version__ = '7.10.08'
|
|
29
29
|
__license__ = 'Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0)'
|
|
30
30
|
|
|
31
31
|
#pylint: disable=wrong-import-position
|
|
@@ -5187,6 +5187,12 @@ def checkGAPIError(e, softErrors=False, retryOnHttpError=False, mapNotFound=True
|
|
|
5187
5187
|
return (0, None, None)
|
|
5188
5188
|
else:
|
|
5189
5189
|
systemErrorExit(HTTP_ERROR_RC, eContent)
|
|
5190
|
+
requiredScopes = ''
|
|
5191
|
+
wwwAuthenticate = e.resp.get('www-authenticate', '')
|
|
5192
|
+
if 'insufficient_scope' in wwwAuthenticate:
|
|
5193
|
+
mg = re.match(r'.+scope="(.+)"', wwwAuthenticate)
|
|
5194
|
+
if mg:
|
|
5195
|
+
requiredScopes = mg.group(1).split(' ')
|
|
5190
5196
|
if 'error' in error:
|
|
5191
5197
|
http_status = error['error']['code']
|
|
5192
5198
|
reason = ''
|
|
@@ -5256,6 +5262,8 @@ def checkGAPIError(e, softErrors=False, retryOnHttpError=False, mapNotFound=True
|
|
|
5256
5262
|
elif 'the authenticated user cannot access this service' in lmessage:
|
|
5257
5263
|
error = makeErrorDict(http_status, GAPI.SERVICE_NOT_AVAILABLE, message)
|
|
5258
5264
|
elif status == 'PERMISSION_DENIED' or 'the caller does not have permission' in lmessage or 'permission iam.serviceaccountkeys' in lmessage:
|
|
5265
|
+
if requiredScopes:
|
|
5266
|
+
message += f', {Msg.NO_SCOPES_FOR_API.format(API.findAPIforScope(requiredScopes))}'
|
|
5259
5267
|
error = makeErrorDict(http_status, GAPI.PERMISSION_DENIED, message)
|
|
5260
5268
|
elif http_status == 404:
|
|
5261
5269
|
if status == 'NOT_FOUND' or 'requested entity was not found' in lmessage or 'does not exist' in lmessage:
|
|
@@ -8864,6 +8872,7 @@ class CSVPrintFile():
|
|
|
8864
8872
|
GAPI.fileOrganizerNotYetEnabledForThisTeamDrive,
|
|
8865
8873
|
GAPI.fileOrganizerOnFoldersInSharedDriveOnly,
|
|
8866
8874
|
GAPI.fileOrganizerOnNonTeamDriveNotSupported,
|
|
8875
|
+
GAPI.cannotModifyInheritedPermission,
|
|
8867
8876
|
GAPI.teamDrivesFolderSharingNotSupported, GAPI.invalidLinkVisibility,
|
|
8868
8877
|
GAPI.invalidSharingRequest, GAPI.fileNeverWritable, GAPI.abusiveContentRestriction) as e:
|
|
8869
8878
|
entityActionFailedWarning([Ent.USER, user, Ent.SPREADSHEET, title,
|
|
@@ -29957,7 +29966,7 @@ DEVICE_ORDERBY_CHOICE_MAP = {
|
|
|
29957
29966
|
# [orderby <DeviceOrderByFieldName> [ascending|descending]]
|
|
29958
29967
|
# [all|company|personal|nocompanydevices|nopersonaldevices]
|
|
29959
29968
|
# [nodeviceusers|oneuserperrow]
|
|
29960
|
-
#
|
|
29969
|
+
# [clientstates]
|
|
29961
29970
|
# [formatjson [quotechar <Character>]]
|
|
29962
29971
|
# [showitemcountonly]
|
|
29963
29972
|
def doPrintCIDevices():
|
|
@@ -59522,6 +59531,7 @@ def _copyPermissions(drive, user, i, count, j, jcount,
|
|
|
59522
59531
|
GAPI.fileOrganizerNotYetEnabledForThisTeamDrive,
|
|
59523
59532
|
GAPI.fileOrganizerOnFoldersInSharedDriveOnly,
|
|
59524
59533
|
GAPI.fileOrganizerOnNonTeamDriveNotSupported,
|
|
59534
|
+
GAPI.cannotModifyInheritedPermission,
|
|
59525
59535
|
GAPI.teamDrivesFolderSharingNotSupported, GAPI.invalidLinkVisibility, GAPI.abusiveContentRestriction) as e:
|
|
59526
59536
|
entityActionFailedWarning(kvList, str(e), k, kcount)
|
|
59527
59537
|
break
|
|
@@ -60629,6 +60639,7 @@ def _updateMoveFilePermissions(drive, user, i, count,
|
|
|
60629
60639
|
GAPI.fileOrganizerNotYetEnabledForThisTeamDrive,
|
|
60630
60640
|
GAPI.fileOrganizerOnFoldersInSharedDriveOnly,
|
|
60631
60641
|
GAPI.fileOrganizerOnNonTeamDriveNotSupported,
|
|
60642
|
+
GAPI.cannotModifyInheritedPermission,
|
|
60632
60643
|
GAPI.teamDrivesFolderSharingNotSupported, GAPI.invalidLinkVisibility, GAPI.abusiveContentRestriction) as e:
|
|
60633
60644
|
entityActionFailedWarning(kvList, str(e), k, kcount)
|
|
60634
60645
|
break
|
|
@@ -63883,6 +63894,7 @@ def createDriveFileACL(users, useDomainAdminAccess=False):
|
|
|
63883
63894
|
GAPI.fileOrganizerNotYetEnabledForThisTeamDrive,
|
|
63884
63895
|
GAPI.fileOrganizerOnFoldersInSharedDriveOnly,
|
|
63885
63896
|
GAPI.fileOrganizerOnNonTeamDriveNotSupported,
|
|
63897
|
+
GAPI.cannotModifyInheritedPermission,
|
|
63886
63898
|
GAPI.teamDrivesFolderSharingNotSupported, GAPI.invalidLinkVisibility,
|
|
63887
63899
|
GAPI.invalidSharingRequest, GAPI.fileNeverWritable, GAPI.abusiveContentRestriction) as e:
|
|
63888
63900
|
entityActionFailedWarning([Ent.USER, user, entityType, fileName, Ent.PERMISSION_ID, permissionId], str(e), j, jcount)
|
|
@@ -64118,6 +64130,7 @@ def createDriveFilePermissions(users, useDomainAdminAccess=False):
|
|
|
64118
64130
|
GAPI.fileOrganizerNotYetEnabledForThisTeamDrive,
|
|
64119
64131
|
GAPI.fileOrganizerOnFoldersInSharedDriveOnly,
|
|
64120
64132
|
GAPI.fileOrganizerOnNonTeamDriveNotSupported,
|
|
64133
|
+
GAPI.cannotModifyInheritedPermission,
|
|
64121
64134
|
GAPI.teamDrivesFolderSharingNotSupported, GAPI.invalidLinkVisibility,
|
|
64122
64135
|
GAPI.invalidSharingRequest, GAPI.fileNeverWritable, GAPI.abusiveContentRestriction,
|
|
64123
64136
|
GAPI.serviceNotAvailable, GAPI.authError, GAPI.domainPolicy) as e:
|
|
@@ -70242,14 +70255,16 @@ def _finalizeMessageSelectParameters(parameters, queryOrIdsRequired):
|
|
|
70242
70255
|
for queryTimeName, queryTimeValue in iter(parameters['queryTimes'].items()):
|
|
70243
70256
|
parameters['query'] = parameters['query'].replace(f'#{queryTimeName}#', queryTimeValue)
|
|
70244
70257
|
_mapMessageQueryDates(parameters)
|
|
70245
|
-
elif queryOrIdsRequired and parameters['messageEntity'] is None:
|
|
70246
|
-
missingArgumentExit('query|matchlabel|ids')
|
|
70258
|
+
elif queryOrIdsRequired and parameters['messageEntity'] is None and not parameters['labelIds']:
|
|
70259
|
+
missingArgumentExit('query|matchlabel|ids|labelids')
|
|
70247
70260
|
else:
|
|
70248
70261
|
parameters['query'] = None
|
|
70249
70262
|
parameters['maxItems'] = parameters['maxToProcess'] if parameters['quick'] and not parameters['labelMatchPattern'] else 0
|
|
70250
70263
|
|
|
70251
70264
|
# gam <UserTypeEntity> archive messages <GroupItem>
|
|
70252
|
-
# (((query <QueryGmail> [querytime<String> <Date>]*) (matchlabel <LabelName>) [or|and])+
|
|
70265
|
+
# (((query <QueryGmail> [querytime<String> <Date>]*) (matchlabel <LabelName>) [or|and])+
|
|
70266
|
+
# [labelids <LabelIDList>]
|
|
70267
|
+
# [quick|notquick] [doit] [max_to_archive <Number>])|(ids <MessageIDEntity>)
|
|
70253
70268
|
# [csv [todrive <ToDriveAttribute>*]]
|
|
70254
70269
|
def archiveMessages(users):
|
|
70255
70270
|
def _processMessageFailed(user, idsList, errMsg, j=0, jcount=0):
|
|
@@ -70534,39 +70549,59 @@ def _processMessagesThreads(users, entityType):
|
|
|
70534
70549
|
csvPF.writeCSVfile(f'{Act.ToPerform()} Messages')
|
|
70535
70550
|
|
|
70536
70551
|
# gam <UserTypeEntity> delete message|messages
|
|
70537
|
-
# (((query <QueryGmail> [querytime<String> <Date>]*) (matchlabel <LabelName>) [or|and])+
|
|
70552
|
+
# (((query <QueryGmail> [querytime<String> <Date>]*) (matchlabel <LabelName>) [or|and])+
|
|
70553
|
+
# [labelids <LabelIDList>]
|
|
70554
|
+
# [quick|notquick] [doit] [max_to_delete <Number>])|(ids <MessageIDEntity>)
|
|
70538
70555
|
# [csv [todrive <ToDriveAttribute>*]]
|
|
70539
70556
|
# gam <UserTypeEntity> modify message|messages
|
|
70540
|
-
# (((query <QueryGmail> [querytime<String> <Date>]*) (matchlabel <LabelName>) [or|and])+
|
|
70557
|
+
# (((query <QueryGmail> [querytime<String> <Date>]*) (matchlabel <LabelName>) [or|and])+
|
|
70558
|
+
# [labelids <LabelIDList>]
|
|
70559
|
+
# [quick|notquick] [doit] [max_to_modify <Number>])|(ids <MessageIDEntity>)
|
|
70541
70560
|
# (addlabel <LabelName>)* (removelabel <LabelName>)*
|
|
70542
70561
|
# [csv [todrive <ToDriveAttribute>*]]
|
|
70543
70562
|
# gam <UserTypeEntity> spam message|messages
|
|
70544
|
-
# (((query <QueryGmail> [querytime<String> <Date>]*) (matchlabel <LabelName>) [or|and])+
|
|
70563
|
+
# (((query <QueryGmail> [querytime<String> <Date>]*) (matchlabel <LabelName>) [or|and])+
|
|
70564
|
+
# [labelids <LabelIDList>]
|
|
70565
|
+
# [quick|notquick] [doit] [max_to_spam <Number>])|(ids <MessageIDEntity>)
|
|
70545
70566
|
# [csv [todrive <ToDriveAttribute>*]]
|
|
70546
70567
|
# gam <UserTypeEntity> trash message|messages
|
|
70547
|
-
# (((query <QueryGmail> [querytime<String> <Date>]*) (matchlabel <LabelName>) [or|and])+
|
|
70568
|
+
# (((query <QueryGmail> [querytime<String> <Date>]*) (matchlabel <LabelName>) [or|and])+
|
|
70569
|
+
# [labelids <LabelIDList>]
|
|
70570
|
+
# [quick|notquick] [doit] [max_to_trash <Number>])|(ids <MessageIDEntity>)
|
|
70548
70571
|
# [csv [todrive <ToDriveAttribute>*]]
|
|
70549
70572
|
# gam <UserTypeEntity> untrash message|messages
|
|
70550
|
-
# (((query <QueryGmail> [querytime<String> <Date>]*) (matchlabel <LabelName>) [or|and])+
|
|
70573
|
+
# (((query <QueryGmail> [querytime<String> <Date>]*) (matchlabel <LabelName>) [or|and])+
|
|
70574
|
+
# [labelids <LabelIDList>]
|
|
70575
|
+
# [quick|notquick] [doit] [max_to_untrash <Number>])|(ids <MessageIDEntity>)
|
|
70551
70576
|
# [csv [todrive <ToDriveAttribute>*]]
|
|
70552
70577
|
def processMessages(users):
|
|
70553
70578
|
_processMessagesThreads(users, Ent.MESSAGE)
|
|
70554
70579
|
|
|
70555
70580
|
# gam <UserTypeEntity> delete thread|threads
|
|
70556
|
-
# (((query <QueryGmail> [querytime<String> <Date>]*) (matchlabel <LabelName>) [or|and])+
|
|
70581
|
+
# (((query <QueryGmail> [querytime<String> <Date>]*) (matchlabel <LabelName>) [or|and])+
|
|
70582
|
+
# [labelids <LabelIDList>]
|
|
70583
|
+
# [quick|notquick] [doit] [max_to_delete <Number>])|(ids <ThreadIDEntity>)
|
|
70557
70584
|
# [csv [todrive <ToDriveAttribute>*]]
|
|
70558
70585
|
# gam <UserTypeEntity> modify thread|threads
|
|
70559
|
-
# (((query <QueryGmail> [querytime<String> <Date>]*) (matchlabel <LabelName>) [or|and])+
|
|
70586
|
+
# (((query <QueryGmail> [querytime<String> <Date>]*) (matchlabel <LabelName>) [or|and])+
|
|
70587
|
+
# [labelids <LabelIDList>]
|
|
70588
|
+
# [quick|notquick] [doit] [max_to_modify <Number>])|(ids <ThreadIDEntity>)
|
|
70560
70589
|
# (addlabel <LabelName>)* (removelabel <LabelName>)*
|
|
70561
70590
|
# [csv [todrive <ToDriveAttribute>*]]
|
|
70562
70591
|
# gam <UserTypeEntity> spam thread|threads
|
|
70563
|
-
# (((query <QueryGmail> [querytime<String> <Date>]*) (matchlabel <LabelName>) [or|and])+
|
|
70592
|
+
# (((query <QueryGmail> [querytime<String> <Date>]*) (matchlabel <LabelName>) [or|and])+
|
|
70593
|
+
# [labelids <LabelIDList>]
|
|
70594
|
+
# [quick|notquick] [doit] [max_to_spam <Number>])|(ids <ThreadIDEntity>)
|
|
70564
70595
|
# [csv [todrive <ToDriveAttribute>*]]
|
|
70565
70596
|
# gam <UserTypeEntity> trash thread|threads
|
|
70566
|
-
# (((query <QueryGmail> [querytime<String> <Date>]*) (matchlabel <LabelName>) [or|and])+
|
|
70597
|
+
# (((query <QueryGmail> [querytime<String> <Date>]*) (matchlabel <LabelName>) [or|and])+
|
|
70598
|
+
# [labelids <LabelIDList>]
|
|
70599
|
+
# [quick|notquick] [doit] [max_to_trash <Number>])|(ids <ThreadIDEntity>)
|
|
70567
70600
|
# [csv [todrive <ToDriveAttribute>*]]
|
|
70568
70601
|
# gam <UserTypeEntity> untrash thread|threads
|
|
70569
|
-
# (((query <QueryGmail> [querytime<String> <Date>]*) (matchlabel <LabelName>) [or|and])+
|
|
70602
|
+
# (((query <QueryGmail> [querytime<String> <Date>]*) (matchlabel <LabelName>) [or|and])+
|
|
70603
|
+
# [labelids <LabelIDList>]
|
|
70604
|
+
# [quick|notquick] [doit] [max_to_untrash <Number>])|(ids <ThreadIDEntity>)
|
|
70570
70605
|
# [csv [todrive <ToDriveAttribute>*]]
|
|
70571
70606
|
def processThreads(users):
|
|
70572
70607
|
_processMessagesThreads(users, Ent.THREAD)
|
|
@@ -71988,7 +72023,9 @@ def printShowMessagesThreads(users, entityType):
|
|
|
71988
72023
|
csvPF.writeCSVfile('Message Counts' if not show_labels else 'Message Label Counts')
|
|
71989
72024
|
|
|
71990
72025
|
# gam <UserTypeEntity> print message|messages [todrive <ToDriveAttribute>*]
|
|
71991
|
-
# (((query <QueryGmail> [querytime<String> <Date>]*) (matchlabel <LabelName>) [or|and])*
|
|
72026
|
+
# (((query <QueryGmail> [querytime<String> <Date>]*) (matchlabel <LabelName>) [or|and])*
|
|
72027
|
+
# [labelids <LabelIDList>]
|
|
72028
|
+
# [quick|notquick] [max_to_print <Number>] [includespamtrash])|(ids <MessageIDEntity>)
|
|
71992
72029
|
# [labelmatchpattern <REMatchPattern>] [sendermatchpattern <REMatchPattern>]
|
|
71993
72030
|
# [headers all|<SMTPHeaderList>] [dateheaderformat iso|rfc2822|<String>] [dateheaderconverttimezone [<Boolean>]]
|
|
71994
72031
|
# [showlabels] [showbody] [showhtml] [showdate] [showsize] [showsnippet]
|
|
@@ -71998,7 +72035,9 @@ def printShowMessagesThreads(users, entityType):
|
|
|
71998
72035
|
# [showattachments [noshowtextplain]]]
|
|
71999
72036
|
# (addcsvdata <FieldName> <String>)*
|
|
72000
72037
|
# gam <UserTypeEntity> show message|messages
|
|
72001
|
-
# (((query <QueryGmail> [querytime<String> <Date>]*) (matchlabel <LabelName>) [or|and])*
|
|
72038
|
+
# (((query <QueryGmail> [querytime<String> <Date>]*) (matchlabel <LabelName>) [or|and])*
|
|
72039
|
+
# [labelids <LabelIDList>]
|
|
72040
|
+
# [quick|notquick] [max_to_show <Number>] [includespamtrash])|(ids <MessageIDEntity>)
|
|
72002
72041
|
# [labelmatchpattern <REMatchPattern>] [sendermatchpattern <REMatchPattern>]
|
|
72003
72042
|
# [headers all|<SMTPHeaderList>] [dateheaderformat iso|rfc2822|<String>] [dateheaderconverttimezone [<Boolean>]]
|
|
72004
72043
|
# [showlabels] [showbody] [showhtml] [showdate] [showsize] [showsnippet]
|
|
@@ -72011,7 +72050,9 @@ def printShowMessages(users):
|
|
|
72011
72050
|
printShowMessagesThreads(users, Ent.MESSAGE)
|
|
72012
72051
|
|
|
72013
72052
|
# gam <UserTypeEntity> print thread|threads [todrive <ToDriveAttribute>*]
|
|
72014
|
-
# (((query <QueryGmail> [querytime<String> <Date>]*) (matchlabel <LabelName>) [or|and])*
|
|
72053
|
+
# (((query <QueryGmail> [querytime<String> <Date>]*) (matchlabel <LabelName>) [or|and])*
|
|
72054
|
+
# [labelids <LabelIDList>]
|
|
72055
|
+
# [quick|notquick] [max_to_print <Number>] [includespamtrash])|(ids <ThreadIDEntity>)
|
|
72015
72056
|
# [labelmatchpattern <REMatchPattern>]
|
|
72016
72057
|
# [headers all|<SMTPHeaderList>] [dateheaderformat iso|rfc2822|<String>] [dateheaderconverttimezone [<Boolean>]]
|
|
72017
72058
|
# [showlabels] [showbody] [showhtml] [showdate] [showsize] [showsnippet]
|
|
@@ -72021,7 +72062,9 @@ def printShowMessages(users):
|
|
|
72021
72062
|
# [showattachments [noshowtextplain]]]
|
|
72022
72063
|
# (addcsvdata <FieldName> <String>)*
|
|
72023
72064
|
# gam <UserTypeEntity> show thread|threads
|
|
72024
|
-
# (((query <QueryGmail> [querytime<String> <Date>]*) (matchlabel <LabelName>) [or|and])*
|
|
72065
|
+
# (((query <QueryGmail> [querytime<String> <Date>]*) (matchlabel <LabelName>) [or|and])*
|
|
72066
|
+
# [labelids <LabelIDList>]
|
|
72067
|
+
# [quick|notquick] [max_to_show <Number>] [includespamtrash])|(ids <ThreadIDEntity>)
|
|
72025
72068
|
# [labelmatchpattern <REMatchPattern>]
|
|
72026
72069
|
# [headers all|<SMTPHeaderList>] [dateheaderformat iso|rfc2822|<String>] [dateheaderconverttimezone [<Boolean>]]
|
|
72027
72070
|
# [showlabels] [showbody] [showhtml] [showdate] [showsize] [showsnippet]
|
|
@@ -226,15 +226,15 @@ _INFO = {
|
|
|
226
226
|
CHROMEMANAGEMENT_TELEMETRY: {'name': 'Chrome Management API - Telemetry', 'version': 'v1', 'v2discovery': True, 'mappedAPI': CHROMEMANAGEMENT},
|
|
227
227
|
CHROMEPOLICY: {'name': 'Chrome Policy API', 'version': 'v1', 'v2discovery': True},
|
|
228
228
|
CHROMEVERSIONHISTORY: {'name': 'Chrome Version History API', 'version': 'v1', 'v2discovery': True},
|
|
229
|
-
CLOUDCHANNEL: {'name': '
|
|
230
|
-
CLOUDIDENTITY_DEVICES: {'name': 'Cloud Identity Devices
|
|
231
|
-
CLOUDIDENTITY_GROUPS: {'name': 'Cloud Identity Groups
|
|
232
|
-
CLOUDIDENTITY_GROUPS_BETA: {'name': 'Cloud Identity Groups
|
|
233
|
-
CLOUDIDENTITY_INBOUND_SSO: {'name': 'Cloud Identity Inbound SSO
|
|
234
|
-
CLOUDIDENTITY_ORGUNITS: {'name': 'Cloud Identity OrgUnits
|
|
235
|
-
CLOUDIDENTITY_ORGUNITS_BETA: {'name': 'Cloud Identity OrgUnits
|
|
236
|
-
CLOUDIDENTITY_POLICY: {'name': 'Cloud Identity Policy
|
|
237
|
-
CLOUDIDENTITY_USERINVITATIONS: {'name': 'Cloud Identity User Invitations
|
|
229
|
+
CLOUDCHANNEL: {'name': 'Cloud Channel API', 'version': 'v1', 'v2discovery': True},
|
|
230
|
+
CLOUDIDENTITY_DEVICES: {'name': 'Cloud Identity API - Devices', 'version': 'v1', 'v2discovery': True, 'mappedAPI': 'cloudidentity'},
|
|
231
|
+
CLOUDIDENTITY_GROUPS: {'name': 'Cloud Identity API - Groups', 'version': 'v1', 'v2discovery': True, 'mappedAPI': 'cloudidentity'},
|
|
232
|
+
CLOUDIDENTITY_GROUPS_BETA: {'name': 'Cloud Identity API - Groups Beta', 'version': 'v1beta1', 'v2discovery': True, 'mappedAPI': 'cloudidentity'},
|
|
233
|
+
CLOUDIDENTITY_INBOUND_SSO: {'name': 'Cloud Identity API - Inbound SSO Settings', 'version': 'v1', 'v2discovery': True, 'mappedAPI': 'cloudidentity'},
|
|
234
|
+
CLOUDIDENTITY_ORGUNITS: {'name': 'Cloud Identity API - OrgUnits', 'version': 'v1', 'v2discovery': True, 'mappedAPI': 'cloudidentity'},
|
|
235
|
+
CLOUDIDENTITY_ORGUNITS_BETA: {'name': 'Cloud Identity API - OrgUnits Beta', 'version': 'v1beta1', 'v2discovery': True, 'mappedAPI': 'cloudidentity'},
|
|
236
|
+
CLOUDIDENTITY_POLICY: {'name': 'Cloud Identity API - Policy', 'version': 'v1', 'v2discovery': True, 'mappedAPI': 'cloudidentity'},
|
|
237
|
+
CLOUDIDENTITY_USERINVITATIONS: {'name': 'Cloud Identity API - User Invitations', 'version': 'v1', 'v2discovery': True, 'mappedAPI': 'cloudidentity'},
|
|
238
238
|
CLOUDRESOURCEMANAGER: {'name': 'Cloud Resource Manager API v3', 'version': 'v3', 'v2discovery': True},
|
|
239
239
|
CONTACTS: {'name': 'Contacts API', 'version': 'v3', 'v2discovery': False},
|
|
240
240
|
CONTACTDELEGATION: {'name': 'Contact Delegation API', 'version': 'v1', 'v2discovery': True, 'localjson': True},
|
|
@@ -258,13 +258,13 @@ _INFO = {
|
|
|
258
258
|
LICENSING: {'name': 'License Manager API', 'version': 'v1', 'v2discovery': True},
|
|
259
259
|
LOOKERSTUDIO: {'name': 'Looker Studio API', 'version': 'v1', 'v2discovery': True, 'localjson': True},
|
|
260
260
|
MEET: {'name': 'Meet API', 'version': 'v2', 'v2discovery': True},
|
|
261
|
-
MEET_BETA: {'name': 'Meet API', 'version': 'v2beta', 'v2discovery': True, 'localjson': True, 'mappedAPI': MEET},
|
|
261
|
+
MEET_BETA: {'name': 'Meet API Beta', 'version': 'v2beta', 'v2discovery': True, 'localjson': True, 'mappedAPI': MEET},
|
|
262
262
|
OAUTH2: {'name': 'OAuth2 API', 'version': 'v2', 'v2discovery': False},
|
|
263
263
|
ORGPOLICY: {'name': 'Organization Policy API', 'version': 'v2', 'v2discovery': True},
|
|
264
264
|
PEOPLE: {'name': 'People API', 'version': 'v1', 'v2discovery': True},
|
|
265
265
|
PEOPLE_DIRECTORY: {'name': 'People Directory API', 'version': 'v1', 'v2discovery': True, 'mappedAPI': PEOPLE},
|
|
266
266
|
PEOPLE_OTHERCONTACTS: {'name': 'People API - Other Contacts', 'version': 'v1', 'v2discovery': True, 'mappedAPI': PEOPLE},
|
|
267
|
-
PRINTERS: {'name': 'Directory API Printers', 'version': 'directory_v1', 'v2discovery': True, 'mappedAPI': 'admin'},
|
|
267
|
+
PRINTERS: {'name': 'Directory API - Printers', 'version': 'directory_v1', 'v2discovery': True, 'mappedAPI': 'admin'},
|
|
268
268
|
PUBSUB: {'name': 'Pub / Sub API', 'version': 'v1', 'v2discovery': True},
|
|
269
269
|
REPORTS: {'name': 'Reports API', 'version': 'reports_v1', 'v2discovery': True, 'mappedAPI': 'admin'},
|
|
270
270
|
RESELLER: {'name': 'Reseller API', 'version': 'v1', 'v2discovery': True},
|
|
@@ -362,29 +362,29 @@ _CLIENT_SCOPES = [
|
|
|
362
362
|
'subscopes': READONLY,
|
|
363
363
|
'offByDefault': True,
|
|
364
364
|
'scope': 'https://www.googleapis.com/auth/apps.order'},
|
|
365
|
-
{'name': 'Cloud Identity Groups
|
|
365
|
+
{'name': 'Cloud Identity API - Groups',
|
|
366
366
|
'api': CLOUDIDENTITY_GROUPS,
|
|
367
367
|
'subscopes': READONLY,
|
|
368
368
|
'scope': 'https://www.googleapis.com/auth/cloud-identity.groups'},
|
|
369
|
-
{'name': 'Cloud Identity Groups
|
|
369
|
+
{'name': 'Cloud Identity API - Groups Beta (Enables group locking/unlocking)',
|
|
370
370
|
'api': CLOUDIDENTITY_GROUPS_BETA,
|
|
371
371
|
'subscopes': [],
|
|
372
372
|
'scope': 'https://www.googleapis.com/auth/cloud-identity.groups'},
|
|
373
|
-
{'name': 'Cloud Identity - Inbound SSO Settings',
|
|
373
|
+
{'name': 'Cloud Identity API - Inbound SSO Settings',
|
|
374
374
|
'api': CLOUDIDENTITY_INBOUND_SSO,
|
|
375
375
|
'subscopes': READONLY,
|
|
376
376
|
'scope': 'https://www.googleapis.com/auth/cloud-identity.inboundsso'},
|
|
377
|
-
{'name': 'Cloud Identity OrgUnits
|
|
377
|
+
{'name': 'Cloud Identity API - OrgUnits Beta',
|
|
378
378
|
'api': CLOUDIDENTITY_ORGUNITS_BETA,
|
|
379
379
|
'subscopes': READONLY,
|
|
380
380
|
'scope': 'https://www.googleapis.com/auth/cloud-identity.orgunits'},
|
|
381
|
-
{'name': 'Cloud Identity - Policy',
|
|
381
|
+
{'name': 'Cloud Identity API - Policy',
|
|
382
382
|
'api': CLOUDIDENTITY_POLICY,
|
|
383
383
|
'subscopes': READONLY,
|
|
384
384
|
'roByDefault': True,
|
|
385
385
|
'scope': 'https://www.googleapis.com/auth/cloud-identity.policies'
|
|
386
386
|
},
|
|
387
|
-
{'name': 'Cloud Identity User Invitations
|
|
387
|
+
{'name': 'Cloud Identity API - User Invitations',
|
|
388
388
|
'api': CLOUDIDENTITY_USERINVITATIONS,
|
|
389
389
|
'subscopes': READONLY,
|
|
390
390
|
'scope': 'https://www.googleapis.com/auth/cloud-identity.userinvitations'},
|
|
@@ -833,3 +833,27 @@ def getSvcAcctScopesList(userServiceAccountAccessOnly, svcAcctSpecialScopes):
|
|
|
833
833
|
|
|
834
834
|
def hasLocalJSON(api):
|
|
835
835
|
return _INFO[api].get('localjson', False)
|
|
836
|
+
|
|
837
|
+
def findAPIforScope(scopesList):
|
|
838
|
+
def checkScopeMatch(scope, cscope):
|
|
839
|
+
if cscope['scope'] == scope:
|
|
840
|
+
requiredAPIs.append(cscope['name'])
|
|
841
|
+
return True
|
|
842
|
+
if cscope['subscopes'] == READONLY and cscope['scope']+'.readonly' == scope:
|
|
843
|
+
requiredAPIs.append(cscope['name']+' (supports readonly)')
|
|
844
|
+
return True
|
|
845
|
+
return False
|
|
846
|
+
|
|
847
|
+
requiredAPIs = []
|
|
848
|
+
for scope in scopesList:
|
|
849
|
+
for cscope in _CLIENT_SCOPES:
|
|
850
|
+
if checkScopeMatch(scope, cscope):
|
|
851
|
+
break
|
|
852
|
+
else:
|
|
853
|
+
for cscope in _SVCACCT_SCOPES:
|
|
854
|
+
if checkScopeMatch(scope, cscope):
|
|
855
|
+
break
|
|
856
|
+
if not requiredAPIs:
|
|
857
|
+
requiredAPIs = scopesList
|
|
858
|
+
return ' or '.join(requiredAPIs)
|
|
859
|
+
|
|
@@ -229,6 +229,7 @@ DRIVE3_CREATE_ACL_THROW_REASONS = [BAD_REQUEST, INVALID, INVALID_SHARING_REQUEST
|
|
|
229
229
|
FILE_ORGANIZER_NOT_YET_ENABLED_FOR_THIS_TEAMDRIVE,
|
|
230
230
|
FILE_ORGANIZER_ON_FOLDERS_IN_SHARED_DRIVE_ONLY,
|
|
231
231
|
FILE_ORGANIZER_ON_NON_TEAMDRIVE_NOT_SUPPORTED,
|
|
232
|
+
CANNOT_MODIFY_INHERITED_PERMISSION,
|
|
232
233
|
TEAMDRIVES_FOLDER_SHARING_NOT_SUPPORTED, INVALID_LINK_VISIBILITY, ABUSIVE_CONTENT_RESTRICTION]
|
|
233
234
|
DRIVE3_GET_ACL_REASONS = DRIVE_USER_THROW_REASONS+[FILE_NOT_FOUND, FORBIDDEN, INTERNAL_ERROR,
|
|
234
235
|
INSUFFICIENT_ADMINISTRATOR_PRIVILEGES, INSUFFICIENT_FILE_PERMISSIONS,
|
|
@@ -184,8 +184,8 @@ ALREADY_EXISTS_IN_TARGET_FOLDER = 'Already exists in {0}: {1}'
|
|
|
184
184
|
ALREADY_EXISTS_USE_MERGE_ARGUMENT = 'Already exists; use the "merge" argument to merge the labels'
|
|
185
185
|
API_ACCESS_DENIED = 'API access Denied'
|
|
186
186
|
API_CALLS_RETRY_DATA = 'API calls retry data\n'
|
|
187
|
-
API_CHECK_CLIENT_AUTHORIZATION = 'Please make sure the Client ID: {0} is authorized for the appropriate API or scopes
|
|
188
|
-
API_CHECK_SVCACCT_AUTHORIZATION = 'Please make sure the Service Account Client ID: {0} is authorized for the appropriate API or scopes
|
|
187
|
+
API_CHECK_CLIENT_AUTHORIZATION = 'Please make sure the Client ID: {0} is authorized for the appropriate API or scopes: {1}\n\nRun: gam oauth create\n'
|
|
188
|
+
API_CHECK_SVCACCT_AUTHORIZATION = 'Please make sure the Service Account Client ID: {0} is authorized for the appropriate API or scopes: {1}\n\nRun: gam user {2} update serviceaccount\n'
|
|
189
189
|
API_ERROR_SETTINGS = 'API error, some settings not set'
|
|
190
190
|
ARE_BOTH_REQUIRED = 'Arguments {0} and {1} are both required'
|
|
191
191
|
ARE_MUTUALLY_EXCLUSIVE = 'Arguments {0} and {1} are mutually exclusive'
|
|
@@ -425,7 +425,7 @@ NO_LABELS_TO_PROCESS = 'No Labels to process'
|
|
|
425
425
|
NO_MESSAGES_WITH_LABEL = 'No Messages with Label'
|
|
426
426
|
NO_PARENTS_TO_CONVERT_TO_SHORTCUTS = 'No parents to convert to shortcuts'
|
|
427
427
|
NO_REPORT_AVAILABLE = 'No {0} report available.'
|
|
428
|
-
NO_SCOPES_FOR_API = 'There are no scopes authorized for the {0}'
|
|
428
|
+
NO_SCOPES_FOR_API = 'There are no scopes authorized for the API(s): {0}'
|
|
429
429
|
NO_SERIAL_NUMBERS_SPECIFIED = 'No serial numbers specified'
|
|
430
430
|
NO_SSO_PROFILE_MATCHES = 'No SSO profile matches display name {0}'
|
|
431
431
|
NO_SSO_PROFILE_ASSIGNED = 'No SSO profile assigned to {0} {1}'
|
|
@@ -107,6 +107,8 @@ _SKUS = {
|
|
|
107
107
|
'product': '101047', 'aliases': ['aisecurity'], 'displayName': 'AI Security'},
|
|
108
108
|
'1010470007': {
|
|
109
109
|
'product': '101047', 'aliases': ['aimeetingsandmessaging'], 'displayName': 'AI Meetings and Messaging'},
|
|
110
|
+
'1010470008': {
|
|
111
|
+
'product': '101047', 'aliases': ['geminiultra'], 'displayName': 'Google AI Ultra for Business'},
|
|
110
112
|
'1010490001': {
|
|
111
113
|
'product': '101049', 'aliases': ['eeu'], 'displayName': 'Endpoint Education Upgrade'},
|
|
112
114
|
'1010500001': {
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
- [Python Regular Expressions](Python-Regular-Expressions)
|
|
6
6
|
- [Definitions](#definitions)
|
|
7
7
|
- [Manage Projects](#manage-projects)
|
|
8
|
-
- [Authorize a
|
|
8
|
+
- [Authorize a user to create projects](#authorize-a-user-to-create-projects)
|
|
9
9
|
- [Authorize Service Account Key Uploads](#authorize-service-account-key-uploads)
|
|
10
10
|
- [Authorize GAM to create projects](#authorize-gam-to-create-projects)
|
|
11
11
|
- [Create a new GCP project folder](#create-a-new-gcp-project-folder)
|
|
@@ -74,11 +74,6 @@ Verify that all scopes are available:
|
|
|
74
74
|
* Select "ON for everyone"
|
|
75
75
|
* Click "SAVE"
|
|
76
76
|
|
|
77
|
-
Verify that internal apps are trusted.
|
|
78
|
-
* Access the admin console and go to Security -> Access and data control -> API Controls
|
|
79
|
-
* Check that "Trust internal, domain-owned apps" is present in the **Settings** section
|
|
80
|
-
* Click "SAVE"
|
|
81
|
-
|
|
82
77
|
If you run a Google Workspace Education SKU, verify that Classroom API is enabled if required.
|
|
83
78
|
* Access the admin console and go to Apps -> Google Workspace - Classroom
|
|
84
79
|
* Expand "Data access"
|
|
@@ -110,12 +105,13 @@ Verify whether the super admin you'll be using is in an OU where reauthenticatio
|
|
|
110
105
|
* Access the admin console and go to Security -> Overview
|
|
111
106
|
* Scroll down and open Google Cloud session control section
|
|
112
107
|
* Select the OU containing the super admin
|
|
113
|
-
* If Require reauthentication is selected
|
|
114
|
-
*
|
|
115
|
-
*
|
|
108
|
+
* If Require reauthentication is selected, you'll need either:
|
|
109
|
+
* uncheck Google Cloud Storage and any other GCP APIs that you selected on `gam oauth create` (reauth is only necessary for GCP APIs)
|
|
110
|
+
* enable "Exempt Trusted apps"
|
|
111
|
+
* rerun `gam oauth create` at whatever frequency is specified
|
|
116
112
|
|
|
117
113
|
Additional steps may be required if errors are encountered.
|
|
118
|
-
* [Authorize a
|
|
114
|
+
* [Authorize a user to create projects](#authorize-a-user-to-create-projects)
|
|
119
115
|
* [Authorize Service Account Key Uploads](#authorize-service-account-key-uploads)
|
|
120
116
|
* [Authorize GAM to create projects](#authorize-gam-to-create-projects)
|
|
121
117
|
|
|
@@ -169,8 +165,8 @@ For `print|show projects`, you can eliminate the password prompt and authenticat
|
|
|
169
165
|
gam print projects admin admin@domain.com
|
|
170
166
|
```
|
|
171
167
|
|
|
172
|
-
## Authorize a
|
|
173
|
-
If you try to create a project and get an error saying that the
|
|
168
|
+
## Authorize a user to create projects
|
|
169
|
+
If you try to create a project and get an error saying that the user you specified is not authorized to create projects,
|
|
174
170
|
perform these steps and then retry the create project command.
|
|
175
171
|
|
|
176
172
|
* Login as an existing super admin at console.cloud.google.com
|
|
@@ -184,13 +180,12 @@ perform these steps and then retry the create project command.
|
|
|
184
180
|
* Click in the Select a role box
|
|
185
181
|
* Type project creator in the Filter box
|
|
186
182
|
* Click Project Creator
|
|
187
|
-
* Click + Add Another Role
|
|
188
|
-
* Type orgpolicy.policyAdmin in the Filter box
|
|
189
|
-
* Click Organization Policy Administrator
|
|
190
183
|
* Click Save
|
|
191
184
|
|
|
192
185
|
## Authorize Service Account Key Uploads
|
|
193
186
|
|
|
187
|
+
*IMPORTANT:* Google best practice is to NOT use service account keys. Rather than overriding Google's default policy please consider [running GAM on Google Compute Engine Securely](https://github.com/GAM-team/GAM/wiki/l-Running-GAM-on-Google-Compute-Engine-(GCE)-Securely) so that service account keys are not necessary.
|
|
188
|
+
|
|
194
189
|
If you try to create a project and get an error saying that Constraint `constraints/iam.disableServiceAccountKeyUpload violated for service account projects/gam-project-xxxxx`,
|
|
195
190
|
perform these steps and then you should be able to authorize and use your project.
|
|
196
191
|
|
|
@@ -211,6 +211,7 @@ gam print devices [todrive <ToDriveAttribute>*]
|
|
|
211
211
|
[orderby <DeviceOrderByFieldName> [ascending|descending]]
|
|
212
212
|
[all|company|personal|nocompanydevices|nopersonaldevices]
|
|
213
213
|
[nodeviceusers|oneuserperrow]
|
|
214
|
+
[clientstates]
|
|
214
215
|
[formatjson [quotechar <Character>]]
|
|
215
216
|
```
|
|
216
217
|
By default, all devices are displayed; use the query options to limit the display.
|
|
@@ -12,14 +12,28 @@
|
|
|
12
12
|
|
|
13
13
|
## Notes
|
|
14
14
|
To use these commands you must update your client access authentication.
|
|
15
|
-
You'll enter
|
|
15
|
+
You'll enter 20r to turn on the Cloud Identity Policy scope; then continue
|
|
16
16
|
with authentication.
|
|
17
17
|
```
|
|
18
18
|
gam oauth delete
|
|
19
19
|
gam oauth create
|
|
20
20
|
...
|
|
21
|
-
[R]
|
|
21
|
+
[R] 20) Cloud Identity - Policy (supports readonly)
|
|
22
22
|
```
|
|
23
|
+
You must enable access to policies in the GCP cloud console.
|
|
24
|
+
|
|
25
|
+
* Login at console.cloud.google.com
|
|
26
|
+
* In the upper left click the three lines to the left of Google Cloud and select IAM & Admin
|
|
27
|
+
* Under IAM & Admin select IAM
|
|
28
|
+
* Click in the box to the right of Google Cloud
|
|
29
|
+
* Click the three dots at the right and select IAM/Permissions
|
|
30
|
+
* Now you should be at "Permissions for organization ..."
|
|
31
|
+
* Click on Grant Access
|
|
32
|
+
* Enter the GAM project creator address in Principals
|
|
33
|
+
* Click in the Select a role box
|
|
34
|
+
* Type orgpolicy.policyAdmin in the Filter box
|
|
35
|
+
* Click Organization Policy Administrator
|
|
36
|
+
* Click Save
|
|
23
37
|
|
|
24
38
|
## Definitions
|
|
25
39
|
```
|
|
@@ -10,9 +10,22 @@ 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.10.07
|
|
14
|
+
|
|
15
|
+
Updated `gam <UserTypeEntity> copy|move drivefile` to hanndle additional instances of
|
|
16
|
+
the `cannotModifyInheritedPermission` error.
|
|
17
|
+
|
|
18
|
+
Added license SKU `Google AI Ultra for Business`
|
|
19
|
+
* ProductID - 101047
|
|
20
|
+
* SKUID - 1010470008 | geminiultra
|
|
21
|
+
|
|
22
|
+
### 7.10.06
|
|
23
|
+
|
|
24
|
+
Added option `clientstates` to `gam print devices` to include client states in device output.
|
|
25
|
+
|
|
13
26
|
### 7.10.05
|
|
14
27
|
|
|
15
|
-
Google renamed an error: cannotModifyInheritedTeamDrivePermission became cannotModifyInheritedPermission
|
|
28
|
+
Google renamed an error: `cannotModifyInheritedTeamDrivePermission` became `cannotModifyInheritedPermission`.
|
|
16
29
|
GAM will now handle the new error.
|
|
17
30
|
|
|
18
31
|
### 7.10.04
|
|
@@ -251,7 +251,7 @@ writes the credentials into the file oauth2.txt.
|
|
|
251
251
|
admin@server:/Users/admin$ rm -f /Users/admin/GAMConfig/oauth2.txt
|
|
252
252
|
admin@server:/Users/admin$ gam version
|
|
253
253
|
WARNING: Config File: /Users/admin/GAMConfig/gam.cfg, Section: DEFAULT, Item: oauth2_txt, Value: /Users/admin/GAMConfig/oauth2.txt, Not Found
|
|
254
|
-
GAM 7.10.
|
|
254
|
+
GAM 7.10.07 - https://github.com/GAM-team/GAM - pyinstaller
|
|
255
255
|
GAM Team <google-apps-manager@googlegroups.com>
|
|
256
256
|
Python 3.13.5 64-bit final
|
|
257
257
|
MacOS Sequoia 15.5 x86_64
|
|
@@ -989,7 +989,7 @@ writes the credentials into the file oauth2.txt.
|
|
|
989
989
|
C:\>del C:\GAMConfig\oauth2.txt
|
|
990
990
|
C:\>gam version
|
|
991
991
|
WARNING: Config File: C:\GAMConfig\gam.cfg, Section: DEFAULT, Item: oauth2_txt, Value: C:\GAMConfig\oauth2.txt, Not Found
|
|
992
|
-
GAM 7.10.
|
|
992
|
+
GAM 7.10.07 - https://github.com/GAM-team/GAM - pythonsource
|
|
993
993
|
GAM Team <google-apps-manager@googlegroups.com>
|
|
994
994
|
Python 3.13.5 64-bit final
|
|
995
995
|
Windows-10-10.0.17134 AMD64
|
|
@@ -62,6 +62,7 @@
|
|
|
62
62
|
| Gemini Education | 1010470004 | geminiedu |
|
|
63
63
|
| Gemini Education Premium | 1010470005 | geminiedupremium |
|
|
64
64
|
| Gemini Enterprise | 1010470001 | geminient | duetai |
|
|
65
|
+
| Google AI Ultra for Business | 1010470008 | geminiultra |
|
|
65
66
|
| Google Apps Message Security | Google-Apps-For-Postini | postini |
|
|
66
67
|
| Google Chrome Device Management | Google-Chrome-Device-Management | cdm |
|
|
67
68
|
| Google Drive Storage 16TB | Google-Drive-storage-16TB | 16tb |
|