gam7 7.9.6__tar.gz → 7.10.0__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.
- {gam7-7.9.6 → gam7-7.10.0}/PKG-INFO +1 -1
- {gam7-7.9.6 → gam7-7.10.0}/src/GamCommands.txt +22 -2
- {gam7-7.9.6 → gam7-7.10.0}/src/GamUpdate.txt +15 -1
- {gam7-7.9.6 → gam7-7.10.0}/src/gam/__init__.py +210 -11
- {gam7-7.9.6 → gam7-7.10.0}/src/gam/gamlib/glapi.py +6 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/gam/gamlib/glclargs.py +5 -1
- {gam7-7.9.6 → gam7-7.10.0}/src/gam/gamlib/glentity.py +2 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/gam/gamlib/glmsgs.py +1 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Basic-Items.md +3 -1
- {gam7-7.9.6 → gam7-7.10.0}/wiki/GamUpdates.md +19 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/How-to-Upgrade-Legacy-GAM-to-GAM7.md +2 -2
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Licenses.md +1 -1
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Users-Chat.md +76 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Users-Drive-Files-Display.md +2 -1
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Version-and-Help.md +6 -6
- {gam7-7.9.6 → gam7-7.10.0}/.github/ISSUE_TEMPLATE/aa-question.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/.github/ISSUE_TEMPLATE/za-bug-report.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/.github/ISSUE_TEMPLATE/zz-feature-request.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/.github/ISSUE_TEMPLATE.txt +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/.github/actions/decrypt.sh +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/.github/actions/entitlements.plist +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/.github/actions/package_exclusions.txt +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/.github/stale.yml +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/.github/workflows/build.yml +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/.github/workflows/codeql-analysis.yml +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/.github/workflows/get-cacerts.yml +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/.github/workflows/pushwiki.yml +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/.github/workflows/pypi.yml +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/.pre-commit-config.yaml +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/LICENSE +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/README.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/pyproject.toml +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/.gitignore +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/LICENSE +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/cacerts.pem +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/callgam.py +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/gam/__main__.py +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/gam/atom/__init__.py +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/gam/atom/auth.py +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/gam/atom/client.py +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/gam/atom/core.py +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/gam/atom/data.py +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/gam/atom/http.py +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/gam/atom/http_core.py +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/gam/atom/http_interface.py +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/gam/atom/mock_http.py +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/gam/atom/mock_http_core.py +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/gam/atom/mock_service.py +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/gam/atom/service.py +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/gam/atom/token_store.py +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/gam/atom/url.py +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/gam/cacerts.pem +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/gam/cbcm-v1.1beta1.json +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/gam/contactdelegation-v1.json +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/gam/datastudio-v1.json +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/gam/gamlib/__init__.py +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/gam/gamlib/glaction.py +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/gam/gamlib/glcfg.py +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/gam/gamlib/glgapi.py +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/gam/gamlib/glgdata.py +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/gam/gamlib/glglobals.py +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/gam/gamlib/glindent.py +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/gam/gamlib/glskus.py +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/gam/gamlib/gluprop.py +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/gam/gamlib/glverlibs.py +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/gam/gamlib/yubikey.py +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/gam/gdata/__init__.py +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/gam/gdata/alt/__init__.py +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/gam/gdata/alt/app_engine.py +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/gam/gdata/alt/appengine.py +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/gam/gdata/apps/__init__.py +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/gam/gdata/apps/audit/__init__.py +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/gam/gdata/apps/audit/service.py +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/gam/gdata/apps/contacts/__init__.py +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/gam/gdata/apps/contacts/service.py +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/gam/gdata/apps/service.py +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/gam/gdata/service.py +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/gam/gdata/urlfetch.py +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/gam/googleapiclient/__init__.py +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/gam/googleapiclient/_auth.py +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/gam/googleapiclient/_helpers.py +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/gam/googleapiclient/channel.py +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/gam/googleapiclient/discovery.py +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/gam/googleapiclient/discovery_cache/__init__.py +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/gam/googleapiclient/discovery_cache/appengine_memcache.py +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/gam/googleapiclient/discovery_cache/base.py +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/gam/googleapiclient/discovery_cache/file_cache.py +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/gam/googleapiclient/errors.py +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/gam/googleapiclient/http.py +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/gam/googleapiclient/mimeparse.py +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/gam/googleapiclient/model.py +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/gam/googleapiclient/schema.py +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/gam/googleapiclient/version.py +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/gam/iso8601/__init__.py +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/gam/iso8601/iso8601.py +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/gam/meet-v2beta.json +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/gam/serviceaccountlookup-v1.json +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/gam/six.py +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/gam-install.sh +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/gam-setup.bat +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/gam.exe.manifest +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/gam.py +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/gam.spec +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/gam.wxs +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/license.rtf +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/requirements-dev.txt +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/requirements.txt +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/setup.cfg +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/setup.py +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/tools/a_atleast_b.py +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/tools/gen-wix-xml-filelist.py +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/tools/mkGamRef.py +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/tools/openssl.props +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/src/version_info.txt.in +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/00scratch.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Addresses.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Administrators.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Alert-Center.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Aliases.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Authorization.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/BNF-Syntax.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Bulk-Processing.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/CSV-Input-Filtering.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/CSV-Output-Filtering.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/CSV-Special-Characters.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Calendars-Access.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Calendars-Events.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Calendars.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Chat-Bot.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Chrome-AUE-Counts.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Chrome-Browser-Cloud-Management.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Chrome-Installed-Apps.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Chrome-Needs-Attention-Counts.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Chrome-Policies.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Chrome-Printers.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Chrome-Profile-Management.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Chrome-Version-Counts.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Chrome-Version-History.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/ChromeOS-Devices.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Classroom-Courses.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Classroom-Guardians.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Classroom-Invitations.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Classroom-Membership.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Cloud-Channel.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Cloud-Identity-Devices.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Cloud-Identity-Groups-Membership.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Cloud-Identity-Groups.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Cloud-Identity-Policies.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Cloud-Storage.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Collections-of-ChromeOS-Devices.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Collections-of-Items.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Collections-of-Users.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Command-Data-From-Google-Docs-Sheets-Storage.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Command-Line-Parsing.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Command-Logging-Progress.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Context-Aware-Access-Levels.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Customer.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Domain-People-Contacts-Profiles.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Domain-SharedContacts.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Domains-Verification.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Domains.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Downloads-Installs.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Drive-File-Selection.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Drive-Items.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Drive-REST-API-v3.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Email-Audit-Monitor.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Find-File-Owner.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/GAM-Public-Chat-Room.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/GAM-Return-Codes.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/GAM-with-minimal-GCP-rights.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/GAM7-on-Android-Devices.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/GAM7-on-Chrome-OS-Devices.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Google-Data-Transfers.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Google-Network-Addresses.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Groups-Membership.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Groups.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/HTTPS-Proxy.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Home.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/How-to-Install-GAM7.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/How-to-Uninstall-GAM7.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/How-to-Update-GAM7.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/How-to-Upgrade-GAMADV-XTD3-to-GAM7.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Inbound-SSO.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Install-GAM-as-Python-Library.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/List-Items.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/List.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Meta-Commands-and-File-Redirection.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Mobile-Devices.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Organizational-Units.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Other-Resources.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Permission-Matches.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Python-Regular-Expressions.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/README.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Rclone.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Reports.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Reseller.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Resources.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Running-GAM7-securely-on-a-Google-Compute-Engine.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/SSL-Root-CA-Certificates.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Schemas.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Scripts.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Send-Email.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Shared-Drives.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Sites.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Tag-Replace.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Todrive.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Unmanaged-Accounts.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Upgrade-Benefits.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Users-Analytics-Admin.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Users-Application-Specific-Passwords.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Users-Backup-Verification-Codes.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Users-Calendars-Access.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Users-Calendars-Events.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Users-Calendars.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Users-Classification-Labels.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Users-Classroom-Profile.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Users-Contacts-Delegates.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Users-Contacts.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Users-Deprovision.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Users-Drive-Activity-Settings.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Users-Drive-Cleanup.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Users-Drive-Comments.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Users-Drive-Copy-Move.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Users-Drive-Files-Manage.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Users-Drive-Orphans.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Users-Drive-Ownership.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Users-Drive-Permissions.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Users-Drive-Query.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Users-Drive-Revisions.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Users-Drive-Shortcuts.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Users-Drive-Transfer.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Users-Forms.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Users-Gmail-CSE.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Users-Gmail-Delegates.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Users-Gmail-Filters.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Users-Gmail-Forwarding.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Users-Gmail-Labels.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Users-Gmail-Messages-Threads.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Users-Gmail-Profile.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Users-Gmail-S-MIME.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Users-Gmail-Send-As-Signature-Vacation.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Users-Gmail-Settings.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Users-Group-Membership.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Users-Keep-Notes.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Users-Looker-Studio.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Users-Meet.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Users-People-Contacts-Profiles.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Users-Photo.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Users-Profile-Photo.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Users-Profile-Sharing.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Users-Shared-Drives.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Users-Signout-Turnoff2SV.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Users-Spreadsheets.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Users-Tasks.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Users-Tokens.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Users-YouTube.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Users.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Using-GAM7-with-a-YubiKey.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Using-GAM7-with-a-delegated-admin-service-account.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Vault-Takeout.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/Verifying-a-GAM7-Build-is-Legitimate-and-Official.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/_Sidebar.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/gam.cfg.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/l-AdminSettingsExamples.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/l-Android-Installation.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/l-BulkOperations.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/l-CalendarExamples.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/l-Chat-Bot.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/l-Chrome-Browser-Management.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/l-Chrome-OS-Installation.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/l-Chrome-Policy-Settings.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/l-Cloud-Identity-Groups.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/l-Command-Reference-Calendar-Resources.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/l-Command-Reference-Calendars.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/l-Command-Reference-Definitions.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/l-Command-Reference-Drive.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/l-Command-Reference-Email.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/l-Command-Reference-Group-Attributes.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/l-Command-Reference-Groups.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/l-Command-Reference-Users.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/l-Context-Aware-Access-Levels.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/l-Creating-client_secrets.json-and-oauth2service.json.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/l-CreatingClientSecretsFile.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/l-Custom-Schemas.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/l-Data-Transfers.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/l-DomainVerification.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/l-ExamplesAccountAuditing.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/l-ExamplesCSV.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/l-ExamplesEmailSettings.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/l-ExamplesOrganizations.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/l-GAM-Discussion-Group.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/l-GAM-on-Android-and-Chrome-OS.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/l-GAM-options-files.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/l-GAM-with--minimal-GCP-rights.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/l-GAM3CSVListings.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/l-GAM3DirectoryCommands.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/l-GAM3GroupSettings.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/l-GAM7-FAQ.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/l-Google-Vault---Takeout-Commands.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/l-GoogleDriveManagement.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/l-Grouping-18-or-Older-Users.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/l-Home.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/l-How-to-upgrade-from-Standard-GAM.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/l-Inbound-SSO-Settings.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/l-LicenseExamples.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/l-Managing-Admins.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/l-Managing-CloudPrint-Printers.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/l-Managing-Devices.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/l-Managing-Google-Classroom.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/l-OAuthKeyManagement.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/l-Printers.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/l-ResellerCommands.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/l-Running-GAM-on-Google-Compute-Engine-(GCE)-Securely.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/l-SecurityExamples.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/l-UnmanagedUsersExamples.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/l-Use-a-Yubikey.md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/l-Using-GAM-with-a-delegated-admin-service-account-(DASA).md +0 -0
- {gam7-7.9.6 → gam7-7.10.0}/wiki/l-_Footer.md +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
his document describes the GAM command line syntax in modified BNF, see https://en.wikipedia.org/wiki/Backus-Naur_Form
|
|
2
2
|
Skip the History section and start reading at Introduction.
|
|
3
3
|
|
|
4
4
|
Items on the command line are space separated, when an actual space character is required, it will be indicated by <Space>.
|
|
@@ -380,6 +380,8 @@ If an item contains spaces, it should be surrounded by ".
|
|
|
380
380
|
domain:<DomainName>|domain|default
|
|
381
381
|
<CalendarItem> ::= <EmailAddress>
|
|
382
382
|
<ChannelCustomerID> ::= <String>
|
|
383
|
+
<ChatEmojiName> ::= :<String>:
|
|
384
|
+
<ChatEmoji> ::= emojiname <ChatEmojiName> | customemojis/<String>
|
|
383
385
|
<ChatMember> ::= spaces/<String>/members/<String>
|
|
384
386
|
<ChatMessage> ::= spaces/<String>/messages/<String>
|
|
385
387
|
<ChatSpace> ::= spaces/<String> | space <String> | space spaces/<String>
|
|
@@ -664,6 +666,7 @@ If an item contains spaces, it should be surrounded by ".
|
|
|
664
666
|
(gdoc|ghtml <UserGoogleDoc>)|
|
|
665
667
|
(gcsdoc|gcshtml <StorageBucketObjectName>)
|
|
666
668
|
<YouTubeChannelID> ::= <String>
|
|
669
|
+
|
|
667
670
|
## Lists of basic items
|
|
668
671
|
|
|
669
672
|
<APIScopeURLList> ::= "<APIScopeURL>(,<APIScopeURL>)*"
|
|
@@ -6436,6 +6439,22 @@ gam <UserTypeEntity> print chatevents [todrive <ToDriveAttribute>*]
|
|
|
6436
6439
|
filter <String>
|
|
6437
6440
|
[formatjson [quotechar <Character>]]
|
|
6438
6441
|
|
|
6442
|
+
<ChatEmojiName> ::= :[0-9a-z_-]+:
|
|
6443
|
+
<ChatEmoji> ::= emojiname <ChatEmojiName> | customemojis/<String>
|
|
6444
|
+
|
|
6445
|
+
gam <UserTypeEntity> create chatemoji <ChatEmojiName>
|
|
6446
|
+
([drivedir|(sourcefolder <FilePath>)] [filename <FileNamePattern>])
|
|
6447
|
+
[formatjson]
|
|
6448
|
+
gam <UserTypeEntity> delete chatemoji <ChatEmoji>
|
|
6449
|
+
gam <UserTypeEntity> info chatemoji <ChatEmoji>
|
|
6450
|
+
[formatjson]
|
|
6451
|
+
gam <UserTypeEntity> show chatemojis
|
|
6452
|
+
[showcreatedby any|me|others]
|
|
6453
|
+
[formatjson]
|
|
6454
|
+
gam <UserTypeEntity> print chatemojis [todrive <ToDriveAttribute>*]
|
|
6455
|
+
[showcreatedby any|me|others]
|
|
6456
|
+
[formatjson [quotechar <Character>]]
|
|
6457
|
+
|
|
6439
6458
|
# Users - Drive
|
|
6440
6459
|
|
|
6441
6460
|
<DriveFileOrderByFieldName> ::=
|
|
@@ -7204,7 +7223,8 @@ gam <UserTypeEntity> show filesharecounts
|
|
|
7204
7223
|
owners|
|
|
7205
7224
|
parents|
|
|
7206
7225
|
size|
|
|
7207
|
-
trashed
|
|
7226
|
+
trashed|
|
|
7227
|
+
webviewlink
|
|
7208
7228
|
<FileTreeFieldNameList> ::= "<FileTreeFieldName>(,<FileTreeFieldName>)*"
|
|
7209
7229
|
|
|
7210
7230
|
gam <UserTypeEntity> print filetree [todrive <ToDriveAttribute>*]
|
|
@@ -1,6 +1,20 @@
|
|
|
1
|
+
7.10.00
|
|
2
|
+
|
|
3
|
+
Added commands to manage/display Chat Custom Emojis.
|
|
4
|
+
|
|
5
|
+
* See: https://github.com/GAM-team/GAM/wiki/Users-Chat#manage-chat-emojis
|
|
6
|
+
* See: https://github.com/GAM-team/GAM/wiki/Users-Chat#display-chat-emojis
|
|
7
|
+
|
|
8
|
+
Updated `gam <UserItem> print|show chatspaces|chatmembers asadmin` to display
|
|
9
|
+
the spaces in ascending display name order.
|
|
10
|
+
|
|
11
|
+
7.09.07
|
|
12
|
+
|
|
13
|
+
Added `webviewlink` to `<FileTreeFieldName>` for use in `gam <UserTypeEntity> print|show filetree`.
|
|
14
|
+
|
|
1
15
|
7.09.06
|
|
2
16
|
|
|
3
|
-
Upddated `gam print|show shareddrives
|
|
17
|
+
Upddated `gam print|show shareddrives`, `gam print|show shareddriveacls`, `gam print shareddriveorganizers`
|
|
4
18
|
to display the Shared Drives in ascending name order; the API returns them in an unidentifiable order.
|
|
5
19
|
|
|
6
20
|
7.09.05
|
|
@@ -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.10.00'
|
|
29
29
|
__license__ = 'Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0)'
|
|
30
30
|
|
|
31
31
|
#pylint: disable=wrong-import-position
|
|
@@ -22786,7 +22786,7 @@ def _processPeopleContactPhotos(users, function):
|
|
|
22786
22786
|
if function == 'GetContactPhoto' and not os.path.isdir(targetFolder):
|
|
22787
22787
|
os.makedirs(targetFolder)
|
|
22788
22788
|
elif myarg == 'filename':
|
|
22789
|
-
filenamePattern = getString(Cmd.
|
|
22789
|
+
filenamePattern = getString(Cmd.OB_FILE_NAME_PATTERN)
|
|
22790
22790
|
else:
|
|
22791
22791
|
unknownArgumentExit()
|
|
22792
22792
|
subForContactId = filenamePattern.find('#contactid#') != -1
|
|
@@ -25990,6 +25990,8 @@ def _printChatItem(user, citem, parent, entityType, csvPF, FJQC, addCSVData=None
|
|
|
25990
25990
|
if entityType == Ent.CHAT_SPACE:
|
|
25991
25991
|
_cleanChatSpace(citem)
|
|
25992
25992
|
baserow = {'User': user} if user is not None else {}
|
|
25993
|
+
elif entityType == Ent.CHAT_EMOJI:
|
|
25994
|
+
baserow = {'User': user, 'name': citem['name'], 'emojiName': citem['emojiName']}
|
|
25993
25995
|
else:
|
|
25994
25996
|
if user is not None:
|
|
25995
25997
|
baserow = {'User': user, 'space.name': parent['name'], 'space.displayName': parent['displayName']}
|
|
@@ -26009,6 +26011,190 @@ def _printChatItem(user, citem, parent, entityType, csvPF, FJQC, addCSVData=None
|
|
|
26009
26011
|
'JSON': json.dumps(cleanJSON(citem, timeObjects=CHAT_TIME_OBJECTS), ensure_ascii=False, sort_keys=True)})
|
|
26010
26012
|
csvPF.WriteRowNoFilter(row)
|
|
26011
26013
|
|
|
26014
|
+
def _getValidateEmojiName():
|
|
26015
|
+
name = getString(Cmd.OB_CHAT_EMOJI_NAME)
|
|
26016
|
+
if re.match(r'^:[0-9a-z_-]+:$', name):
|
|
26017
|
+
return name
|
|
26018
|
+
Cmd.Backup()
|
|
26019
|
+
usageErrorExit(Msg.INVALID_EMOJI_NAME.format(name))
|
|
26020
|
+
|
|
26021
|
+
# gam <UserTypeEntity> create chatemoji <ChatEmojiName>
|
|
26022
|
+
# ([drivedir|(sourcefolder <FilePath>)] [filename <FileNamePattern>])
|
|
26023
|
+
# [formatjson]
|
|
26024
|
+
def createChatEmoji(users):
|
|
26025
|
+
FJQC = FormatJSONQuoteChar()
|
|
26026
|
+
name = _getValidateEmojiName()
|
|
26027
|
+
body = {'emojiName': name, 'payload': {'filename': '', 'fileContent': ''}}
|
|
26028
|
+
sourceFolder = os.getcwd()
|
|
26029
|
+
filenamePattern = '#email#.jpg'
|
|
26030
|
+
while Cmd.ArgumentsRemaining():
|
|
26031
|
+
myarg = getArgument()
|
|
26032
|
+
if myarg == 'drivedir':
|
|
26033
|
+
sourceFolder = GC.Values[GC.DRIVE_DIR]
|
|
26034
|
+
elif myarg == 'sourcefolder':
|
|
26035
|
+
sourceFolder = os.path.expanduser(getString(Cmd.OB_FILE_PATH))
|
|
26036
|
+
if not os.path.isdir(sourceFolder):
|
|
26037
|
+
entityDoesNotExistExit(Ent.DIRECTORY, sourceFolder)
|
|
26038
|
+
elif myarg == 'filename':
|
|
26039
|
+
filenamePattern = getString(Cmd.OB_FILE_NAME_PATTERN)
|
|
26040
|
+
else:
|
|
26041
|
+
FJQC.GetFormatJSON(myarg)
|
|
26042
|
+
i, count, users = getEntityArgument(users)
|
|
26043
|
+
for user in users:
|
|
26044
|
+
i += 1
|
|
26045
|
+
user, chat, kvList = buildChatServiceObject(API.CHAT_CUSTOM_EMOJIS, user, i, count, [Ent.CHAT_EMOJI, name])
|
|
26046
|
+
if not chat:
|
|
26047
|
+
continue
|
|
26048
|
+
user, userName, _ = splitEmailAddressOrUID(user)
|
|
26049
|
+
filename = _substituteForUser(filenamePattern, user, userName)
|
|
26050
|
+
if sourceFolder is not None:
|
|
26051
|
+
filename = os.path.join(sourceFolder, filename)
|
|
26052
|
+
filename = os.path.expanduser(filename)
|
|
26053
|
+
try:
|
|
26054
|
+
with open(filename, 'rb') as f:
|
|
26055
|
+
image_data = f.read()
|
|
26056
|
+
except (OSError, IOError) as e:
|
|
26057
|
+
entityActionFailedWarning([Ent.USER, user, Ent.CHAT_EMOJI, filename], str(e), i, count)
|
|
26058
|
+
continue
|
|
26059
|
+
body['payload'] = {'filename': os.path.basename(filename),
|
|
26060
|
+
'fileContent':base64.urlsafe_b64encode(image_data).decode(UTF8)}
|
|
26061
|
+
try:
|
|
26062
|
+
emoji = callGAPI(chat.customEmojis(), 'create',
|
|
26063
|
+
throwReasons=[GAPI.ALREADY_EXISTS, GAPI.INVALID_ARGUMENT, GAPI.PERMISSION_DENIED, GAPI.FAILED_PRECONDITION],
|
|
26064
|
+
body=body)
|
|
26065
|
+
_showChatItem(emoji, Ent.CHAT_EMOJI, FJQC, i, count)
|
|
26066
|
+
except (GAPI.alreadyExists, GAPI.invalidArgument, GAPI.permissionDenied) as e:
|
|
26067
|
+
exitIfChatNotConfigured(chat, kvList, str(e), i, count)
|
|
26068
|
+
except GAPI.failedPrecondition:
|
|
26069
|
+
userChatServiceNotEnabledWarning(user, i, count)
|
|
26070
|
+
|
|
26071
|
+
def getEmojiName(myarg):
|
|
26072
|
+
if myarg == 'emojiname':
|
|
26073
|
+
name = _getValidateEmojiName()
|
|
26074
|
+
return 'customEmojis/'+name
|
|
26075
|
+
_, chatEmoji = Cmd.Previous().split('/', 1)
|
|
26076
|
+
return 'customEmojis/'+chatEmoji
|
|
26077
|
+
|
|
26078
|
+
# gam <UserTypeEntity> delete chatemoji <ChatEmoji>
|
|
26079
|
+
def deleteChatEmoji(users):
|
|
26080
|
+
name = None
|
|
26081
|
+
while Cmd.ArgumentsRemaining():
|
|
26082
|
+
myarg = getArgument()
|
|
26083
|
+
if myarg == 'emojiname':
|
|
26084
|
+
name = getEmojiName(myarg)
|
|
26085
|
+
elif myarg.startswith('customemojis/'):
|
|
26086
|
+
name = getEmojiName(myarg)
|
|
26087
|
+
else:
|
|
26088
|
+
unknownArgumentExit()
|
|
26089
|
+
if not name:
|
|
26090
|
+
missingArgumentExit('ChatEmoji')
|
|
26091
|
+
i, count, users = getEntityArgument(users)
|
|
26092
|
+
for user in users:
|
|
26093
|
+
i += 1
|
|
26094
|
+
user, chat, kvList = buildChatServiceObject(API.CHAT_CUSTOM_EMOJIS, user, i, count, [Ent.CHAT_EMOJI, name])
|
|
26095
|
+
if not chat:
|
|
26096
|
+
continue
|
|
26097
|
+
try:
|
|
26098
|
+
callGAPI(chat.customEmojis(), 'delete',
|
|
26099
|
+
throwReasons=[GAPI.NOT_FOUND, GAPI.INVALID_ARGUMENT, GAPI.PERMISSION_DENIED, GAPI.FAILED_PRECONDITION],
|
|
26100
|
+
name=name)
|
|
26101
|
+
entityActionPerformed(kvList, i, count)
|
|
26102
|
+
except (GAPI.notFound, GAPI.invalidArgument, GAPI.permissionDenied) as e:
|
|
26103
|
+
exitIfChatNotConfigured(chat, kvList, str(e), i, count)
|
|
26104
|
+
except GAPI.failedPrecondition:
|
|
26105
|
+
userChatServiceNotEnabledWarning(user, i, count)
|
|
26106
|
+
|
|
26107
|
+
# gam <UserTypeEntity> info chatemoji <ChatEmoji>
|
|
26108
|
+
# [formatjson]
|
|
26109
|
+
def infoChatEmoji(users):
|
|
26110
|
+
FJQC = FormatJSONQuoteChar()
|
|
26111
|
+
name = None
|
|
26112
|
+
while Cmd.ArgumentsRemaining():
|
|
26113
|
+
myarg = getArgument()
|
|
26114
|
+
if myarg == 'emojiname':
|
|
26115
|
+
name = getEmojiName(myarg)
|
|
26116
|
+
elif myarg.startswith('customemojis/'):
|
|
26117
|
+
name = getEmojiName(myarg)
|
|
26118
|
+
else:
|
|
26119
|
+
FJQC.GetFormatJSON(myarg)
|
|
26120
|
+
if not name:
|
|
26121
|
+
missingArgumentExit('ChatEmoji')
|
|
26122
|
+
i, count, users = getEntityArgument(users)
|
|
26123
|
+
for user in users:
|
|
26124
|
+
i += 1
|
|
26125
|
+
user, chat, kvList = buildChatServiceObject(API.CHAT_CUSTOM_EMOJIS, user, i, count, [Ent.CHAT_EMOJI, name])
|
|
26126
|
+
if not chat:
|
|
26127
|
+
continue
|
|
26128
|
+
try:
|
|
26129
|
+
emoji = callGAPI(chat.customEmojis(), 'get',
|
|
26130
|
+
throwReasons=[GAPI.NOT_FOUND, GAPI.INVALID_ARGUMENT, GAPI.PERMISSION_DENIED, GAPI.FAILED_PRECONDITION],
|
|
26131
|
+
name=name)
|
|
26132
|
+
if not FJQC.formatJSON:
|
|
26133
|
+
entityPerformAction(kvList, i, count)
|
|
26134
|
+
_showChatItem(emoji, Ent.CHAT_EMOJI, FJQC, i, count)
|
|
26135
|
+
except (GAPI.notFound, GAPI.invalidArgument, GAPI.permissionDenied) as e:
|
|
26136
|
+
exitIfChatNotConfigured(chat, kvList, str(e), i, count)
|
|
26137
|
+
except GAPI.failedPrecondition:
|
|
26138
|
+
userChatServiceNotEnabledWarning(user, i, count)
|
|
26139
|
+
|
|
26140
|
+
CHAT_EMOJI_SHOW_CREATED_BY_CHOICE_MAP = {
|
|
26141
|
+
'any': None,
|
|
26142
|
+
'me': 'creator("users/me")',
|
|
26143
|
+
'others': 'NOT creator("users/me")'
|
|
26144
|
+
}
|
|
26145
|
+
|
|
26146
|
+
# gam <UserTypeEntity> show chatemojis
|
|
26147
|
+
# [showcreatedby any|me|others]
|
|
26148
|
+
# [formatjson]
|
|
26149
|
+
# gam <UserTypeEntity> print chatemojis [todrive <ToDriveAttribute>*]
|
|
26150
|
+
# [showcreatedby any|me|others]
|
|
26151
|
+
# [formatjson [quotechar <Character>]]
|
|
26152
|
+
def printShowChatEmojis(users):
|
|
26153
|
+
csvPF = CSVPrintFile(['User', 'name', 'emojiName']) if Act.csvFormat() else None
|
|
26154
|
+
FJQC = FormatJSONQuoteChar(csvPF)
|
|
26155
|
+
pfilter = CHAT_EMOJI_SHOW_CREATED_BY_CHOICE_MAP['me']
|
|
26156
|
+
while Cmd.ArgumentsRemaining():
|
|
26157
|
+
myarg = getArgument()
|
|
26158
|
+
if csvPF and myarg == 'todrive':
|
|
26159
|
+
csvPF.GetTodriveParameters()
|
|
26160
|
+
elif myarg =='showcreatedby':
|
|
26161
|
+
pfilter = getChoice(CHAT_EMOJI_SHOW_CREATED_BY_CHOICE_MAP, mapChoice=True)
|
|
26162
|
+
else:
|
|
26163
|
+
FJQC.GetFormatJSONQuoteChar(myarg, True)
|
|
26164
|
+
i, count, users = getEntityArgument(users)
|
|
26165
|
+
for user in users:
|
|
26166
|
+
i += 1
|
|
26167
|
+
user, chat, kvList = buildChatServiceObject(API.CHAT_CUSTOM_EMOJIS, user, i, count, [Ent.CHAT_EMOJI, None])
|
|
26168
|
+
if not chat:
|
|
26169
|
+
continue
|
|
26170
|
+
try:
|
|
26171
|
+
emojis = callGAPIpages(chat.customEmojis(), 'list', 'customEmojis',
|
|
26172
|
+
pageMessage=_getChatPageMessage(Ent.CHAT_EMOJI, user, i, count, pfilter),
|
|
26173
|
+
throwReasons=[GAPI.NOT_FOUND, GAPI.INVALID_ARGUMENT, GAPI.PERMISSION_DENIED],
|
|
26174
|
+
retryReasons=GAPI.SERVICE_NOT_AVAILABLE_RETRY_REASONS,
|
|
26175
|
+
pageSize=CHAT_PAGE_SIZE, filter=pfilter)
|
|
26176
|
+
except (GAPI.notFound, GAPI.invalidArgument, GAPI.permissionDenied) as e:
|
|
26177
|
+
exitIfChatNotConfigured(chat, kvList, str(e), i, count)
|
|
26178
|
+
continue
|
|
26179
|
+
except GAPI.failedPrecondition:
|
|
26180
|
+
userChatServiceNotEnabledWarning(user, i, count)
|
|
26181
|
+
break
|
|
26182
|
+
if not csvPF:
|
|
26183
|
+
jcount = len(emojis)
|
|
26184
|
+
if not FJQC.formatJSON:
|
|
26185
|
+
entityPerformActionNumItems(kvList, jcount, Ent.CHAT_EMOJI, i, count)
|
|
26186
|
+
Ind.Increment()
|
|
26187
|
+
j = 0
|
|
26188
|
+
for emoji in sorted(emojis, key=lambda k: k['emojiName']):
|
|
26189
|
+
j += 1
|
|
26190
|
+
_showChatItem(emoji, Ent.CHAT_EMOJI, FJQC, j, jcount)
|
|
26191
|
+
Ind.Decrement()
|
|
26192
|
+
else:
|
|
26193
|
+
for emoji in sorted(emojis, key=lambda k: k['emojiName']):
|
|
26194
|
+
_printChatItem(user, emoji, '', Ent.CHAT_EMOJI, csvPF, FJQC)
|
|
26195
|
+
if csvPF:
|
|
26196
|
+
csvPF.writeCSVfile('Chat Custom Emojis')
|
|
26197
|
+
|
|
26012
26198
|
# gam setup chat
|
|
26013
26199
|
def doSetupChat():
|
|
26014
26200
|
checkForExtraneousArguments()
|
|
@@ -26472,6 +26658,9 @@ def printShowChatSpaces(users):
|
|
|
26472
26658
|
substituteQueryTimes(queries, queryTimes)
|
|
26473
26659
|
pfilter = kwargsCS['query'] = queries[0]
|
|
26474
26660
|
kwargsCS['useAdminAccess'] = True
|
|
26661
|
+
sortName = 'displayName'
|
|
26662
|
+
else:
|
|
26663
|
+
sortName = 'name'
|
|
26475
26664
|
for user in users:
|
|
26476
26665
|
i += 1
|
|
26477
26666
|
user, chat, kvList = buildChatServiceObject(api, user, i, count, None, useAdminAccess)
|
|
@@ -26499,12 +26688,12 @@ def printShowChatSpaces(users):
|
|
|
26499
26688
|
entityPerformActionNumItems(kvList, jcount, Ent.CHAT_SPACE, i, count)
|
|
26500
26689
|
Ind.Increment()
|
|
26501
26690
|
j = 0
|
|
26502
|
-
for space in spaces:
|
|
26691
|
+
for space in sorted(spaces, key=lambda k: k[sortName]):
|
|
26503
26692
|
j += 1
|
|
26504
26693
|
_showChatItem(space, Ent.CHAT_SPACE, FJQC, j, jcount)
|
|
26505
26694
|
Ind.Decrement()
|
|
26506
26695
|
else:
|
|
26507
|
-
for space in spaces:
|
|
26696
|
+
for space in sorted(spaces, key=lambda k: k[sortName]):
|
|
26508
26697
|
_printChatItem(user, space, None, Ent.CHAT_SPACE, csvPF, FJQC)
|
|
26509
26698
|
if csvPF:
|
|
26510
26699
|
csvPF.writeCSVfile('Chat Spaces')
|
|
@@ -27139,6 +27328,9 @@ def printShowChatMembers(users):
|
|
|
27139
27328
|
i, count, users = getEntityArgument(users)
|
|
27140
27329
|
if useAdminAccess:
|
|
27141
27330
|
_chkChatAdminAccess(count)
|
|
27331
|
+
sortName = 'displayName'
|
|
27332
|
+
else:
|
|
27333
|
+
sortName = 'name'
|
|
27142
27334
|
for user in users:
|
|
27143
27335
|
i += 1
|
|
27144
27336
|
user, chat, kvList = buildChatServiceObject(api, user, i, count, [Ent.CHAT_SPACE, None], useAdminAccess)
|
|
@@ -27161,7 +27353,7 @@ def printShowChatMembers(users):
|
|
|
27161
27353
|
retryReasons=GAPI.SERVICE_NOT_AVAILABLE_RETRY_REASONS,
|
|
27162
27354
|
fields="nextPageToken,spaces(name,displayName,spaceType,membershipCount)", pageSize=CHAT_PAGE_SIZE,
|
|
27163
27355
|
**kwargsCS)
|
|
27164
|
-
for space in spaces:
|
|
27356
|
+
for space in sorted(spaces, key=lambda k: k[sortName]):
|
|
27165
27357
|
if space['spaceType'] == 'SPACE' and 'membershipCount' in space:
|
|
27166
27358
|
parentList.append({'name': space['name'], 'displayName': space.get('displayName', 'None')})
|
|
27167
27359
|
except (GAPI.notFound, GAPI.invalidArgument, GAPI.internalError,
|
|
@@ -27178,7 +27370,7 @@ def printShowChatMembers(users):
|
|
|
27178
27370
|
retryReasons=GAPI.SERVICE_NOT_AVAILABLE_RETRY_REASONS,
|
|
27179
27371
|
fields="nextPageToken,spaces(name,displayName,spaceType,membershipCount)", pageSize=CHAT_PAGE_SIZE,
|
|
27180
27372
|
**kwargsCS)
|
|
27181
|
-
for space in spaces:
|
|
27373
|
+
for space in sorted(spaces, key=lambda k: k[sortName]):
|
|
27182
27374
|
# if 'membershipCount' in space:
|
|
27183
27375
|
# parentList.append({'name': space['name'], 'displayName': space.get('displayName', 'None')})
|
|
27184
27376
|
parentList.append({'name': space['name'], 'displayName': space.get('displayName', 'None')})
|
|
@@ -57618,9 +57810,10 @@ FILETREE_FIELDS_CHOICE_MAP = {
|
|
|
57618
57810
|
'parents': 'parents',
|
|
57619
57811
|
'size': 'size',
|
|
57620
57812
|
'trashed': 'trashed',
|
|
57813
|
+
'webviewlink': 'webViewLink',
|
|
57621
57814
|
}
|
|
57622
57815
|
|
|
57623
|
-
FILETREE_FIELDS_PRINT_ORDER = ['id', 'parents', 'owners', 'mimeType', 'size', 'explicitlyTrashed', 'trashed']
|
|
57816
|
+
FILETREE_FIELDS_PRINT_ORDER = ['id', 'parents', 'owners', 'mimeType', 'size', 'explicitlyTrashed', 'trashed', 'webViewLink']
|
|
57624
57817
|
|
|
57625
57818
|
# gam <UserTypeEntity> print filetree [todrive <ToDriveAttribute>*]
|
|
57626
57819
|
# [select <DriveFileEntity> [selectsubquery <QueryDriveFile>] [depth <Number>]]
|
|
@@ -57785,7 +57978,7 @@ def printShowFileTree(users):
|
|
|
57785
57978
|
else:
|
|
57786
57979
|
unknownArgumentExit()
|
|
57787
57980
|
fieldsList = ['driveId', 'id', 'name', 'parents', 'mimeType', 'ownedByMe', 'owners(emailAddress)',
|
|
57788
|
-
'shared', sizeField, 'explicitlyTrashed', 'trashed']
|
|
57981
|
+
'shared', sizeField, 'explicitlyTrashed', 'trashed', 'webViewLink']
|
|
57789
57982
|
if csvPF:
|
|
57790
57983
|
if not GC.Values[GC.DRIVE_V3_NATIVE_NAMES]:
|
|
57791
57984
|
fileNameTitle = 'title'
|
|
@@ -67870,7 +68063,7 @@ def updatePhoto(users):
|
|
|
67870
68063
|
baseFileIdEntity = drive = owner = None
|
|
67871
68064
|
sourceFolder = os.getcwd()
|
|
67872
68065
|
if Cmd.NumArgumentsRemaining() == 1:
|
|
67873
|
-
filenamePattern = getString(Cmd.
|
|
68066
|
+
filenamePattern = getString(Cmd.OB_FILE_NAME_PATTERN)
|
|
67874
68067
|
else:
|
|
67875
68068
|
filenamePattern = '#email#.jpg'
|
|
67876
68069
|
while Cmd.ArgumentsRemaining():
|
|
@@ -67882,7 +68075,7 @@ def updatePhoto(users):
|
|
|
67882
68075
|
if not os.path.isdir(sourceFolder):
|
|
67883
68076
|
entityDoesNotExistExit(Ent.DIRECTORY, sourceFolder)
|
|
67884
68077
|
elif myarg == 'filename':
|
|
67885
|
-
filenamePattern = getString(Cmd.
|
|
68078
|
+
filenamePattern = getString(Cmd.OB_FILE_NAME_PATTERN)
|
|
67886
68079
|
elif myarg == 'gphoto':
|
|
67887
68080
|
owner, drive = buildGAPIServiceObject(API.DRIVE3, getEmailAddress())
|
|
67888
68081
|
if not drive:
|
|
@@ -67983,7 +68176,7 @@ def getPhoto(users, profileMode):
|
|
|
67983
68176
|
if not os.path.isdir(targetFolder):
|
|
67984
68177
|
os.makedirs(targetFolder)
|
|
67985
68178
|
elif myarg == 'filename':
|
|
67986
|
-
filenamePattern = getString(Cmd.
|
|
68179
|
+
filenamePattern = getString(Cmd.OB_FILE_NAME_PATTERN)
|
|
67987
68180
|
elif myarg == 'nofile':
|
|
67988
68181
|
writeFileData = False
|
|
67989
68182
|
elif myarg == 'noshow':
|
|
@@ -76982,6 +77175,7 @@ USER_ADD_CREATE_FUNCTIONS = {
|
|
|
76982
77175
|
Cmd.ARG_CALENDAR: addCreateCalendars,
|
|
76983
77176
|
Cmd.ARG_GROUP: addUserToGroups,
|
|
76984
77177
|
Cmd.ARG_CALENDARACL: createCalendarACLs,
|
|
77178
|
+
Cmd.ARG_CHATEMOJI: createChatEmoji,
|
|
76985
77179
|
Cmd.ARG_CHATMEMBER: createChatMember,
|
|
76986
77180
|
Cmd.ARG_CHATMESSAGE: createChatMessage,
|
|
76987
77181
|
Cmd.ARG_CHATSPACE: createChatSpace,
|
|
@@ -77098,6 +77292,7 @@ USER_COMMANDS_WITH_OBJECTS = {
|
|
|
77098
77292
|
Cmd.ARG_BACKUPCODE: deleteBackupCodes,
|
|
77099
77293
|
Cmd.ARG_CALENDAR: deleteCalendars,
|
|
77100
77294
|
Cmd.ARG_CALENDARACL: deleteCalendarACLs,
|
|
77295
|
+
Cmd.ARG_CHATEMOJI: deleteChatEmoji,
|
|
77101
77296
|
Cmd.ARG_CHATMEMBER: deleteUpdateChatMember,
|
|
77102
77297
|
Cmd.ARG_CHATMESSAGE: deleteChatMessage,
|
|
77103
77298
|
Cmd.ARG_CHATSPACE: deleteChatSpace,
|
|
@@ -77202,6 +77397,7 @@ USER_COMMANDS_WITH_OBJECTS = {
|
|
|
77202
77397
|
(Act.INFO,
|
|
77203
77398
|
{Cmd.ARG_CALENDAR: infoCalendars,
|
|
77204
77399
|
Cmd.ARG_CALENDARACL: infoCalendarACLs,
|
|
77400
|
+
Cmd.ARG_CHATEMOJI: infoChatEmoji,
|
|
77205
77401
|
Cmd.ARG_CHATEVENT: infoChatEvent,
|
|
77206
77402
|
Cmd.ARG_CHATMEMBER: infoChatMember,
|
|
77207
77403
|
Cmd.ARG_CHATMESSAGE: infoChatMessage,
|
|
@@ -77274,6 +77470,7 @@ USER_COMMANDS_WITH_OBJECTS = {
|
|
|
77274
77470
|
Cmd.ARG_CALENDAR: printShowCalendars,
|
|
77275
77471
|
Cmd.ARG_CALENDARACL: printShowCalendarACLs,
|
|
77276
77472
|
Cmd.ARG_CALSETTINGS: printShowCalSettings,
|
|
77473
|
+
Cmd.ARG_CHATEMOJI: printShowChatEmojis,
|
|
77277
77474
|
Cmd.ARG_CHATEVENT: printShowChatEvents,
|
|
77278
77475
|
Cmd.ARG_CHATMEMBER: printShowChatMembers,
|
|
77279
77476
|
Cmd.ARG_CHATMESSAGE: printShowChatMessages,
|
|
@@ -77381,6 +77578,7 @@ USER_COMMANDS_WITH_OBJECTS = {
|
|
|
77381
77578
|
Cmd.ARG_CALENDAR: printShowCalendars,
|
|
77382
77579
|
Cmd.ARG_CALENDARACL: printShowCalendarACLs,
|
|
77383
77580
|
Cmd.ARG_CALSETTINGS: printShowCalSettings,
|
|
77581
|
+
Cmd.ARG_CHATEMOJI: printShowChatEmojis,
|
|
77384
77582
|
Cmd.ARG_CHATEVENT: printShowChatEvents,
|
|
77385
77583
|
Cmd.ARG_CHATMEMBER: printShowChatMembers,
|
|
77386
77584
|
Cmd.ARG_CHATMESSAGE: printShowChatMessages,
|
|
@@ -77597,6 +77795,7 @@ USER_COMMANDS_OBJ_ALIASES = {
|
|
|
77597
77795
|
Cmd.ARG_CLASSIFICATIONLABELPERMISSION: Cmd.ARG_DRIVELABELPERMISSION,
|
|
77598
77796
|
Cmd.ARG_CLASSIFICATIONLABELPERMISSIONS: Cmd.ARG_DRIVELABELPERMISSION,
|
|
77599
77797
|
Cmd.ARG_CLASSROOMINVITATIONS: Cmd.ARG_CLASSROOMINVITATION,
|
|
77798
|
+
Cmd.ARG_CHATEMOJIS: Cmd.ARG_CHATEMOJI,
|
|
77600
77799
|
Cmd.ARG_CHATEVENTS: Cmd.ARG_CHATEVENT,
|
|
77601
77800
|
Cmd.ARG_CHATMEMBERS: Cmd.ARG_CHATMEMBER,
|
|
77602
77801
|
Cmd.ARG_CHATMESSAGES: Cmd.ARG_CHATMESSAGE,
|
|
@@ -26,6 +26,7 @@ ANALYTICS_ADMIN = 'analyticsadmin'
|
|
|
26
26
|
CALENDAR = 'calendar'
|
|
27
27
|
CBCM = 'cbcm'
|
|
28
28
|
CHAT = 'chat'
|
|
29
|
+
CHAT_CUSTOM_EMOJIS = 'chatcustomemojis'
|
|
29
30
|
CHAT_EVENTS = 'chatevents'
|
|
30
31
|
CHAT_MEMBERSHIPS = 'chatmemberships'
|
|
31
32
|
CHAT_MEMBERSHIPS_ADMIN = 'chatmembershipsadmin'
|
|
@@ -210,6 +211,7 @@ _INFO = {
|
|
|
210
211
|
CALENDAR: {'name': 'Calendar API', 'version': 'v3', 'v2discovery': True, 'mappedAPI': 'calendar-json'},
|
|
211
212
|
CBCM: {'name': 'Chrome Browser Cloud Management API', 'version': 'v1.1beta1', 'v2discovery': True, 'localjson': True},
|
|
212
213
|
CHAT: {'name': 'Chat API', 'version': 'v1', 'v2discovery': True},
|
|
214
|
+
CHAT_CUSTOM_EMOJIS: {'name': 'Chat API - Custom Emojis', 'version': 'v1', 'v2discovery': True, 'mappedAPI': CHAT},
|
|
213
215
|
CHAT_EVENTS: {'name': 'Chat API - Events', 'version': 'v1', 'v2discovery': True, 'mappedAPI': CHAT},
|
|
214
216
|
CHAT_MEMBERSHIPS: {'name': 'Chat API - Memberships', 'version': 'v1', 'v2discovery': True, 'mappedAPI': CHAT},
|
|
215
217
|
CHAT_MEMBERSHIPS_ADMIN: {'name': 'Chat API - Memberships Admin', 'version': 'v1', 'v2discovery': True, 'mappedAPI': CHAT},
|
|
@@ -544,6 +546,10 @@ _SVCACCT_SCOPES = [
|
|
|
544
546
|
'api': CALENDAR,
|
|
545
547
|
'subscopes': READONLY,
|
|
546
548
|
'scope': 'https://www.googleapis.com/auth/calendar'},
|
|
549
|
+
{'name': 'Chat API - Custom Emojis',
|
|
550
|
+
'api': CHAT_CUSTOM_EMOJIS,
|
|
551
|
+
'subscopes': READONLY,
|
|
552
|
+
'scope': 'https://www.googleapis.com/auth/chat.customemojis'},
|
|
547
553
|
{'name': 'Chat API - Memberships',
|
|
548
554
|
'api': CHAT_MEMBERSHIPS,
|
|
549
555
|
'subscopes': READONLY,
|
|
@@ -461,6 +461,8 @@ class GamCLArgs():
|
|
|
461
461
|
ARG_CHANNELSKU = 'channelsku'
|
|
462
462
|
ARG_CHANNELSKUS = 'channelskus'
|
|
463
463
|
ARG_CHAT = 'chat'
|
|
464
|
+
ARG_CHATEMOJI = 'chatemoji'
|
|
465
|
+
ARG_CHATEMOJIS = 'chatemojis'
|
|
464
466
|
ARG_CHATEVENT = 'chatevent'
|
|
465
467
|
ARG_CHATEVENTS = 'chatevents'
|
|
466
468
|
ARG_CHATMEMBER = 'chatmember'
|
|
@@ -843,6 +845,8 @@ class GamCLArgs():
|
|
|
843
845
|
OB_CHARACTER = 'Character'
|
|
844
846
|
OB_CHAR_SET = 'CharacterSet'
|
|
845
847
|
OG_CHAT_ATTACHMENT = 'ChatAttachment'
|
|
848
|
+
OB_CHAT_EMOJI = 'ChatEmoji'
|
|
849
|
+
OB_CHAT_EMOJI_NAME = 'ChatEmojiName'
|
|
846
850
|
OB_CHAT_EVENT = 'ChatEvent'
|
|
847
851
|
OB_CHAT_MEMBER = 'ChatMember'
|
|
848
852
|
OB_CHAT_MESSAGE = 'ChatMessage'
|
|
@@ -930,6 +934,7 @@ class GamCLArgs():
|
|
|
930
934
|
OB_FILE_NAME = 'FileName'
|
|
931
935
|
OB_FILE_NAME_FIELD_NAME = OB_FILE_NAME+'(:'+OB_FIELD_NAME+')+'
|
|
932
936
|
OB_FILE_NAME_OR_URL = 'FileName|URL'
|
|
937
|
+
OB_FILE_NAME_PATTERN = 'FileNamePattern'
|
|
933
938
|
OB_FILE_PATH = 'FilePath'
|
|
934
939
|
OB_FILTER_ID_ENTITY = 'FilterIDEntity'
|
|
935
940
|
OB_FORMAT_LIST = 'FormatList'
|
|
@@ -975,7 +980,6 @@ class GamCLArgs():
|
|
|
975
980
|
OB_PERMISSION_ID_LIST = 'PermissionIDList'
|
|
976
981
|
OB_PERMISSION_ROLE_LIST = 'PermissionRoleList'
|
|
977
982
|
OB_PERMISSION_TYPE_LIST = 'PermissionTypeList'
|
|
978
|
-
OB_PHOTO_FILENAME_PATTERN = 'FilenameNamePattern'
|
|
979
983
|
OB_PRINTER_ID = 'PrinterID'
|
|
980
984
|
OB_PRIVILEGE_LIST = 'PrivilegeList'
|
|
981
985
|
OB_PRODUCT_ID = 'ProductID'
|
|
@@ -86,6 +86,7 @@ class GamEntity():
|
|
|
86
86
|
CHANNEL_SKU = 'chsk'
|
|
87
87
|
CHAT_BOT = 'chbo'
|
|
88
88
|
CHAT_ADMIN = 'chad'
|
|
89
|
+
CHAT_EMOJI = 'chem'
|
|
89
90
|
CHAT_EVENT = 'chev'
|
|
90
91
|
CHAT_MANAGER_USER = 'chgu'
|
|
91
92
|
CHAT_MEMBER = 'chme'
|
|
@@ -436,6 +437,7 @@ class GamEntity():
|
|
|
436
437
|
CHANNEL_SKU: ['Channel SKUs', 'Channel SKU'],
|
|
437
438
|
CHAT_BOT: ['Chat BOTs', 'Chat BOT'],
|
|
438
439
|
CHAT_ADMIN: ['Chat Admins', 'Chat Admin'],
|
|
440
|
+
CHAT_EMOJI: ['Chat Emojis', 'Chat Emoji'],
|
|
439
441
|
CHAT_EVENT: ['Chat Events', 'Chat Event'],
|
|
440
442
|
CHAT_MANAGER_USER: ['Chat User Managers', 'Chat User Manager'],
|
|
441
443
|
CHAT_MESSAGE: ['Chat Messages', 'Chat Message'],
|
|
@@ -309,6 +309,7 @@ INVALID_ALIAS = 'Invalid Alias'
|
|
|
309
309
|
INVALID_ATTENDEE_CHANGE = 'Invalid attendee change "{0}"'
|
|
310
310
|
INVALID_CHARSET = 'Invalid charset "{0}"'
|
|
311
311
|
INVALID_DATE_TIME_RANGE = '{0} {1} must be greater than/equal to {2} {3}'
|
|
312
|
+
INVALID_EMOJI_NAME = '{0} does not match pattern :[0-9a-z_-]:'
|
|
312
313
|
INVALID_ENTITY = 'Invalid {0}, {1}'
|
|
313
314
|
INVALID_EVENT_TIMERANGE = '{0} {1} must be less than {2}'
|
|
314
315
|
INVALID_FILE_SELECTION_WITH_ADMIN_ACCESS = 'Invalid file selection with adminaccess|asadmin'
|
|
@@ -96,7 +96,7 @@
|
|
|
96
96
|
banana|basil|blueberry|flamingo|graphite|grape|
|
|
97
97
|
lavender|peacock|sage|tangerine|tomato
|
|
98
98
|
<FileFormat> ::=
|
|
99
|
-
csv|doc|dot|docx|dotx|epub|html|jpeg|jpg|mht|odp|ods|odt|
|
|
99
|
+
csv|doc|dot|docx|dotx|epub|html|jpeg|jpg|json|mht|odp|ods|odt|
|
|
100
100
|
pdf|png|ppt|pot|potx|pptx|rtf|svg|tsv|txt|xls|xlt|xlsx|xltx|zip|
|
|
101
101
|
ms|microsoft|openoffice|
|
|
102
102
|
<LabelColorHex> ::=
|
|
@@ -278,6 +278,8 @@
|
|
|
278
278
|
domain:<DomainName>|domain|default
|
|
279
279
|
<CalendarItem> ::= <EmailAddress>
|
|
280
280
|
<ChannelCustomerID> ::= <String>
|
|
281
|
+
<ChatEmojiName> ::= :[0-9a-z_-]+:
|
|
282
|
+
<ChatEmoji> ::= emojiname <ChatEmojiName> | customemojis/<String>
|
|
281
283
|
<ChatMember> ::= spaces/<String>/members/<String>
|
|
282
284
|
<ChatMessage> ::= spaces/<String>/messages/<String>
|
|
283
285
|
<ChatSpace> ::= spaces/<String> | space <String> | space spaces/<String>
|
|
@@ -10,6 +10,25 @@ Add the `-s` option to the end of the above commands to suppress creating the `g
|
|
|
10
10
|
|
|
11
11
|
See [Downloads-Installs-GAM7](https://github.com/GAM-team/GAM/wiki/Downloads-Installs) for Windows or other options, including manual installation
|
|
12
12
|
|
|
13
|
+
### 7.10.00
|
|
14
|
+
|
|
15
|
+
Added commands to manage/display Chat Custom Emojis.
|
|
16
|
+
|
|
17
|
+
* See: https://github.com/GAM-team/GAM/wiki/Users-Chat#manage-chat-emojis
|
|
18
|
+
* See: https://github.com/GAM-team/GAM/wiki/Users-Chat#display-chat-emojis
|
|
19
|
+
|
|
20
|
+
Updated `gam <UserItem> print|show chatspaces|chatmembers asadmin` to display
|
|
21
|
+
the spaces in ascending display name order.
|
|
22
|
+
|
|
23
|
+
### 7.09.07
|
|
24
|
+
|
|
25
|
+
Added `webviewlink` to `<FileTreeFieldName>` for use in `gam <UserTypeEntity> print|show filetree`.
|
|
26
|
+
|
|
27
|
+
### 7.09.06
|
|
28
|
+
|
|
29
|
+
Upddated `gam print|show shareddrives`, `gam print|show shareddriveacls`, `gam print shareddriveorganizers`
|
|
30
|
+
to display the Shared Drives in ascending name order; the API returns them in an unidentifiable order.
|
|
31
|
+
|
|
13
32
|
### 7.09.05
|
|
14
33
|
|
|
15
34
|
Improved output of `gam info|show chromeschemas [std]` to more accurately display the schemas.
|
|
@@ -251,7 +251,7 @@ writes the credentials into the file oauth2.txt.
|
|
|
251
251
|
admin@server:/Users/admin$ rm -f /Users/admin/GAMConfig/oauth2.txt
|
|
252
252
|
admin@server:/Users/admin$ gam version
|
|
253
253
|
WARNING: Config File: /Users/admin/GAMConfig/gam.cfg, Section: DEFAULT, Item: oauth2_txt, Value: /Users/admin/GAMConfig/oauth2.txt, Not Found
|
|
254
|
-
GAM 7.
|
|
254
|
+
GAM 7.10.00 - https://github.com/GAM-team/GAM - pyinstaller
|
|
255
255
|
GAM Team <google-apps-manager@googlegroups.com>
|
|
256
256
|
Python 3.13.5 64-bit final
|
|
257
257
|
MacOS Sequoia 15.5 x86_64
|
|
@@ -989,7 +989,7 @@ writes the credentials into the file oauth2.txt.
|
|
|
989
989
|
C:\>del C:\GAMConfig\oauth2.txt
|
|
990
990
|
C:\>gam version
|
|
991
991
|
WARNING: Config File: C:\GAMConfig\gam.cfg, Section: DEFAULT, Item: oauth2_txt, Value: C:\GAMConfig\oauth2.txt, Not Found
|
|
992
|
-
GAM 7.
|
|
992
|
+
GAM 7.10.00 - https://github.com/GAM-team/GAM - pythonsource
|
|
993
993
|
GAM Team <google-apps-manager@googlegroups.com>
|
|
994
994
|
Python 3.13.5 64-bit final
|
|
995
995
|
Windows-10-10.0.17134 AMD64
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
- [Synchronize licenses](#synchronize-licenses)
|
|
12
12
|
|
|
13
13
|
## API documentation
|
|
14
|
-
* [License Manager API](https://developers.google.com/admin
|
|
14
|
+
* [License Manager API](https://developers.google.com/workspace/admin/licensing/reference/rest/v1/licenseAssignments)
|
|
15
15
|
|
|
16
16
|
## License Products and SKUs
|
|
17
17
|
* [Product and SKU IDs](https://developers.google.com/admin-sdk/licensing/v1/how-tos/products)
|