gam7 7.6.14__tar.gz → 7.7.1__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.6.14 → gam7-7.7.1}/PKG-INFO +1 -1
- {gam7-7.6.14 → gam7-7.7.1}/src/GamCommands.txt +0 -13
- {gam7-7.6.14 → gam7-7.7.1}/src/GamUpdate.txt +23 -1
- {gam7-7.6.14 → gam7-7.7.1}/src/gam/__init__.py +161 -106
- {gam7-7.6.14 → gam7-7.7.1}/src/gam/gamlib/glclargs.py +0 -1
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Administrators.md +27 -7
- gam7-7.6.14/wiki/Domain-SharedContacts-GAL.md → gam7-7.7.1/wiki/Domain-SharedContacts.md +1 -1
- {gam7-7.6.14 → gam7-7.7.1}/wiki/GamUpdates.md +30 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/How-to-Upgrade-Legacy-GAM-to-GAM7.md +2 -2
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Version-and-Help.md +7 -6
- {gam7-7.6.14 → gam7-7.7.1}/wiki/_Sidebar.md +1 -1
- {gam7-7.6.14 → gam7-7.7.1}/.github/ISSUE_TEMPLATE/aa-question.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/.github/ISSUE_TEMPLATE/za-bug-report.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/.github/ISSUE_TEMPLATE/zz-feature-request.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/.github/ISSUE_TEMPLATE.txt +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/.github/actions/decrypt.sh +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/.github/actions/entitlements.plist +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/.github/actions/package_exclusions.txt +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/.github/stale.yml +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/.github/workflows/build.yml +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/.github/workflows/codeql-analysis.yml +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/.github/workflows/get-cacerts.yml +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/.github/workflows/pushwiki.yml +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/.github/workflows/pypi.yml +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/.pre-commit-config.yaml +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/LICENSE +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/README.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/pyproject.toml +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/.gitignore +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/LICENSE +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/cacerts.pem +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/callgam.py +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/gam/__main__.py +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/gam/atom/__init__.py +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/gam/atom/auth.py +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/gam/atom/client.py +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/gam/atom/core.py +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/gam/atom/data.py +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/gam/atom/http.py +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/gam/atom/http_core.py +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/gam/atom/http_interface.py +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/gam/atom/mock_http.py +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/gam/atom/mock_http_core.py +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/gam/atom/mock_service.py +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/gam/atom/service.py +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/gam/atom/token_store.py +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/gam/atom/url.py +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/gam/cacerts.pem +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/gam/cbcm-v1.1beta1.json +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/gam/contactdelegation-v1.json +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/gam/datastudio-v1.json +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/gam/gamlib/__init__.py +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/gam/gamlib/glaction.py +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/gam/gamlib/glapi.py +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/gam/gamlib/glcfg.py +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/gam/gamlib/glentity.py +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/gam/gamlib/glgapi.py +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/gam/gamlib/glgdata.py +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/gam/gamlib/glglobals.py +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/gam/gamlib/glindent.py +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/gam/gamlib/glmsgs.py +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/gam/gamlib/glskus.py +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/gam/gamlib/gluprop.py +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/gam/gamlib/glverlibs.py +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/gam/gamlib/yubikey.py +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/gam/gdata/__init__.py +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/gam/gdata/alt/__init__.py +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/gam/gdata/alt/app_engine.py +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/gam/gdata/alt/appengine.py +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/gam/gdata/apps/__init__.py +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/gam/gdata/apps/audit/__init__.py +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/gam/gdata/apps/audit/service.py +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/gam/gdata/apps/contacts/__init__.py +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/gam/gdata/apps/contacts/service.py +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/gam/gdata/apps/service.py +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/gam/gdata/service.py +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/gam/gdata/urlfetch.py +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/gam/googleapiclient/__init__.py +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/gam/googleapiclient/_auth.py +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/gam/googleapiclient/_helpers.py +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/gam/googleapiclient/channel.py +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/gam/googleapiclient/discovery.py +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/gam/googleapiclient/discovery_cache/__init__.py +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/gam/googleapiclient/discovery_cache/appengine_memcache.py +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/gam/googleapiclient/discovery_cache/base.py +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/gam/googleapiclient/discovery_cache/file_cache.py +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/gam/googleapiclient/errors.py +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/gam/googleapiclient/http.py +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/gam/googleapiclient/mimeparse.py +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/gam/googleapiclient/model.py +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/gam/googleapiclient/schema.py +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/gam/googleapiclient/version.py +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/gam/iso8601/__init__.py +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/gam/iso8601/iso8601.py +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/gam/meet-v2beta.json +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/gam/serviceaccountlookup-v1.json +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/gam/six.py +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/gam-install.sh +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/gam-setup.bat +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/gam.exe.manifest +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/gam.py +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/gam.spec +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/gam.wxs +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/license.rtf +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/requirements-dev.txt +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/requirements.txt +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/setup.cfg +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/setup.py +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/tools/a_atleast_b.py +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/tools/gen-wix-xml-filelist.py +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/tools/mkGamRef.py +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/tools/openssl.props +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/src/version_info.txt.in +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/00scratch.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Addresses.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Alert-Center.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Aliases.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Authorization.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/BNF-Syntax.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Basic-Items.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Bulk-Processing.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/CSV-Input-Filtering.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/CSV-Output-Filtering.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/CSV-Special-Characters.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Calendars-Access.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Calendars-Events.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Calendars.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Chat-Bot.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Chrome-AUE-Counts.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Chrome-Browser-Cloud-Management.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Chrome-Installed-Apps.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Chrome-Needs-Attention-Counts.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Chrome-Policies.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Chrome-Printers.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Chrome-Profile-Management.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Chrome-Version-Counts.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Chrome-Version-History.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/ChromeOS-Devices.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Classroom-Courses.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Classroom-Guardians.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Classroom-Invitations.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Classroom-Membership.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Cloud-Channel.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Cloud-Identity-Devices.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Cloud-Identity-Groups-Membership.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Cloud-Identity-Groups.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Cloud-Identity-Policies.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Cloud-Storage.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Collections-of-ChromeOS-Devices.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Collections-of-Items.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Collections-of-Users.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Command-Data-From-Google-Docs-Sheets-Storage.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Command-Line-Parsing.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Command-Logging-Progress.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Context-Aware-Access-Levels.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Customer.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Domain-People-Contacts-Profiles.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Domains-Verification.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Domains.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Downloads-Installs.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Drive-File-Selection.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Drive-Items.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Drive-REST-API-v3.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Email-Audit-Monitor.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Find-File-Owner.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/GAM-Public-Chat-Room.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/GAM-Return-Codes.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/GAM-with-minimal-GCP-rights.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/GAM7-on-Android-Devices.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/GAM7-on-Chrome-OS-Devices.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Google-Data-Transfers.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Google-Network-Addresses.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Groups-Membership.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Groups.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/HTTPS-Proxy.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Home.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/How-to-Install-GAM7.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/How-to-Uninstall-GAM7.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/How-to-Update-GAM7.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/How-to-Upgrade-GAMADV-XTD3-to-GAM7.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Inbound-SSO.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Install-GAM-as-Python-Library.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Licenses.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/List-Items.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/List.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Meta-Commands-and-File-Redirection.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Mobile-Devices.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Organizational-Units.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Other-Resources.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Permission-Matches.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Python-Regular-Expressions.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/README.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Rclone.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Reports.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Reseller.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Resources.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Running-GAM7-securely-on-a-Google-Compute-Engine.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/SSL-Root-CA-Certificates.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Schemas.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Scripts.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Send-Email.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Shared-Drives.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Sites.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Tag-Replace.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Todrive.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Unmanaged-Accounts.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Upgrade-Benefits.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Users-Analytics-Admin.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Users-Application-Specific-Passwords.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Users-Backup-Verification-Codes.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Users-Calendars-Access.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Users-Calendars-Events.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Users-Calendars.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Users-Chat.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Users-Classification-Labels.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Users-Classroom-Profile.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Users-Contacts-Delegates.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Users-Contacts.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Users-Deprovision.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Users-Drive-Activity-Settings.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Users-Drive-Cleanup.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Users-Drive-Comments.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Users-Drive-Copy-Move.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Users-Drive-Files-Display.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Users-Drive-Files-Manage.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Users-Drive-Orphans.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Users-Drive-Ownership.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Users-Drive-Permissions.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Users-Drive-Query.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Users-Drive-Revisions.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Users-Drive-Shortcuts.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Users-Drive-Transfer.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Users-Forms.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Users-Gmail-CSE.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Users-Gmail-Delegates.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Users-Gmail-Filters.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Users-Gmail-Forwarding.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Users-Gmail-Labels.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Users-Gmail-Messages-Threads.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Users-Gmail-Profile.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Users-Gmail-S-MIME.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Users-Gmail-Send-As-Signature-Vacation.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Users-Gmail-Settings.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Users-Group-Membership.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Users-Keep-Notes.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Users-Looker-Studio.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Users-Meet.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Users-People-Contacts-Profiles.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Users-Photo.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Users-Profile-Photo.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Users-Profile-Sharing.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Users-Shared-Drives.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Users-Signout-Turnoff2SV.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Users-Spreadsheets.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Users-Tasks.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Users-Tokens.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Users-YouTube.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Users.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Using-GAM7-with-a-YubiKey.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Using-GAM7-with-a-delegated-admin-service-account.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Vault-Takeout.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/Verifying-a-GAM7-Build-is-Legitimate-and-Official.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/gam.cfg.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/l-AdminSettingsExamples.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/l-Android-Installation.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/l-BulkOperations.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/l-CalendarExamples.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/l-Chat-Bot.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/l-Chrome-Browser-Management.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/l-Chrome-OS-Installation.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/l-Chrome-Policy-Settings.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/l-Cloud-Identity-Groups.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/l-Command-Reference-Calendar-Resources.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/l-Command-Reference-Calendars.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/l-Command-Reference-Definitions.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/l-Command-Reference-Drive.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/l-Command-Reference-Email.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/l-Command-Reference-Group-Attributes.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/l-Command-Reference-Groups.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/l-Command-Reference-Users.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/l-Context-Aware-Access-Levels.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/l-Creating-client_secrets.json-and-oauth2service.json.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/l-CreatingClientSecretsFile.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/l-Custom-Schemas.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/l-Data-Transfers.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/l-DomainVerification.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/l-ExamplesAccountAuditing.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/l-ExamplesCSV.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/l-ExamplesEmailSettings.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/l-ExamplesOrganizations.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/l-GAM-Discussion-Group.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/l-GAM-on-Android-and-Chrome-OS.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/l-GAM-options-files.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/l-GAM-with--minimal-GCP-rights.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/l-GAM3CSVListings.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/l-GAM3DirectoryCommands.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/l-GAM3GroupSettings.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/l-GAM7-FAQ.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/l-Google-Vault---Takeout-Commands.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/l-GoogleDriveManagement.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/l-Grouping-18-or-Older-Users.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/l-Home.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/l-How-to-upgrade-from-Standard-GAM.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/l-Inbound-SSO-Settings.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/l-LicenseExamples.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/l-Managing-Admins.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/l-Managing-CloudPrint-Printers.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/l-Managing-Devices.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/l-Managing-Google-Classroom.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/l-OAuthKeyManagement.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/l-Printers.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/l-ResellerCommands.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/l-Running-GAM-on-Google-Compute-Engine-(GCE)-Securely.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/l-SecurityExamples.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/l-UnmanagedUsersExamples.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/l-Use-a-Yubikey.md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/l-Using-GAM-with-a-delegated-admin-service-account-(DASA).md +0 -0
- {gam7-7.6.14 → gam7-7.7.1}/wiki/l-_Footer.md +0 -0
|
@@ -3545,19 +3545,6 @@ gam print contacts [todrive <ToDriveAttribute>*] <ContactSelection>
|
|
|
3545
3545
|
[fields <ContactFieldNameList>]
|
|
3546
3546
|
[formatjson [quotechar <Character>]]
|
|
3547
3547
|
|
|
3548
|
-
vgam info gal <ContactEntity>
|
|
3549
|
-
[basic|full]
|
|
3550
|
-
[fields <ContactFieldNameList>]
|
|
3551
|
-
[formatjson]
|
|
3552
|
-
gam show gal <ContactSelection>
|
|
3553
|
-
[basic|full] [orderby <ContactOrderByFieldName> [ascending|descending]]
|
|
3554
|
-
[fields <ContactFieldNameList>]
|
|
3555
|
-
[formatjson]
|
|
3556
|
-
gam print gal [todrive <ToDriveAttribute>*] <ContactSelection>
|
|
3557
|
-
[basic|full] [orderby <ContactOrderByFieldName> [ascending|descending]]
|
|
3558
|
-
[fields <ContactFieldNameList>]
|
|
3559
|
-
[formatjson [quotechar <Character>]]
|
|
3560
|
-
|
|
3561
3548
|
# Domain - People Contacts and Profiles
|
|
3562
3549
|
|
|
3563
3550
|
<PeopleSourceName> ::=
|
|
@@ -1,9 +1,31 @@
|
|
|
1
|
+
7.07.01
|
|
2
|
+
|
|
3
|
+
Fixed bug in `gam print|show chromepolicies` that caused a trap. Made additional
|
|
4
|
+
updates to handle changes in the Chrome Policy API.
|
|
5
|
+
|
|
6
|
+
7.07.00
|
|
7
|
+
|
|
8
|
+
As of mid-October 2024, Google deprecated the API that retrieved the Global Address List.
|
|
9
|
+
|
|
10
|
+
The following commands have been eliminated.
|
|
11
|
+
```
|
|
12
|
+
gam info gal
|
|
13
|
+
gam print gal
|
|
14
|
+
gam show gal
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
These commands are a work-around for `gam print gal`.
|
|
18
|
+
```
|
|
19
|
+
gam config csv_output_row_filter "includeInGlobalAddressList:boolean:true" redirect csv ./UserGAL.csv print users fields name,gal
|
|
20
|
+
gam config csv_output_row_filter "includeInGlobalAddressList:boolean:true" batch_size 25 redirect csv ./GroupGAL.csv print groups fields name,gal
|
|
21
|
+
```
|
|
22
|
+
|
|
1
23
|
7.06.14
|
|
2
24
|
|
|
3
25
|
Updated `gam create|update adminrole` to allow specifying a collection of privileges
|
|
4
26
|
with `privileges select <FileSelector>|<CSVFileSelector>` which makes copying roles much simpler.
|
|
5
27
|
|
|
6
|
-
|
|
28
|
+
Added option `role <RoleItem>` to `gam print|show adminroles` to allow display of information
|
|
7
29
|
for a specific role.
|
|
8
30
|
|
|
9
31
|
7.06.13
|
|
@@ -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.
|
|
28
|
+
__version__ = '7.07.01'
|
|
29
29
|
__license__ = 'Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0)'
|
|
30
30
|
|
|
31
31
|
#pylint: disable=wrong-import-position
|
|
@@ -5655,8 +5655,8 @@ def getGDataUserCredentials(api, user, i, count):
|
|
|
5655
5655
|
handleOAuthTokenError(e, True, True, i, count)
|
|
5656
5656
|
return (userEmail, None)
|
|
5657
5657
|
|
|
5658
|
-
def getContactsObject(
|
|
5659
|
-
contactsObject = initGDataObject(gdata.apps.contacts.service.ContactsService(contactFeed=
|
|
5658
|
+
def getContactsObject():
|
|
5659
|
+
contactsObject = initGDataObject(gdata.apps.contacts.service.ContactsService(contactFeed=True),
|
|
5660
5660
|
API.CONTACTS)
|
|
5661
5661
|
return (GC.Values[GC.DOMAIN], contactsObject)
|
|
5662
5662
|
|
|
@@ -19996,7 +19996,9 @@ def dedupEmailAddressMatches(contactsManager, emailMatchType, fields):
|
|
|
19996
19996
|
fields[CONTACT_EMAILS] = savedAddresses
|
|
19997
19997
|
return updateRequired
|
|
19998
19998
|
|
|
19999
|
-
|
|
19999
|
+
# gam create contact <ContactAttribute>+
|
|
20000
|
+
# [(csv [todrive <ToDriveAttribute>*] (addcsvdata <FieldName> <String>)*))| returnidonly]
|
|
20001
|
+
def doCreateDomainContact():
|
|
20000
20002
|
entityType = Ent.DOMAIN
|
|
20001
20003
|
contactsManager = ContactsManager()
|
|
20002
20004
|
parameters = {'csvPF': None, 'titles': ['Domain', CONTACT_ID], 'addCSVData': {}, 'returnIdOnly': False}
|
|
@@ -20007,7 +20009,7 @@ def _createContact():
|
|
|
20007
20009
|
csvPF.AddTitles(sorted(addCSVData.keys()))
|
|
20008
20010
|
returnIdOnly = parameters['returnIdOnly']
|
|
20009
20011
|
contactEntry = contactsManager.FieldsToContact(fields)
|
|
20010
|
-
user, contactsObject = getContactsObject(
|
|
20012
|
+
user, contactsObject = getContactsObject()
|
|
20011
20013
|
try:
|
|
20012
20014
|
contact = callGData(contactsObject, 'CreateContact',
|
|
20013
20015
|
throwErrors=[GDATA.BAD_REQUEST, GDATA.SERVICE_NOT_APPLICABLE, GDATA.FORBIDDEN],
|
|
@@ -20032,11 +20034,6 @@ def _createContact():
|
|
|
20032
20034
|
if csvPF:
|
|
20033
20035
|
csvPF.writeCSVfile('Contacts')
|
|
20034
20036
|
|
|
20035
|
-
# gam create contact <ContactAttribute>+
|
|
20036
|
-
# [(csv [todrive <ToDriveAttribute>*] (addcsvdata <FieldName> <String>)*))| returnidonly]
|
|
20037
|
-
def doCreateDomainContact():
|
|
20038
|
-
_createContact()
|
|
20039
|
-
|
|
20040
20037
|
def _clearUpdateContacts(updateContacts):
|
|
20041
20038
|
entityType = Ent.DOMAIN
|
|
20042
20039
|
contactsManager = ContactsManager()
|
|
@@ -20058,7 +20055,7 @@ def _clearUpdateContacts(updateContacts):
|
|
|
20058
20055
|
unknownArgumentExit()
|
|
20059
20056
|
if not contactClear['emailClearPattern']:
|
|
20060
20057
|
missingArgumentExit('emailclearpattern')
|
|
20061
|
-
user, contactsObject = getContactsObject(
|
|
20058
|
+
user, contactsObject = getContactsObject()
|
|
20062
20059
|
if queriedContacts:
|
|
20063
20060
|
entityList = queryContacts(contactsObject, contactQuery)
|
|
20064
20061
|
if entityList is None:
|
|
@@ -20129,7 +20126,8 @@ def doClearDomainContacts():
|
|
|
20129
20126
|
def doUpdateDomainContacts():
|
|
20130
20127
|
_clearUpdateContacts(True)
|
|
20131
20128
|
|
|
20132
|
-
|
|
20129
|
+
# gam dedup contacts <ContactEntity>|<ContactSelection> [matchType [<Boolean>]]
|
|
20130
|
+
def doDedupDomainContacts():
|
|
20133
20131
|
entityType = Ent.DOMAIN
|
|
20134
20132
|
contactsManager = ContactsManager()
|
|
20135
20133
|
contactQuery = _initContactQueryAttributes()
|
|
@@ -20140,7 +20138,7 @@ def _dedupContacts():
|
|
|
20140
20138
|
emailMatchType = getBoolean()
|
|
20141
20139
|
else:
|
|
20142
20140
|
_getContactQueryAttributes(contactQuery, myarg, -1, False)
|
|
20143
|
-
user, contactsObject = getContactsObject(
|
|
20141
|
+
user, contactsObject = getContactsObject()
|
|
20144
20142
|
contacts = queryContacts(contactsObject, contactQuery)
|
|
20145
20143
|
if contacts is None:
|
|
20146
20144
|
return
|
|
@@ -20180,15 +20178,12 @@ def _dedupContacts():
|
|
|
20180
20178
|
break
|
|
20181
20179
|
Ind.Decrement()
|
|
20182
20180
|
|
|
20183
|
-
# gam
|
|
20184
|
-
def
|
|
20185
|
-
_dedupContacts()
|
|
20186
|
-
|
|
20187
|
-
def _deleteContacts():
|
|
20181
|
+
# gam delete contacts <ContactEntity>|<ContactSelection>
|
|
20182
|
+
def doDeleteDomainContacts():
|
|
20188
20183
|
entityType = Ent.DOMAIN
|
|
20189
20184
|
contactsManager = ContactsManager()
|
|
20190
20185
|
entityList, contactQuery, queriedContacts = _getContactEntityList(-1, False)
|
|
20191
|
-
user, contactsObject = getContactsObject(
|
|
20186
|
+
user, contactsObject = getContactsObject()
|
|
20192
20187
|
if queriedContacts:
|
|
20193
20188
|
entityList = queryContacts(contactsObject, contactQuery)
|
|
20194
20189
|
if entityList is None:
|
|
@@ -20228,10 +20223,6 @@ def _deleteContacts():
|
|
|
20228
20223
|
break
|
|
20229
20224
|
Ind.Decrement()
|
|
20230
20225
|
|
|
20231
|
-
# gam delete contacts <ContactEntity>|<ContactSelection>
|
|
20232
|
-
def doDeleteDomainContacts():
|
|
20233
|
-
_deleteContacts()
|
|
20234
|
-
|
|
20235
20226
|
CONTACT_TIME_OBJECTS = {CONTACT_UPDATED}
|
|
20236
20227
|
CONTACT_FIELDS_WITH_CRS_NLS = {CONTACT_NOTES, CONTACT_BILLING_INFORMATION}
|
|
20237
20228
|
|
|
@@ -20299,7 +20290,10 @@ def _getContactFieldsList(contactsManager, displayFieldsList):
|
|
|
20299
20290
|
else:
|
|
20300
20291
|
invalidChoiceExit(field, contactsManager.CONTACT_ARGUMENT_TO_PROPERTY_MAP, True)
|
|
20301
20292
|
|
|
20302
|
-
|
|
20293
|
+
# gam info contacts <ContactEntity>
|
|
20294
|
+
# [basic|full]
|
|
20295
|
+
# [fields <ContactFieldNameList>] [formatjson]
|
|
20296
|
+
def doInfoDomainContacts():
|
|
20303
20297
|
entityType = Ent.DOMAIN
|
|
20304
20298
|
contactsManager = ContactsManager()
|
|
20305
20299
|
entityList = getEntityList(Cmd.OB_CONTACT_ENTITY)
|
|
@@ -20314,7 +20308,7 @@ def _infoContacts(contactFeed):
|
|
|
20314
20308
|
_getContactFieldsList(contactsManager, displayFieldsList)
|
|
20315
20309
|
else:
|
|
20316
20310
|
FJQC.GetFormatJSON(myarg)
|
|
20317
|
-
user, contactsObject = getContactsObject(
|
|
20311
|
+
user, contactsObject = getContactsObject()
|
|
20318
20312
|
j = 0
|
|
20319
20313
|
jcount = len(entityList)
|
|
20320
20314
|
if not FJQC.formatJSON:
|
|
@@ -20342,19 +20336,13 @@ def _infoContacts(contactFeed):
|
|
|
20342
20336
|
break
|
|
20343
20337
|
Ind.Decrement()
|
|
20344
20338
|
|
|
20345
|
-
# gam
|
|
20346
|
-
# [basic|full]
|
|
20347
|
-
# [fields <ContactFieldNameList>] [formatjson]
|
|
20348
|
-
|
|
20349
|
-
|
|
20350
|
-
|
|
20351
|
-
# gam info gal <ContactEntity>
|
|
20352
|
-
# [basic|full]
|
|
20339
|
+
# gam print contacts [todrive <ToDriveAttribute>*] <ContactSelection>
|
|
20340
|
+
# [basic|full|countsonly] [showdeleted] [orderby <ContactOrderByFieldName> [ascending|descending]]
|
|
20341
|
+
# [fields <ContactFieldNameList>] [formatjson [quotechar <Character>]]
|
|
20342
|
+
# gam show contacts <ContactSelection>
|
|
20343
|
+
# [basic|full|countsonly] [showdeleted] [orderby <ContactOrderByFieldName> [ascending|descending]]
|
|
20353
20344
|
# [fields <ContactFieldNameList>] [formatjson]
|
|
20354
|
-
def
|
|
20355
|
-
_infoContacts(False)
|
|
20356
|
-
|
|
20357
|
-
def _printShowContacts(contactFeed):
|
|
20345
|
+
def doPrintShowDomainContacts():
|
|
20358
20346
|
entityType = Ent.DOMAIN
|
|
20359
20347
|
entityTypeName = Ent.Singular(entityType)
|
|
20360
20348
|
contactsManager = ContactsManager()
|
|
@@ -20380,7 +20368,7 @@ def _printShowContacts(contactFeed):
|
|
|
20380
20368
|
pass
|
|
20381
20369
|
else:
|
|
20382
20370
|
FJQC.GetFormatJSONQuoteChar(myarg, True)
|
|
20383
|
-
user, contactsObject = getContactsObject(
|
|
20371
|
+
user, contactsObject = getContactsObject()
|
|
20384
20372
|
contacts = queryContacts(contactsObject, contactQuery)
|
|
20385
20373
|
if countsOnly:
|
|
20386
20374
|
jcount = countLocalContactSelects(contactsManager, contacts, contactQuery)
|
|
@@ -20466,24 +20454,6 @@ def _printShowContacts(contactFeed):
|
|
|
20466
20454
|
if csvPF:
|
|
20467
20455
|
csvPF.writeCSVfile(CSVTitle)
|
|
20468
20456
|
|
|
20469
|
-
# gam print contacts [todrive <ToDriveAttribute>*] <ContactSelection>
|
|
20470
|
-
# [basic|full|countsonly] [showdeleted] [orderby <ContactOrderByFieldName> [ascending|descending]]
|
|
20471
|
-
# [fields <ContactFieldNameList>] [formatjson [quotechar <Character>]]
|
|
20472
|
-
# gam show contacts <ContactSelection>
|
|
20473
|
-
# [basic|full|countsonly] [showdeleted] [orderby <ContactOrderByFieldName> [ascending|descending]]
|
|
20474
|
-
# [fields <ContactFieldNameList>] [formatjson]
|
|
20475
|
-
def doPrintShowDomainContacts():
|
|
20476
|
-
_printShowContacts(True)
|
|
20477
|
-
|
|
20478
|
-
# gam print gal [todrive <ToDriveAttribute>*] <ContactSelection>
|
|
20479
|
-
# [basic|full] [orderby <ContactOrderByFieldName> [ascending|descending]]
|
|
20480
|
-
# [fields <ContactFieldNameList>] [formatjson [quotechar <Character>]]
|
|
20481
|
-
# gam show gal <ContactSelection>
|
|
20482
|
-
# [basic|full|countsonly] [orderby <ContactOrderByFieldName> [ascending|descending]]
|
|
20483
|
-
# [fields <ContactFieldNameList>] [formatjson]
|
|
20484
|
-
def doPrintShowGAL():
|
|
20485
|
-
_printShowContacts(False)
|
|
20486
|
-
|
|
20487
20457
|
# Prople commands utilities
|
|
20488
20458
|
#
|
|
20489
20459
|
def normalizePeopleResourceName(resourceName):
|
|
@@ -28213,75 +28183,171 @@ def doDeleteChromePolicy():
|
|
|
28213
28183
|
except (GAPI.notFound, GAPI.permissionDenied, GAPI.invalidArgument, GAPI.serviceNotAvailable, GAPI.quotaExceeded) as e:
|
|
28214
28184
|
entityActionFailedWarning(kvList, str(e))
|
|
28215
28185
|
|
|
28216
|
-
|
|
28217
|
-
'chrome.users.AutoUpdateCheckPeriodNew':
|
|
28218
|
-
{'autoupdatecheckperiodminutesnew':
|
|
28219
|
-
{'casedField': 'autoUpdateCheckPeriodMinutesNew',
|
|
28220
|
-
'type': 'duration', 'minVal': 1, 'maxVal': 720, 'scale': 60}},
|
|
28186
|
+
CHROME_SCHEMA_SPECIAL_CASES = {
|
|
28221
28187
|
'chrome.users.AutoUpdateCheckPeriodNewV2':
|
|
28222
28188
|
{'autoupdatecheckperiodminutesnew':
|
|
28223
28189
|
{'casedField': 'autoUpdateCheckPeriodMinutesNew',
|
|
28224
|
-
'type': 'duration', 'minVal': 1, 'maxVal': 720
|
|
28225
|
-
'chrome.users.
|
|
28190
|
+
'type': 'duration', 'minVal': 1, 'maxVal': 720}},
|
|
28191
|
+
'chrome.users.Avatar':
|
|
28192
|
+
{'useravatarimage':
|
|
28193
|
+
{'casedField': 'userAvatarImage',
|
|
28194
|
+
'type': 'downloadUri'}},
|
|
28195
|
+
'chrome.users.BrowserSwitcherDelayDurationV2':
|
|
28226
28196
|
{'browserswitcherdelayduration':
|
|
28227
28197
|
{'casedField': 'browserSwitcherDelayDuration',
|
|
28228
|
-
'type': 'duration', 'minVal': 0, 'maxVal': 30
|
|
28198
|
+
'type': 'duration', 'minVal': 0, 'maxVal': 30}},
|
|
28199
|
+
'chrome.users.BrowsingDataLifetimeV2':
|
|
28200
|
+
{'browsinghistoryttl':
|
|
28201
|
+
{'casedField': 'browsingHistoryTtl',
|
|
28202
|
+
'type': 'duration', 'minVal': 1, 'maxVal': None},
|
|
28203
|
+
'downloadhistoryttl':
|
|
28204
|
+
{'casedField': 'downloadHistoryTtl',
|
|
28205
|
+
'type': 'duration', 'minVal': 1, 'maxVal': None},
|
|
28206
|
+
'cookiesandothersitedatattl':
|
|
28207
|
+
{'casedField': 'cookiesAndOtherSiteDataTtl',
|
|
28208
|
+
'type': 'duration', 'minVal': 1, 'maxVal': None},
|
|
28209
|
+
'cachedimagesandfilesttl':
|
|
28210
|
+
{'casedField': 'cachedImagesAndFilesTtl',
|
|
28211
|
+
'type': 'duration', 'minVal': 1, 'maxVal': None},
|
|
28212
|
+
'passwordsigninttl':
|
|
28213
|
+
{'casedField': 'passwordSigninTtl',
|
|
28214
|
+
'type': 'duration', 'minVal': 1, 'maxVal': None},
|
|
28215
|
+
'autofillttl':
|
|
28216
|
+
{'casedField': 'autofillTtl',
|
|
28217
|
+
'type': 'duration', 'minVal': 1, 'maxVal': None},
|
|
28218
|
+
'sitesettingsttl':
|
|
28219
|
+
{'casedField': 'siteSettingsTtl',
|
|
28220
|
+
'type': 'duration', 'minVal': 1, 'maxVal': None},
|
|
28221
|
+
'hostedappdatattl':
|
|
28222
|
+
{'casedField': 'hostedAppDataTtl',
|
|
28223
|
+
'type': 'duration', 'minVal': 1, 'maxVal': None}},
|
|
28229
28224
|
'chrome.users.CloudReportingUploadFrequencyV2':
|
|
28230
28225
|
{'cloudreportinguploadfrequency':
|
|
28231
28226
|
{'casedField': 'cloudReportingUploadFrequency',
|
|
28232
|
-
'type': '
|
|
28233
|
-
'chrome.users.
|
|
28227
|
+
'type': 'duration', 'minVal': 3, 'maxVal': 24}},
|
|
28228
|
+
'chrome.users.FetchKeepaliveDurationSecondsOnShutdownV2':
|
|
28234
28229
|
{'fetchkeepalivedurationsecondsonshutdown':
|
|
28235
28230
|
{'casedField': 'fetchKeepaliveDurationSecondsOnShutdown',
|
|
28236
|
-
'type': 'duration', 'minVal': 0, 'maxVal': 5
|
|
28237
|
-
'chrome.users.
|
|
28231
|
+
'type': 'duration', 'minVal': 0, 'maxVal': 5}},
|
|
28232
|
+
'chrome.users.MaxInvalidationFetchDelayV2':
|
|
28238
28233
|
{'maxinvalidationfetchdelay':
|
|
28239
28234
|
{'casedField': 'maxInvalidationFetchDelay',
|
|
28240
|
-
'type': 'duration', 'minVal': 1, 'maxVal': 30, '
|
|
28235
|
+
'type': 'duration', 'minVal': 1, 'maxVal': 30, 'default': 10}},
|
|
28241
28236
|
'chrome.users.PrintingMaxSheetsAllowed':
|
|
28242
28237
|
{'printingmaxsheetsallowednullable':
|
|
28243
28238
|
{'casedField': 'printingMaxSheetsAllowedNullable',
|
|
28244
|
-
'type': 'value', 'minVal': 1, 'maxVal': None
|
|
28245
|
-
'chrome.users.
|
|
28239
|
+
'type': 'value', 'minVal': 1, 'maxVal': None}},
|
|
28240
|
+
'chrome.users.PrintJobHistoryExpirationPeriodNewV2':
|
|
28246
28241
|
{'printjobhistoryexpirationperioddaysnew':
|
|
28247
28242
|
{'casedField': 'printJobHistoryExpirationPeriodDaysNew',
|
|
28248
|
-
'type': 'duration', 'minVal': -1, 'maxVal': None
|
|
28243
|
+
'type': 'duration', 'minVal': -1, 'maxVal': None}},
|
|
28249
28244
|
'chrome.users.RelaunchNotificationWithDurationV2':
|
|
28250
28245
|
{'relaunchnotificationperiodduration':
|
|
28251
28246
|
{'casedField': 'relaunchNotificationPeriodDuration',
|
|
28252
|
-
'type': 'duration', 'minVal': -1, 'maxVal': None
|
|
28253
|
-
'chrome.users.
|
|
28247
|
+
'type': 'duration', 'minVal': -1, 'maxVal': None}},
|
|
28248
|
+
'chrome.users.SecurityTokenSessionSettingsV2':
|
|
28254
28249
|
{'securitytokensessionnotificationseconds':
|
|
28255
28250
|
{'casedField': 'securityTokenSessionNotificationSeconds',
|
|
28256
|
-
'type': 'duration', 'minVal': 0, 'maxVal': 9999
|
|
28257
|
-
'chrome.users.
|
|
28251
|
+
'type': 'duration', 'minVal': 0, 'maxVal': 9999}},
|
|
28252
|
+
'chrome.users.SessionLengthV2':
|
|
28258
28253
|
{'sessiondurationlimit':
|
|
28259
28254
|
{'casedField': 'sessionDurationLimit',
|
|
28260
|
-
'type': 'duration', 'minVal': 1, 'maxVal': 1440
|
|
28255
|
+
'type': 'duration', 'minVal': 1, 'maxVal': 1440}},
|
|
28261
28256
|
'chrome.users.UpdatesSuppressed':
|
|
28262
28257
|
{'updatessuppresseddurationmin':
|
|
28263
28258
|
{'casedField': 'updatesSuppressedDurationMin',
|
|
28264
|
-
'type': 'count', 'minVal': 1, 'maxVal': 1440
|
|
28259
|
+
'type': 'count', 'minVal': 1, 'maxVal': 1440},
|
|
28265
28260
|
'updatessuppressedstarttime':
|
|
28266
28261
|
{'casedField': 'updatesSuppressedStartTime',
|
|
28267
28262
|
'type': 'timeOfDay'}},
|
|
28268
|
-
'chrome.
|
|
28269
|
-
{'useravatarimage':
|
|
28270
|
-
{'casedField': 'userAvatarImage',
|
|
28271
|
-
'type': 'downloadUri'}},
|
|
28272
|
-
'chrome.devices.managedguest.Wallpaper':
|
|
28263
|
+
'chrome.users.Wallpaper':
|
|
28273
28264
|
{'wallpaperimage':
|
|
28274
28265
|
{'casedField': 'wallpaperImage',
|
|
28275
28266
|
'type': 'downloadUri'}},
|
|
28267
|
+
'chrome.devices.EnableReportUploadFrequencyV2':
|
|
28268
|
+
{'reportdeviceuploadfrequency':
|
|
28269
|
+
{'casedField': 'reportDeviceUploadFrequency',
|
|
28270
|
+
'type': 'duration', 'minVal': 60, 'maxVal': 25379}},
|
|
28271
|
+
'chrome.devices.ScheduledRebootDurationV2':
|
|
28272
|
+
{'uptimelimitduration':
|
|
28273
|
+
{'casedField': 'uptimeLimitDuration',
|
|
28274
|
+
'type': 'duration', 'minVal': 1, 'maxVal': 365}},
|
|
28276
28275
|
'chrome.devices.SignInWallpaperImage':
|
|
28277
28276
|
{'devicewallpaperimage':
|
|
28278
28277
|
{'casedField': 'deviceWallpaperImage',
|
|
28279
28278
|
'type': 'downloadUri'}},
|
|
28280
|
-
'chrome.
|
|
28279
|
+
'chrome.devices.kiosk.AcPowerSettingsV2':
|
|
28280
|
+
{'acidletimeout':
|
|
28281
|
+
{'casedField': 'acIdleTimeout',
|
|
28282
|
+
'type': 'duration', 'minVal': 1, 'maxVal': 35000},
|
|
28283
|
+
'acwarningtimeout':
|
|
28284
|
+
{'casedField': 'acWarningTimeout',
|
|
28285
|
+
'type': 'duration', 'minVal': 0, 'maxVal': 35000},
|
|
28286
|
+
'acdimtimeout':
|
|
28287
|
+
{'casedField': 'acDimTimeout',
|
|
28288
|
+
'type': 'duration', 'minVal': 0, 'maxVal': 35000},
|
|
28289
|
+
'acscreenofftimeout':
|
|
28290
|
+
{'casedField': 'acScreenOffTimeout',
|
|
28291
|
+
'type': 'duration', 'minVal': 0, 'maxVal': 35000}},
|
|
28292
|
+
'chrome.devices.kiosk.BatteryPowerSettingsV2':
|
|
28293
|
+
{'batteryidletimeout':
|
|
28294
|
+
{'casedField': 'batteryIdleTimeout',
|
|
28295
|
+
'type': 'duration', 'minVal': 1, 'maxVal': 35000},
|
|
28296
|
+
'batterywarningtimeout':
|
|
28297
|
+
{'casedField': 'batteryWarningTimeout',
|
|
28298
|
+
'type': 'duration', 'minVal': 0, 'maxVal': 35000},
|
|
28299
|
+
'batterydimtimeout':
|
|
28300
|
+
{'casedField': 'batteryDimTimeout',
|
|
28301
|
+
'type': 'duration', 'minVal': 0, 'maxVal': 35000},
|
|
28302
|
+
'batteryscreenofftimeout':
|
|
28303
|
+
{'casedField': 'batteryScreenOffTimeout',
|
|
28304
|
+
'type': 'duration', 'minVal': 0, 'maxVal': 35000}},
|
|
28305
|
+
'chrome.devices.managedguest.Avatar':
|
|
28281
28306
|
{'useravatarimage':
|
|
28282
28307
|
{'casedField': 'userAvatarImage',
|
|
28283
28308
|
'type': 'downloadUri'}},
|
|
28284
|
-
'chrome.
|
|
28309
|
+
'chrome.devices.managedguest.BrowsingDataLifetimeV2':
|
|
28310
|
+
{'browsinghistoryttl':
|
|
28311
|
+
{'casedField': 'browsingHistoryTtl',
|
|
28312
|
+
'type': 'duration', 'minVal': 1, 'maxVal': None},
|
|
28313
|
+
'downloadhistoryttl':
|
|
28314
|
+
{'casedField': 'downloadHistoryTtl',
|
|
28315
|
+
'type': 'duration', 'minVal': 1, 'maxVal': None},
|
|
28316
|
+
'cookiesandothersitedatattl':
|
|
28317
|
+
{'casedField': 'cookiesAndOtherSiteDataTtl',
|
|
28318
|
+
'type': 'duration', 'minVal': 1, 'maxVal': None},
|
|
28319
|
+
'cachedimagesandfilesttl':
|
|
28320
|
+
{'casedField': 'cachedImagesAndFilesTtl',
|
|
28321
|
+
'type': 'duration', 'minVal': 1, 'maxVal': None},
|
|
28322
|
+
'passwordsigninttl':
|
|
28323
|
+
{'casedField': 'passwordSigninTtl',
|
|
28324
|
+
'type': 'duration', 'minVal': 1, 'maxVal': None},
|
|
28325
|
+
'autofillttl':
|
|
28326
|
+
{'casedField': 'autofillTtl',
|
|
28327
|
+
'type': 'duration', 'minVal': 1, 'maxVal': None},
|
|
28328
|
+
'sitesettingsttl':
|
|
28329
|
+
{'casedField': 'siteSettingsTtl',
|
|
28330
|
+
'type': 'duration', 'minVal': 1, 'maxVal': None},
|
|
28331
|
+
'hostedappdatattl':
|
|
28332
|
+
{'casedField': 'hostedAppDataTtl',
|
|
28333
|
+
'type': 'duration', 'minVal': 1, 'maxVal': None}},
|
|
28334
|
+
'chrome.devices.managedguest.MaxInvalidationFetchDelayV2':
|
|
28335
|
+
{'maxinvalidationfetchdelay':
|
|
28336
|
+
{'casedField': 'maxInvalidationFetchDelay',
|
|
28337
|
+
'type': 'duration', 'minVal': 1, 'maxVal': 30, 'default': 10}},
|
|
28338
|
+
'chrome.devices.managedguest.PrintJobHistoryExpirationPeriodNewV2':
|
|
28339
|
+
{'printjobhistoryexpirationperioddaysnew':
|
|
28340
|
+
{'casedField': 'printJobHistoryExpirationPeriodDaysNew',
|
|
28341
|
+
'type': 'duration', 'minVal': -1, 'maxVal': None}},
|
|
28342
|
+
'chrome.devices.managedguest.SecurityTokenSessionSettingsV2':
|
|
28343
|
+
{'securitytokensessionnotificationseconds':
|
|
28344
|
+
{'casedField': 'securityTokenSessionNotificationSeconds',
|
|
28345
|
+
'type': 'duration', 'minVal': 0, 'maxVal': 9999}},
|
|
28346
|
+
'chrome.devices.managedguest.SessionLengthV2':
|
|
28347
|
+
{'sessiondurationlimit':
|
|
28348
|
+
{'casedField': 'sessionDurationLimit',
|
|
28349
|
+
'type': 'duration', 'minVal': 1, 'maxVal': 1440}},
|
|
28350
|
+
'chrome.devices.managedguest.Wallpaper':
|
|
28285
28351
|
{'wallpaperimage':
|
|
28286
28352
|
{'casedField': 'wallpaperImage',
|
|
28287
28353
|
'type': 'downloadUri'}},
|
|
@@ -28296,9 +28362,7 @@ CHROME_TARGET_VERSION_PATTERN = re.compile(r'^(\d{1,4}\.){1,4}$')
|
|
|
28296
28362
|
# [(printerid <PrinterID>)|(appid <AppID>)]
|
|
28297
28363
|
def doUpdateChromePolicy():
|
|
28298
28364
|
def getSpecialVtypeValue(vtype, value):
|
|
28299
|
-
if vtype
|
|
28300
|
-
return {vtype: f'{value}s'}
|
|
28301
|
-
if vtype in {'value', 'downloadUri'}:
|
|
28365
|
+
if vtype in {'duration', 'value', 'downloadUri'}:
|
|
28302
28366
|
return {vtype: value}
|
|
28303
28367
|
if vtype == 'count':
|
|
28304
28368
|
return value
|
|
@@ -28356,8 +28420,8 @@ def doUpdateChromePolicy():
|
|
|
28356
28420
|
for field in jsonData.get('fields', []):
|
|
28357
28421
|
casedField = field['name']
|
|
28358
28422
|
lowerField = casedField.lower()
|
|
28359
|
-
# Handle
|
|
28360
|
-
tmschema =
|
|
28423
|
+
# Handle fields with durations, values, counts and timeOfDay as special cases
|
|
28424
|
+
tmschema = CHROME_SCHEMA_SPECIAL_CASES.get(schemaName, {}).get(lowerField)
|
|
28361
28425
|
if tmschema:
|
|
28362
28426
|
body['requests'][-1]['policyValue']['value'][casedField] = getSpecialVtypeValue(tmschema['type'], field['value'])
|
|
28363
28427
|
body['requests'][-1]['updateMask'] += f'{casedField},'
|
|
@@ -28393,8 +28457,8 @@ def doUpdateChromePolicy():
|
|
|
28393
28457
|
body['requests'][-1]['policyValue']['value'][casedField] = value
|
|
28394
28458
|
body['requests'][-1]['updateMask'] += f'{casedField},'
|
|
28395
28459
|
break
|
|
28396
|
-
# Handle
|
|
28397
|
-
tmschema =
|
|
28460
|
+
# Handle fields with durations, values, counts and timeOfDay as special cases
|
|
28461
|
+
tmschema = CHROME_SCHEMA_SPECIAL_CASES.get(schemaName, {}).get(field)
|
|
28398
28462
|
if tmschema:
|
|
28399
28463
|
casedField = tmschema['casedField']
|
|
28400
28464
|
vtype = tmschema['type']
|
|
@@ -28402,9 +28466,9 @@ def doUpdateChromePolicy():
|
|
|
28402
28466
|
value = getString(Cmd.OB_STRING)
|
|
28403
28467
|
elif vtype != 'timeOfDay':
|
|
28404
28468
|
if 'default' not in tmschema:
|
|
28405
|
-
value = getInteger(minVal=tmschema['minVal'], maxVal=tmschema['maxVal'])
|
|
28469
|
+
value = getInteger(minVal=tmschema['minVal'], maxVal=tmschema['maxVal'])
|
|
28406
28470
|
else:
|
|
28407
|
-
value = getIntegerEmptyAllowed(minVal=tmschema['minVal'], maxVal=tmschema['maxVal'], default=tmschema['default'])
|
|
28471
|
+
value = getIntegerEmptyAllowed(minVal=tmschema['minVal'], maxVal=tmschema['maxVal'], default=tmschema['default'])
|
|
28408
28472
|
else:
|
|
28409
28473
|
value = getHHMM()
|
|
28410
28474
|
body['requests'][-1]['policyValue']['value'][casedField] = getSpecialVtypeValue(vtype, value)
|
|
@@ -28537,20 +28601,14 @@ def doPrintShowChromePolicies():
|
|
|
28537
28601
|
'chrome.users.apps.ManagedConfiguration'} and 'managedConfiguration' in values:
|
|
28538
28602
|
values['managedConfiguration'] = json.dumps(values['managedConfiguration'], ensure_ascii=False).replace('\\n', '').replace('\\"', '"')[1:-1]
|
|
28539
28603
|
for setting, value in values.items():
|
|
28540
|
-
# Handle
|
|
28541
|
-
schema =
|
|
28604
|
+
# Handle fields with durations, values, counts and timeOfDay as special cases
|
|
28605
|
+
schema = CHROME_SCHEMA_SPECIAL_CASES.get(name, {}).get(setting.lower())
|
|
28542
28606
|
if schema and setting == schema['casedField']:
|
|
28543
28607
|
vtype = schema['type']
|
|
28544
|
-
if vtype in {'duration', 'value'}:
|
|
28608
|
+
if vtype in {'duration', 'value', 'downloadUri'}:
|
|
28545
28609
|
value = value.get(vtype, '')
|
|
28546
|
-
if value:
|
|
28547
|
-
if value.endswith('s'):
|
|
28548
|
-
value = value[:-1]
|
|
28549
|
-
value = int(value) // schema['scale']
|
|
28550
28610
|
elif vtype == 'count':
|
|
28551
28611
|
pass
|
|
28552
|
-
elif vtype == 'downloadUri':
|
|
28553
|
-
value = value.get(vtype, '')
|
|
28554
28612
|
else: #timeOfDay
|
|
28555
28613
|
hours = value.get(vtype, {}).get('hours', 0)
|
|
28556
28614
|
minutes = value.get(vtype, {}).get('minutes', 0)
|
|
@@ -75645,7 +75703,6 @@ MAIN_COMMANDS_WITH_OBJECTS = {
|
|
|
75645
75703
|
Cmd.ARG_DRIVEFILEACL: doInfoDriveFileACLs,
|
|
75646
75704
|
Cmd.ARG_DRIVELABEL: doInfoDriveLabels,
|
|
75647
75705
|
Cmd.ARG_INSTANCE: doInfoInstance,
|
|
75648
|
-
Cmd.ARG_GAL: doInfoGAL,
|
|
75649
75706
|
Cmd.ARG_GROUP: doInfoGroups,
|
|
75650
75707
|
Cmd.ARG_GROUPMEMBERS: doInfoGroupMembers,
|
|
75651
75708
|
Cmd.ARG_INBOUNDSSOASSIGNMENT: doInfoInboundSSOAssignment,
|
|
@@ -75740,7 +75797,6 @@ MAIN_COMMANDS_WITH_OBJECTS = {
|
|
|
75740
75797
|
Cmd.ARG_DRIVELABEL: doPrintShowDriveLabels,
|
|
75741
75798
|
Cmd.ARG_DRIVELABELPERMISSION: doPrintShowDriveLabelPermissions,
|
|
75742
75799
|
Cmd.ARG_FEATURE: doPrintShowFeatures,
|
|
75743
|
-
Cmd.ARG_GAL: doPrintShowGAL,
|
|
75744
75800
|
Cmd.ARG_GROUP: doPrintGroups,
|
|
75745
75801
|
Cmd.ARG_GROUPMEMBERS: doPrintGroupMembers,
|
|
75746
75802
|
Cmd.ARG_GROUPTREE: doPrintShowGroupTree,
|
|
@@ -75858,7 +75914,6 @@ MAIN_COMMANDS_WITH_OBJECTS = {
|
|
|
75858
75914
|
Cmd.ARG_DRIVELABEL: doPrintShowDriveLabels,
|
|
75859
75915
|
Cmd.ARG_DRIVELABELPERMISSION: doPrintShowDriveLabelPermissions,
|
|
75860
75916
|
Cmd.ARG_FEATURE: doPrintShowFeatures,
|
|
75861
|
-
Cmd.ARG_GAL: doPrintShowGAL,
|
|
75862
75917
|
Cmd.ARG_GROUPMEMBERS: doShowGroupMembers,
|
|
75863
75918
|
Cmd.ARG_GROUPTREE: doPrintShowGroupTree,
|
|
75864
75919
|
Cmd.ARG_GUARDIAN: doPrintShowGuardians,
|
|
@@ -616,7 +616,6 @@ class GamCLArgs():
|
|
|
616
616
|
ARG_FORWARDS = 'forwards'
|
|
617
617
|
ARG_FORWARDINGADDRESS = 'forwardingaddress'
|
|
618
618
|
ARG_FORWARDINGADDRESSES = 'forwardingaddresses'
|
|
619
|
-
ARG_GAL = 'gal'
|
|
620
619
|
ARG_GCPFOLDER = 'gcpfolder'
|
|
621
620
|
ARG_GCPSERVICEACCOUNT = 'gcpserviceaccount'
|
|
622
621
|
ARG_GMAIL = 'gmail'
|
|
@@ -7,13 +7,14 @@
|
|
|
7
7
|
- [Create an administrator](#create-an-administrator)
|
|
8
8
|
- [Delete an administrator](#delete-an-administrator)
|
|
9
9
|
- [Display administrators](#display-administrators)
|
|
10
|
+
- [Copy privileges from one role to a new role](#copy-privileges-from-one-role-to-a-new-role)
|
|
10
11
|
- [Copy roles from one administrator to another](#copy-roles-from-one-administrator-to-another)
|
|
11
12
|
|
|
12
13
|
## API documentation
|
|
13
14
|
* [About Administrator roles](https://support.google.com/a/answer/33325?ref_topic=4514341)
|
|
14
15
|
* [Directory API - Privileges](https://developers.google.com/admin-sdk/directory/reference/rest/v1/privileges)
|
|
15
16
|
* [Directory API - Roles](https://developers.google.com/admin-sdk/directory/reference/rest/v1/roles)
|
|
16
|
-
* [Directory API - Role
|
|
17
|
+
* [Directory API - Role Assignments](https://developers.google.com/admin-sdk/directory/reference/rest/v1/roleAssignments)
|
|
17
18
|
|
|
18
19
|
## Definitions
|
|
19
20
|
```
|
|
@@ -36,7 +37,7 @@ gam print privileges [todrive <ToDriveAttribute>*]
|
|
|
36
37
|
gam show privileges
|
|
37
38
|
```
|
|
38
39
|
|
|
39
|
-
Here is the output from `gam show privileges`; use this to find `<Privilege>`.
|
|
40
|
+
Here is the output from `gam show privileges`; use this to find a specific `<Privilege>`.
|
|
40
41
|
```
|
|
41
42
|
Show 111 Privileges
|
|
42
43
|
Privilege: REPORTS_ACCESS (1/111)
|
|
@@ -1381,24 +1382,33 @@ Show 111 Privileges
|
|
|
1381
1382
|
|
|
1382
1383
|
## Manage administrative roles
|
|
1383
1384
|
```
|
|
1384
|
-
gam create adminrole <String>
|
|
1385
|
-
|
|
1385
|
+
gam create adminrole <String> [description <String>]
|
|
1386
|
+
privileges all|all_ou|<PrivilegeList>|(select <FileSelector>|<CSVFileSelector>>)
|
|
1387
|
+
gam update adminrole <RoleItem> [name <String>] [description <String>]
|
|
1388
|
+
[privileges all|all_ou|<PrivilegeList>|(select <FileSelector>|<CSVFileSelector>>)]
|
|
1386
1389
|
gam delete adminrole <RoleItem>
|
|
1387
1390
|
```
|
|
1388
1391
|
* `privileges all` - All defined privileges
|
|
1389
1392
|
* `privileges all_ou` - All defined privileges than can be scoped to an OU
|
|
1390
1393
|
* `privileges <PrivilegeList>` - A specific list of privileges
|
|
1394
|
+
* `privileges select <FileSelector>|<CSVFileSelector>>` - A collection of privileges from a flat or CSV file
|
|
1391
1395
|
|
|
1392
1396
|
## Display administrative roles
|
|
1393
1397
|
```
|
|
1394
1398
|
gam info adminrole <RoleItem> [privileges]
|
|
1399
|
+
```
|
|
1400
|
+
* `privileges` - Display privileges associated with role
|
|
1401
|
+
```
|
|
1395
1402
|
gam print adminroles|roles [todrive <ToDriveAttribute>*]
|
|
1396
|
-
[privileges] [oneitemperrow]
|
|
1397
|
-
gam show adminroles|roles
|
|
1403
|
+
[role <RoleItem>] [privileges] [oneitemperrow]
|
|
1404
|
+
gam show adminroles|roles
|
|
1405
|
+
[role <RoleItem>] [privileges]
|
|
1398
1406
|
```
|
|
1407
|
+
By default, all roles are displayed, use `role <RoleItem>` to display a specific role.
|
|
1408
|
+
|
|
1399
1409
|
* `privileges` - Display privileges associated with each role
|
|
1400
1410
|
|
|
1401
|
-
By default, all privileges for a role are shown on one row as a repeating item.
|
|
1411
|
+
By default, with `print`, all privileges for a role are shown on one row as a repeating item.
|
|
1402
1412
|
When `oneitemperrow` is specified, each privilege is output on a separate row/line with the other role fields.
|
|
1403
1413
|
|
|
1404
1414
|
## Create an administrator
|
|
@@ -1438,6 +1448,16 @@ options to limit the display:
|
|
|
1438
1448
|
By default, all role privileges for an admin are shown on one row as a repeating item.
|
|
1439
1449
|
When `oneitemperrow` is specified, each role privilege is output on a separate row/line with the other admin fields.
|
|
1440
1450
|
|
|
1451
|
+
## Copy privileges from one role to a new role
|
|
1452
|
+
Get privileges for existing role; replace Role Name with actual role name
|
|
1453
|
+
```
|
|
1454
|
+
gam redirect csv ./RolePrivileges.csv print adminrole role 'Role Name' privileges oneitemperrow
|
|
1455
|
+
```
|
|
1456
|
+
Create a new role with those privileges
|
|
1457
|
+
```
|
|
1458
|
+
gam create adminrole "New Role Name" privileges select csvfile RolePrivileges.csv:privilegeName
|
|
1459
|
+
```
|
|
1460
|
+
|
|
1441
1461
|
## Copy roles from one administrator to another
|
|
1442
1462
|
Get roles for current admin.
|
|
1443
1463
|
```
|