gam7 7.22.2__tar.gz → 7.22.5__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.22.2 → gam7-7.22.5}/.github/workflows/pushwiki.yml +1 -1
- {gam7-7.22.2 → gam7-7.22.5}/PKG-INFO +1 -1
- {gam7-7.22.2 → gam7-7.22.5}/src/GamCommands.txt +19 -5
- {gam7-7.22.2 → gam7-7.22.5}/src/GamUpdate.txt +30 -1
- {gam7-7.22.2 → gam7-7.22.5}/src/gam/__init__.py +156 -92
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Basic-Items.md +1 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/GamUpdates.md +17 -2
- {gam7-7.22.2 → gam7-7.22.5}/wiki/How-to-Upgrade-Legacy-GAM-to-GAM7.md +1 -1
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Users-Drive-Copy-Move.md +2 -7
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Users-Drive-Permissions.md +25 -13
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Vault-Takeout.md +25 -6
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Version-and-Help.md +3 -3
- {gam7-7.22.2 → gam7-7.22.5}/wiki/_Sidebar.md +0 -26
- {gam7-7.22.2 → gam7-7.22.5}/.github/ISSUE_TEMPLATE/aa-question.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/.github/ISSUE_TEMPLATE/za-bug-report.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/.github/ISSUE_TEMPLATE/zz-feature-request.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/.github/ISSUE_TEMPLATE.txt +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/.github/actions/decrypt.sh +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/.github/actions/entitlements.plist +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/.github/actions/package_exclusions.txt +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/.github/stale.yml +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/.github/workflows/build.yml +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/.github/workflows/codeql-analysis.yml +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/.github/workflows/get-cacerts.yml +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/.github/workflows/pypi.yml +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/LICENSE +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/README.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/pyproject.toml +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/src/.gitignore +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/src/LICENSE +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/src/README.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/src/callgam.py +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/src/gam/__main__.py +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/src/gam/atom/__init__.py +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/src/gam/atom/auth.py +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/src/gam/atom/client.py +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/src/gam/atom/core.py +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/src/gam/atom/data.py +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/src/gam/atom/http.py +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/src/gam/atom/http_core.py +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/src/gam/atom/http_interface.py +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/src/gam/atom/mock_http.py +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/src/gam/atom/mock_http_core.py +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/src/gam/atom/mock_service.py +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/src/gam/atom/service.py +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/src/gam/atom/token_store.py +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/src/gam/atom/url.py +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/src/gam/cacerts.pem +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/src/gam/cbcm-v1.1beta1.json +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/src/gam/contactdelegation-v1.json +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/src/gam/datastudio-v1.json +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/src/gam/gamlib/__init__.py +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/src/gam/gamlib/glaction.py +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/src/gam/gamlib/glapi.py +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/src/gam/gamlib/glcfg.py +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/src/gam/gamlib/glclargs.py +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/src/gam/gamlib/glentity.py +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/src/gam/gamlib/glgapi.py +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/src/gam/gamlib/glgdata.py +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/src/gam/gamlib/glglobals.py +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/src/gam/gamlib/glindent.py +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/src/gam/gamlib/glmsgs.py +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/src/gam/gamlib/glskus.py +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/src/gam/gamlib/gluprop.py +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/src/gam/gamlib/glverlibs.py +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/src/gam/gamlib/yubikey.py +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/src/gam/gdata/__init__.py +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/src/gam/gdata/alt/__init__.py +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/src/gam/gdata/alt/app_engine.py +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/src/gam/gdata/alt/appengine.py +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/src/gam/gdata/apps/__init__.py +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/src/gam/gdata/apps/audit/__init__.py +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/src/gam/gdata/apps/audit/service.py +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/src/gam/gdata/apps/contacts/__init__.py +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/src/gam/gdata/apps/contacts/service.py +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/src/gam/gdata/apps/service.py +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/src/gam/gdata/service.py +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/src/gam/gdata/urlfetch.py +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/src/gam/meet-v2beta.json +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/src/gam/serviceaccountlookup-v1.json +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/src/gam-install.sh +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/src/gam-setup.bat +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/src/gam.exe.manifest +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/src/gam.py +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/src/gam.spec +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/src/gam.wxs +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/src/license.rtf +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/src/tools/a_atleast_b.py +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/src/tools/gen-wix-xml-filelist.py +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/src/tools/hooks/hook-googleapiclient.model.py +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/src/tools/hooks/hook-httplib2.py +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/src/tools/mkGamRef.py +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/src/tools/openssl.props +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/src/tools/ssd.mjs +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/src/version_info.txt.in +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/00scratch.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Addresses.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Administrators.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Alert-Center.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Aliases.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Authorization.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/BNF-Syntax.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Bulk-Processing.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Business-Account-Management.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/CSV-Input-Filtering.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/CSV-Output-Filtering.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/CSV-Special-Characters.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Calendars-Access.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Calendars-Events.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Calendars.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Chat-Bot-Setup-Use.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Chrome-AUE-Counts.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Chrome-Browser-Cloud-Management.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Chrome-Installed-Apps.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Chrome-Needs-Attention-Counts.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Chrome-Policies.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Chrome-Printers.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Chrome-Profile-Management.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Chrome-Version-Counts.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Chrome-Version-History.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/ChromeOS-Devices.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Classroom-Courses.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Classroom-Guardians.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Classroom-Invitations.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Classroom-Membership.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Classroom-StudentGroups.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Cloud-Channel.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Cloud-Identity-Devices.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Cloud-Identity-Groups-Membership.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Cloud-Identity-Groups.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Cloud-Identity-Policies.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Cloud-Storage.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Collections-of-ChromeOS-Devices.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Collections-of-Items.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Collections-of-Users.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Command-Data-From-Google-Docs-Sheets-Storage.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Command-Line-Parsing.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Command-Logging-Progress.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Context-Aware-Access-Levels.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Customer.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Domain-People-Contacts-Profiles.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Domain-SharedContacts.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Domains-Verification.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Domains.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Downloads-Installs.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Drive-File-Selection.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Drive-Items.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Drive-REST-API-v3.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Email-Audit-Monitor.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Find-File-Owner.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/GAM-Public-Chat-Room.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/GAM-Release-Process.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/GAM-Return-Codes.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/GAM-with-minimal-GCP-rights.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/GAM7-FAQ.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/GAM7-on-Android-Devices.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/GAM7-on-Chrome-OS-Devices.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Global-Address-List.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Google-Data-Transfers.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Google-Network-Addresses.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Groups-Membership.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Groups.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/HTTPS-Proxy.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Home.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/How-to-Install-GAM7.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/How-to-Uninstall-GAM7.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/How-to-Update-GAM7.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/How-to-Upgrade-GAMADV-XTD3-to-GAM7.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Inbound-SSO.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Install-GAM-as-Python-Library.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Licenses.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/List-Items.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/List.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Meta-Commands-and-File-Redirection.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Mobile-Devices.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Organizational-Units.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Other-Resources.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Permission-Matches.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Python-Regular-Expressions.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/README.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Rclone.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Reports.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Reseller.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Resources.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Running-GAM7-securely-on-a-Google-Compute-Engine.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/SSL-Root-CA-Certificates.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Schemas.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Scripts.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Send-Email.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Shared-Drives.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Sites.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Tag-Replace.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Todrive.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Unmanaged-Accounts.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Upgrade-Benefits.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Users-Analytics-Admin.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Users-Application-Specific-Passwords.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Users-Backup-Verification-Codes.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Users-Calendars-Access.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Users-Calendars-Events.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Users-Calendars.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Users-Chat.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Users-Classification-Labels.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Users-Classroom-Profile.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Users-Contacts-Delegates.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Users-Contacts.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Users-Deprovision.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Users-Drive-Activity-Settings.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Users-Drive-Cleanup.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Users-Drive-Comments.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Users-Drive-Files-Display.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Users-Drive-Files-Manage.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Users-Drive-Orphans.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Users-Drive-Ownership.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Users-Drive-Query.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Users-Drive-Revisions.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Users-Drive-Shortcuts.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Users-Drive-Transfer.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Users-Forms.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Users-Gmail-CSE.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Users-Gmail-Delegates.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Users-Gmail-Filters.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Users-Gmail-Forwarding.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Users-Gmail-Labels.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Users-Gmail-Messages-Threads.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Users-Gmail-Profile.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Users-Gmail-S-MIME.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Users-Gmail-Send-As-Signature-Vacation.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Users-Gmail-Settings.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Users-Group-Membership.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Users-Keep-Notes.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Users-Looker-Studio.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Users-Meet.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Users-People-Contacts-Profiles.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Users-Photo.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Users-Profile-Photo.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Users-Profile-Sharing.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Users-Shared-Drives.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Users-Signout-Turnoff2SV.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Users-Spreadsheets.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Users-Tag-Manager.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Users-Tasks.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Users-Tokens.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Users-Web-Resources-and-Sites.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Users-YouTube.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Users.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Using-GAM7-with-a-YubiKey.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Using-GAM7-with-a-delegated-admin-service-account.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Using-GAM7-with-keyless-authentication-Workload-Identity-Federation.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/Verifying-a-GAM7-Build-is-Legitimate-and-Official.md +0 -0
- {gam7-7.22.2 → gam7-7.22.5}/wiki/gam.cfg.md +0 -0
- {gam7-7.22.2/wiki → gam7-7.22.5/wiki/legacy}/l-AdminSettingsExamples.md +0 -0
- {gam7-7.22.2/wiki → gam7-7.22.5/wiki/legacy}/l-Android-Installation.md +0 -0
- {gam7-7.22.2/wiki → gam7-7.22.5/wiki/legacy}/l-BulkOperations.md +0 -0
- {gam7-7.22.2/wiki → gam7-7.22.5/wiki/legacy}/l-CalendarExamples.md +0 -0
- {gam7-7.22.2/wiki → gam7-7.22.5/wiki/legacy}/l-Chat-Bot.md +0 -0
- {gam7-7.22.2/wiki → gam7-7.22.5/wiki/legacy}/l-Chrome-Browser-Management.md +0 -0
- {gam7-7.22.2/wiki → gam7-7.22.5/wiki/legacy}/l-Chrome-OS-Installation.md +0 -0
- {gam7-7.22.2/wiki → gam7-7.22.5/wiki/legacy}/l-Chrome-Policy-Settings.md +0 -0
- {gam7-7.22.2/wiki → gam7-7.22.5/wiki/legacy}/l-Cloud-Identity-Groups.md +0 -0
- {gam7-7.22.2/wiki → gam7-7.22.5/wiki/legacy}/l-Command-Reference-Calendar-Resources.md +0 -0
- {gam7-7.22.2/wiki → gam7-7.22.5/wiki/legacy}/l-Command-Reference-Calendars.md +0 -0
- {gam7-7.22.2/wiki → gam7-7.22.5/wiki/legacy}/l-Command-Reference-Definitions.md +0 -0
- {gam7-7.22.2/wiki → gam7-7.22.5/wiki/legacy}/l-Command-Reference-Drive.md +0 -0
- {gam7-7.22.2/wiki → gam7-7.22.5/wiki/legacy}/l-Command-Reference-Email.md +0 -0
- {gam7-7.22.2/wiki → gam7-7.22.5/wiki/legacy}/l-Command-Reference-Group-Attributes.md +0 -0
- {gam7-7.22.2/wiki → gam7-7.22.5/wiki/legacy}/l-Command-Reference-Groups.md +0 -0
- {gam7-7.22.2/wiki → gam7-7.22.5/wiki/legacy}/l-Command-Reference-Users.md +0 -0
- {gam7-7.22.2/wiki → gam7-7.22.5/wiki/legacy}/l-Context-Aware-Access-Levels.md +0 -0
- {gam7-7.22.2/wiki → gam7-7.22.5/wiki/legacy}/l-Creating-client_secrets.json-and-oauth2service.json.md +0 -0
- {gam7-7.22.2/wiki → gam7-7.22.5/wiki/legacy}/l-CreatingClientSecretsFile.md +0 -0
- {gam7-7.22.2/wiki → gam7-7.22.5/wiki/legacy}/l-Custom-Schemas.md +0 -0
- {gam7-7.22.2/wiki → gam7-7.22.5/wiki/legacy}/l-Data-Transfers.md +0 -0
- {gam7-7.22.2/wiki → gam7-7.22.5/wiki/legacy}/l-DomainVerification.md +0 -0
- {gam7-7.22.2/wiki → gam7-7.22.5/wiki/legacy}/l-ExamplesAccountAuditing.md +0 -0
- {gam7-7.22.2/wiki → gam7-7.22.5/wiki/legacy}/l-ExamplesCSV.md +0 -0
- {gam7-7.22.2/wiki → gam7-7.22.5/wiki/legacy}/l-ExamplesEmailSettings.md +0 -0
- {gam7-7.22.2/wiki → gam7-7.22.5/wiki/legacy}/l-ExamplesOrganizations.md +0 -0
- {gam7-7.22.2/wiki → gam7-7.22.5/wiki/legacy}/l-GAM-Discussion-Group.md +0 -0
- {gam7-7.22.2/wiki → gam7-7.22.5/wiki/legacy}/l-GAM-on-Android-and-Chrome-OS.md +0 -0
- {gam7-7.22.2/wiki → gam7-7.22.5/wiki/legacy}/l-GAM-options-files.md +0 -0
- {gam7-7.22.2/wiki → gam7-7.22.5/wiki/legacy}/l-GAM-with--minimal-GCP-rights.md +0 -0
- {gam7-7.22.2/wiki → gam7-7.22.5/wiki/legacy}/l-GAM3CSVListings.md +0 -0
- {gam7-7.22.2/wiki → gam7-7.22.5/wiki/legacy}/l-GAM3DirectoryCommands.md +0 -0
- {gam7-7.22.2/wiki → gam7-7.22.5/wiki/legacy}/l-GAM3GroupSettings.md +0 -0
- {gam7-7.22.2/wiki → gam7-7.22.5/wiki/legacy}/l-Google-Vault---Takeout-Commands.md +0 -0
- {gam7-7.22.2/wiki → gam7-7.22.5/wiki/legacy}/l-GoogleDriveManagement.md +0 -0
- {gam7-7.22.2/wiki → gam7-7.22.5/wiki/legacy}/l-Grouping-18-or-Older-Users.md +0 -0
- {gam7-7.22.2/wiki → gam7-7.22.5/wiki/legacy}/l-Home.md +0 -0
- {gam7-7.22.2/wiki → gam7-7.22.5/wiki/legacy}/l-How-to-upgrade-from-Standard-GAM.md +0 -0
- {gam7-7.22.2/wiki → gam7-7.22.5/wiki/legacy}/l-Inbound-SSO-Settings.md +0 -0
- {gam7-7.22.2/wiki → gam7-7.22.5/wiki/legacy}/l-LicenseExamples.md +0 -0
- {gam7-7.22.2/wiki → gam7-7.22.5/wiki/legacy}/l-Managing-Admins.md +0 -0
- {gam7-7.22.2/wiki → gam7-7.22.5/wiki/legacy}/l-Managing-CloudPrint-Printers.md +0 -0
- {gam7-7.22.2/wiki → gam7-7.22.5/wiki/legacy}/l-Managing-Devices.md +0 -0
- {gam7-7.22.2/wiki → gam7-7.22.5/wiki/legacy}/l-Managing-Google-Classroom.md +0 -0
- {gam7-7.22.2/wiki → gam7-7.22.5/wiki/legacy}/l-OAuthKeyManagement.md +0 -0
- {gam7-7.22.2/wiki → gam7-7.22.5/wiki/legacy}/l-Printers.md +0 -0
- {gam7-7.22.2/wiki → gam7-7.22.5/wiki/legacy}/l-ResellerCommands.md +0 -0
- {gam7-7.22.2/wiki → gam7-7.22.5/wiki/legacy}/l-SecurityExamples.md +0 -0
- {gam7-7.22.2/wiki → gam7-7.22.5/wiki/legacy}/l-UnmanagedUsersExamples.md +0 -0
- {gam7-7.22.2/wiki → gam7-7.22.5/wiki/legacy}/l-Using-GAM-with-a-delegated-admin-service-account-(DASA).md +0 -0
- {gam7-7.22.2/wiki → gam7-7.22.5/wiki/legacy}/l-_Footer.md +0 -0
|
@@ -565,6 +565,7 @@ If an item contains spaces, it should be surrounded by ".
|
|
|
565
565
|
See: https://support.google.com/mail/answer/7190
|
|
566
566
|
<QueryGroup> ::= <String>
|
|
567
567
|
See: https://developers.google.com/admin-sdk/directory/v1/guides/search-groups
|
|
568
|
+
<QueryItem> ::= <UniqueID>|<String>
|
|
568
569
|
<QueryMemberRestrictions> ::= <String>
|
|
569
570
|
See: https://cloud.google.com/identity/docs/reference/rest/v1beta1/SecuritySettings#MemberRestriction
|
|
570
571
|
<QueryMobile> ::= <String>
|
|
@@ -5422,6 +5423,15 @@ gam print vaultcounts [todrive <ToDriveAttributes>*]
|
|
|
5422
5423
|
gam print vaultcounts [todrive <ToDriveAttributes>*]
|
|
5423
5424
|
matter <MatterItem> operation <String> [wait <Integer>]
|
|
5424
5425
|
|
|
5426
|
+
gam create vaultexport|export matter <MatterItem> [name <String>]
|
|
5427
|
+
vaultquery <QueryItem>
|
|
5428
|
+
[driveclientsideencryption any|encrypted|unencrypted]
|
|
5429
|
+
[includeaccessinfo <Boolean>]
|
|
5430
|
+
[excludedrafts <Boolean>] [mailclientsideencryption any|encrypted|unencrypted]
|
|
5431
|
+
[showconfidentialmodecontent <Boolean>] [usenewexport <Boolean>] [exportlinkeddrivefiles <Boolean>]
|
|
5432
|
+
[format ics|mbox|pst|xml]
|
|
5433
|
+
[region any|europe|us] [showdetails|returnidonly]
|
|
5434
|
+
|
|
5425
5435
|
gam create vaultexport|export matter <MatterItem> [name <String>] corpus calendar|drive|gemini|groups|hangouts_chat|mail|voice
|
|
5426
5436
|
(accounts <EmailAddressEntity>) | (orgunit|org|ou <OrgUnitPath>) | everyone
|
|
5427
5437
|
(shareddrives|teamdrives (<SharedDriveIDList>|(select <FileSelector>|<CSVFileSelector>))) |
|
|
@@ -5432,12 +5442,13 @@ gam create vaultexport|export matter <MatterItem> [name <String>] corpus calenda
|
|
|
5432
5442
|
[locationquery <StringList>] [peoplequery <StringList>] [minuswords <StringList>]
|
|
5433
5443
|
[responsestatuses <AttendeeStatus>(,<AttendeeStatus>)*] [calendarversiondate <Date>|<Time>]
|
|
5434
5444
|
[(includeshareddrives <Boolean>)|(shareddrivesoption included|included_if_account_is_not_a_member|not_included)]
|
|
5435
|
-
[driveversiondate <Date>|<Time>]
|
|
5436
|
-
[driveclientsideencryption any|encrypted|unencrypted]
|
|
5445
|
+
[driveversiondate <Date>|<Time>]
|
|
5437
5446
|
[includerooms <Boolean>]
|
|
5447
|
+
(covereddata calllogs|textmessages|voicemails)*
|
|
5448
|
+
[driveclientsideencryption any|encrypted|unencrypted]
|
|
5449
|
+
[includeaccessinfo <Boolean>]
|
|
5438
5450
|
[excludedrafts <Boolean>] [mailclientsideencryption any|encrypted|unencrypted]
|
|
5439
5451
|
[showconfidentialmodecontent <Boolean>] [usenewexport <Boolean>] [exportlinkeddrivefiles <Boolean>]
|
|
5440
|
-
[covereddata calllogs|textmessages|voicemails]
|
|
5441
5452
|
[format ics|mbox|pst|xml]
|
|
5442
5453
|
[region any|europe|us] [showdetails|returnidonly]
|
|
5443
5454
|
gam delete vaultexport|export <ExportItem> matter <MatterItem>
|
|
@@ -5493,18 +5504,21 @@ gam show vaultexports|exports
|
|
|
5493
5504
|
[fields <VaultExportFieldNameList>] [shownames]
|
|
5494
5505
|
[formatjson]
|
|
5495
5506
|
|
|
5507
|
+
gam create vaulthold|hold matter <MatterItem> [name <String>]
|
|
5508
|
+
vaultquery <QueryItem>
|
|
5509
|
+
[showdetails|returnidonly]
|
|
5496
5510
|
gam create vaulthold|hold matter <MatterItem> [name <String>] corpus calendar|drive|mail|groups|hangouts_chat|voice
|
|
5497
5511
|
[(accounts|groups|users <EmailItemList>) | (orgunit|org|ou <OrgUnit>)]
|
|
5498
5512
|
[query <QueryVaultCorpus>]
|
|
5499
5513
|
[terms <String>] [start|starttime <Date>|<Time>] [end|endtime <Date>|<Time>]
|
|
5500
|
-
[includerooms <Boolean>]
|
|
5514
|
+
[includerooms <Boolean>] (covereddata calllogs|textmessages|voicemails)*
|
|
5501
5515
|
[includeshareddrives <Boolean>]
|
|
5502
5516
|
[showdetails|returnidonly]
|
|
5503
5517
|
gam update vaulthold|hold <HoldItem> matter <MatterItem>
|
|
5504
5518
|
[([addaccounts|addgroups|addusers <EmailItemList>] [removeaccounts|removegroups|removeusers <EmailItemList>]) | (orgunit|org|ou <OrgUnit>)]
|
|
5505
5519
|
[query <QueryVaultCorpus>]
|
|
5506
5520
|
[terms <String>] [start|starttime <Date>|<Time>] [end|endtime <Date>|<Time>]
|
|
5507
|
-
[includerooms <Boolean>]
|
|
5521
|
+
[includerooms <Boolean>] (covereddata calllogs|textmessages|voicemails)*
|
|
5508
5522
|
[includeshareddrives <Boolean>]
|
|
5509
5523
|
[showdetails]
|
|
5510
5524
|
gam delete vaulthold|hold <HoldItem> matter <MatterItem>
|
|
@@ -1,7 +1,36 @@
|
|
|
1
|
+
7.22.05
|
|
2
|
+
|
|
3
|
+
Added a variant of `gam create vaultexport` that gets its query parameters from a saved Vault query.
|
|
4
|
+
|
|
5
|
+
```
|
|
6
|
+
gam create vaultexport|export matter <MatterItem> [name <String>]
|
|
7
|
+
vaultquery <QueryItem>
|
|
8
|
+
[driveclientsideencryption any|encrypted|unencrypted]
|
|
9
|
+
[includeaccessinfo <Boolean>]
|
|
10
|
+
[excludedrafts <Boolean>] [mailclientsideencryption any|encrypted|unencrypted]
|
|
11
|
+
[showconfidentialmodecontent <Boolean>] [usenewexport <Boolean>] [exportlinkeddrivefiles <Boolean>]
|
|
12
|
+
[format ics|mbox|pst|xml]
|
|
13
|
+
[region any|europe|us] [showdetails|returnidonly]
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
7.22.04
|
|
17
|
+
|
|
18
|
+
Added a variant of `gam create vaulthold` that gets its parameters from a saved Vault query.
|
|
19
|
+
```
|
|
20
|
+
gam create vaulthold matter <MatterItem> [name <String>]
|
|
21
|
+
vaultquery <QueryItem>
|
|
22
|
+
[showdetails|returnidonly]
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
7.22.03
|
|
26
|
+
|
|
27
|
+
Fix backwards compatability bug introduced in 7.22.00 for `gam print users` that changed `suspended`
|
|
28
|
+
from a field name to a query option; it is now correctly interpreted as a field name.
|
|
29
|
+
|
|
1
30
|
7.22.02
|
|
2
31
|
|
|
3
32
|
An update to the httplib2 library caused GAM proxy connections to fail; this has been fixed
|
|
4
|
-
by
|
|
33
|
+
by including the pysocks library needed by the latest httplib2 library.
|
|
5
34
|
|
|
6
35
|
7.22.00
|
|
7
36
|
|
|
@@ -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.22.
|
|
28
|
+
__version__ = '7.22.05'
|
|
29
29
|
__license__ = 'Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0)'
|
|
30
30
|
|
|
31
31
|
#pylint: disable=wrong-import-position
|
|
@@ -18989,10 +18989,10 @@ def doPrintAliases():
|
|
|
18989
18989
|
pass
|
|
18990
18990
|
elif myarg == 'select':
|
|
18991
18991
|
_, users = getEntityToModify(defaultEntityType=Cmd.ENTITY_USERS)
|
|
18992
|
-
elif myarg
|
|
18993
|
-
isSuspended =
|
|
18994
|
-
elif myarg
|
|
18995
|
-
isArchived =
|
|
18992
|
+
elif myarg == 'issuspended':
|
|
18993
|
+
isSuspended = getBoolean()
|
|
18994
|
+
elif myarg == 'isarchived':
|
|
18995
|
+
isArchived = getBoolean()
|
|
18996
18996
|
elif myarg in {'user','users'}:
|
|
18997
18997
|
users.extend(convertEntityToList(getString(Cmd.OB_EMAIL_ADDRESS_LIST, minLen=0)))
|
|
18998
18998
|
elif myarg in {'group', 'groups'}:
|
|
@@ -41654,7 +41654,7 @@ def convertQueryNameToID(v, nameOrId, matterId, matterNameId):
|
|
|
41654
41654
|
query = callGAPI(v.matters().savedQueries(), 'get',
|
|
41655
41655
|
throwReasons=[GAPI.NOT_FOUND, GAPI.BAD_REQUEST, GAPI.FORBIDDEN, GAPI.INVALID_ARGUMENT],
|
|
41656
41656
|
matterId=matterId, savedQueryId=cg.group(1))
|
|
41657
|
-
return (query['savedQueryId'], query['displayName'], formatVaultNameId(query['savedQueryId'], query['displayName']))
|
|
41657
|
+
return (query['savedQueryId'], query['displayName'], formatVaultNameId(query['savedQueryId'], query['displayName']), query['query'])
|
|
41658
41658
|
except (GAPI.notFound, GAPI.badRequest):
|
|
41659
41659
|
entityDoesNotHaveItemExit([Ent.VAULT_MATTER, matterNameId, Ent.VAULT_QUERY, nameOrId])
|
|
41660
41660
|
except (GAPI.forbidden, GAPI.invalidArgument) as e:
|
|
@@ -41663,12 +41663,12 @@ def convertQueryNameToID(v, nameOrId, matterId, matterNameId):
|
|
|
41663
41663
|
try:
|
|
41664
41664
|
queries = callGAPIpages(v.matters().savedQueries(), 'list', 'savedQueries',
|
|
41665
41665
|
throwReasons=[GAPI.FORBIDDEN, GAPI.INVALID_ARGUMENT],
|
|
41666
|
-
matterId=matterId, fields='savedQueries(savedQueryId,displayName),nextPageToken')
|
|
41666
|
+
matterId=matterId, fields='savedQueries(savedQueryId,displayName,query),nextPageToken')
|
|
41667
41667
|
except (GAPI.forbidden, GAPI.invalidArgument) as e:
|
|
41668
41668
|
ClientAPIAccessDeniedExit(str(e))
|
|
41669
41669
|
for query in queries:
|
|
41670
41670
|
if query['displayName'].lower() == nameOrIdlower:
|
|
41671
|
-
return (query['savedQueryId'], query['displayName'], formatVaultNameId(query['savedQueryId'], query['displayName']))
|
|
41671
|
+
return (query['savedQueryId'], query['displayName'], formatVaultNameId(query['savedQueryId'], query['displayName']), query['query'])
|
|
41672
41672
|
entityDoesNotHaveItemExit([Ent.VAULT_MATTER, matterNameId, Ent.VAULT_QUERY, nameOrId])
|
|
41673
41673
|
|
|
41674
41674
|
def getMatterItem(v, state=None):
|
|
@@ -41891,12 +41891,13 @@ def _buildVaultQuery(myarg, query, corpusArgumentMap):
|
|
|
41891
41891
|
query['hangoutsChatOptions'] = {'includeRooms': getBoolean()}
|
|
41892
41892
|
# mail
|
|
41893
41893
|
elif myarg == 'excludedrafts':
|
|
41894
|
-
query
|
|
41894
|
+
query.setdefault('mailOptions', {})['excludeDrafts'] = getBoolean()
|
|
41895
41895
|
elif myarg == 'mailclientsideencryption':
|
|
41896
41896
|
query.setdefault('mailOptions', {})['clientSideEncryptedOption'] = getChoice(VAULT_CSE_OPTION_MAP, mapChoice=True)
|
|
41897
41897
|
# voice
|
|
41898
41898
|
elif myarg == 'covereddata':
|
|
41899
|
-
query
|
|
41899
|
+
query.setdefault('voiceOptions', {'coveredData': []})
|
|
41900
|
+
query['voiceOptions']['coveredData'].append(getChoice(VAULT_VOICE_COVERED_DATA_MAP, mapChoice=True))
|
|
41900
41901
|
|
|
41901
41902
|
def _validateVaultQuery(body, corpusArgumentMap):
|
|
41902
41903
|
if 'corpus' not in body['query']:
|
|
@@ -41908,7 +41909,16 @@ def _validateVaultQuery(body, corpusArgumentMap):
|
|
|
41908
41909
|
if body['query']['corpus'] != corpus:
|
|
41909
41910
|
body['exportOptions'].pop(options, None)
|
|
41910
41911
|
|
|
41911
|
-
# gam create vaultexport|export matter <MatterItem> [name <String>]
|
|
41912
|
+
# gam create vaultexport|export matter <MatterItem> [name <String>]
|
|
41913
|
+
# vaultquery <QueryItem>
|
|
41914
|
+
# [driveclientsideencryption any|encrypted|unencrypted]
|
|
41915
|
+
# [includeaccessinfo <Boolean>]
|
|
41916
|
+
# [excludedrafts <Boolean>] [mailclientsideencryption any|encrypted|unencrypted]
|
|
41917
|
+
# [showconfidentialmodecontent <Boolean>] [usenewexport <Boolean>] [exportlinkeddrivefiles <Boolean>]
|
|
41918
|
+
# [format ics|mbox|pst|xml]
|
|
41919
|
+
# [region any|europe|us] [showdetails|returnidonly]
|
|
41920
|
+
# gam create vaultexport|export matter <MatterItem> [name <String>]
|
|
41921
|
+
# corpus calendar|drive|gemini|groups|hangouts_chat|mail|voice
|
|
41912
41922
|
# (accounts <EmailAddressEntity>) | (orgunit|org|ou <OrgUnitPath>) | everyone
|
|
41913
41923
|
# (shareddrives|teamdrives (<SharedDriveIDList>|(select <FileSelector>|<CSVFileSelector>))) |
|
|
41914
41924
|
# (rooms (<ChatSpaceList>|(select <FileSelector>|<CSVFileSelector>))) |
|
|
@@ -41918,23 +41928,25 @@ def _validateVaultQuery(body, corpusArgumentMap):
|
|
|
41918
41928
|
# [locationquery <StringList>] [peoplequery <StringList>] [minuswords <StringList>]
|
|
41919
41929
|
# [responsestatuses <AttendeeStatus>(,<AttendeeStatus>)*] [calendarversiondate <Date>|<Time>]
|
|
41920
41930
|
# [(includeshareddrives <Boolean>)|(shareddrivesoption included|included_if_account_is_not_a_member|not_included)]
|
|
41921
|
-
# [driveversiondate <Date>|<Time>]
|
|
41922
|
-
# [driveclientsideencryption any|encrypted|unencrypted]
|
|
41931
|
+
# [driveversiondate <Date>|<Time>]
|
|
41923
41932
|
# [includerooms <Boolean>]
|
|
41933
|
+
# (covereddata calllogs|textmessages|voicemails)*
|
|
41934
|
+
# [driveclientsideencryption any|encrypted|unencrypted]
|
|
41935
|
+
# [includeaccessinfo <Boolean>]
|
|
41924
41936
|
# [excludedrafts <Boolean>] [mailclientsideencryption any|encrypted|unencrypted]
|
|
41925
41937
|
# [showconfidentialmodecontent <Boolean>] [usenewexport <Boolean>] [exportlinkeddrivefiles <Boolean>]
|
|
41926
|
-
# [covereddata calllogs|textmessages|voicemails]
|
|
41927
41938
|
# [format ics|mbox|pst|xml]
|
|
41928
41939
|
# [region any|europe|us] [showdetails|returnidonly]
|
|
41929
41940
|
def doCreateVaultExport():
|
|
41930
41941
|
v = buildGAPIObject(API.VAULT)
|
|
41931
41942
|
matterId = None
|
|
41932
41943
|
body = {'query': {'dataScope': 'ALL_DATA'}, 'exportOptions': {}}
|
|
41944
|
+
includeAccessInfo = None
|
|
41933
41945
|
exportFormat = None
|
|
41946
|
+
useNewExport = None
|
|
41934
41947
|
showConfidentialModeContent = None
|
|
41935
41948
|
exportLinkedDriveFiles = None
|
|
41936
41949
|
returnIdOnly = showDetails = False
|
|
41937
|
-
useNewExport = None
|
|
41938
41950
|
while Cmd.ArgumentsRemaining():
|
|
41939
41951
|
myarg = getArgument()
|
|
41940
41952
|
if myarg == 'matter':
|
|
@@ -41942,22 +41954,22 @@ def doCreateVaultExport():
|
|
|
41942
41954
|
body['matterId'] = matterId
|
|
41943
41955
|
elif myarg == 'name':
|
|
41944
41956
|
body['name'] = getString(Cmd.OB_STRING)
|
|
41957
|
+
elif matterId is not None and myarg == 'vaultquery':
|
|
41958
|
+
_, _, _, body['query'] = convertQueryNameToID(v, getString(Cmd.OB_QUERY_ITEM), matterId, matterNameId)
|
|
41945
41959
|
elif myarg in VAULT_QUERY_ARGS:
|
|
41946
41960
|
_buildVaultQuery(myarg, body['query'], VAULT_CORPUS_ARGUMENT_MAP)
|
|
41947
|
-
elif myarg == '
|
|
41948
|
-
|
|
41961
|
+
elif myarg == 'includeaccessinfo':
|
|
41962
|
+
includeAccessInfo = getBoolean()
|
|
41949
41963
|
elif myarg == 'format':
|
|
41950
41964
|
exportFormat = getChoice(VAULT_EXPORT_FORMAT_MAP, mapChoice=True)
|
|
41965
|
+
elif myarg == 'usenewexport':
|
|
41966
|
+
useNewExport = getBoolean()
|
|
41951
41967
|
elif myarg == 'showconfidentialmodecontent':
|
|
41952
41968
|
showConfidentialModeContent = getBoolean()
|
|
41953
41969
|
elif myarg == 'exportlinkeddrivefiles':
|
|
41954
41970
|
exportLinkedDriveFiles = getBoolean()
|
|
41955
41971
|
elif myarg == 'region':
|
|
41956
41972
|
body['exportOptions']['region'] = getChoice(VAULT_EXPORT_REGION_MAP, mapChoice=True)
|
|
41957
|
-
elif myarg == 'includeaccessinfo':
|
|
41958
|
-
body['exportOptions'].setdefault('driveOptions', {})['includeAccessInfo'] = getBoolean()
|
|
41959
|
-
elif myarg == 'covereddata':
|
|
41960
|
-
body['exportOptions'].setdefault('voiceOptions', {})['coveredData'] = getChoice(VAULT_VOICE_COVERED_DATA_MAP, mapChoice=True)
|
|
41961
41973
|
elif myarg == 'showdetails':
|
|
41962
41974
|
showDetails = True
|
|
41963
41975
|
returnIdOnly = False
|
|
@@ -41977,7 +41989,10 @@ def doCreateVaultExport():
|
|
|
41977
41989
|
if 'name' not in body:
|
|
41978
41990
|
body['name'] = f'GAM {body["query"]["corpus"]} Export - {ISOformatTimeStamp(todaysTime())}'
|
|
41979
41991
|
optionsField = VAULT_CORPUS_OPTIONS_MAP[body['query']['corpus']]
|
|
41980
|
-
if body['query']['corpus']
|
|
41992
|
+
if body['query']['corpus'] == 'DRIVE':
|
|
41993
|
+
if includeAccessInfo is not None:
|
|
41994
|
+
body['exportOptions'][optionsField]['includeAccessInfo'] = includeAccessInfo
|
|
41995
|
+
else:
|
|
41981
41996
|
body['exportOptions'][optionsField] = {'exportFormat': exportFormat}
|
|
41982
41997
|
if body['query']['corpus'] == 'MAIL':
|
|
41983
41998
|
if showConfidentialModeContent is not None:
|
|
@@ -42459,6 +42474,34 @@ def _showVaultHold(matterNameId, hold, cd, FJQC, k=0, kcount=0):
|
|
|
42459
42474
|
showJSON(None, hold, timeObjects=VAULT_HOLD_TIME_OBJECTS)
|
|
42460
42475
|
Ind.Decrement()
|
|
42461
42476
|
|
|
42477
|
+
def _useVaultQuery(v, matterId, matterNameId, body):
|
|
42478
|
+
_, _, _, query = convertQueryNameToID(v, getString(Cmd.OB_QUERY_ITEM), matterId, matterNameId)
|
|
42479
|
+
body['corpus'] = query['corpus']
|
|
42480
|
+
method = query.get('method')
|
|
42481
|
+
if method == 'ACCOUNT':
|
|
42482
|
+
body['accounts'] = []
|
|
42483
|
+
for email in query['accountInfo']['emails']:
|
|
42484
|
+
body['accounts'].append({'email': email})
|
|
42485
|
+
elif method == 'ORG_UNIT':
|
|
42486
|
+
body['orgUnit'] = {'orgUnitId': query['orgUnitInfo']['orgUnitId']}
|
|
42487
|
+
queryType = VAULT_CORPUS_QUERY_MAP[query['corpus']]
|
|
42488
|
+
if queryType is None:
|
|
42489
|
+
return
|
|
42490
|
+
body['query'] = {queryType: {}}
|
|
42491
|
+
if query['corpus'] == 'DRIVE':
|
|
42492
|
+
body['query'][queryType]['includeSharedDriveFiles'] = query['driveOptions'].get('includeSharedDrives', False)
|
|
42493
|
+
elif query['corpus'] in {'GROUPS', 'MAIL'}:
|
|
42494
|
+
if query.get('terms'):
|
|
42495
|
+
body['query'][queryType]['terms'] = query['terms']
|
|
42496
|
+
if query.get('startTime'):
|
|
42497
|
+
body['query'][queryType]['startTime'] = query['startTime']
|
|
42498
|
+
if query.get('endTime'):
|
|
42499
|
+
body['query'][queryType]['endTime'] = query['endTime']
|
|
42500
|
+
elif query['corpus'] == 'HANGOUTS_CHAT':
|
|
42501
|
+
body['query'][queryType]['includeRooms'] = query['hangoutsChatOptions'].get('includeRooms', False)
|
|
42502
|
+
elif query['corpus'] == 'VOICE':
|
|
42503
|
+
body['query'][queryType]['coveredData'] = query['voiceOptions']['coveredData']
|
|
42504
|
+
|
|
42462
42505
|
def _getHoldQueryParameters(myarg, queryParameters):
|
|
42463
42506
|
if myarg == 'query':
|
|
42464
42507
|
queryParameters['queryLocation'] = Cmd.Location()
|
|
@@ -42474,7 +42517,8 @@ def _getHoldQueryParameters(myarg, queryParameters):
|
|
|
42474
42517
|
elif myarg in {'includeshareddrives', 'includeteamdrives'}:
|
|
42475
42518
|
queryParameters['includeSharedDriveFiles'] = getBoolean()
|
|
42476
42519
|
elif myarg == 'covereddata':
|
|
42477
|
-
queryParameters
|
|
42520
|
+
queryParameters.setdefault('coveredData', [])
|
|
42521
|
+
queryParameters['coveredData'].append(getChoice(VAULT_VOICE_COVERED_DATA_MAP, mapChoice=True))
|
|
42478
42522
|
else:
|
|
42479
42523
|
return False
|
|
42480
42524
|
return True
|
|
@@ -42509,7 +42553,11 @@ def _setHoldQuery(body, queryParameters):
|
|
|
42509
42553
|
if queryParameters.get('coveredData'):
|
|
42510
42554
|
body['query'][queryType]['coveredData'] = queryParameters['coveredData']
|
|
42511
42555
|
|
|
42512
|
-
# gam create vaulthold|hold matter <MatterItem> [name <String>]
|
|
42556
|
+
# gam create vaulthold|hold matter <MatterItem> [name <String>]
|
|
42557
|
+
# vaultquery <QueryItem>
|
|
42558
|
+
# [showdetails|returnidonly]
|
|
42559
|
+
# gam create vaulthold|hold matter <MatterItem> [name <String>]
|
|
42560
|
+
# corpus calendar|drive|mail|groups|hangouts_chat|voice
|
|
42513
42561
|
# [(accounts|groups|users <EmailItemList>) | (orgunit|org|ou <OrgUnit>)]
|
|
42514
42562
|
# [query <QueryVaultCorpus>]
|
|
42515
42563
|
# [terms <String>] [start|starttime <Date>|<Time>] [end|endtime <Date>|<Time>]
|
|
@@ -42523,13 +42571,16 @@ def doCreateVaultHold():
|
|
|
42523
42571
|
matterId = None
|
|
42524
42572
|
accounts = []
|
|
42525
42573
|
queryParameters = {}
|
|
42526
|
-
returnIdOnly = showDetails = False
|
|
42574
|
+
returnIdOnly = showDetails = usedVaultQuery = False
|
|
42527
42575
|
while Cmd.ArgumentsRemaining():
|
|
42528
42576
|
myarg = getArgument()
|
|
42529
42577
|
if myarg == 'matter':
|
|
42530
42578
|
matterId, matterNameId = getMatterItem(v)
|
|
42531
42579
|
elif myarg == 'name':
|
|
42532
42580
|
body['name'] = getString(Cmd.OB_STRING)
|
|
42581
|
+
elif matterId is not None and myarg == 'vaultquery':
|
|
42582
|
+
_useVaultQuery(v, matterId, matterNameId, body)
|
|
42583
|
+
usedVaultQuery = True
|
|
42533
42584
|
elif myarg == 'corpus':
|
|
42534
42585
|
body['corpus'] = getChoice(VAULT_CORPUS_ARGUMENT_MAP, mapChoice=True)
|
|
42535
42586
|
elif myarg in {'accounts', 'users', 'groups'}:
|
|
@@ -42553,7 +42604,8 @@ def doCreateVaultHold():
|
|
|
42553
42604
|
missingArgumentExit(f'corpus {"|".join(VAULT_CORPUS_ARGUMENT_MAP)}')
|
|
42554
42605
|
if 'name' not in body:
|
|
42555
42606
|
body['name'] = f'GAM {body["corpus"]} Hold - {ISOformatTimeStamp(todaysTime())}'
|
|
42556
|
-
|
|
42607
|
+
if not usedVaultQuery:
|
|
42608
|
+
_setHoldQuery(body, queryParameters)
|
|
42557
42609
|
if accounts:
|
|
42558
42610
|
body['accounts'] = []
|
|
42559
42611
|
cd = buildGAPIObject(API.DIRECTORY)
|
|
@@ -43006,7 +43058,7 @@ def doInfoVaultQuery():
|
|
|
43006
43058
|
v = buildGAPIObject(API.VAULT)
|
|
43007
43059
|
if not Cmd.ArgumentIsAhead('matter'):
|
|
43008
43060
|
matterId, matterNameId = getMatterItem(v)
|
|
43009
|
-
queryId, queryName, queryNameId = convertQueryNameToID(v, getString(Cmd.OB_QUERY_ITEM), matterId, matterNameId)
|
|
43061
|
+
queryId, queryName, queryNameId, _ = convertQueryNameToID(v, getString(Cmd.OB_QUERY_ITEM), matterId, matterNameId)
|
|
43010
43062
|
else:
|
|
43011
43063
|
queryName = getString(Cmd.OB_QUERY_ITEM)
|
|
43012
43064
|
cd = drive = None
|
|
@@ -43016,7 +43068,7 @@ def doInfoVaultQuery():
|
|
|
43016
43068
|
myarg = getArgument()
|
|
43017
43069
|
if myarg == 'matter':
|
|
43018
43070
|
matterId, matterNameId = getMatterItem(v)
|
|
43019
|
-
queryId, queryName, queryNameId = convertQueryNameToID(v, queryName, matterId, matterNameId)
|
|
43071
|
+
queryId, queryName, queryNameId, _ = convertQueryNameToID(v, queryName, matterId, matterNameId)
|
|
43020
43072
|
elif myarg == 'shownames':
|
|
43021
43073
|
cd = buildGAPIObject(API.DIRECTORY)
|
|
43022
43074
|
_, drive = buildGAPIServiceObject(API.DRIVE3, _getAdminEmail())
|
|
@@ -45754,71 +45806,81 @@ def doPrintUsers(entityList=None):
|
|
|
45754
45806
|
csvPF.WriteRowNoFilter(row)
|
|
45755
45807
|
|
|
45756
45808
|
def _printUser(userEntity, i, count):
|
|
45757
|
-
if isSuspended is None
|
|
45758
|
-
|
|
45759
|
-
|
|
45760
|
-
|
|
45761
|
-
|
|
45762
|
-
|
|
45763
|
-
|
|
45764
|
-
|
|
45765
|
-
|
|
45766
|
-
|
|
45767
|
-
|
|
45768
|
-
|
|
45769
|
-
|
|
45770
|
-
|
|
45771
|
-
|
|
45772
|
-
|
|
45773
|
-
|
|
45774
|
-
|
|
45775
|
-
|
|
45776
|
-
|
|
45777
|
-
|
|
45778
|
-
|
|
45779
|
-
|
|
45780
|
-
|
|
45781
|
-
|
|
45782
|
-
|
|
45783
|
-
|
|
45784
|
-
|
|
45785
|
-
|
|
45786
|
-
|
|
45787
|
-
|
|
45788
|
-
|
|
45789
|
-
|
|
45790
|
-
|
|
45791
|
-
|
|
45792
|
-
|
|
45793
|
-
|
|
45794
|
-
|
|
45795
|
-
|
|
45796
|
-
|
|
45797
|
-
if aliasMatchPattern and 'aliases' in userEntity:
|
|
45798
|
-
userEntity['aliases'] = [alias for alias in userEntity['aliases'] if aliasMatchPattern.match(alias)]
|
|
45799
|
-
if printOptions['getLicenseFeed'] or printOptions['getLicenseFeedByUser']:
|
|
45800
|
-
if printOptions['getLicenseFeed']:
|
|
45801
|
-
u_licenses = licenses.get(userEmail.lower(), [])
|
|
45809
|
+
if (isSuspended is None and isArchived is None):
|
|
45810
|
+
showUser = True
|
|
45811
|
+
elif (isSuspended is not None and isArchived is None):
|
|
45812
|
+
showUser = isSuspended == userEntity.get('suspended', isSuspended)
|
|
45813
|
+
elif (isSuspended is None and isArchived is not None):
|
|
45814
|
+
showUser = isArchived == userEntity.get('archived', isArchived)
|
|
45815
|
+
else:
|
|
45816
|
+
showUser = ((isSuspended == userEntity.get('suspended', isSuspended)) or
|
|
45817
|
+
(isArchived == userEntity.get('archived', isArchived)))
|
|
45818
|
+
if not showUser:
|
|
45819
|
+
return
|
|
45820
|
+
if showValidColumn:
|
|
45821
|
+
userEntity[showValidColumn] = True
|
|
45822
|
+
userEmail = userEntity['primaryEmail']
|
|
45823
|
+
if printOptions['emailParts']:
|
|
45824
|
+
if userEmail.find('@') != -1:
|
|
45825
|
+
userEntity['primaryEmailLocal'], userEntity['primaryEmailDomain'] = splitEmailAddress(userEmail)
|
|
45826
|
+
if 'languages' in userEntity and not FJQC.formatJSON:
|
|
45827
|
+
userEntity['languages'] = _formatLanguagesList(userEntity.pop('languages'), delimiter)
|
|
45828
|
+
for location in userEntity.get('locations', []):
|
|
45829
|
+
location['buildingName'] = _getBuildingNameById(cd, location.get('buildingId', ''))
|
|
45830
|
+
if quotePlusPhoneNumbers:
|
|
45831
|
+
for phone in userEntity.get('phones', []):
|
|
45832
|
+
phoneNumber = phone.get('value', '')
|
|
45833
|
+
if phoneNumber.startswith('+'):
|
|
45834
|
+
phone['value'] = "'"+phoneNumber
|
|
45835
|
+
if schemaParms['selectedSchemaFields']:
|
|
45836
|
+
_filterSchemaFields(userEntity, schemaParms)
|
|
45837
|
+
if printOptions['getGroupFeed']:
|
|
45838
|
+
printGettingAllEntityItemsForWhom(Ent.GROUP_MEMBERSHIP, userEmail, i, count)
|
|
45839
|
+
try:
|
|
45840
|
+
groups = callGAPIpages(cd.groups(), 'list', 'groups',
|
|
45841
|
+
pageMessage=getPageMessageForWhom(),
|
|
45842
|
+
throwReasons=GAPI.GROUP_LIST_USERKEY_THROW_REASONS,
|
|
45843
|
+
retryReasons=GAPI.SERVICE_NOT_AVAILABLE_RETRY_REASONS,
|
|
45844
|
+
userKey=userEmail, orderBy='email', fields='nextPageToken,groups(email)')
|
|
45845
|
+
numGroups = len(groups)
|
|
45846
|
+
if not printOptions['groupsInColumns']:
|
|
45847
|
+
userEntity['GroupsCount'] = numGroups
|
|
45848
|
+
userEntity['Groups'] = delimiter.join([groupname['email'] for groupname in groups])
|
|
45802
45849
|
else:
|
|
45803
|
-
|
|
45804
|
-
|
|
45805
|
-
userEntity['
|
|
45806
|
-
|
|
45807
|
-
userEntity['
|
|
45808
|
-
|
|
45850
|
+
if numGroups > printOptions['maxGroups']:
|
|
45851
|
+
printOptions['maxGroups'] = numGroups
|
|
45852
|
+
userEntity['Groups'] = numGroups
|
|
45853
|
+
for j, group in enumerate(groups):
|
|
45854
|
+
userEntity[f'Groups{GC.Values[GC.CSV_OUTPUT_SUBFIELD_DELIMITER]}{j}'] = group['email']
|
|
45855
|
+
except (GAPI.invalidMember, GAPI.invalidInput):
|
|
45856
|
+
badRequestWarning(Ent.GROUP, Ent.MEMBER, userEmail)
|
|
45857
|
+
except (GAPI.resourceNotFound, GAPI.domainNotFound, GAPI.forbidden, GAPI.badRequest):
|
|
45858
|
+
accessErrorExit(cd)
|
|
45859
|
+
if aliasMatchPattern and 'aliases' in userEntity:
|
|
45860
|
+
userEntity['aliases'] = [alias for alias in userEntity['aliases'] if aliasMatchPattern.match(alias)]
|
|
45861
|
+
if printOptions['getLicenseFeed'] or printOptions['getLicenseFeedByUser']:
|
|
45862
|
+
if printOptions['getLicenseFeed']:
|
|
45863
|
+
u_licenses = licenses.get(userEmail.lower(), [])
|
|
45809
45864
|
else:
|
|
45810
|
-
u_licenses =
|
|
45865
|
+
u_licenses = getUserLicenses(lic, userEntity, skus)
|
|
45811
45866
|
if not oneLicensePerRow:
|
|
45812
|
-
|
|
45813
|
-
else:
|
|
45867
|
+
userEntity['LicensesCount'] = len(u_licenses)
|
|
45814
45868
|
if u_licenses:
|
|
45815
|
-
|
|
45816
|
-
|
|
45817
|
-
|
|
45818
|
-
|
|
45819
|
-
|
|
45820
|
-
|
|
45869
|
+
userEntity['Licenses'] = delimiter.join(u_licenses)
|
|
45870
|
+
userEntity['LicensesDisplay'] = delimiter.join([SKU.skuIdToDisplayName(skuId) for skuId in u_licenses])
|
|
45871
|
+
else:
|
|
45872
|
+
u_licenses = []
|
|
45873
|
+
if not oneLicensePerRow:
|
|
45874
|
+
_writeUserEntity(userEntity)
|
|
45875
|
+
else:
|
|
45876
|
+
if u_licenses:
|
|
45877
|
+
for skuId in u_licenses:
|
|
45878
|
+
userEntity['License'] = skuId
|
|
45879
|
+
userEntity['LicenseDisplay'] = SKU.skuIdToDisplayName(skuId)
|
|
45821
45880
|
_writeUserEntity(userEntity)
|
|
45881
|
+
else:
|
|
45882
|
+
userEntity['License'] = userEntity['LicenseDisplay'] = ''
|
|
45883
|
+
_writeUserEntity(userEntity)
|
|
45822
45884
|
|
|
45823
45885
|
def _updateDomainCounts(emailAddress):
|
|
45824
45886
|
nonlocal domainCounts
|
|
@@ -45911,10 +45973,10 @@ def doPrintUsers(entityList=None):
|
|
|
45911
45973
|
showDeleted = True
|
|
45912
45974
|
elif entityList is None and myarg == 'select':
|
|
45913
45975
|
_, entityList = getEntityToModify(defaultEntityType=Cmd.ENTITY_USERS)
|
|
45914
|
-
elif myarg
|
|
45915
|
-
isSuspended =
|
|
45916
|
-
elif myarg
|
|
45917
|
-
isArchived =
|
|
45976
|
+
elif myarg == 'issuspended':
|
|
45977
|
+
isSuspended = getBoolean()
|
|
45978
|
+
elif myarg == 'isarchived':
|
|
45979
|
+
isArchived = getBoolean()
|
|
45918
45980
|
elif myarg == 'orderby':
|
|
45919
45981
|
orderBy, sortOrder = getOrderBySortOrder(USERS_ORDERBY_CHOICE_MAP)
|
|
45920
45982
|
elif myarg == 'userview':
|
|
@@ -46092,6 +46154,8 @@ def doPrintUsers(entityList=None):
|
|
|
46092
46154
|
# If no individual fields were specified (allfields, basic, full) or individual fields other than primaryEmail were specified, look up each user
|
|
46093
46155
|
if isSuspended is not None and fieldsList:
|
|
46094
46156
|
fieldsList.append('suspended')
|
|
46157
|
+
if isArchived is not None and fieldsList:
|
|
46158
|
+
fieldsList.append('archived')
|
|
46095
46159
|
if projectionSet or len(set(fieldsList)) > 1 or showValidColumn:
|
|
46096
46160
|
jcount = len(entityList)
|
|
46097
46161
|
fields = getFieldsFromFieldsList(fieldsList)
|
|
@@ -462,6 +462,7 @@
|
|
|
462
462
|
See: https://support.google.com/mail/answer/7190
|
|
463
463
|
<QueryGroup> ::= <String>
|
|
464
464
|
See: https://developers.google.com/admin-sdk/directory/v1/guides/search-groups
|
|
465
|
+
<QueryItem> ::= <UniqueID>|<String>
|
|
465
466
|
<QueryMemberRestrictions> ::= <String>
|
|
466
467
|
See: https://cloud.google.com/identity/docs/reference/rest/v1beta1/SecuritySettings#MemberRestriction
|
|
467
468
|
<QueryMobile> ::= <String>
|
|
@@ -10,9 +10,24 @@ 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.22.
|
|
13
|
+
### - 7.22.04
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
Added a variant of `gam create vaulthold` that gets its parameters from a saved Vault query.
|
|
16
|
+
```
|
|
17
|
+
gam create vaulthold matter <MatterItem> [name <String>]
|
|
18
|
+
vaultquery <QueryItem>
|
|
19
|
+
[showdetails|returnidonly]
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
### 7.22.03
|
|
23
|
+
|
|
24
|
+
Fix backwards compatability bug introduced in 7.22.00 for `gam print users` that changed `suspended`
|
|
25
|
+
from a field name to a query option; it is now correctly interpreted as a field name.
|
|
26
|
+
|
|
27
|
+
### 7.22.02
|
|
28
|
+
|
|
29
|
+
An update to the httplib2 library caused GAM proxy connections to fail; this has been fixed
|
|
30
|
+
by including the pysocks library needed by the latest httplib2 library.
|
|
16
31
|
|
|
17
32
|
### 7.22.00
|
|
18
33
|
|
|
@@ -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.22.
|
|
255
|
+
GAM 7.22.04 - 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 Sequoia 15.6.1 x86_64
|
|
@@ -570,17 +570,12 @@ gam config auto_batch_min 1 csv_output_row_filter "owners.0.emailAddress:notrege
|
|
|
570
570
|
### Multiple parents
|
|
571
571
|
No existing parents are copied for source top/sub files/folders.
|
|
572
572
|
|
|
573
|
-
### Removed options
|
|
574
|
-
The following options will generate an error; they were removed in 6.23.00:
|
|
575
|
-
* `copysubfileparents` and `copysubfolderparents`.
|
|
576
|
-
|
|
577
573
|
### Move Folder Permissions
|
|
578
|
-
When a folder is moved by recreating it, its permissions are not copied; these options control copying permissions for folders.
|
|
574
|
+
When a folder is moved by recreating it, its permissions are not copied by the Drive API; these options control copying permissions for folders.
|
|
579
575
|
|
|
580
576
|
For options of the form `option [<Boolean>]`; if `<Boolean>` is omitted, `true` is assumed.
|
|
581
577
|
|
|
582
578
|
When recreated, a target folder inherits the permissions of its parent folder; these options control whether/how GAM copies the existing source folder permissions;
|
|
583
|
-
The default values of options introduced in version 6.14.00 are set to match the behavior of earlier versions.
|
|
584
579
|
|
|
585
580
|
When `mergewithparent` is `true`:
|
|
586
581
|
* `copymergewithparentfolderpermissions false` - The permissions of the source top folder are not not copied to the target folder; this is the default action.
|
|
@@ -594,7 +589,7 @@ When `duplicatefolders` is `merge` and a sub folder is a duplicate:
|
|
|
594
589
|
* `copymergedsubfolderpermissions false` - The permissions of the source sub folder are not not copied to the target folder.
|
|
595
590
|
* `copymergedsubfolderpermissions true` - The permissions of the source sub folder are copied to the target folder; this is the default action.
|
|
596
591
|
|
|
597
|
-
When `duplicatefolders` is `duplicatename` or `uniquename` and a top/sub folder is not a duplicate:
|
|
592
|
+
When `duplicatefolders` is `merge` or `duplicatename` or `uniquename` and a top/sub folder is not a duplicate:
|
|
598
593
|
* `copytopfolderpermissions true` - The permissions of the source top folder are copied to the target folder; this is the default action.
|
|
599
594
|
* `copytopfolderpermissions false` - The permissions of the source top folder are not not copied to the target folder.
|
|
600
595
|
* `copysubfolderpermissions true` - The permissions of the source sub folders are copied to the target folder; this is the default action.
|