gam7 7.17.3__tar.gz → 7.18.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.17.3 → gam7-7.18.1}/PKG-INFO +1 -1
- {gam7-7.17.3 → gam7-7.18.1}/src/GamCommands.txt +16 -2
- {gam7-7.17.3 → gam7-7.18.1}/src/GamUpdate.txt +28 -2
- {gam7-7.17.3 → gam7-7.18.1}/src/gam/__init__.py +149 -23
- {gam7-7.17.3 → gam7-7.18.1}/src/gam/gamlib/glapi.py +9 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/gam/gamlib/glclargs.py +2 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/gam/gamlib/glentity.py +2 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Administrators.md +62 -7
- gam7-7.18.1/wiki/Business-Account-Management.md +36 -0
- gam7-7.17.3/wiki/Chat-Bot.md → gam7-7.18.1/wiki/Chat-Bot-Setup-Use.md +1 -1
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Classroom-Membership.md +1 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/GamUpdates.md +14 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/How-to-Upgrade-Legacy-GAM-to-GAM7.md +2 -2
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Users-Web-Resources-and-Sites.md +4 -4
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Version-and-Help.md +6 -6
- {gam7-7.17.3 → gam7-7.18.1}/wiki/_Sidebar.md +2 -1
- {gam7-7.17.3 → gam7-7.18.1}/.github/ISSUE_TEMPLATE/aa-question.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/.github/ISSUE_TEMPLATE/za-bug-report.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/.github/ISSUE_TEMPLATE/zz-feature-request.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/.github/ISSUE_TEMPLATE.txt +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/.github/actions/decrypt.sh +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/.github/actions/entitlements.plist +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/.github/actions/package_exclusions.txt +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/.github/stale.yml +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/.github/workflows/build.yml +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/.github/workflows/codeql-analysis.yml +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/.github/workflows/get-cacerts.yml +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/.github/workflows/pushwiki.yml +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/.github/workflows/pypi.yml +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/.pre-commit-config.yaml +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/LICENSE +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/README.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/pyproject.toml +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/.gitignore +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/LICENSE +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/README.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/cacerts.pem +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/callgam.py +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/gam/__main__.py +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/gam/atom/__init__.py +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/gam/atom/auth.py +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/gam/atom/client.py +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/gam/atom/core.py +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/gam/atom/data.py +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/gam/atom/http.py +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/gam/atom/http_core.py +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/gam/atom/http_interface.py +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/gam/atom/mock_http.py +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/gam/atom/mock_http_core.py +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/gam/atom/mock_service.py +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/gam/atom/service.py +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/gam/atom/token_store.py +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/gam/atom/url.py +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/gam/cacerts.pem +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/gam/cbcm-v1.1beta1.json +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/gam/contactdelegation-v1.json +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/gam/datastudio-v1.json +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/gam/gamlib/__init__.py +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/gam/gamlib/glaction.py +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/gam/gamlib/glcfg.py +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/gam/gamlib/glgapi.py +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/gam/gamlib/glgdata.py +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/gam/gamlib/glglobals.py +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/gam/gamlib/glindent.py +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/gam/gamlib/glmsgs.py +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/gam/gamlib/glskus.py +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/gam/gamlib/gluprop.py +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/gam/gamlib/glverlibs.py +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/gam/gamlib/yubikey.py +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/gam/gdata/__init__.py +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/gam/gdata/alt/__init__.py +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/gam/gdata/alt/app_engine.py +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/gam/gdata/alt/appengine.py +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/gam/gdata/apps/__init__.py +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/gam/gdata/apps/audit/__init__.py +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/gam/gdata/apps/audit/service.py +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/gam/gdata/apps/contacts/__init__.py +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/gam/gdata/apps/contacts/service.py +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/gam/gdata/apps/service.py +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/gam/gdata/service.py +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/gam/gdata/urlfetch.py +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/gam/googleapiclient/__init__.py +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/gam/googleapiclient/_auth.py +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/gam/googleapiclient/_helpers.py +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/gam/googleapiclient/channel.py +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/gam/googleapiclient/discovery.py +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/gam/googleapiclient/discovery_cache/__init__.py +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/gam/googleapiclient/discovery_cache/appengine_memcache.py +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/gam/googleapiclient/discovery_cache/base.py +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/gam/googleapiclient/discovery_cache/file_cache.py +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/gam/googleapiclient/errors.py +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/gam/googleapiclient/http.py +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/gam/googleapiclient/mimeparse.py +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/gam/googleapiclient/model.py +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/gam/googleapiclient/schema.py +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/gam/googleapiclient/version.py +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/gam/iso8601/__init__.py +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/gam/iso8601/iso8601.py +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/gam/meet-v2beta.json +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/gam/serviceaccountlookup-v1.json +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/gam/six.py +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/gam-install.sh +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/gam-setup.bat +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/gam.exe.manifest +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/gam.py +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/gam.spec +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/gam.wxs +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/license.rtf +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/requirements-dev.txt +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/tools/a_atleast_b.py +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/tools/gen-wix-xml-filelist.py +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/tools/mkGamRef.py +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/tools/openssl.props +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/src/version_info.txt.in +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/00scratch.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Addresses.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Alert-Center.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Aliases.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Authorization.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/BNF-Syntax.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Basic-Items.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Bulk-Processing.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/CSV-Input-Filtering.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/CSV-Output-Filtering.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/CSV-Special-Characters.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Calendars-Access.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Calendars-Events.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Calendars.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Chrome-AUE-Counts.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Chrome-Browser-Cloud-Management.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Chrome-Installed-Apps.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Chrome-Needs-Attention-Counts.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Chrome-Policies.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Chrome-Printers.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Chrome-Profile-Management.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Chrome-Version-Counts.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Chrome-Version-History.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/ChromeOS-Devices.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Classroom-Courses.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Classroom-Guardians.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Classroom-Invitations.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Cloud-Channel.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Cloud-Identity-Devices.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Cloud-Identity-Groups-Membership.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Cloud-Identity-Groups.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Cloud-Identity-Policies.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Cloud-Storage.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Collections-of-ChromeOS-Devices.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Collections-of-Items.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Collections-of-Users.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Command-Data-From-Google-Docs-Sheets-Storage.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Command-Line-Parsing.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Command-Logging-Progress.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Context-Aware-Access-Levels.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Customer.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Domain-People-Contacts-Profiles.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Domain-SharedContacts.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Domains-Verification.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Domains.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Downloads-Installs.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Drive-File-Selection.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Drive-Items.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Drive-REST-API-v3.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Email-Audit-Monitor.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Find-File-Owner.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/GAM-Public-Chat-Room.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/GAM-Return-Codes.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/GAM-with-minimal-GCP-rights.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/GAM7-on-Android-Devices.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/GAM7-on-Chrome-OS-Devices.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Global-Address-List.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Google-Data-Transfers.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Google-Network-Addresses.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Groups-Membership.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Groups.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/HTTPS-Proxy.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Home.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/How-to-Install-GAM7.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/How-to-Uninstall-GAM7.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/How-to-Update-GAM7.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/How-to-Upgrade-GAMADV-XTD3-to-GAM7.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Inbound-SSO.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Install-GAM-as-Python-Library.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Licenses.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/List-Items.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/List.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Meta-Commands-and-File-Redirection.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Mobile-Devices.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Organizational-Units.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Other-Resources.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Permission-Matches.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Python-Regular-Expressions.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/README.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Rclone.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Reports.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Reseller.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Resources.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Running-GAM7-securely-on-a-Google-Compute-Engine.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/SSL-Root-CA-Certificates.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Schemas.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Scripts.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Send-Email.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Shared-Drives.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Sites.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Tag-Replace.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Todrive.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Unmanaged-Accounts.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Upgrade-Benefits.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Users-Analytics-Admin.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Users-Application-Specific-Passwords.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Users-Backup-Verification-Codes.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Users-Calendars-Access.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Users-Calendars-Events.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Users-Calendars.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Users-Chat.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Users-Classification-Labels.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Users-Classroom-Profile.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Users-Contacts-Delegates.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Users-Contacts.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Users-Deprovision.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Users-Drive-Activity-Settings.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Users-Drive-Cleanup.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Users-Drive-Comments.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Users-Drive-Copy-Move.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Users-Drive-Files-Display.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Users-Drive-Files-Manage.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Users-Drive-Orphans.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Users-Drive-Ownership.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Users-Drive-Permissions.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Users-Drive-Query.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Users-Drive-Revisions.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Users-Drive-Shortcuts.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Users-Drive-Transfer.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Users-Forms.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Users-Gmail-CSE.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Users-Gmail-Delegates.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Users-Gmail-Filters.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Users-Gmail-Forwarding.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Users-Gmail-Labels.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Users-Gmail-Messages-Threads.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Users-Gmail-Profile.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Users-Gmail-S-MIME.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Users-Gmail-Send-As-Signature-Vacation.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Users-Gmail-Settings.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Users-Group-Membership.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Users-Keep-Notes.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Users-Looker-Studio.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Users-Meet.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Users-People-Contacts-Profiles.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Users-Photo.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Users-Profile-Photo.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Users-Profile-Sharing.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Users-Shared-Drives.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Users-Signout-Turnoff2SV.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Users-Spreadsheets.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Users-Tag-Manager.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Users-Tasks.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Users-Tokens.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Users-YouTube.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Users.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Using-GAM7-with-a-YubiKey.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Using-GAM7-with-a-delegated-admin-service-account.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Vault-Takeout.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/Verifying-a-GAM7-Build-is-Legitimate-and-Official.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/gam.cfg.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/l-AdminSettingsExamples.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/l-Android-Installation.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/l-BulkOperations.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/l-CalendarExamples.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/l-Chat-Bot.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/l-Chrome-Browser-Management.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/l-Chrome-OS-Installation.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/l-Chrome-Policy-Settings.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/l-Cloud-Identity-Groups.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/l-Command-Reference-Calendar-Resources.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/l-Command-Reference-Calendars.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/l-Command-Reference-Definitions.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/l-Command-Reference-Drive.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/l-Command-Reference-Email.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/l-Command-Reference-Group-Attributes.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/l-Command-Reference-Groups.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/l-Command-Reference-Users.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/l-Context-Aware-Access-Levels.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/l-Creating-client_secrets.json-and-oauth2service.json.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/l-CreatingClientSecretsFile.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/l-Custom-Schemas.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/l-Data-Transfers.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/l-DomainVerification.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/l-ExamplesAccountAuditing.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/l-ExamplesCSV.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/l-ExamplesEmailSettings.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/l-ExamplesOrganizations.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/l-GAM-Discussion-Group.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/l-GAM-on-Android-and-Chrome-OS.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/l-GAM-options-files.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/l-GAM-with--minimal-GCP-rights.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/l-GAM3CSVListings.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/l-GAM3DirectoryCommands.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/l-GAM3GroupSettings.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/l-GAM7-FAQ.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/l-Google-Vault---Takeout-Commands.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/l-GoogleDriveManagement.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/l-Grouping-18-or-Older-Users.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/l-Home.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/l-How-to-upgrade-from-Standard-GAM.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/l-Inbound-SSO-Settings.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/l-LicenseExamples.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/l-Managing-Admins.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/l-Managing-CloudPrint-Printers.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/l-Managing-Devices.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/l-Managing-Google-Classroom.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/l-OAuthKeyManagement.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/l-Printers.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/l-ResellerCommands.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/l-Running-GAM-on-Google-Compute-Engine-(GCE)-Securely.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/l-SecurityExamples.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/l-UnmanagedUsersExamples.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/l-Use-a-Yubikey.md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/l-Using-GAM-with-a-delegated-admin-service-account-(DASA).md +0 -0
- {gam7-7.17.3 → gam7-7.18.1}/wiki/l-_Footer.md +0 -0
|
@@ -1511,15 +1511,22 @@ gam show privileges
|
|
|
1511
1511
|
<RoleItem> ::= id:<String>|uid:<string>|<String>
|
|
1512
1512
|
|
|
1513
1513
|
gam create adminrole <String> [description <String>]
|
|
1514
|
-
privileges all|all_ou|<
|
|
1514
|
+
privileges all|all_ou|<PrivilegeList>|(select <FileSelector>|<CSVFileSelector>)|<JSONData>
|
|
1515
|
+
[csv [todrive <ToDriveAttribute>*] [formatjson [quotechar <Character>]] (addcsvdata <FieldName> <String>)*]
|
|
1515
1516
|
gam update adminrole <RoleItem> [name <String>] [description <String>]
|
|
1516
|
-
|
|
1517
|
+
[privileges all|all_ou|<PrivilegeList>|(select <FileSelector>|<CSVFileSelector>)|<JSONData>]
|
|
1518
|
+
[csv [todrive <ToDriveAttribute>*] [formatjson [quotechar <Character>]] (addcsvdata <FieldName> <String>)*]
|
|
1517
1519
|
gam delete adminrole <RoleItem>
|
|
1518
1520
|
gam info adminrole <RoleItem> [privileges]
|
|
1521
|
+
[formatjson]
|
|
1519
1522
|
gam print adminroles|roles [todrive <ToDriveAttribute>*]
|
|
1520
1523
|
[role <RoleItem>] [privileges] [oneitemperrow]
|
|
1524
|
+
[nosystemroles]
|
|
1525
|
+
[formatjson [quotechar <Character>]]
|
|
1521
1526
|
gam show adminroles|roles
|
|
1522
1527
|
[role <RoleItem>] [privileges]
|
|
1528
|
+
[nosystemroles]
|
|
1529
|
+
[formatjson]
|
|
1523
1530
|
|
|
1524
1531
|
gam create|add admin <EmailAddress>|<UniqueID> <RoleItem> customer|(org_unit <OrgUnitItem>)
|
|
1525
1532
|
[condition securitygroup|nonsecuritygroup]
|
|
@@ -3436,6 +3443,13 @@ gam print guardian|guardians [todrive <ToDriveAttribute>*] [accepted|invitations
|
|
|
3436
3443
|
[showstudentemails]
|
|
3437
3444
|
[formatjson [quotechar <Character>]]
|
|
3438
3445
|
|
|
3446
|
+
# Business Profile Accounts
|
|
3447
|
+
|
|
3448
|
+
gam show businessprofileaccounts
|
|
3449
|
+
[type locationgroup|organization|personal|usergroup]
|
|
3450
|
+
gam print businessprofileaccounts [todrive <ToDriveAttribute>*]
|
|
3451
|
+
[type locationgroup|organization|personal|usergroup]
|
|
3452
|
+
|
|
3439
3453
|
# Classroom User Profiles
|
|
3440
3454
|
|
|
3441
3455
|
gam <UserTypeEntity> print classroomprofile [todrive <ToDriveAttribute>*]
|
|
@@ -1,7 +1,33 @@
|
|
|
1
|
+
7.18.01
|
|
2
|
+
|
|
3
|
+
Added option `nosystemroles` to `gam print|show adminroles` that causes GAM
|
|
4
|
+
to only display non-system roles.
|
|
5
|
+
|
|
6
|
+
Added option `formatjson` to `gam info|print|show adminroles`; this will be most useful
|
|
7
|
+
when the `privileges` option is used.
|
|
8
|
+
|
|
9
|
+
Updated `gam create|update adminrole` to allow specification of privileges with
|
|
10
|
+
JSON data: `privileges <JSONData>`. These two updates make it easier to copy admin roles.
|
|
11
|
+
|
|
12
|
+
Updated `gam create|update adminrole` to allow output of the created/updated
|
|
13
|
+
role data in CSV format; by default, GAM displays `<RoleName>(<RoleID>) created|updated`.
|
|
14
|
+
```
|
|
15
|
+
csv [todrive <ToDriveAttribute>*] [formatjson [quotechar <Character>]] (addcsvdata <FieldName> <String>)*
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
7.18.00
|
|
19
|
+
|
|
20
|
+
Added commands to display Business Profile Accounts.
|
|
21
|
+
These are special purpose commands and will not generally be used.
|
|
22
|
+
```
|
|
23
|
+
gam show businessprofileaccounts
|
|
24
|
+
gam print businessprofileaccounts [todrive <ToDriveAttribute>*]
|
|
25
|
+
```
|
|
26
|
+
|
|
1
27
|
7.17.03
|
|
2
28
|
|
|
3
|
-
Fixed bug in gam <UserItem> print|show chatspaces asadmin fields <ChatSpaceFieldNameList>` that caused a trap
|
|
4
|
-
when `
|
|
29
|
+
Fixed bug in `gam <UserItem> print|show chatspaces asadmin fields <ChatSpaceFieldNameList>` that caused a trap
|
|
30
|
+
when `displayname` was not in `<ChatSpaceFieldNameList>`.
|
|
5
31
|
|
|
6
32
|
7.17.02
|
|
7
33
|
|
|
@@ -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.18.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
|
|
@@ -5579,7 +5579,12 @@ def buildGAPIObject(api, credentials=None):
|
|
|
5579
5579
|
try:
|
|
5580
5580
|
API_Scopes = set(list(service._rootDesc['auth']['oauth2']['scopes']))
|
|
5581
5581
|
except KeyError:
|
|
5582
|
-
|
|
5582
|
+
if api == API.VAULT:
|
|
5583
|
+
API_Scopes = set(API.VAULT_SCOPES)
|
|
5584
|
+
elif api == API.BUSINESSACCOUNTMANAGEMENT:
|
|
5585
|
+
API_Scopes = {API.BUSINESSACCOUNTMANAGEMENT_SCOPE}
|
|
5586
|
+
else:
|
|
5587
|
+
API_Scopes = set()
|
|
5583
5588
|
GM.Globals[GM.CURRENT_CLIENT_API] = api
|
|
5584
5589
|
GM.Globals[GM.CURRENT_CLIENT_API_SCOPES] = API_Scopes.intersection(GM.Globals[GM.CREDENTIALS_SCOPES])
|
|
5585
5590
|
if api not in API.SCOPELESS_APIS and not GM.Globals[GM.CURRENT_CLIENT_API_SCOPES]:
|
|
@@ -16616,10 +16621,14 @@ def getRoleId():
|
|
|
16616
16621
|
invalidChoiceExit(role, GM.Globals[GM.MAP_ROLE_NAME_TO_ID], True)
|
|
16617
16622
|
return (role, roleId)
|
|
16618
16623
|
|
|
16624
|
+
PRINT_ADMIN_ROLES_FIELDS = ['roleId', 'roleName', 'roleDescription', 'isSuperAdminRole', 'isSystemRole']
|
|
16625
|
+
|
|
16619
16626
|
# gam create adminrole <String> [description <String>]
|
|
16620
|
-
# privileges all|all_ou|<
|
|
16627
|
+
# privileges all|all_ou|<PrivilegeList>|(select <FileSelector>|<CSVFileSelector>)|<JSONData>
|
|
16628
|
+
# [csv [todrive <ToDriveAttribute>*] [formatjson [quotechar <Character>]] (addcsvdata <FieldName> <String>)*]
|
|
16621
16629
|
# gam update adminrole <RoleItem> [name <String>] [description <String>]
|
|
16622
|
-
# [privileges all|all_ou|<
|
|
16630
|
+
# [privileges all|all_ou|<PrivilegeList>|(select <FileSelector>|<CSVFileSelector>)|<JSONData>]
|
|
16631
|
+
# [csv [todrive <ToDriveAttribute>*] [formatjson [quotechar <Character>]] (addcsvdata <FieldName> <String>)*]
|
|
16623
16632
|
def doCreateUpdateAdminRoles():
|
|
16624
16633
|
def expandChildPrivileges(privilege):
|
|
16625
16634
|
for childPrivilege in privilege.get('childPrivileges', []):
|
|
@@ -16636,6 +16645,9 @@ def doCreateUpdateAdminRoles():
|
|
|
16636
16645
|
allPrivileges = {}
|
|
16637
16646
|
ouPrivileges = {}
|
|
16638
16647
|
childPrivileges = {}
|
|
16648
|
+
csvPF = None
|
|
16649
|
+
FJQC = FormatJSONQuoteChar(None)
|
|
16650
|
+
addCSVData = {}
|
|
16639
16651
|
for privilege in _listPrivileges(cd):
|
|
16640
16652
|
allPrivileges[privilege['privilegeName']] = privilege['serviceId']
|
|
16641
16653
|
if privilege['isOuScopable']:
|
|
@@ -16649,6 +16661,8 @@ def doCreateUpdateAdminRoles():
|
|
|
16649
16661
|
body['rolePrivileges'] = [{'privilegeName': p, 'serviceId': v} for p, v in allPrivileges.items()]
|
|
16650
16662
|
elif privs == 'ALL_OU':
|
|
16651
16663
|
body['rolePrivileges'] = [{'privilegeName': p, 'serviceId': v} for p, v in ouPrivileges.items()]
|
|
16664
|
+
elif privs == 'JSON':
|
|
16665
|
+
body['rolePrivileges'] = getJSON(['roleId', 'roleName', 'isAdminRole', 'isSystemRole']).get('rolePrivileges', [])
|
|
16652
16666
|
else:
|
|
16653
16667
|
if privs == 'SELECT':
|
|
16654
16668
|
privsList = [p.upper() for p in getEntityList(Cmd.OB_PRIVILEGE_LIST)]
|
|
@@ -16670,25 +16684,59 @@ def doCreateUpdateAdminRoles():
|
|
|
16670
16684
|
else:
|
|
16671
16685
|
invalidChoiceExit(p, list(allPrivileges.keys())+list(ouPrivileges.keys())+list(childPrivileges.keys()), True)
|
|
16672
16686
|
elif myarg == 'description':
|
|
16673
|
-
body['roleDescription'] = getString(Cmd.OB_STRING)
|
|
16687
|
+
body['roleDescription'] = getString(Cmd.OB_STRING, minLen=0)
|
|
16674
16688
|
elif myarg == 'name':
|
|
16675
16689
|
body['roleName'] = getString(Cmd.OB_STRING)
|
|
16690
|
+
elif myarg == 'csv':
|
|
16691
|
+
csvPF = CSVPrintFile(PRINT_ADMIN_ROLES_FIELDS)
|
|
16692
|
+
FJQC.SetCsvPF(csvPF)
|
|
16693
|
+
elif csvPF and myarg == 'todrive':
|
|
16694
|
+
csvPF.GetTodriveParameters()
|
|
16695
|
+
elif csvPF and myarg == 'addcsvdata':
|
|
16696
|
+
k = getString(Cmd.OB_STRING)
|
|
16697
|
+
addCSVData[k] = getString(Cmd.OB_STRING, minLen=0)
|
|
16676
16698
|
else:
|
|
16677
|
-
|
|
16699
|
+
FJQC.GetFormatJSONQuoteChar(myarg, True)
|
|
16678
16700
|
if not updateCmd and not body.get('rolePrivileges'):
|
|
16679
16701
|
missingArgumentExit('privileges')
|
|
16702
|
+
if csvPF:
|
|
16703
|
+
if addCSVData:
|
|
16704
|
+
csvPF.AddTitles(sorted(addCSVData.keys()))
|
|
16705
|
+
if not FJQC.formatJSON:
|
|
16706
|
+
csvPF.AddTitles('rolePrivileges')
|
|
16707
|
+
else:
|
|
16708
|
+
csvPF.AddJSONTitles(sorted(addCSVData.keys()))
|
|
16709
|
+
csvPF.MoveJSONTitlesToEnd(['JSON'])
|
|
16710
|
+
fieldsList = ','.join(PRINT_ADMIN_ROLES_FIELDS+['rolePrivileges'])
|
|
16711
|
+
else:
|
|
16712
|
+
fieldsList = 'roleId,roleName'
|
|
16680
16713
|
try:
|
|
16681
16714
|
if not updateCmd:
|
|
16682
16715
|
result = callGAPI(cd.roles(), 'insert',
|
|
16683
16716
|
throwReasons=[GAPI.BAD_REQUEST, GAPI.CUSTOMER_NOT_FOUND,
|
|
16684
16717
|
GAPI.FORBIDDEN, GAPI.PERMISSION_DENIED]+[GAPI.DUPLICATE],
|
|
16685
|
-
customer=GC.Values[GC.CUSTOMER_ID], body=body, fields=
|
|
16718
|
+
customer=GC.Values[GC.CUSTOMER_ID], body=body, fields=fieldsList)
|
|
16686
16719
|
else:
|
|
16687
16720
|
result = callGAPI(cd.roles(), 'patch',
|
|
16688
16721
|
throwReasons=[GAPI.BAD_REQUEST, GAPI.CUSTOMER_NOT_FOUND,
|
|
16689
16722
|
GAPI.FORBIDDEN, GAPI.PERMISSION_DENIED]+[GAPI.NOT_FOUND, GAPI.FAILED_PRECONDITION, GAPI.CONFLICT],
|
|
16690
|
-
customer=GC.Values[GC.CUSTOMER_ID], roleId=roleId, body=body, fields=
|
|
16691
|
-
|
|
16723
|
+
customer=GC.Values[GC.CUSTOMER_ID], roleId=roleId, body=body, fields=fieldsList)
|
|
16724
|
+
if not csvPF:
|
|
16725
|
+
entityActionPerformed([Ent.ADMIN_ROLE, f"{result['roleName']}({result['roleId']})"])
|
|
16726
|
+
else:
|
|
16727
|
+
if not FJQC.formatJSON:
|
|
16728
|
+
if addCSVData:
|
|
16729
|
+
result.update(addCSVData)
|
|
16730
|
+
csvPF.WriteRowNoFilter(result)
|
|
16731
|
+
else:
|
|
16732
|
+
row = {}
|
|
16733
|
+
for field in PRINT_ADMIN_ROLES_FIELDS:
|
|
16734
|
+
if field in result:
|
|
16735
|
+
row[field] = result[field]
|
|
16736
|
+
if addCSVData:
|
|
16737
|
+
row.update(addCSVData)
|
|
16738
|
+
row['JSON'] = json.dumps(cleanJSON(result), ensure_ascii=False, sort_keys=True)
|
|
16739
|
+
csvPF.WriteRowNoFilter(row)
|
|
16692
16740
|
except GAPI.duplicate as e:
|
|
16693
16741
|
entityActionFailedWarning([Ent.ADMIN_ROLE, f"{body['roleName']}"], str(e))
|
|
16694
16742
|
except (GAPI.notFound, GAPI.failedPrecondition, GAPI.conflict) as e:
|
|
@@ -16697,6 +16745,8 @@ def doCreateUpdateAdminRoles():
|
|
|
16697
16745
|
accessErrorExit(cd)
|
|
16698
16746
|
except (GAPI.forbidden, GAPI.permissionDenied) as e:
|
|
16699
16747
|
ClientAPIAccessDeniedExit(str(e))
|
|
16748
|
+
if csvPF:
|
|
16749
|
+
csvPF.writeCSVfile('Admin Roles')
|
|
16700
16750
|
|
|
16701
16751
|
# gam delete adminrole <RoleItem>
|
|
16702
16752
|
def doDeleteAdminRole():
|
|
@@ -16716,9 +16766,10 @@ def doDeleteAdminRole():
|
|
|
16716
16766
|
except (GAPI.forbidden, GAPI.permissionDenied) as e:
|
|
16717
16767
|
ClientAPIAccessDeniedExit(str(e))
|
|
16718
16768
|
|
|
16719
|
-
|
|
16720
|
-
|
|
16721
|
-
|
|
16769
|
+
def _showAdminRole(role, FJQC, i=0, count=0):
|
|
16770
|
+
if FJQC.formatJSON:
|
|
16771
|
+
printLine(json.dumps(cleanJSON(role), ensure_ascii=False, sort_keys=True))
|
|
16772
|
+
return
|
|
16722
16773
|
printEntity([Ent.ADMIN_ROLE, role['roleName']], i, count)
|
|
16723
16774
|
Ind.Increment()
|
|
16724
16775
|
for field in PRINT_ADMIN_ROLES_FIELDS:
|
|
@@ -16739,15 +16790,21 @@ def _showAdminRole(role, i=0, count=0):
|
|
|
16739
16790
|
Ind.Decrement()
|
|
16740
16791
|
|
|
16741
16792
|
# gam info adminrole <RoleItem> [privileges]
|
|
16793
|
+
# [formatjson]
|
|
16742
16794
|
# gam print adminroles|roles [todrive <ToDriveAttribute>*]
|
|
16743
16795
|
# [role <RoleItem>] [privileges] [oneitemperrow]
|
|
16796
|
+
# [nosystemroles]
|
|
16797
|
+
# [formatjson [quotechar <Character>]]
|
|
16744
16798
|
# gam show adminroles|roles
|
|
16745
16799
|
# [role <RoleItem>] [privileges]
|
|
16800
|
+
# [nosystemroles]
|
|
16801
|
+
# [formatjson]
|
|
16746
16802
|
def doInfoPrintShowAdminRoles():
|
|
16747
16803
|
cd = buildGAPIObject(API.DIRECTORY)
|
|
16748
16804
|
fieldsList = PRINT_ADMIN_ROLES_FIELDS[:]
|
|
16749
16805
|
csvPF = CSVPrintFile(fieldsList, PRINT_ADMIN_ROLES_FIELDS) if Act.csvFormat() else None
|
|
16750
|
-
|
|
16806
|
+
FJQC = FormatJSONQuoteChar(csvPF)
|
|
16807
|
+
noSystemRoles = oneItemPerRow = False
|
|
16751
16808
|
if Act.Get() != Act.INFO:
|
|
16752
16809
|
roleId = None
|
|
16753
16810
|
else:
|
|
@@ -16762,13 +16819,17 @@ def doInfoPrintShowAdminRoles():
|
|
|
16762
16819
|
fieldsList.append('rolePrivileges')
|
|
16763
16820
|
elif myarg == 'oneitemperrow':
|
|
16764
16821
|
oneItemPerRow = True
|
|
16822
|
+
elif myarg == 'nosystemroles':
|
|
16823
|
+
noSystemRoles = True
|
|
16765
16824
|
else:
|
|
16766
|
-
|
|
16767
|
-
if csvPF
|
|
16768
|
-
if
|
|
16769
|
-
|
|
16770
|
-
|
|
16771
|
-
|
|
16825
|
+
FJQC.GetFormatJSONQuoteChar(myarg, True)
|
|
16826
|
+
if csvPF:
|
|
16827
|
+
if 'rolePrivileges' in fieldsList:
|
|
16828
|
+
if not oneItemPerRow:
|
|
16829
|
+
if not FJQC.formatJSON:
|
|
16830
|
+
csvPF.AddTitles(['rolePrivileges'])
|
|
16831
|
+
else:
|
|
16832
|
+
csvPF.AddTitles(['privilegeName', 'serviceId'])
|
|
16772
16833
|
try:
|
|
16773
16834
|
if roleId is None:
|
|
16774
16835
|
fields = getItemFieldsFromFieldsList('items', fieldsList)
|
|
@@ -16778,6 +16839,8 @@ def doInfoPrintShowAdminRoles():
|
|
|
16778
16839
|
throwReasons=[GAPI.BAD_REQUEST, GAPI.CUSTOMER_NOT_FOUND,
|
|
16779
16840
|
GAPI.FORBIDDEN, GAPI.PERMISSION_DENIED],
|
|
16780
16841
|
customer=GC.Values[GC.CUSTOMER_ID], fields=fields)
|
|
16842
|
+
if noSystemRoles:
|
|
16843
|
+
roles = [role for role in roles if not role.get('isSystemRole', False)]
|
|
16781
16844
|
else:
|
|
16782
16845
|
fields = getFieldsFromFieldsList(fieldsList)
|
|
16783
16846
|
roles = [callGAPI(cd.roles(), 'get',
|
|
@@ -16796,23 +16859,38 @@ def doInfoPrintShowAdminRoles():
|
|
|
16796
16859
|
role.setdefault('isSystemRole', False)
|
|
16797
16860
|
if not csvPF:
|
|
16798
16861
|
count = len(roles)
|
|
16799
|
-
|
|
16862
|
+
if not FJQC.formatJSON:
|
|
16863
|
+
performActionNumItems(count, Ent.ADMIN_ROLE)
|
|
16800
16864
|
Ind.Increment()
|
|
16801
16865
|
i = 0
|
|
16802
16866
|
for role in roles:
|
|
16803
16867
|
i += 1
|
|
16804
|
-
_showAdminRole(role, i, count)
|
|
16868
|
+
_showAdminRole(role, FJQC, i, count)
|
|
16805
16869
|
Ind.Decrement()
|
|
16806
16870
|
else:
|
|
16807
16871
|
for role in roles:
|
|
16808
16872
|
if not oneItemPerRow or 'rolePrivileges' not in role:
|
|
16809
|
-
|
|
16873
|
+
row = flattenJSON(role)
|
|
16874
|
+
if not FJQC.formatJSON:
|
|
16875
|
+
csvPF.WriteRowTitles(row)
|
|
16876
|
+
elif csvPF.CheckRowTitles(row):
|
|
16877
|
+
row = {}
|
|
16878
|
+
for field in PRINT_ADMIN_ROLES_FIELDS:
|
|
16879
|
+
if field in role:
|
|
16880
|
+
row[field] = role[field]
|
|
16881
|
+
row['JSON'] = json.dumps(cleanJSON(role), ensure_ascii=False, sort_keys=True)
|
|
16882
|
+
csvPF.WriteRowNoFilter(row)
|
|
16810
16883
|
else:
|
|
16811
16884
|
privileges = role.pop('rolePrivileges')
|
|
16812
16885
|
baserow = flattenJSON(role)
|
|
16813
16886
|
for privilege in privileges:
|
|
16814
16887
|
row = flattenJSON(privilege, flattened=baserow.copy())
|
|
16815
|
-
|
|
16888
|
+
if not FJQC.formatJSON:
|
|
16889
|
+
csvPF.WriteRowTitles(row)
|
|
16890
|
+
elif csvPF.CheckRowTitles(row):
|
|
16891
|
+
row = baserow.copy()
|
|
16892
|
+
row['JSON'] = json.dumps(cleanJSON(privilege), ensure_ascii=False, sort_keys=True)
|
|
16893
|
+
csvPF.WriteRowNoFilter(row)
|
|
16816
16894
|
if csvPF:
|
|
16817
16895
|
csvPF.writeCSVfile('Admin Roles')
|
|
16818
16896
|
|
|
@@ -47069,6 +47147,51 @@ def doUpdateSiteVerification():
|
|
|
47069
47147
|
_showSiteVerificationInfo(verify_result)
|
|
47070
47148
|
printKeyValueList([Msg.YOU_CAN_ADD_DOMAIN_TO_ACCOUNT.format(a_domain, GC.Values[GC.DOMAIN])])
|
|
47071
47149
|
|
|
47150
|
+
PROFILE_ACCOUNT_TYPE_MAP = {
|
|
47151
|
+
'locationgroup': 'LOCATION_GROUP',
|
|
47152
|
+
'organization': 'ORGANIZATION',
|
|
47153
|
+
'personal': 'PERSONAL',
|
|
47154
|
+
'usergroup': 'USER_GROUP',
|
|
47155
|
+
}
|
|
47156
|
+
|
|
47157
|
+
# gam show businessprofileaccounts
|
|
47158
|
+
# [type locationgroup|organization|personal|usergroup]
|
|
47159
|
+
# gam print businessprofileaccounts [todrive <ToDriveAttribute>*]
|
|
47160
|
+
# [type locationgroup|organization|personal|usergroup]
|
|
47161
|
+
def doPrintShowBusinessProfileAccounts():
|
|
47162
|
+
bp = buildGAPIObject(API.BUSINESSACCOUNTMANAGEMENT)
|
|
47163
|
+
csvPF = CSVPrintFile(['name', 'accountName']) if Act.csvFormat() else None
|
|
47164
|
+
kwargs = {}
|
|
47165
|
+
while Cmd.ArgumentsRemaining():
|
|
47166
|
+
myarg = getArgument()
|
|
47167
|
+
if csvPF and myarg == 'todrive':
|
|
47168
|
+
csvPF.GetTodriveParameters()
|
|
47169
|
+
elif myarg == 'type':
|
|
47170
|
+
kwargs['filter'] = f'type={getChoice(PROFILE_ACCOUNT_TYPE_MAP, mapChoice=True)}'
|
|
47171
|
+
else:
|
|
47172
|
+
unknownArgumentExit()
|
|
47173
|
+
try:
|
|
47174
|
+
accounts = callGAPIpages(bp.accounts(), 'list', 'accounts',
|
|
47175
|
+
throwReasons=[GAPI.PERMISSION_DENIED],
|
|
47176
|
+
**kwargs)
|
|
47177
|
+
except GAPI.permissionDenied as e:
|
|
47178
|
+
accessErrorExitNonDirectory(API.BUSINESSACCOUNTMANAGEMENT, str(e))
|
|
47179
|
+
if not csvPF:
|
|
47180
|
+
count = len(accounts)
|
|
47181
|
+
i = 0
|
|
47182
|
+
for account in sorted(accounts, key=lambda k: k['name']):
|
|
47183
|
+
i += 1
|
|
47184
|
+
printKeyValueListWithCount(['Account', account['name']], i, count)
|
|
47185
|
+
Ind.Increment()
|
|
47186
|
+
showJSON(None, account)
|
|
47187
|
+
Ind.Decrement()
|
|
47188
|
+
else:
|
|
47189
|
+
for account in accounts:
|
|
47190
|
+
row = flattenJSON(account, flattened={'name': account['name'], 'accountName': account['accountName']})
|
|
47191
|
+
csvPF.WriteRowTitles(row)
|
|
47192
|
+
if csvPF:
|
|
47193
|
+
csvPF.writeCSVfile('Business Profile Accounts')
|
|
47194
|
+
|
|
47072
47195
|
# gam info verify|verification
|
|
47073
47196
|
def doInfoSiteVerification():
|
|
47074
47197
|
verif = buildGAPIObject(API.SITEVERIFICATION)
|
|
@@ -77237,6 +77360,7 @@ MAIN_COMMANDS_WITH_OBJECTS = {
|
|
|
77237
77360
|
Cmd.ARG_BROWSER: doPrintShowBrowsers,
|
|
77238
77361
|
Cmd.ARG_BROWSERTOKEN: doPrintShowBrowserTokens,
|
|
77239
77362
|
Cmd.ARG_BUILDING: doPrintShowBuildings,
|
|
77363
|
+
Cmd.ARG_BUSINESSPROFILEACCOUNT: doPrintShowBusinessProfileAccounts,
|
|
77240
77364
|
Cmd.ARG_CAALEVEL: doPrintShowCAALevels,
|
|
77241
77365
|
Cmd.ARG_CHANNELCUSTOMER: doPrintShowChannelCustomers,
|
|
77242
77366
|
Cmd.ARG_CHANNELCUSTOMERENTITLEMENT: doPrintShowChannelCustomerEntitlements,
|
|
@@ -77370,6 +77494,7 @@ MAIN_COMMANDS_WITH_OBJECTS = {
|
|
|
77370
77494
|
Cmd.ARG_BROWSER: doPrintShowBrowsers,
|
|
77371
77495
|
Cmd.ARG_BROWSERTOKEN: doPrintShowBrowserTokens,
|
|
77372
77496
|
Cmd.ARG_BUILDING: doPrintShowBuildings,
|
|
77497
|
+
Cmd.ARG_BUSINESSPROFILEACCOUNT: doPrintShowBusinessProfileAccounts,
|
|
77373
77498
|
Cmd.ARG_CAALEVEL: doPrintShowCAALevels,
|
|
77374
77499
|
Cmd.ARG_CHANNELCUSTOMER: doPrintShowChannelCustomers,
|
|
77375
77500
|
Cmd.ARG_CHANNELCUSTOMERENTITLEMENT: doPrintShowChannelCustomerEntitlements,
|
|
@@ -77556,6 +77681,7 @@ MAIN_COMMANDS_OBJ_ALIASES = {
|
|
|
77556
77681
|
Cmd.ARG_BUCKET: Cmd.ARG_STORAGEBUCKET,
|
|
77557
77682
|
Cmd.ARG_BUCKETS: Cmd.ARG_STORAGEBUCKET,
|
|
77558
77683
|
Cmd.ARG_BUILDINGS: Cmd.ARG_BUILDING,
|
|
77684
|
+
Cmd.ARG_BUSINESSPROFILEACCOUNTS: Cmd.ARG_BUSINESSPROFILEACCOUNT,
|
|
77559
77685
|
Cmd.ARG_CAALEVELS: Cmd.ARG_CAALEVEL,
|
|
77560
77686
|
Cmd.ARG_CHATMEMBERS: Cmd.ARG_CHATMEMBER,
|
|
77561
77687
|
Cmd.ARG_CHANNELCUSTOMERS: Cmd.ARG_CHANNELCUSTOMER,
|
|
@@ -24,6 +24,7 @@ ACCESSCONTEXTMANAGER = 'accesscontextmanager'
|
|
|
24
24
|
ALERTCENTER = 'alertcenter'
|
|
25
25
|
ANALYTICS_ADMIN = 'analyticsadmin'
|
|
26
26
|
CALENDAR = 'calendar'
|
|
27
|
+
BUSINESSACCOUNTMANAGEMENT = 'mybusinessaccountmanagement'
|
|
27
28
|
CBCM = 'cbcm'
|
|
28
29
|
CHAT = 'chat'
|
|
29
30
|
CHAT_CUSTOM_EMOJIS = 'chatcustomemojis'
|
|
@@ -101,6 +102,7 @@ TASKS = 'tasks'
|
|
|
101
102
|
VAULT = 'vault'
|
|
102
103
|
YOUTUBE = 'youtube'
|
|
103
104
|
#
|
|
105
|
+
BUSINESSACCOUNTMANAGEMENT_SCOPE = 'https://www.googleapis.com/auth/business.manage'
|
|
104
106
|
CHROMEVERSIONHISTORY_URL = 'https://versionhistory.googleapis.com/v1/chrome/platforms'
|
|
105
107
|
DRIVE_SCOPE = 'https://www.googleapis.com/auth/drive'
|
|
106
108
|
GMAIL_SEND_SCOPE = 'https://www.googleapis.com/auth/gmail.send'
|
|
@@ -174,6 +176,7 @@ PROJECT_APIS = [
|
|
|
174
176
|
'alertcenter.googleapis.com',
|
|
175
177
|
'analyticsadmin.googleapis.com',
|
|
176
178
|
# 'audit.googleapis.com',
|
|
179
|
+
'mybusinessaccountmanagement.googleapis.com',
|
|
177
180
|
'calendar-json.googleapis.com',
|
|
178
181
|
'chat.googleapis.com',
|
|
179
182
|
'chromemanagement.googleapis.com',
|
|
@@ -213,6 +216,7 @@ _INFO = {
|
|
|
213
216
|
ACCESSCONTEXTMANAGER: {'name': 'Access Context Manager API', 'version': 'v1', 'v2discovery': True},
|
|
214
217
|
ALERTCENTER: {'name': 'AlertCenter API', 'version': 'v1beta1', 'v2discovery': True},
|
|
215
218
|
ANALYTICS_ADMIN: {'name': 'Analytics Admin API', 'version': 'v1beta', 'v2discovery': True},
|
|
219
|
+
BUSINESSACCOUNTMANAGEMENT: {'name': 'Business Account Management API', 'version': 'v1', 'v2discovery': True},
|
|
216
220
|
CALENDAR: {'name': 'Calendar API', 'version': 'v3', 'v2discovery': True, 'mappedAPI': 'calendar-json'},
|
|
217
221
|
CBCM: {'name': 'Chrome Browser Cloud Management API', 'version': 'v1.1beta1', 'v2discovery': True, 'localjson': True},
|
|
218
222
|
CHAT: {'name': 'Chat API', 'version': 'v1', 'v2discovery': True},
|
|
@@ -293,6 +297,11 @@ _INFO = {
|
|
|
293
297
|
READONLY = ['readonly',]
|
|
294
298
|
|
|
295
299
|
_CLIENT_SCOPES = [
|
|
300
|
+
{'name': 'Business Account Management API',
|
|
301
|
+
'api': BUSINESSACCOUNTMANAGEMENT,
|
|
302
|
+
'subscopes': [],
|
|
303
|
+
'offByDefault': True,
|
|
304
|
+
'scope': BUSINESSACCOUNTMANAGEMENT_SCOPE},
|
|
296
305
|
{'name': 'Calendar API',
|
|
297
306
|
'api': CALENDAR,
|
|
298
307
|
'subscopes': READONLY,
|
|
@@ -441,6 +441,8 @@ class GamCLArgs():
|
|
|
441
441
|
ARG_BUCKETS = 'buckets'
|
|
442
442
|
ARG_BUILDING = 'building'
|
|
443
443
|
ARG_BUILDINGS = 'buildings'
|
|
444
|
+
ARG_BUSINESSPROFILEACCOUNT = 'businessprofileaccount'
|
|
445
|
+
ARG_BUSINESSPROFILEACCOUNTS = 'businessprofileaccounts'
|
|
444
446
|
ARG_CAALEVEL = 'caalevel'
|
|
445
447
|
ARG_CAALEVELS = 'caalevels'
|
|
446
448
|
ARG_CALATTENDEES = 'calattendees'
|
|
@@ -75,6 +75,7 @@ class GamEntity():
|
|
|
75
75
|
BACKUP_VERIFICATION_CODES = 'buvc'
|
|
76
76
|
BUILDING = 'bldg'
|
|
77
77
|
BUILDING_ID = 'bldi'
|
|
78
|
+
BUSINESS_PROFILE_ACCOUNT = 'bpac'
|
|
78
79
|
CAA_LEVEL = 'calv'
|
|
79
80
|
CALENDAR = 'cale'
|
|
80
81
|
CALENDAR_ACL = 'cacl'
|
|
@@ -434,6 +435,7 @@ class GamEntity():
|
|
|
434
435
|
BACKUP_VERIFICATION_CODES: ['Backup Verification Codes', 'Backup Verification Codes'],
|
|
435
436
|
BUILDING: ['Buildings', 'Building'],
|
|
436
437
|
BUILDING_ID: ['Building IDs', 'Building ID'],
|
|
438
|
+
BUSINESS_PROFILE_ACCOUNT: ['Business Profile Accounts', 'Business Profile Account'],
|
|
437
439
|
CAA_LEVEL: ['CAA Levels', 'CAA Level'],
|
|
438
440
|
CALENDAR: ['Calendars', 'Calendar'],
|
|
439
441
|
CALENDAR_ACL: ['Calendar ACLs', 'Calendar ACL'],
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
- [Display administrators](#display-administrators)
|
|
10
10
|
- [Copy privileges from one role to a new role](#copy-privileges-from-one-role-to-a-new-role)
|
|
11
11
|
- [Copy roles from one administrator to another](#copy-roles-from-one-administrator-to-another)
|
|
12
|
+
- [Copy non-system admin roles from a source workspace to a target workspace](#copy-non-system-admin-roles-from-a-source-workspace-to-a-target-workspace)
|
|
12
13
|
|
|
13
14
|
## API documentation
|
|
14
15
|
* [About Administrator roles](https://support.google.com/a/answer/33325?ref_topic=4514341)
|
|
@@ -21,13 +22,16 @@
|
|
|
21
22
|
<DomainName> ::= <String>(.<String>)+
|
|
22
23
|
<EmailAddress> ::= <String>@<DomainName>
|
|
23
24
|
<GroupItem> ::= <EmailAddress>|<UniqueID>|<String>
|
|
25
|
+
<JSONData> ::= (json [charset <Charset>] <String>) | (json file <FileName> [charset <Charset>]) |
|
|
24
26
|
<OrgUnitID> ::= id:<String>
|
|
25
27
|
<OrgUnitPath> ::= /|(/<String)+
|
|
26
28
|
<OrgUnitItem> ::= <OrgUnitID>|<OrgUnitPath>
|
|
27
29
|
<Privilege> ::= <String>
|
|
28
30
|
<PrivilegeList> ::= "<Privilege>(,<Privilege)*"
|
|
29
31
|
<RoleAssignmentID> ::= <String>
|
|
30
|
-
<
|
|
32
|
+
<RoleID> ::= <String>
|
|
33
|
+
<RoleName> ::= <String>
|
|
34
|
+
<RoleItem> ::= id:<RoleID>|<RoleName>
|
|
31
35
|
<UniqueID> ::= id:<String>
|
|
32
36
|
<UserItem> ::= <EmailAddress>|<UniqueID>|<String>
|
|
33
37
|
```
|
|
@@ -1383,9 +1387,11 @@ Show 111 Privileges
|
|
|
1383
1387
|
## Manage administrative roles
|
|
1384
1388
|
```
|
|
1385
1389
|
gam create adminrole <String> [description <String>]
|
|
1386
|
-
privileges all|all_ou|<PrivilegeList>|(select <FileSelector>|<CSVFileSelector>>)
|
|
1390
|
+
privileges all|all_ou|<PrivilegeList>|(select <FileSelector>|<CSVFileSelector>>)|<JSONData>
|
|
1391
|
+
[csv [todrive <ToDriveAttribute>*] [formatjson [quotechar <Character>]] (addcsvdata <FieldName> <String>)*]
|
|
1387
1392
|
gam update adminrole <RoleItem> [name <String>] [description <String>]
|
|
1388
|
-
[privileges all|all_ou|<PrivilegeList>|(select <FileSelector>|<CSVFileSelector>>)]
|
|
1393
|
+
[privileges all|all_ou|<PrivilegeList>|(select <FileSelector>|<CSVFileSelector>>)|<JSONData>]
|
|
1394
|
+
[csv [todrive <ToDriveAttribute>*] [formatjson [quotechar <Character>]] (addcsvdata <FieldName> <String>)*]
|
|
1389
1395
|
gam delete adminrole <RoleItem>
|
|
1390
1396
|
```
|
|
1391
1397
|
* `privileges all` - All defined privileges
|
|
@@ -1393,24 +1399,61 @@ gam delete adminrole <RoleItem>
|
|
|
1393
1399
|
* `privileges <PrivilegeList>` - A specific list of privileges
|
|
1394
1400
|
* `privileges select <FileSelector>|<CSVFileSelector>>` - A collection of privileges from a flat or CSV file
|
|
1395
1401
|
|
|
1402
|
+
By default, when an admin role is created|update, GAM displays `<RoleName>(<RoleID>) created|updated`.
|
|
1403
|
+
* `csv [todrive <ToDriveAttribute>*] [formatjson [quotechar <Character>]]` - Output the admin roledetails in CSV format.
|
|
1404
|
+
|
|
1405
|
+
When `csv` is uused, Add additional columns of data from the command line to the output.
|
|
1406
|
+
* `addcsvdata <FieldName> <String>`
|
|
1407
|
+
|
|
1396
1408
|
## Display administrative roles
|
|
1397
1409
|
```
|
|
1398
1410
|
gam info adminrole <RoleItem> [privileges]
|
|
1411
|
+
[formatjson]
|
|
1399
1412
|
```
|
|
1400
1413
|
* `privileges` - Display privileges associated with role
|
|
1414
|
+
|
|
1415
|
+
By default, Gam displays the information as an indented list of keys and values.
|
|
1416
|
+
* `formatjson` - Display the fields in JSON format.
|
|
1417
|
+
|
|
1401
1418
|
```
|
|
1402
|
-
gam print adminroles|roles [todrive <ToDriveAttribute>*]
|
|
1403
|
-
[role <RoleItem>] [privileges] [oneitemperrow]
|
|
1404
1419
|
gam show adminroles|roles
|
|
1405
1420
|
[role <RoleItem>] [privileges]
|
|
1421
|
+
[nosystemroles]
|
|
1422
|
+
[formatjson]
|
|
1406
1423
|
```
|
|
1407
|
-
|
|
1424
|
+
* `privileges` - Display privileges associated with each role
|
|
1425
|
+
|
|
1426
|
+
By default, all roles are displayed:
|
|
1427
|
+
* `role <RoleItem>` - Display a specific role.
|
|
1428
|
+
* `nosystemroles` - Display onnly non-system roles.
|
|
1429
|
+
|
|
1430
|
+
By default, Gam displays the information as an indented list of keys and values.
|
|
1431
|
+
* `formatjson` - Display the fields in JSON format.
|
|
1408
1432
|
|
|
1433
|
+
```
|
|
1434
|
+
gam print adminroles|roles [todrive <ToDriveAttribute>*]
|
|
1435
|
+
[role <RoleItem>] [privileges] [oneitemperrow]
|
|
1436
|
+
[nosystemroles]
|
|
1437
|
+
[formatjson [quotechar <Character>]]
|
|
1438
|
+
```
|
|
1409
1439
|
* `privileges` - Display privileges associated with each role
|
|
1410
1440
|
|
|
1411
|
-
By default,
|
|
1441
|
+
By default, all privileges for a role are shown on one row as a repeating item.
|
|
1412
1442
|
When `oneitemperrow` is specified, each privilege is output on a separate row/line with the other role fields.
|
|
1413
1443
|
|
|
1444
|
+
By default, all roles are displayed:
|
|
1445
|
+
* `role <RoleItem>` - Display a specific role.
|
|
1446
|
+
* `nosystemroles` - Display onnly non-system roles.
|
|
1447
|
+
|
|
1448
|
+
By default, Gam displays the information as columns of fields; the following option causes the output to be in JSON format:
|
|
1449
|
+
* `formatjson` - Display the fields in JSON format.
|
|
1450
|
+
|
|
1451
|
+
By default, when writing CSV files, Gam uses a quote character of double quote `"`. The quote character is used to enclose columns that contain
|
|
1452
|
+
the quote character itself, the column delimiter (comma by default) and new-line characters. Any quote characters within the column are doubled.
|
|
1453
|
+
When using the `formatjson` option, double quotes are used extensively in the data resulting in hard to read/process output.
|
|
1454
|
+
The `quotechar <Character>` option allows you to choose an alternate quote character, single quote for instance, that makes for readable/processable output.
|
|
1455
|
+
`quotechar` defaults to `gam.cfg/csv_output_quote_char`. When uploading CSV files to Google, double quote `"` should be used.
|
|
1456
|
+
|
|
1414
1457
|
## Create an administrator
|
|
1415
1458
|
Add an administrator role to an administrator.
|
|
1416
1459
|
```
|
|
@@ -1469,3 +1512,15 @@ gam config csv_input_row_filter "scopeType:regex:CUSTOMER" redirect stdout ./Upd
|
|
|
1469
1512
|
gam config csv_input_row_filter "scopeType:regex:ORG_UNIT" redirect stdout ./UpdateNewAdminOrgUnitRoles.txt multiprocess redirect stderr stdout csv CurrentAdminRoles.csv gam create admin newadmin@domain.com "id:~~roleId~~" org_unit "id:~~orgUnitId~~"
|
|
1470
1513
|
```
|
|
1471
1514
|
|
|
1515
|
+
## Copy non-system admin roles from a source workspace to a target workspace
|
|
1516
|
+
This requires GAM version 7.18.01 or higher.
|
|
1517
|
+
|
|
1518
|
+
In the source workspace to the following:
|
|
1519
|
+
```
|
|
1520
|
+
gam redirect csv ./SourceNonSystemRoles.csv print adminroles privileges nosystemroles formatjson quotechar "'"
|
|
1521
|
+
```
|
|
1522
|
+
|
|
1523
|
+
In the target workspacce do the following:
|
|
1524
|
+
```
|
|
1525
|
+
gam redirect csv ./TargetNonSystemRoles.csv multiprocess quotechar "'" redirect stderr - multiprocess csv SourceNonSystemRoles.csv quotechar "'" gam create adminrole "~roleName" description "~roleDescription" privileges json "~JSON" csv addcsvdata oldRoleId "~roleId" formatjson
|
|
1526
|
+
```
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Users - Business Account Management
|
|
2
|
+
- [API documentation](#api-documentation)
|
|
3
|
+
- [Introduction](#introduction)
|
|
4
|
+
- [Definitions](#definitions)
|
|
5
|
+
- [Display Business Profile Accounts](#display-business-profile-accounts)
|
|
6
|
+
|
|
7
|
+
## API documentation
|
|
8
|
+
* [Business Account Management](https://developers.google.com/my-business/reference/accountmanagement/rest)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
## Introduction
|
|
12
|
+
These features were added in version 7.18.00.
|
|
13
|
+
|
|
14
|
+
To use these commands you add the 'Business Account Management API' to your project and update client authorization.
|
|
15
|
+
```
|
|
16
|
+
gam update project
|
|
17
|
+
gam oauth create
|
|
18
|
+
...
|
|
19
|
+
[*] 0) Business Account Management API
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
## Definitions
|
|
23
|
+
* [`<UserTypeEntity>`](Collections-of-Users)
|
|
24
|
+
|
|
25
|
+
## Display Business Profile Accounts
|
|
26
|
+
```
|
|
27
|
+
gam <UserItem> show businessprofileaccounts
|
|
28
|
+
[type locationgroup|organization|personal|usergroup]
|
|
29
|
+
```
|
|
30
|
+
Gam displays the information as an indented list of keys and values.
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
gam <UserItem> print businessprofileaccounts [todrive <ToDriveAttribute>*]
|
|
34
|
+
[type locationgroup|organization|personal|usergroup]
|
|
35
|
+
```
|
|
36
|
+
Gam displays the information as columns of fields.
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
* [Google Classroom API](https://developers.google.com/classroom/reference/rest)
|
|
13
13
|
* [Google Classroom API - Courses Students](https://developers.google.com/classroom/reference/rest/v1/courses.students)
|
|
14
14
|
* [Google Classroom API - Courses Teachers](https://developers.google.com/classroom/reference/rest/v1/courses.teachers)
|
|
15
|
+
* [Classroom Membership Limits](https://support.google.com/edu/classroom/answer/7300976)
|
|
15
16
|
|
|
16
17
|
## Definitions
|
|
17
18
|
```
|