gam7 7.18.2__tar.gz → 7.18.4__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.

Files changed (320) hide show
  1. {gam7-7.18.2 → gam7-7.18.4}/PKG-INFO +1 -1
  2. {gam7-7.18.2 → gam7-7.18.4}/src/GamCommands.txt +5 -0
  3. {gam7-7.18.2 → gam7-7.18.4}/src/GamUpdate.txt +10 -0
  4. {gam7-7.18.2 → gam7-7.18.4}/src/gam/__init__.py +74 -6
  5. {gam7-7.18.2 → gam7-7.18.4}/src/gam/gamlib/glapi.py +1 -0
  6. {gam7-7.18.2 → gam7-7.18.4}/src/gam/gamlib/glclargs.py +2 -0
  7. {gam7-7.18.2 → gam7-7.18.4}/src/gam/gamlib/glentity.py +6 -2
  8. {gam7-7.18.2 → gam7-7.18.4}/src/gam/gamlib/glmsgs.py +1 -0
  9. {gam7-7.18.2 → gam7-7.18.4}/wiki/Alert-Center.md +14 -0
  10. {gam7-7.18.2 → gam7-7.18.4}/wiki/Basic-Items.md +1 -0
  11. {gam7-7.18.2 → gam7-7.18.4}/wiki/GamUpdates.md +9 -0
  12. {gam7-7.18.2 → gam7-7.18.4}/wiki/How-to-Upgrade-Legacy-GAM-to-GAM7.md +2 -2
  13. {gam7-7.18.2 → gam7-7.18.4}/wiki/Users-Chat.md +1 -1
  14. {gam7-7.18.2 → gam7-7.18.4}/wiki/Users-Drive-Copy-Move.md +21 -0
  15. {gam7-7.18.2 → gam7-7.18.4}/wiki/Users-Drive-Permissions.md +43 -6
  16. {gam7-7.18.2 → gam7-7.18.4}/wiki/Using-GAM7-with-a-delegated-admin-service-account.md +4 -1
  17. {gam7-7.18.2 → gam7-7.18.4}/wiki/Version-and-Help.md +7 -7
  18. {gam7-7.18.2 → gam7-7.18.4}/.github/ISSUE_TEMPLATE/aa-question.md +0 -0
  19. {gam7-7.18.2 → gam7-7.18.4}/.github/ISSUE_TEMPLATE/za-bug-report.md +0 -0
  20. {gam7-7.18.2 → gam7-7.18.4}/.github/ISSUE_TEMPLATE/zz-feature-request.md +0 -0
  21. {gam7-7.18.2 → gam7-7.18.4}/.github/ISSUE_TEMPLATE.txt +0 -0
  22. {gam7-7.18.2 → gam7-7.18.4}/.github/actions/decrypt.sh +0 -0
  23. {gam7-7.18.2 → gam7-7.18.4}/.github/actions/entitlements.plist +0 -0
  24. {gam7-7.18.2 → gam7-7.18.4}/.github/actions/package_exclusions.txt +0 -0
  25. {gam7-7.18.2 → gam7-7.18.4}/.github/stale.yml +0 -0
  26. {gam7-7.18.2 → gam7-7.18.4}/.github/workflows/build.yml +0 -0
  27. {gam7-7.18.2 → gam7-7.18.4}/.github/workflows/codeql-analysis.yml +0 -0
  28. {gam7-7.18.2 → gam7-7.18.4}/.github/workflows/get-cacerts.yml +0 -0
  29. {gam7-7.18.2 → gam7-7.18.4}/.github/workflows/pushwiki.yml +0 -0
  30. {gam7-7.18.2 → gam7-7.18.4}/.github/workflows/pypi.yml +0 -0
  31. {gam7-7.18.2 → gam7-7.18.4}/.pre-commit-config.yaml +0 -0
  32. {gam7-7.18.2 → gam7-7.18.4}/LICENSE +0 -0
  33. {gam7-7.18.2 → gam7-7.18.4}/README.md +0 -0
  34. {gam7-7.18.2 → gam7-7.18.4}/pyproject.toml +0 -0
  35. {gam7-7.18.2 → gam7-7.18.4}/src/.gitignore +0 -0
  36. {gam7-7.18.2 → gam7-7.18.4}/src/LICENSE +0 -0
  37. {gam7-7.18.2 → gam7-7.18.4}/src/README.md +0 -0
  38. {gam7-7.18.2 → gam7-7.18.4}/src/cacerts.pem +0 -0
  39. {gam7-7.18.2 → gam7-7.18.4}/src/callgam.py +0 -0
  40. {gam7-7.18.2 → gam7-7.18.4}/src/gam/__main__.py +0 -0
  41. {gam7-7.18.2 → gam7-7.18.4}/src/gam/atom/__init__.py +0 -0
  42. {gam7-7.18.2 → gam7-7.18.4}/src/gam/atom/auth.py +0 -0
  43. {gam7-7.18.2 → gam7-7.18.4}/src/gam/atom/client.py +0 -0
  44. {gam7-7.18.2 → gam7-7.18.4}/src/gam/atom/core.py +0 -0
  45. {gam7-7.18.2 → gam7-7.18.4}/src/gam/atom/data.py +0 -0
  46. {gam7-7.18.2 → gam7-7.18.4}/src/gam/atom/http.py +0 -0
  47. {gam7-7.18.2 → gam7-7.18.4}/src/gam/atom/http_core.py +0 -0
  48. {gam7-7.18.2 → gam7-7.18.4}/src/gam/atom/http_interface.py +0 -0
  49. {gam7-7.18.2 → gam7-7.18.4}/src/gam/atom/mock_http.py +0 -0
  50. {gam7-7.18.2 → gam7-7.18.4}/src/gam/atom/mock_http_core.py +0 -0
  51. {gam7-7.18.2 → gam7-7.18.4}/src/gam/atom/mock_service.py +0 -0
  52. {gam7-7.18.2 → gam7-7.18.4}/src/gam/atom/service.py +0 -0
  53. {gam7-7.18.2 → gam7-7.18.4}/src/gam/atom/token_store.py +0 -0
  54. {gam7-7.18.2 → gam7-7.18.4}/src/gam/atom/url.py +0 -0
  55. {gam7-7.18.2 → gam7-7.18.4}/src/gam/cacerts.pem +0 -0
  56. {gam7-7.18.2 → gam7-7.18.4}/src/gam/cbcm-v1.1beta1.json +0 -0
  57. {gam7-7.18.2 → gam7-7.18.4}/src/gam/contactdelegation-v1.json +0 -0
  58. {gam7-7.18.2 → gam7-7.18.4}/src/gam/datastudio-v1.json +0 -0
  59. {gam7-7.18.2 → gam7-7.18.4}/src/gam/gamlib/__init__.py +0 -0
  60. {gam7-7.18.2 → gam7-7.18.4}/src/gam/gamlib/glaction.py +0 -0
  61. {gam7-7.18.2 → gam7-7.18.4}/src/gam/gamlib/glcfg.py +0 -0
  62. {gam7-7.18.2 → gam7-7.18.4}/src/gam/gamlib/glgapi.py +0 -0
  63. {gam7-7.18.2 → gam7-7.18.4}/src/gam/gamlib/glgdata.py +0 -0
  64. {gam7-7.18.2 → gam7-7.18.4}/src/gam/gamlib/glglobals.py +0 -0
  65. {gam7-7.18.2 → gam7-7.18.4}/src/gam/gamlib/glindent.py +0 -0
  66. {gam7-7.18.2 → gam7-7.18.4}/src/gam/gamlib/glskus.py +0 -0
  67. {gam7-7.18.2 → gam7-7.18.4}/src/gam/gamlib/gluprop.py +0 -0
  68. {gam7-7.18.2 → gam7-7.18.4}/src/gam/gamlib/glverlibs.py +0 -0
  69. {gam7-7.18.2 → gam7-7.18.4}/src/gam/gamlib/yubikey.py +0 -0
  70. {gam7-7.18.2 → gam7-7.18.4}/src/gam/gdata/__init__.py +0 -0
  71. {gam7-7.18.2 → gam7-7.18.4}/src/gam/gdata/alt/__init__.py +0 -0
  72. {gam7-7.18.2 → gam7-7.18.4}/src/gam/gdata/alt/app_engine.py +0 -0
  73. {gam7-7.18.2 → gam7-7.18.4}/src/gam/gdata/alt/appengine.py +0 -0
  74. {gam7-7.18.2 → gam7-7.18.4}/src/gam/gdata/apps/__init__.py +0 -0
  75. {gam7-7.18.2 → gam7-7.18.4}/src/gam/gdata/apps/audit/__init__.py +0 -0
  76. {gam7-7.18.2 → gam7-7.18.4}/src/gam/gdata/apps/audit/service.py +0 -0
  77. {gam7-7.18.2 → gam7-7.18.4}/src/gam/gdata/apps/contacts/__init__.py +0 -0
  78. {gam7-7.18.2 → gam7-7.18.4}/src/gam/gdata/apps/contacts/service.py +0 -0
  79. {gam7-7.18.2 → gam7-7.18.4}/src/gam/gdata/apps/service.py +0 -0
  80. {gam7-7.18.2 → gam7-7.18.4}/src/gam/gdata/service.py +0 -0
  81. {gam7-7.18.2 → gam7-7.18.4}/src/gam/gdata/urlfetch.py +0 -0
  82. {gam7-7.18.2 → gam7-7.18.4}/src/gam/googleapiclient/__init__.py +0 -0
  83. {gam7-7.18.2 → gam7-7.18.4}/src/gam/googleapiclient/_auth.py +0 -0
  84. {gam7-7.18.2 → gam7-7.18.4}/src/gam/googleapiclient/_helpers.py +0 -0
  85. {gam7-7.18.2 → gam7-7.18.4}/src/gam/googleapiclient/channel.py +0 -0
  86. {gam7-7.18.2 → gam7-7.18.4}/src/gam/googleapiclient/discovery.py +0 -0
  87. {gam7-7.18.2 → gam7-7.18.4}/src/gam/googleapiclient/discovery_cache/__init__.py +0 -0
  88. {gam7-7.18.2 → gam7-7.18.4}/src/gam/googleapiclient/discovery_cache/appengine_memcache.py +0 -0
  89. {gam7-7.18.2 → gam7-7.18.4}/src/gam/googleapiclient/discovery_cache/base.py +0 -0
  90. {gam7-7.18.2 → gam7-7.18.4}/src/gam/googleapiclient/discovery_cache/file_cache.py +0 -0
  91. {gam7-7.18.2 → gam7-7.18.4}/src/gam/googleapiclient/errors.py +0 -0
  92. {gam7-7.18.2 → gam7-7.18.4}/src/gam/googleapiclient/http.py +0 -0
  93. {gam7-7.18.2 → gam7-7.18.4}/src/gam/googleapiclient/mimeparse.py +0 -0
  94. {gam7-7.18.2 → gam7-7.18.4}/src/gam/googleapiclient/model.py +0 -0
  95. {gam7-7.18.2 → gam7-7.18.4}/src/gam/googleapiclient/schema.py +0 -0
  96. {gam7-7.18.2 → gam7-7.18.4}/src/gam/googleapiclient/version.py +0 -0
  97. {gam7-7.18.2 → gam7-7.18.4}/src/gam/iso8601/__init__.py +0 -0
  98. {gam7-7.18.2 → gam7-7.18.4}/src/gam/iso8601/iso8601.py +0 -0
  99. {gam7-7.18.2 → gam7-7.18.4}/src/gam/meet-v2beta.json +0 -0
  100. {gam7-7.18.2 → gam7-7.18.4}/src/gam/serviceaccountlookup-v1.json +0 -0
  101. {gam7-7.18.2 → gam7-7.18.4}/src/gam/six.py +0 -0
  102. {gam7-7.18.2 → gam7-7.18.4}/src/gam-install.sh +0 -0
  103. {gam7-7.18.2 → gam7-7.18.4}/src/gam-setup.bat +0 -0
  104. {gam7-7.18.2 → gam7-7.18.4}/src/gam.exe.manifest +0 -0
  105. {gam7-7.18.2 → gam7-7.18.4}/src/gam.py +0 -0
  106. {gam7-7.18.2 → gam7-7.18.4}/src/gam.spec +0 -0
  107. {gam7-7.18.2 → gam7-7.18.4}/src/gam.wxs +0 -0
  108. {gam7-7.18.2 → gam7-7.18.4}/src/license.rtf +0 -0
  109. {gam7-7.18.2 → gam7-7.18.4}/src/requirements-dev.txt +0 -0
  110. {gam7-7.18.2 → gam7-7.18.4}/src/tools/a_atleast_b.py +0 -0
  111. {gam7-7.18.2 → gam7-7.18.4}/src/tools/gen-wix-xml-filelist.py +0 -0
  112. {gam7-7.18.2 → gam7-7.18.4}/src/tools/mkGamRef.py +0 -0
  113. {gam7-7.18.2 → gam7-7.18.4}/src/tools/openssl.props +0 -0
  114. {gam7-7.18.2 → gam7-7.18.4}/src/version_info.txt.in +0 -0
  115. {gam7-7.18.2 → gam7-7.18.4}/wiki/00scratch.md +0 -0
  116. {gam7-7.18.2 → gam7-7.18.4}/wiki/Addresses.md +0 -0
  117. {gam7-7.18.2 → gam7-7.18.4}/wiki/Administrators.md +0 -0
  118. {gam7-7.18.2 → gam7-7.18.4}/wiki/Aliases.md +0 -0
  119. {gam7-7.18.2 → gam7-7.18.4}/wiki/Authorization.md +0 -0
  120. {gam7-7.18.2 → gam7-7.18.4}/wiki/BNF-Syntax.md +0 -0
  121. {gam7-7.18.2 → gam7-7.18.4}/wiki/Bulk-Processing.md +0 -0
  122. {gam7-7.18.2 → gam7-7.18.4}/wiki/Business-Account-Management.md +0 -0
  123. {gam7-7.18.2 → gam7-7.18.4}/wiki/CSV-Input-Filtering.md +0 -0
  124. {gam7-7.18.2 → gam7-7.18.4}/wiki/CSV-Output-Filtering.md +0 -0
  125. {gam7-7.18.2 → gam7-7.18.4}/wiki/CSV-Special-Characters.md +0 -0
  126. {gam7-7.18.2 → gam7-7.18.4}/wiki/Calendars-Access.md +0 -0
  127. {gam7-7.18.2 → gam7-7.18.4}/wiki/Calendars-Events.md +0 -0
  128. {gam7-7.18.2 → gam7-7.18.4}/wiki/Calendars.md +0 -0
  129. {gam7-7.18.2 → gam7-7.18.4}/wiki/Chat-Bot-Setup-Use.md +0 -0
  130. {gam7-7.18.2 → gam7-7.18.4}/wiki/Chrome-AUE-Counts.md +0 -0
  131. {gam7-7.18.2 → gam7-7.18.4}/wiki/Chrome-Browser-Cloud-Management.md +0 -0
  132. {gam7-7.18.2 → gam7-7.18.4}/wiki/Chrome-Installed-Apps.md +0 -0
  133. {gam7-7.18.2 → gam7-7.18.4}/wiki/Chrome-Needs-Attention-Counts.md +0 -0
  134. {gam7-7.18.2 → gam7-7.18.4}/wiki/Chrome-Policies.md +0 -0
  135. {gam7-7.18.2 → gam7-7.18.4}/wiki/Chrome-Printers.md +0 -0
  136. {gam7-7.18.2 → gam7-7.18.4}/wiki/Chrome-Profile-Management.md +0 -0
  137. {gam7-7.18.2 → gam7-7.18.4}/wiki/Chrome-Version-Counts.md +0 -0
  138. {gam7-7.18.2 → gam7-7.18.4}/wiki/Chrome-Version-History.md +0 -0
  139. {gam7-7.18.2 → gam7-7.18.4}/wiki/ChromeOS-Devices.md +0 -0
  140. {gam7-7.18.2 → gam7-7.18.4}/wiki/Classroom-Courses.md +0 -0
  141. {gam7-7.18.2 → gam7-7.18.4}/wiki/Classroom-Guardians.md +0 -0
  142. {gam7-7.18.2 → gam7-7.18.4}/wiki/Classroom-Invitations.md +0 -0
  143. {gam7-7.18.2 → gam7-7.18.4}/wiki/Classroom-Membership.md +0 -0
  144. {gam7-7.18.2 → gam7-7.18.4}/wiki/Cloud-Channel.md +0 -0
  145. {gam7-7.18.2 → gam7-7.18.4}/wiki/Cloud-Identity-Devices.md +0 -0
  146. {gam7-7.18.2 → gam7-7.18.4}/wiki/Cloud-Identity-Groups-Membership.md +0 -0
  147. {gam7-7.18.2 → gam7-7.18.4}/wiki/Cloud-Identity-Groups.md +0 -0
  148. {gam7-7.18.2 → gam7-7.18.4}/wiki/Cloud-Identity-Policies.md +0 -0
  149. {gam7-7.18.2 → gam7-7.18.4}/wiki/Cloud-Storage.md +0 -0
  150. {gam7-7.18.2 → gam7-7.18.4}/wiki/Collections-of-ChromeOS-Devices.md +0 -0
  151. {gam7-7.18.2 → gam7-7.18.4}/wiki/Collections-of-Items.md +0 -0
  152. {gam7-7.18.2 → gam7-7.18.4}/wiki/Collections-of-Users.md +0 -0
  153. {gam7-7.18.2 → gam7-7.18.4}/wiki/Command-Data-From-Google-Docs-Sheets-Storage.md +0 -0
  154. {gam7-7.18.2 → gam7-7.18.4}/wiki/Command-Line-Parsing.md +0 -0
  155. {gam7-7.18.2 → gam7-7.18.4}/wiki/Command-Logging-Progress.md +0 -0
  156. {gam7-7.18.2 → gam7-7.18.4}/wiki/Context-Aware-Access-Levels.md +0 -0
  157. {gam7-7.18.2 → gam7-7.18.4}/wiki/Customer.md +0 -0
  158. {gam7-7.18.2 → gam7-7.18.4}/wiki/Domain-People-Contacts-Profiles.md +0 -0
  159. {gam7-7.18.2 → gam7-7.18.4}/wiki/Domain-SharedContacts.md +0 -0
  160. {gam7-7.18.2 → gam7-7.18.4}/wiki/Domains-Verification.md +0 -0
  161. {gam7-7.18.2 → gam7-7.18.4}/wiki/Domains.md +0 -0
  162. {gam7-7.18.2 → gam7-7.18.4}/wiki/Downloads-Installs.md +0 -0
  163. {gam7-7.18.2 → gam7-7.18.4}/wiki/Drive-File-Selection.md +0 -0
  164. {gam7-7.18.2 → gam7-7.18.4}/wiki/Drive-Items.md +0 -0
  165. {gam7-7.18.2 → gam7-7.18.4}/wiki/Drive-REST-API-v3.md +0 -0
  166. {gam7-7.18.2 → gam7-7.18.4}/wiki/Email-Audit-Monitor.md +0 -0
  167. {gam7-7.18.2 → gam7-7.18.4}/wiki/Find-File-Owner.md +0 -0
  168. {gam7-7.18.2 → gam7-7.18.4}/wiki/GAM-Public-Chat-Room.md +0 -0
  169. {gam7-7.18.2 → gam7-7.18.4}/wiki/GAM-Return-Codes.md +0 -0
  170. {gam7-7.18.2 → gam7-7.18.4}/wiki/GAM-with-minimal-GCP-rights.md +0 -0
  171. {gam7-7.18.2 → gam7-7.18.4}/wiki/GAM7-on-Android-Devices.md +0 -0
  172. {gam7-7.18.2 → gam7-7.18.4}/wiki/GAM7-on-Chrome-OS-Devices.md +0 -0
  173. {gam7-7.18.2 → gam7-7.18.4}/wiki/Global-Address-List.md +0 -0
  174. {gam7-7.18.2 → gam7-7.18.4}/wiki/Google-Data-Transfers.md +0 -0
  175. {gam7-7.18.2 → gam7-7.18.4}/wiki/Google-Network-Addresses.md +0 -0
  176. {gam7-7.18.2 → gam7-7.18.4}/wiki/Groups-Membership.md +0 -0
  177. {gam7-7.18.2 → gam7-7.18.4}/wiki/Groups.md +0 -0
  178. {gam7-7.18.2 → gam7-7.18.4}/wiki/HTTPS-Proxy.md +0 -0
  179. {gam7-7.18.2 → gam7-7.18.4}/wiki/Home.md +0 -0
  180. {gam7-7.18.2 → gam7-7.18.4}/wiki/How-to-Install-GAM7.md +0 -0
  181. {gam7-7.18.2 → gam7-7.18.4}/wiki/How-to-Uninstall-GAM7.md +0 -0
  182. {gam7-7.18.2 → gam7-7.18.4}/wiki/How-to-Update-GAM7.md +0 -0
  183. {gam7-7.18.2 → gam7-7.18.4}/wiki/How-to-Upgrade-GAMADV-XTD3-to-GAM7.md +0 -0
  184. {gam7-7.18.2 → gam7-7.18.4}/wiki/Inbound-SSO.md +0 -0
  185. {gam7-7.18.2 → gam7-7.18.4}/wiki/Install-GAM-as-Python-Library.md +0 -0
  186. {gam7-7.18.2 → gam7-7.18.4}/wiki/Licenses.md +0 -0
  187. {gam7-7.18.2 → gam7-7.18.4}/wiki/List-Items.md +0 -0
  188. {gam7-7.18.2 → gam7-7.18.4}/wiki/List.md +0 -0
  189. {gam7-7.18.2 → gam7-7.18.4}/wiki/Meta-Commands-and-File-Redirection.md +0 -0
  190. {gam7-7.18.2 → gam7-7.18.4}/wiki/Mobile-Devices.md +0 -0
  191. {gam7-7.18.2 → gam7-7.18.4}/wiki/Organizational-Units.md +0 -0
  192. {gam7-7.18.2 → gam7-7.18.4}/wiki/Other-Resources.md +0 -0
  193. {gam7-7.18.2 → gam7-7.18.4}/wiki/Permission-Matches.md +0 -0
  194. {gam7-7.18.2 → gam7-7.18.4}/wiki/Python-Regular-Expressions.md +0 -0
  195. {gam7-7.18.2 → gam7-7.18.4}/wiki/README.md +0 -0
  196. {gam7-7.18.2 → gam7-7.18.4}/wiki/Rclone.md +0 -0
  197. {gam7-7.18.2 → gam7-7.18.4}/wiki/Reports.md +0 -0
  198. {gam7-7.18.2 → gam7-7.18.4}/wiki/Reseller.md +0 -0
  199. {gam7-7.18.2 → gam7-7.18.4}/wiki/Resources.md +0 -0
  200. {gam7-7.18.2 → gam7-7.18.4}/wiki/Running-GAM7-securely-on-a-Google-Compute-Engine.md +0 -0
  201. {gam7-7.18.2 → gam7-7.18.4}/wiki/SSL-Root-CA-Certificates.md +0 -0
  202. {gam7-7.18.2 → gam7-7.18.4}/wiki/Schemas.md +0 -0
  203. {gam7-7.18.2 → gam7-7.18.4}/wiki/Scripts.md +0 -0
  204. {gam7-7.18.2 → gam7-7.18.4}/wiki/Send-Email.md +0 -0
  205. {gam7-7.18.2 → gam7-7.18.4}/wiki/Shared-Drives.md +0 -0
  206. {gam7-7.18.2 → gam7-7.18.4}/wiki/Sites.md +0 -0
  207. {gam7-7.18.2 → gam7-7.18.4}/wiki/Tag-Replace.md +0 -0
  208. {gam7-7.18.2 → gam7-7.18.4}/wiki/Todrive.md +0 -0
  209. {gam7-7.18.2 → gam7-7.18.4}/wiki/Unmanaged-Accounts.md +0 -0
  210. {gam7-7.18.2 → gam7-7.18.4}/wiki/Upgrade-Benefits.md +0 -0
  211. {gam7-7.18.2 → gam7-7.18.4}/wiki/Users-Analytics-Admin.md +0 -0
  212. {gam7-7.18.2 → gam7-7.18.4}/wiki/Users-Application-Specific-Passwords.md +0 -0
  213. {gam7-7.18.2 → gam7-7.18.4}/wiki/Users-Backup-Verification-Codes.md +0 -0
  214. {gam7-7.18.2 → gam7-7.18.4}/wiki/Users-Calendars-Access.md +0 -0
  215. {gam7-7.18.2 → gam7-7.18.4}/wiki/Users-Calendars-Events.md +0 -0
  216. {gam7-7.18.2 → gam7-7.18.4}/wiki/Users-Calendars.md +0 -0
  217. {gam7-7.18.2 → gam7-7.18.4}/wiki/Users-Classification-Labels.md +0 -0
  218. {gam7-7.18.2 → gam7-7.18.4}/wiki/Users-Classroom-Profile.md +0 -0
  219. {gam7-7.18.2 → gam7-7.18.4}/wiki/Users-Contacts-Delegates.md +0 -0
  220. {gam7-7.18.2 → gam7-7.18.4}/wiki/Users-Contacts.md +0 -0
  221. {gam7-7.18.2 → gam7-7.18.4}/wiki/Users-Deprovision.md +0 -0
  222. {gam7-7.18.2 → gam7-7.18.4}/wiki/Users-Drive-Activity-Settings.md +0 -0
  223. {gam7-7.18.2 → gam7-7.18.4}/wiki/Users-Drive-Cleanup.md +0 -0
  224. {gam7-7.18.2 → gam7-7.18.4}/wiki/Users-Drive-Comments.md +0 -0
  225. {gam7-7.18.2 → gam7-7.18.4}/wiki/Users-Drive-Files-Display.md +0 -0
  226. {gam7-7.18.2 → gam7-7.18.4}/wiki/Users-Drive-Files-Manage.md +0 -0
  227. {gam7-7.18.2 → gam7-7.18.4}/wiki/Users-Drive-Orphans.md +0 -0
  228. {gam7-7.18.2 → gam7-7.18.4}/wiki/Users-Drive-Ownership.md +0 -0
  229. {gam7-7.18.2 → gam7-7.18.4}/wiki/Users-Drive-Query.md +0 -0
  230. {gam7-7.18.2 → gam7-7.18.4}/wiki/Users-Drive-Revisions.md +0 -0
  231. {gam7-7.18.2 → gam7-7.18.4}/wiki/Users-Drive-Shortcuts.md +0 -0
  232. {gam7-7.18.2 → gam7-7.18.4}/wiki/Users-Drive-Transfer.md +0 -0
  233. {gam7-7.18.2 → gam7-7.18.4}/wiki/Users-Forms.md +0 -0
  234. {gam7-7.18.2 → gam7-7.18.4}/wiki/Users-Gmail-CSE.md +0 -0
  235. {gam7-7.18.2 → gam7-7.18.4}/wiki/Users-Gmail-Delegates.md +0 -0
  236. {gam7-7.18.2 → gam7-7.18.4}/wiki/Users-Gmail-Filters.md +0 -0
  237. {gam7-7.18.2 → gam7-7.18.4}/wiki/Users-Gmail-Forwarding.md +0 -0
  238. {gam7-7.18.2 → gam7-7.18.4}/wiki/Users-Gmail-Labels.md +0 -0
  239. {gam7-7.18.2 → gam7-7.18.4}/wiki/Users-Gmail-Messages-Threads.md +0 -0
  240. {gam7-7.18.2 → gam7-7.18.4}/wiki/Users-Gmail-Profile.md +0 -0
  241. {gam7-7.18.2 → gam7-7.18.4}/wiki/Users-Gmail-S-MIME.md +0 -0
  242. {gam7-7.18.2 → gam7-7.18.4}/wiki/Users-Gmail-Send-As-Signature-Vacation.md +0 -0
  243. {gam7-7.18.2 → gam7-7.18.4}/wiki/Users-Gmail-Settings.md +0 -0
  244. {gam7-7.18.2 → gam7-7.18.4}/wiki/Users-Group-Membership.md +0 -0
  245. {gam7-7.18.2 → gam7-7.18.4}/wiki/Users-Keep-Notes.md +0 -0
  246. {gam7-7.18.2 → gam7-7.18.4}/wiki/Users-Looker-Studio.md +0 -0
  247. {gam7-7.18.2 → gam7-7.18.4}/wiki/Users-Meet.md +0 -0
  248. {gam7-7.18.2 → gam7-7.18.4}/wiki/Users-People-Contacts-Profiles.md +0 -0
  249. {gam7-7.18.2 → gam7-7.18.4}/wiki/Users-Photo.md +0 -0
  250. {gam7-7.18.2 → gam7-7.18.4}/wiki/Users-Profile-Photo.md +0 -0
  251. {gam7-7.18.2 → gam7-7.18.4}/wiki/Users-Profile-Sharing.md +0 -0
  252. {gam7-7.18.2 → gam7-7.18.4}/wiki/Users-Shared-Drives.md +0 -0
  253. {gam7-7.18.2 → gam7-7.18.4}/wiki/Users-Signout-Turnoff2SV.md +0 -0
  254. {gam7-7.18.2 → gam7-7.18.4}/wiki/Users-Spreadsheets.md +0 -0
  255. {gam7-7.18.2 → gam7-7.18.4}/wiki/Users-Tag-Manager.md +0 -0
  256. {gam7-7.18.2 → gam7-7.18.4}/wiki/Users-Tasks.md +0 -0
  257. {gam7-7.18.2 → gam7-7.18.4}/wiki/Users-Tokens.md +0 -0
  258. {gam7-7.18.2 → gam7-7.18.4}/wiki/Users-Web-Resources-and-Sites.md +0 -0
  259. {gam7-7.18.2 → gam7-7.18.4}/wiki/Users-YouTube.md +0 -0
  260. {gam7-7.18.2 → gam7-7.18.4}/wiki/Users.md +0 -0
  261. {gam7-7.18.2 → gam7-7.18.4}/wiki/Using-GAM7-with-a-YubiKey.md +0 -0
  262. {gam7-7.18.2 → gam7-7.18.4}/wiki/Vault-Takeout.md +0 -0
  263. {gam7-7.18.2 → gam7-7.18.4}/wiki/Verifying-a-GAM7-Build-is-Legitimate-and-Official.md +0 -0
  264. {gam7-7.18.2 → gam7-7.18.4}/wiki/_Sidebar.md +0 -0
  265. {gam7-7.18.2 → gam7-7.18.4}/wiki/gam.cfg.md +0 -0
  266. {gam7-7.18.2 → gam7-7.18.4}/wiki/l-AdminSettingsExamples.md +0 -0
  267. {gam7-7.18.2 → gam7-7.18.4}/wiki/l-Android-Installation.md +0 -0
  268. {gam7-7.18.2 → gam7-7.18.4}/wiki/l-BulkOperations.md +0 -0
  269. {gam7-7.18.2 → gam7-7.18.4}/wiki/l-CalendarExamples.md +0 -0
  270. {gam7-7.18.2 → gam7-7.18.4}/wiki/l-Chat-Bot.md +0 -0
  271. {gam7-7.18.2 → gam7-7.18.4}/wiki/l-Chrome-Browser-Management.md +0 -0
  272. {gam7-7.18.2 → gam7-7.18.4}/wiki/l-Chrome-OS-Installation.md +0 -0
  273. {gam7-7.18.2 → gam7-7.18.4}/wiki/l-Chrome-Policy-Settings.md +0 -0
  274. {gam7-7.18.2 → gam7-7.18.4}/wiki/l-Cloud-Identity-Groups.md +0 -0
  275. {gam7-7.18.2 → gam7-7.18.4}/wiki/l-Command-Reference-Calendar-Resources.md +0 -0
  276. {gam7-7.18.2 → gam7-7.18.4}/wiki/l-Command-Reference-Calendars.md +0 -0
  277. {gam7-7.18.2 → gam7-7.18.4}/wiki/l-Command-Reference-Definitions.md +0 -0
  278. {gam7-7.18.2 → gam7-7.18.4}/wiki/l-Command-Reference-Drive.md +0 -0
  279. {gam7-7.18.2 → gam7-7.18.4}/wiki/l-Command-Reference-Email.md +0 -0
  280. {gam7-7.18.2 → gam7-7.18.4}/wiki/l-Command-Reference-Group-Attributes.md +0 -0
  281. {gam7-7.18.2 → gam7-7.18.4}/wiki/l-Command-Reference-Groups.md +0 -0
  282. {gam7-7.18.2 → gam7-7.18.4}/wiki/l-Command-Reference-Users.md +0 -0
  283. {gam7-7.18.2 → gam7-7.18.4}/wiki/l-Context-Aware-Access-Levels.md +0 -0
  284. {gam7-7.18.2 → gam7-7.18.4}/wiki/l-Creating-client_secrets.json-and-oauth2service.json.md +0 -0
  285. {gam7-7.18.2 → gam7-7.18.4}/wiki/l-CreatingClientSecretsFile.md +0 -0
  286. {gam7-7.18.2 → gam7-7.18.4}/wiki/l-Custom-Schemas.md +0 -0
  287. {gam7-7.18.2 → gam7-7.18.4}/wiki/l-Data-Transfers.md +0 -0
  288. {gam7-7.18.2 → gam7-7.18.4}/wiki/l-DomainVerification.md +0 -0
  289. {gam7-7.18.2 → gam7-7.18.4}/wiki/l-ExamplesAccountAuditing.md +0 -0
  290. {gam7-7.18.2 → gam7-7.18.4}/wiki/l-ExamplesCSV.md +0 -0
  291. {gam7-7.18.2 → gam7-7.18.4}/wiki/l-ExamplesEmailSettings.md +0 -0
  292. {gam7-7.18.2 → gam7-7.18.4}/wiki/l-ExamplesOrganizations.md +0 -0
  293. {gam7-7.18.2 → gam7-7.18.4}/wiki/l-GAM-Discussion-Group.md +0 -0
  294. {gam7-7.18.2 → gam7-7.18.4}/wiki/l-GAM-on-Android-and-Chrome-OS.md +0 -0
  295. {gam7-7.18.2 → gam7-7.18.4}/wiki/l-GAM-options-files.md +0 -0
  296. {gam7-7.18.2 → gam7-7.18.4}/wiki/l-GAM-with--minimal-GCP-rights.md +0 -0
  297. {gam7-7.18.2 → gam7-7.18.4}/wiki/l-GAM3CSVListings.md +0 -0
  298. {gam7-7.18.2 → gam7-7.18.4}/wiki/l-GAM3DirectoryCommands.md +0 -0
  299. {gam7-7.18.2 → gam7-7.18.4}/wiki/l-GAM3GroupSettings.md +0 -0
  300. {gam7-7.18.2 → gam7-7.18.4}/wiki/l-GAM7-FAQ.md +0 -0
  301. {gam7-7.18.2 → gam7-7.18.4}/wiki/l-Google-Vault---Takeout-Commands.md +0 -0
  302. {gam7-7.18.2 → gam7-7.18.4}/wiki/l-GoogleDriveManagement.md +0 -0
  303. {gam7-7.18.2 → gam7-7.18.4}/wiki/l-Grouping-18-or-Older-Users.md +0 -0
  304. {gam7-7.18.2 → gam7-7.18.4}/wiki/l-Home.md +0 -0
  305. {gam7-7.18.2 → gam7-7.18.4}/wiki/l-How-to-upgrade-from-Standard-GAM.md +0 -0
  306. {gam7-7.18.2 → gam7-7.18.4}/wiki/l-Inbound-SSO-Settings.md +0 -0
  307. {gam7-7.18.2 → gam7-7.18.4}/wiki/l-LicenseExamples.md +0 -0
  308. {gam7-7.18.2 → gam7-7.18.4}/wiki/l-Managing-Admins.md +0 -0
  309. {gam7-7.18.2 → gam7-7.18.4}/wiki/l-Managing-CloudPrint-Printers.md +0 -0
  310. {gam7-7.18.2 → gam7-7.18.4}/wiki/l-Managing-Devices.md +0 -0
  311. {gam7-7.18.2 → gam7-7.18.4}/wiki/l-Managing-Google-Classroom.md +0 -0
  312. {gam7-7.18.2 → gam7-7.18.4}/wiki/l-OAuthKeyManagement.md +0 -0
  313. {gam7-7.18.2 → gam7-7.18.4}/wiki/l-Printers.md +0 -0
  314. {gam7-7.18.2 → gam7-7.18.4}/wiki/l-ResellerCommands.md +0 -0
  315. {gam7-7.18.2 → gam7-7.18.4}/wiki/l-Running-GAM-on-Google-Compute-Engine-(GCE)-Securely.md +0 -0
  316. {gam7-7.18.2 → gam7-7.18.4}/wiki/l-SecurityExamples.md +0 -0
  317. {gam7-7.18.2 → gam7-7.18.4}/wiki/l-UnmanagedUsersExamples.md +0 -0
  318. {gam7-7.18.2 → gam7-7.18.4}/wiki/l-Use-a-Yubikey.md +0 -0
  319. {gam7-7.18.2 → gam7-7.18.4}/wiki/l-Using-GAM-with-a-delegated-admin-service-account-(DASA).md +0 -0
  320. {gam7-7.18.2 → gam7-7.18.4}/wiki/l-_Footer.md +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: gam7
3
- Version: 7.18.2
3
+ Version: 7.18.4
4
4
  Summary: CLI tool to manage Google Workspace
5
5
  Project-URL: Homepage, https://github.com/GAM-team/GAM
6
6
  Project-URL: Issues, https://github.com/GAM-team/GAM/issues
@@ -539,6 +539,7 @@ If an item contains spaces, it should be surrounded by ".
539
539
  Must match this Python Regular Expression: [a-zA-Z0-9 '"!-]{4,30}
540
540
  <PropertyKey> ::= <String>
541
541
  <PropertyValue> ::= <String>
542
+ <PubSubTopicName> ::= <String>
542
543
  <QueryAlert> ::= <String>
543
544
  See: https://developers.google.com/admin-sdk/alertcenter/guides/query-filters
544
545
  <QueryBrowser> ::= <String>
@@ -1540,6 +1541,10 @@ gam show admins
1540
1541
 
1541
1542
  # Alert Center
1542
1543
 
1544
+ gam show alertsettings
1545
+ gam update alertsettings <PubsubTopicName>
1546
+ gam clear alertsettings
1547
+
1543
1548
  gam delete alert <AlertID>
1544
1549
  gam undelete alert <AlertID>
1545
1550
  gam info alert <AlertID> [formatjson]
@@ -1,3 +1,13 @@
1
+ 7.18.04
2
+
3
+ Added commands to display/manage Alert Center Pub/Sub notifications.
4
+ * See: https://github.com/GAM-team/GAM/wiki/Alert-Center#configuring-settings
5
+
6
+ 7.18.03
7
+
8
+ Updated `gam oauth create` to give a warning if the number of selected scopes will
9
+ probably cause Google to generate a "Something went wrong" error.
10
+
1
11
  7.18.02
2
12
 
3
13
  Upgraded to OpenSSL 3.5.2.
@@ -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.18.02'
28
+ __version__ = '7.18.04'
29
29
  __license__ = 'Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0)'
30
30
 
31
31
  #pylint: disable=wrong-import-position
@@ -10672,9 +10672,6 @@ Select all default scopes by entering an 's'; yields [*] for default scopes, [ ]
10672
10672
  Unselect all scopes by entering a 'u'; yields [ ] for all scopes
10673
10673
  Exit without changes/authorization by entering an 'e'
10674
10674
  Continue to authorization by entering a 'c'
10675
- '''
10676
- if clientAccess:
10677
- oauth2_menu += ''' Note, if all scopes are selected, Google will probably generate an authorization error
10678
10675
  '''
10679
10676
  menu = oauth2_menu % tuple(range(numScopes))
10680
10677
  selectedScopes = ['*'] * numScopes
@@ -10776,7 +10773,25 @@ Continue to authorization by entering a 'c'
10776
10773
  break
10777
10774
  sys.stdout.write(f'{ERROR_PREFIX}Invalid input "{choice}"\n')
10778
10775
  if selection == 'c':
10779
- break
10776
+ if clientAccess:
10777
+ numSelectedScopes = 0
10778
+ i = 0
10779
+ for a_scope in scopesList:
10780
+ if selectedScopes[i] == '*':
10781
+ if a_scope['scope']:
10782
+ numSelectedScopes += 1
10783
+ elif selectedScopes[i] != ' ':
10784
+ numSelectedScopes += 1
10785
+ i += 1
10786
+ if numSelectedScopes <= API.NUM_CLIENT_SCOPES_ERROR_LIMIT:
10787
+ break
10788
+ # If number of scopes is > 48 we'll probably get an error
10789
+ writeStdout(Msg.NUM_SELECTED_CLIENT_SCOPES.format(numSelectedScopes, API.NUM_CLIENT_SCOPES_ERROR_LIMIT))
10790
+ choice = readStdin('\nPlease enter c to continue to authorization or any other key to amend selection: ')
10791
+ if choice and choice.lower() == 'c':
10792
+ break
10793
+ else:
10794
+ break
10780
10795
  return selectedScopes
10781
10796
 
10782
10797
  def _localhost_to_ip():
@@ -27066,6 +27081,8 @@ def _getChatMemberEmail(cd, member):
27066
27081
  if member['member']['type'] == 'HUMAN':
27067
27082
  _, memberUid = member['member']['name'].split('/')
27068
27083
  member['member']['email'], _ = convertUIDtoEmailAddressWithType(f'uid:{memberUid}', cd, None, emailTypes=['user'])
27084
+ if member['member']['email'].find('@') == -1:
27085
+ member['member']['email'] = 'id:'+member['member']['email']
27069
27086
  elif 'groupMember' in member:
27070
27087
  _, memberUid = member['groupMember']['name'].split('/')
27071
27088
  member['groupMember']['email'], _ = convertUIDtoEmailAddressWithType(f'uid:{memberUid}', cd, None, emailTypes=['group'])
@@ -37783,6 +37800,54 @@ def doDeleteOrUndeleteAlert():
37783
37800
  except (GAPI.serviceNotAvailable, GAPI.authError, GAPI.permissionDenied):
37784
37801
  userAlertsServiceNotEnabledWarning(user)
37785
37802
 
37803
+ def _showAlertSettings(settings):
37804
+ notifications = settings.get('notifications', [])
37805
+ count = len(notifications)
37806
+ entityPerformAction([Ent.ALERT_SETTINGS, None])
37807
+ i = 0
37808
+ for notification in notifications:
37809
+ i += 1
37810
+ printEntity([Ent.NOTIFICATION, None], i, count)
37811
+ Ind.Increment()
37812
+ showJSON(None, notification)
37813
+ Ind.Decrement()
37814
+
37815
+ # gam show alertsettings
37816
+ def doShowAlertSettings():
37817
+ checkForExtraneousArguments()
37818
+ user, ac = buildGAPIServiceObject(API.ALERTCENTER, _getAdminEmail())
37819
+ if not ac:
37820
+ return
37821
+ try:
37822
+ settings = callGAPI(ac.v1beta1(), 'getSettings',
37823
+ throwReasons=GAPI.ALERT_THROW_REASONS)
37824
+ _showAlertSettings(settings)
37825
+ except (GAPI.serviceNotAvailable, GAPI.authError, GAPI.permissionDenied):
37826
+ userAlertsServiceNotEnabledWarning(user)
37827
+
37828
+ # gam update alertsettings <PubsubTopicName>
37829
+ def doUpdateAlertSettings(clear=False):
37830
+ if not clear:
37831
+ body = {'notifications':
37832
+ [{'cloudPubsubTopic': {'topicName': getString(Cmd.OB_PUBSUB_TOPIC_NAME)}}]}
37833
+ else:
37834
+ body = {'notifications': []}
37835
+ checkForExtraneousArguments()
37836
+ user, ac = buildGAPIServiceObject(API.ALERTCENTER, _getAdminEmail())
37837
+ if not ac:
37838
+ return
37839
+ try:
37840
+ settings = callGAPI(ac.v1beta1(), 'updateSettings',
37841
+ throwReasons=GAPI.ALERT_THROW_REASONS,
37842
+ body=body)
37843
+ _showAlertSettings(settings)
37844
+ except (GAPI.serviceNotAvailable, GAPI.authError, GAPI.permissionDenied):
37845
+ userAlertsServiceNotEnabledWarning(user)
37846
+
37847
+ # gam clear alertsettings
37848
+ def doClearAlertSettings():
37849
+ doUpdateAlertSettings(clear=True)
37850
+
37786
37851
  ALERT_TIME_OBJECTS = {'createTime', 'startTime', 'endTime'}
37787
37852
 
37788
37853
  def _showAlert(alert, FJQC, i=0, count=0):
@@ -77170,7 +77235,8 @@ MAIN_COMMANDS_WITH_OBJECTS = {
77170
77235
  ),
77171
77236
  'clear':
77172
77237
  (Act.CLEAR,
77173
- {Cmd.ARG_CONTACT: doClearDomainContacts,
77238
+ {Cmd.ARG_ALERTSETTINGS: doClearAlertSettings,
77239
+ Cmd.ARG_CONTACT: doClearDomainContacts,
77174
77240
  }
77175
77241
  ),
77176
77242
  'close':
@@ -77491,6 +77557,7 @@ MAIN_COMMANDS_WITH_OBJECTS = {
77491
77557
  Cmd.ARG_ADMIN: doPrintShowAdmins,
77492
77558
  Cmd.ARG_ALERT: doPrintShowAlerts,
77493
77559
  Cmd.ARG_ALERTFEEDBACK: doPrintShowAlertFeedback,
77560
+ Cmd.ARG_ALERTSETTINGS: doShowAlertSettings,
77494
77561
  Cmd.ARG_BROWSER: doPrintShowBrowsers,
77495
77562
  Cmd.ARG_BROWSERTOKEN: doPrintShowBrowserTokens,
77496
77563
  Cmd.ARG_BUILDING: doPrintShowBuildings,
@@ -77583,6 +77650,7 @@ MAIN_COMMANDS_WITH_OBJECTS = {
77583
77650
  'update':
77584
77651
  (Act.UPDATE,
77585
77652
  {Cmd.ARG_ADMINROLE: doCreateUpdateAdminRoles,
77653
+ Cmd.ARG_ALERTSETTINGS: doUpdateAlertSettings,
77586
77654
  Cmd.ARG_ALIAS: doCreateUpdateAliases,
77587
77655
  Cmd.ARG_BROWSER: doUpdateBrowsers,
77588
77656
  Cmd.ARG_BUILDING: doUpdateBuilding,
@@ -119,6 +119,7 @@ USERINFO_PROFILE_SCOPE = 'https://www.googleapis.com/auth/userinfo.profile' # pr
119
119
  VAULT_SCOPES = ['https://www.googleapis.com/auth/ediscovery', 'https://www.googleapis.com/auth/ediscovery.readonly']
120
120
  REQUIRED_SCOPES = [USERINFO_EMAIL_SCOPE, USERINFO_PROFILE_SCOPE]
121
121
  REQUIRED_SCOPES_SET = set(REQUIRED_SCOPES)
122
+ NUM_CLIENT_SCOPES_ERROR_LIMIT = 48
122
123
  #
123
124
  JWT_APIS = {
124
125
  ACCESSCONTEXTMANAGER: [CLOUD_PLATFORM_SCOPE],
@@ -411,6 +411,7 @@ class GamCLArgs():
411
411
  ARG_ALERTFEEDBACK = 'alertfeedback'
412
412
  ARG_ALERTFEEDBACKS = 'alertfeedbacks'
413
413
  ARG_ALERTSFEEDBACK = 'alertsfeedback'
414
+ ARG_ALERTSETTINGS = 'alertsettings'
414
415
  ARG_ALIAS = 'alias'
415
416
  ARG_ALIASES = 'aliases'
416
417
  ARG_ALIASDOMAIN = 'aliasdomain'
@@ -1013,6 +1014,7 @@ class GamCLArgs():
1013
1014
  OB_PROJECT_ID_ENTITY = 'ProjectIDEntity'
1014
1015
  OB_PROPERTY_KEY = 'PropertyKey'
1015
1016
  OB_PROPERTY_VALUE = 'PropertyValue'
1017
+ OB_PUBSUB_TOPIC_NAME = 'PubSubTopicName'
1016
1018
  OB_QUERY = 'Query'
1017
1019
  OB_QUERY_ITEM = 'QueryItem'
1018
1020
  OB_QUERY_LIST = 'QueryList'
@@ -54,6 +54,7 @@ class GamEntity():
54
54
  ALERT_ID = 'alri'
55
55
  ALERT_FEEDBACK = 'alfb'
56
56
  ALERT_FEEDBACK_ID = 'alfi'
57
+ ALERT_SETTINGS = 'alrs'
57
58
  ALIAS = 'alia'
58
59
  ALIAS_EMAIL = 'alie'
59
60
  ALIAS_TARGET = 'alit'
@@ -285,10 +286,11 @@ class GamEntity():
285
286
  MIMETYPE = 'mime'
286
287
  MOBILE_DEVICE = 'mobi'
287
288
  NAME = 'name'
289
+ NONEDITABLE_ALIAS = 'neal'
288
290
  NOTE = 'note'
289
291
  NOTE_ACL = 'nota'
290
292
  NOTES_ACLS = 'naac'
291
- NONEDITABLE_ALIAS = 'neal'
293
+ NOTIFICATION = 'noti'
292
294
  OAUTH2_TXT_FILE = 'oaut'
293
295
  OAUTH2SERVICE_JSON_FILE = 'oau2'
294
296
  ORGANIZATIONAL_UNIT = 'orgu'
@@ -414,6 +416,7 @@ class GamEntity():
414
416
  ALERT_ID: ['Alert IDs', 'Alert ID'],
415
417
  ALERT_FEEDBACK: ['Alert Feedbacks', 'Alert Feedback'],
416
418
  ALERT_FEEDBACK_ID: ['Alert Feedback IDs', 'Alert Feedback ID'],
419
+ ALERT_SETTINGS: ['Alert Settings', 'Alert Settings'],
417
420
  ALIAS: ['Aliases', 'Alias'],
418
421
  ALIAS_EMAIL: ['Alias Emails', 'Alias Email'],
419
422
  ALIAS_TARGET: ['Alias Targets', 'Alias Target'],
@@ -645,10 +648,11 @@ class GamEntity():
645
648
  MIMETYPE: ['MIME Types', 'MIME Type'],
646
649
  MOBILE_DEVICE: ['Mobile Devices', 'Mobile Device'],
647
650
  NAME: ['Names', 'Name'],
651
+ NONEDITABLE_ALIAS: ['Non-Editable Aliases', 'Non-Editable Alias'],
648
652
  NOTE: ['Notes', 'Note'],
649
653
  NOTE_ACL: ['Note ACLs', 'Note ACL'],
650
654
  NOTES_ACLS: ["'Note's ACLs", "Note's ACLs"],
651
- NONEDITABLE_ALIAS: ['Non-Editable Aliases', 'Non-Editable Alias'],
655
+ NOTIFICATION: ['Notifications', 'Notification'],
652
656
  OAUTH2_TXT_FILE: ['Client OAuth2 File', 'Client OAuth2 File'],
653
657
  OAUTH2SERVICE_JSON_FILE: ['Service Account OAuth2 File', 'Service Account OAuth2 File'],
654
658
  ORGANIZATIONAL_UNIT: ['Organizational Units', 'Organizational Unit'],
@@ -433,6 +433,7 @@ NO_SVCACCT_ACCESS_ALLOWED = 'No Service Account Access allowed'
433
433
  NO_TRANSFER_LACK_OF_DISK_SPACE = 'Transfer not performed due to lack of target drive space.'
434
434
  NO_USAGE_PARAMETERS_DATA_AVAILABLE = 'No usage parameters data available.'
435
435
  NO_USER_COUNTS_DATA_AVAILABLE = 'No User counts data available.'
436
+ NUM_SELECTED_CLIENT_SCOPES = '\n{0} scopes are selected, if more than {1} scopes are selected, Google will probably generate a "Something went wrong" error\n'
436
437
  OAUTH2_GO_TO_LINK_MESSAGE = """
437
438
  Go to the following link in a browser on this computer or on another computer:
438
439
 
@@ -7,6 +7,7 @@
7
7
  - [Display alerts](#display-alerts)
8
8
  - [Manage alert feedback](#manage-alert-feedback)
9
9
  - [Display alert feedback](#display-alert-feedback)
10
+ - [Configuring settings](#configuring-settings)
10
11
 
11
12
  ## API documentation
12
13
  * [Alert Center API](https://developers.google.com/admin-sdk/alertcenter/reference/rest/)
@@ -18,6 +19,7 @@
18
19
  ## Definitions
19
20
  ```
20
21
  <AlertID> ::= <String>
22
+ <PubSubTopicName> ::= <String>
21
23
  <QueryAlert> ::= <String> See: https://developers.google.com/admin-sdk/alertcenter/guides/query-filters
22
24
  ```
23
25
  ## Introduction
@@ -95,3 +97,15 @@ the quote character itself, the column delimiter (comma by default) and new-line
95
97
  When using the `formatjson` option, double quotes are used extensively in the data resulting in hard to read/process output.
96
98
  The `quotechar <Character>` option allows you to choose an alternate quote character, single quote for instance, that makes for readable/processable output.
97
99
  `quotechar` defaults to `gam.cfg/csv_output_quote_char`. When uploading CSV files to Google, double quote `"` should be used.
100
+
101
+ ## Configuring settings
102
+
103
+ Alert Center can be configured to send notifications to a Google Cloud Pub/Sub topic, but it first requires configuration.
104
+ * See https://developers.google.com/workspace/admin/alertcenter/guides/notifications for information.
105
+
106
+ Gam can be used to display or modify the settings:
107
+ ```
108
+ gam show alertsettings
109
+ gam update alertsettings <PubSubTopicName>
110
+ gam clear alertsettings
111
+ ```
@@ -436,6 +436,7 @@
436
436
  Must match this Python Regular Expression: [a-zA-Z0-9 '"!-]{4,30}
437
437
  <PropertyKey> ::= <String>
438
438
  <PropertyValue> ::= <String>
439
+ <PubSubTopicName> ::= <String>
439
440
  <QueryAlert> ::= <String>
440
441
  See: https://developers.google.com/admin-sdk/alertcenter/guides/query-filters
441
442
  <QueryBrowser> ::= <String>
@@ -10,6 +10,15 @@ 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.18.03
14
+
15
+ Updated `gam oauth create` to give a warning if the number of selected scopes will
16
+ probably cause Google to generate a "Something went wrong" error.
17
+
18
+ ### 7.18.02
19
+
20
+ Upgraded to OpenSSL 3.5.2.
21
+
13
22
  ### 7.18.01
14
23
 
15
24
  Added option `nosystemroles` to `gam print|show adminroles` that causes GAM
@@ -252,7 +252,7 @@ writes the credentials into the file oauth2.txt.
252
252
  admin@server:/Users/admin$ rm -f /Users/admin/GAMConfig/oauth2.txt
253
253
  admin@server:/Users/admin$ gam version
254
254
  WARNING: Config File: /Users/admin/GAMConfig/gam.cfg, Section: DEFAULT, Item: oauth2_txt, Value: /Users/admin/GAMConfig/oauth2.txt, Not Found
255
- GAM 7.18.01 - https://github.com/GAM-team/GAM - pyinstaller
255
+ GAM 7.18.03 - https://github.com/GAM-team/GAM - pyinstaller
256
256
  GAM Team <google-apps-manager@googlegroups.com>
257
257
  Python 3.13.5 64-bit final
258
258
  MacOS Sequoia 15.6 x86_64
@@ -990,7 +990,7 @@ writes the credentials into the file oauth2.txt.
990
990
  C:\>del C:\GAMConfig\oauth2.txt
991
991
  C:\>gam version
992
992
  WARNING: Config File: C:\GAMConfig\gam.cfg, Section: DEFAULT, Item: oauth2_txt, Value: C:\GAMConfig\oauth2.txt, Not Found
993
- GAM 7.18.01 - https://github.com/GAM-team/GAM - pythonsource
993
+ GAM 7.18.03 - https://github.com/GAM-team/GAM - pythonsource
994
994
  GAM Team <google-apps-manager@googlegroups.com>
995
995
  Python 3.13.5 64-bit final
996
996
  Windows-10-10.0.17134 AMD64
@@ -464,7 +464,7 @@ gam <UserItem> delete chatmember asadmin <ChatSpace>
464
464
 
465
465
  Delete members from a chat space by specifying chatmember names, asadmin
466
466
  ```
467
- gam <UserItem> remove chatmember members asadmin <ChatMemberList>
467
+ gam <UserItem> remove chatmember asadmin members <ChatMemberList>
468
468
  ```
469
469
 
470
470
  ### Update a members role in a user's chat space
@@ -13,6 +13,7 @@
13
13
  - [Move with ownership change](#move-with-ownership-change)
14
14
  - [Complex moves](#complex-moves)
15
15
  - [Move content of a Shared Drive to another Shared Drive](#move-content-of-a-shared-drive-to-another-shared-drive)
16
+ - [Move content of a Shared Drive to a My Drive](#move-content-of-a-shared-drive-to-a-my-drive)
16
17
 
17
18
  ## API documentation
18
19
  * [Drive API - Files](https://developers.google.com/drive/api/v3/reference/files)
@@ -673,8 +674,10 @@ gam user user@domain.com move drivefile teamdriveid 0AC_1AB teamdriveparentid 0A
673
674
  ```
674
675
 
675
676
  If you want the source Shared Drive with ID 0AC_1AB to be contained in a top level folder of the target Shared Drive with ID 0AE_9ZX, omit the `mergewithparent` argument.
677
+ The folder on the target Shared Drive will have the same name as the name of the source Shared Drive; use the `newfilename <DriveFileName>` to use a different name.
676
678
  ```
677
679
  gam user user@domain.com move drivefile teamdriveid 0AC_1AB teamdriveparentid 0AE_9ZX
680
+ gam user user@domain.com move drivefile teamdriveid 0AC_1AB teamdriveparentid 0AE_9ZX newfilename "Copy of source Shared Drive"
678
681
  ```
679
682
 
680
683
  ### Inter-workspace moves
@@ -692,3 +695,21 @@ User: user@domaina.com, Move 1 Drive File/Folder
692
695
  User: user@domaina.com, Drive Folder: Shared Drive A(<SharedDriveAID>), Retained
693
696
  ```
694
697
  To get this to work, you must check `Allow people outside of Domain A to access files` on Shared Drive A in domaina.com
698
+
699
+ ## Move content of a Shared Drive to a My Drive
700
+ Suppose you have a Shared Drive with ID 0AC_1AB with multiple files and folders, and want to move all of its content to the root of a My Drive.
701
+
702
+ The following command will change the parents of the top level files and folders from 0AC_1AB to the root of the My Drive; the sub files and folders will move along with their top level folder.
703
+
704
+ * No permissions are processed.
705
+ ```
706
+ gam user user@domain.com move drivefile teamdriveid 0AC_1AB parentid root mergewithparent
707
+ ```
708
+
709
+ If you want the contents of Shared Drive with ID 0AC_1AB to be contained in a top level folder of the My Drive, omit the `mergewithparent` argument.
710
+ The folder on the My Drive will have the same name as the name of the Shared Drive; use the `newfilename <DriveFileName>` to use a different name.
711
+ ```
712
+ gam user user@domain.com move drivefile teamdriveid 0AC_1AB parentid root
713
+ gam user user@domain.com move drivefile teamdriveid 0AC_1AB parentid root newfilename "Copy of Shared Drive"
714
+ ```
715
+
@@ -11,6 +11,7 @@
11
11
  - [Change shares to User1 to shares to User2](#change-shares-to-user1-to-shares-to-user2)
12
12
  - [Map All ACLs from an old domain to a new domain](#map-all-acls-from-an-old-domain-to-a-new-domain)
13
13
  - [Remove all ACLs for a specific user or group email address](#remove-all-ACLs-for-a-specific-user-or-group-email-address)
14
+ - [Remove anyone-anyoneWithLink ACLs](#remove-anyone-anyonewithlink-acls)
14
15
 
15
16
  ## API documentation
16
17
  * [Drive API - Permissions](https://developers.google.com/drive/api/v3/reference/permissions)
@@ -391,15 +392,15 @@ gam config csv_input_row_filter "permission.type:regex:domain" redirect stdout .
391
392
  ### My Drives
392
393
 
393
394
  Get My Drive ACLs sharing to that email address:
394
- * Replace <Type> with user or group
395
- * Replace email@domain.com with actual address
395
+ * Replace `<Type>` with user or group
396
+ * Replace `email@domain.com` with actual email address
396
397
  ```
397
398
  gam config auto_batch_min 1 num_threads 20 redirect csv ./MyDriveShares.csv multiprocess redirect stderr - multiprocess all users print filelist fields id,name,mimetype,basicpermissions query "'email@domain.com' in readers or 'email@domain.com' in writers" pm notrole owner type <Type> emailaddress email@domain.com em pmfilter oneitemperrow
398
399
  ```
399
400
 
400
401
  Delete those My Drive ACLs.
401
402
  ```
402
- gam config num_threads 20 redirect stdout ./DeleteMyDriveShares.txt multiprocess redirect stderr stdout csv MyDriveShares.csv gam user "~Owner" delete drivefleacl "~id" "id:~~permissions.id~~"
403
+ gam config num_threads 20 redirect stdout ./DeleteMyDriveShares.txt multiprocess redirect stderr stdout csv MyDriveShares.csv gam user "~Owner" delete drivefleacl "~id" "id:~~permission.id~~"
403
404
  ```
404
405
 
405
406
  Add My Drive ACLs with a different email address and the same role.
@@ -411,17 +412,18 @@ gam config num_threads 20 redirect stdout ./AddMyDriveShares.txt multiprocess re
411
412
  Get an organizer for each Shared Drive
412
413
  ```
413
414
  gam redirect csv ./SharedDriveOrganizers.csv print shareddriveorganizers
415
+ ```
414
416
 
415
417
  Get Shared Drive ACLs explicitly sharing to that email address:
416
- * Replace <Type> with user or group
417
- * Replace email@domain.com with actual address
418
+ * Replace `<Type>` with user or group
419
+ * Replace `email@domain.com` with actual email address
418
420
  ```
419
421
  gam config num_threads 20 csv_input_row_filter "organizers:regex:^.+$" redirect csv ./SharedDriveShares.csv multiprocess redirect stderr - multiprocess csv SharedDriveOrganizers.csv gam user "~organizers" print filelist select shareddriveid "~id" fields id,name,mimetype,basicpermissions,driveid showdrivename query "'email@domain.com' in readers or 'email@domain.com' in writers" pm type <Type> emailaddress email@domain.com inherited false em pmfilter oneitemperrow
420
422
  ```
421
423
 
422
424
  Delete those Shared Drive ACLs.
423
425
  ```
424
- gam config num_threads 20 redirect stdout ./DeleteSharedDriveShares.txt multiprocess redirect stderr stdout csv SharedDriveShares.csv gam user "~Owner" delete drivefleacl "~id" "id:~~permissions.id~~"
426
+ gam config num_threads 20 redirect stdout ./DeleteSharedDriveShares.txt multiprocess redirect stderr stdout csv SharedDriveShares.csv gam user "~Owner" delete drivefleacl "~id" "id:~~permission.id~~"
425
427
  ```
426
428
 
427
429
  Add Shared Drive ACLs with a different email address and the same role.
@@ -429,4 +431,39 @@ Add Shared Drive ACLs with a different email address and the same role.
429
431
  gam config num_threads 20 redirect stdout ./ReplaceSharedDriveShares.txt multiprocess redirect stderr stdout csv SharedDriveShares.csv gam user "~Owner" add drivefleacl "~id" "~permission.type" newemail@domain.rom role "~permission.role"
430
432
  ```
431
433
 
434
+ ## Remove anyone-anyoneWithLink ACLs
435
+
436
+ Here are the queries that will be used in these commands:
437
+ * anyone - query "visibility='anyoneCanFind'"
438
+ * anyoneWithLink - query "visibility='anyoneWithLink'"
439
+ * both - query "(visibility='anyoneCanFind' or visibility='anyoneWithLink')"
440
+
441
+ ### My Drives
442
+
443
+ Get My Drive anyone/anyoneWithLink ACLs
444
+ ```
445
+ gam config auto_batch_min 1 num_threads 20 redirect csv ./MyDriveShares.csv multiprocess redirect stderr - multiprocess all users print filelist fields id,name,mimetype,basicpermissions <Query> pm type anyone em pmfilter oneitemperrow
446
+ ```
447
+
448
+ Delete those My Drive ACLs.
449
+ ```
450
+ gam config num_threads 20 redirect stdout ./DeleteMyDriveShares.txt multiprocess redirect stderr stdout csv MyDriveShares.csv gam user "~Owner" delete drivefleacl "~id" "id:~~permission.id~~"
451
+ ```
452
+
453
+ ### Shared Drives
454
+ Get an organizer for each Shared Drive
455
+ ```
456
+ gam redirect csv ./SharedDriveOrganizers.csv print shareddriveorganizers
457
+ ```
458
+
459
+ Get Shared Drive anyone/anyoneWithLink ACLs
460
+ ```
461
+ gam config num_threads 20 csv_input_row_filter "organizers:regex:^.+$" redirect csv ./SharedDriveShares.csv multiprocess redirect stderr - multiprocess csv SharedDriveOrganizers.csv gam user "~organizers" print filelist select shareddriveid "~id" fields id,name,mimetype,basicpermissions,driveid showdrivename <Query> pm type anyone inherited false em pmfilter oneitemperrow
462
+ ```
463
+
464
+ Delete those Shared Drive ACLs.
465
+ ```
466
+ gam config num_threads 20 redirect stdout ./DeleteSharedDriveShares.txt multiprocess redirect stderr stdout csv SharedDriveShares.csv gam user "~Owner" delete drivefleacl "~id" "id:~~permission.id~~"
467
+ ```
468
+
432
469
 
@@ -16,7 +16,10 @@ Delegated admin service accounts (DASA) are regular [GCP service accounts](https
16
16
 
17
17
  ## Disadvantages
18
18
  * DASA accounts can only be delegated admins. [If a task requires super admin rights to perform](https://support.google.com/a/answer/2405986#:~:text=Only%20super%20administrators%20can...), DASA accounts won’t be able to do it.
19
- Not all Google Admin APIs work with DASA right now. For example, Google Vault API calls will fail with a DASA account; Classroom API calls do not return data.
19
+ Not all Google Admin APIs work with DASA right no:
20
+ * Google Vault API calls will fail with a DASA account
21
+ * Classroom API calls do not return data
22
+ * Cloud Identity Policies are not available
20
23
  * DASA is a delegated admin and can make Workspace / Cloud Identity admin API calls, it does not replace domain-wide delegation (DwD) when using GAM7 commands that interact with Gmail, Drive and Calendar user data.
21
24
  * GAM7 support for DASA is still experimental and some things may fail. Please report your findings to the [GAM group](https://groups.google.com/g/google-apps-manager).
22
25
 
@@ -3,7 +3,7 @@
3
3
  Print the current version of Gam with details
4
4
  ```
5
5
  gam version
6
- GAM 7.18.01 - https://github.com/GAM-team/GAM - pyinstaller
6
+ GAM 7.18.03 - https://github.com/GAM-team/GAM - pyinstaller
7
7
  GAM Team <google-apps-manager@googlegroups.com>
8
8
  Python 3.13.5 64-bit final
9
9
  MacOS Sequoia 15.6 x86_64
@@ -15,7 +15,7 @@ Time: 2023-06-02T21:10:00-07:00
15
15
  Print the current version of Gam with details and time offset information
16
16
  ```
17
17
  gam version timeoffset
18
- GAM 7.18.01 - https://github.com/GAM-team/GAM - pyinstaller
18
+ GAM 7.18.03 - https://github.com/GAM-team/GAM - pyinstaller
19
19
  GAM Team <google-apps-manager@googlegroups.com>
20
20
  Python 3.13.5 64-bit final
21
21
  MacOS Sequoia 15.6 x86_64
@@ -27,7 +27,7 @@ Your system time differs from www.googleapis.com by less than 1 second
27
27
  Print the current version of Gam with extended details and SSL information
28
28
  ```
29
29
  gam version extended
30
- GAM 7.18.01 - https://github.com/GAM-team/GAM - pyinstaller
30
+ GAM 7.18.03 - https://github.com/GAM-team/GAM - pyinstaller
31
31
  GAM Team <google-apps-manager@googlegroups.com>
32
32
  Python 3.13.5 64-bit final
33
33
  MacOS Sequoia 15.6 x86_64
@@ -35,7 +35,7 @@ Path: /Users/Admin/bin/gam7
35
35
  Config File: /Users/admin/GAMConfig/gam.cfg, Section: DEFAULT, customer_id: my_customer, domain: domain.com
36
36
  Time: 2023-06-02T21:10:00-07:00
37
37
  Your system time differs from admin.googleapis.com by less than 1 second
38
- OpenSSL 3.4.0 22 Oct Sep 2024
38
+ OpenSSL 3.5.2 5 ASug 2025
39
39
  cryptography 43.0.3
40
40
  filelock 3.16.1
41
41
  google-api-python-client 2.149.0
@@ -64,7 +64,7 @@ MacOS High Sierra 10.13.6 x86_64
64
64
  Path: /Users/Admin/bin/gam7
65
65
  Version Check:
66
66
  Current: 5.35.08
67
- Latest: 7.18.01
67
+ Latest: 7.18.03
68
68
  echo $?
69
69
  1
70
70
  ```
@@ -72,7 +72,7 @@ echo $?
72
72
  Print the current version number without details
73
73
  ```
74
74
  gam version simple
75
- 7.18.01
75
+ 7.18.03
76
76
  ```
77
77
  In Linux/MacOS you can do:
78
78
  ```
@@ -82,7 +82,7 @@ echo $VER
82
82
  Print the current version of Gam and address of this Wiki
83
83
  ```
84
84
  gam help
85
- GAM 7.18.01 - https://github.com/GAM-team/GAM
85
+ GAM 7.18.03 - https://github.com/GAM-team/GAM
86
86
  GAM Team <google-apps-manager@googlegroups.com>
87
87
  Python 3.13.5 64-bit final
88
88
  MacOS Sequoia 15.6 x86_64
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes