gam7 7.7.10__tar.gz → 7.7.12__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 (318) hide show
  1. {gam7-7.7.10 → gam7-7.7.12}/PKG-INFO +1 -1
  2. {gam7-7.7.10 → gam7-7.7.12}/src/GamUpdate.txt +19 -0
  3. {gam7-7.7.10 → gam7-7.7.12}/src/gam/__init__.py +54 -59
  4. {gam7-7.7.10 → gam7-7.7.12}/src/gam/gamlib/glcfg.py +5 -5
  5. {gam7-7.7.10 → gam7-7.7.12}/src/gam/gamlib/glglobals.py +1 -4
  6. {gam7-7.7.10 → gam7-7.7.12}/wiki/Authorization.md +1 -0
  7. {gam7-7.7.10 → gam7-7.7.12}/wiki/GamUpdates.md +21 -0
  8. {gam7-7.7.10 → gam7-7.7.12}/wiki/Groups.md +5 -0
  9. {gam7-7.7.10 → gam7-7.7.12}/wiki/How-to-Upgrade-Legacy-GAM-to-GAM7.md +2 -2
  10. {gam7-7.7.10 → gam7-7.7.12}/wiki/Version-and-Help.md +6 -6
  11. {gam7-7.7.10 → gam7-7.7.12}/wiki/gam.cfg.md +5 -3
  12. {gam7-7.7.10 → gam7-7.7.12}/.github/ISSUE_TEMPLATE/aa-question.md +0 -0
  13. {gam7-7.7.10 → gam7-7.7.12}/.github/ISSUE_TEMPLATE/za-bug-report.md +0 -0
  14. {gam7-7.7.10 → gam7-7.7.12}/.github/ISSUE_TEMPLATE/zz-feature-request.md +0 -0
  15. {gam7-7.7.10 → gam7-7.7.12}/.github/ISSUE_TEMPLATE.txt +0 -0
  16. {gam7-7.7.10 → gam7-7.7.12}/.github/actions/decrypt.sh +0 -0
  17. {gam7-7.7.10 → gam7-7.7.12}/.github/actions/entitlements.plist +0 -0
  18. {gam7-7.7.10 → gam7-7.7.12}/.github/actions/package_exclusions.txt +0 -0
  19. {gam7-7.7.10 → gam7-7.7.12}/.github/stale.yml +0 -0
  20. {gam7-7.7.10 → gam7-7.7.12}/.github/workflows/build.yml +0 -0
  21. {gam7-7.7.10 → gam7-7.7.12}/.github/workflows/codeql-analysis.yml +0 -0
  22. {gam7-7.7.10 → gam7-7.7.12}/.github/workflows/get-cacerts.yml +0 -0
  23. {gam7-7.7.10 → gam7-7.7.12}/.github/workflows/pushwiki.yml +0 -0
  24. {gam7-7.7.10 → gam7-7.7.12}/.github/workflows/pypi.yml +0 -0
  25. {gam7-7.7.10 → gam7-7.7.12}/.pre-commit-config.yaml +0 -0
  26. {gam7-7.7.10 → gam7-7.7.12}/LICENSE +0 -0
  27. {gam7-7.7.10 → gam7-7.7.12}/README.md +0 -0
  28. {gam7-7.7.10 → gam7-7.7.12}/pyproject.toml +0 -0
  29. {gam7-7.7.10 → gam7-7.7.12}/src/.gitignore +0 -0
  30. {gam7-7.7.10 → gam7-7.7.12}/src/GamCommands.txt +0 -0
  31. {gam7-7.7.10 → gam7-7.7.12}/src/LICENSE +0 -0
  32. {gam7-7.7.10 → gam7-7.7.12}/src/cacerts.pem +0 -0
  33. {gam7-7.7.10 → gam7-7.7.12}/src/callgam.py +0 -0
  34. {gam7-7.7.10 → gam7-7.7.12}/src/gam/__main__.py +0 -0
  35. {gam7-7.7.10 → gam7-7.7.12}/src/gam/atom/__init__.py +0 -0
  36. {gam7-7.7.10 → gam7-7.7.12}/src/gam/atom/auth.py +0 -0
  37. {gam7-7.7.10 → gam7-7.7.12}/src/gam/atom/client.py +0 -0
  38. {gam7-7.7.10 → gam7-7.7.12}/src/gam/atom/core.py +0 -0
  39. {gam7-7.7.10 → gam7-7.7.12}/src/gam/atom/data.py +0 -0
  40. {gam7-7.7.10 → gam7-7.7.12}/src/gam/atom/http.py +0 -0
  41. {gam7-7.7.10 → gam7-7.7.12}/src/gam/atom/http_core.py +0 -0
  42. {gam7-7.7.10 → gam7-7.7.12}/src/gam/atom/http_interface.py +0 -0
  43. {gam7-7.7.10 → gam7-7.7.12}/src/gam/atom/mock_http.py +0 -0
  44. {gam7-7.7.10 → gam7-7.7.12}/src/gam/atom/mock_http_core.py +0 -0
  45. {gam7-7.7.10 → gam7-7.7.12}/src/gam/atom/mock_service.py +0 -0
  46. {gam7-7.7.10 → gam7-7.7.12}/src/gam/atom/service.py +0 -0
  47. {gam7-7.7.10 → gam7-7.7.12}/src/gam/atom/token_store.py +0 -0
  48. {gam7-7.7.10 → gam7-7.7.12}/src/gam/atom/url.py +0 -0
  49. {gam7-7.7.10 → gam7-7.7.12}/src/gam/cacerts.pem +0 -0
  50. {gam7-7.7.10 → gam7-7.7.12}/src/gam/cbcm-v1.1beta1.json +0 -0
  51. {gam7-7.7.10 → gam7-7.7.12}/src/gam/contactdelegation-v1.json +0 -0
  52. {gam7-7.7.10 → gam7-7.7.12}/src/gam/datastudio-v1.json +0 -0
  53. {gam7-7.7.10 → gam7-7.7.12}/src/gam/gamlib/__init__.py +0 -0
  54. {gam7-7.7.10 → gam7-7.7.12}/src/gam/gamlib/glaction.py +0 -0
  55. {gam7-7.7.10 → gam7-7.7.12}/src/gam/gamlib/glapi.py +0 -0
  56. {gam7-7.7.10 → gam7-7.7.12}/src/gam/gamlib/glclargs.py +0 -0
  57. {gam7-7.7.10 → gam7-7.7.12}/src/gam/gamlib/glentity.py +0 -0
  58. {gam7-7.7.10 → gam7-7.7.12}/src/gam/gamlib/glgapi.py +0 -0
  59. {gam7-7.7.10 → gam7-7.7.12}/src/gam/gamlib/glgdata.py +0 -0
  60. {gam7-7.7.10 → gam7-7.7.12}/src/gam/gamlib/glindent.py +0 -0
  61. {gam7-7.7.10 → gam7-7.7.12}/src/gam/gamlib/glmsgs.py +0 -0
  62. {gam7-7.7.10 → gam7-7.7.12}/src/gam/gamlib/glskus.py +0 -0
  63. {gam7-7.7.10 → gam7-7.7.12}/src/gam/gamlib/gluprop.py +0 -0
  64. {gam7-7.7.10 → gam7-7.7.12}/src/gam/gamlib/glverlibs.py +0 -0
  65. {gam7-7.7.10 → gam7-7.7.12}/src/gam/gamlib/yubikey.py +0 -0
  66. {gam7-7.7.10 → gam7-7.7.12}/src/gam/gdata/__init__.py +0 -0
  67. {gam7-7.7.10 → gam7-7.7.12}/src/gam/gdata/alt/__init__.py +0 -0
  68. {gam7-7.7.10 → gam7-7.7.12}/src/gam/gdata/alt/app_engine.py +0 -0
  69. {gam7-7.7.10 → gam7-7.7.12}/src/gam/gdata/alt/appengine.py +0 -0
  70. {gam7-7.7.10 → gam7-7.7.12}/src/gam/gdata/apps/__init__.py +0 -0
  71. {gam7-7.7.10 → gam7-7.7.12}/src/gam/gdata/apps/audit/__init__.py +0 -0
  72. {gam7-7.7.10 → gam7-7.7.12}/src/gam/gdata/apps/audit/service.py +0 -0
  73. {gam7-7.7.10 → gam7-7.7.12}/src/gam/gdata/apps/contacts/__init__.py +0 -0
  74. {gam7-7.7.10 → gam7-7.7.12}/src/gam/gdata/apps/contacts/service.py +0 -0
  75. {gam7-7.7.10 → gam7-7.7.12}/src/gam/gdata/apps/service.py +0 -0
  76. {gam7-7.7.10 → gam7-7.7.12}/src/gam/gdata/service.py +0 -0
  77. {gam7-7.7.10 → gam7-7.7.12}/src/gam/gdata/urlfetch.py +0 -0
  78. {gam7-7.7.10 → gam7-7.7.12}/src/gam/googleapiclient/__init__.py +0 -0
  79. {gam7-7.7.10 → gam7-7.7.12}/src/gam/googleapiclient/_auth.py +0 -0
  80. {gam7-7.7.10 → gam7-7.7.12}/src/gam/googleapiclient/_helpers.py +0 -0
  81. {gam7-7.7.10 → gam7-7.7.12}/src/gam/googleapiclient/channel.py +0 -0
  82. {gam7-7.7.10 → gam7-7.7.12}/src/gam/googleapiclient/discovery.py +0 -0
  83. {gam7-7.7.10 → gam7-7.7.12}/src/gam/googleapiclient/discovery_cache/__init__.py +0 -0
  84. {gam7-7.7.10 → gam7-7.7.12}/src/gam/googleapiclient/discovery_cache/appengine_memcache.py +0 -0
  85. {gam7-7.7.10 → gam7-7.7.12}/src/gam/googleapiclient/discovery_cache/base.py +0 -0
  86. {gam7-7.7.10 → gam7-7.7.12}/src/gam/googleapiclient/discovery_cache/file_cache.py +0 -0
  87. {gam7-7.7.10 → gam7-7.7.12}/src/gam/googleapiclient/errors.py +0 -0
  88. {gam7-7.7.10 → gam7-7.7.12}/src/gam/googleapiclient/http.py +0 -0
  89. {gam7-7.7.10 → gam7-7.7.12}/src/gam/googleapiclient/mimeparse.py +0 -0
  90. {gam7-7.7.10 → gam7-7.7.12}/src/gam/googleapiclient/model.py +0 -0
  91. {gam7-7.7.10 → gam7-7.7.12}/src/gam/googleapiclient/schema.py +0 -0
  92. {gam7-7.7.10 → gam7-7.7.12}/src/gam/googleapiclient/version.py +0 -0
  93. {gam7-7.7.10 → gam7-7.7.12}/src/gam/iso8601/__init__.py +0 -0
  94. {gam7-7.7.10 → gam7-7.7.12}/src/gam/iso8601/iso8601.py +0 -0
  95. {gam7-7.7.10 → gam7-7.7.12}/src/gam/meet-v2beta.json +0 -0
  96. {gam7-7.7.10 → gam7-7.7.12}/src/gam/serviceaccountlookup-v1.json +0 -0
  97. {gam7-7.7.10 → gam7-7.7.12}/src/gam/six.py +0 -0
  98. {gam7-7.7.10 → gam7-7.7.12}/src/gam-install.sh +0 -0
  99. {gam7-7.7.10 → gam7-7.7.12}/src/gam-setup.bat +0 -0
  100. {gam7-7.7.10 → gam7-7.7.12}/src/gam.exe.manifest +0 -0
  101. {gam7-7.7.10 → gam7-7.7.12}/src/gam.py +0 -0
  102. {gam7-7.7.10 → gam7-7.7.12}/src/gam.spec +0 -0
  103. {gam7-7.7.10 → gam7-7.7.12}/src/gam.wxs +0 -0
  104. {gam7-7.7.10 → gam7-7.7.12}/src/license.rtf +0 -0
  105. {gam7-7.7.10 → gam7-7.7.12}/src/requirements-dev.txt +0 -0
  106. {gam7-7.7.10 → gam7-7.7.12}/src/requirements.txt +0 -0
  107. {gam7-7.7.10 → gam7-7.7.12}/src/setup.cfg +0 -0
  108. {gam7-7.7.10 → gam7-7.7.12}/src/setup.py +0 -0
  109. {gam7-7.7.10 → gam7-7.7.12}/src/tools/a_atleast_b.py +0 -0
  110. {gam7-7.7.10 → gam7-7.7.12}/src/tools/gen-wix-xml-filelist.py +0 -0
  111. {gam7-7.7.10 → gam7-7.7.12}/src/tools/mkGamRef.py +0 -0
  112. {gam7-7.7.10 → gam7-7.7.12}/src/tools/openssl.props +0 -0
  113. {gam7-7.7.10 → gam7-7.7.12}/src/version_info.txt.in +0 -0
  114. {gam7-7.7.10 → gam7-7.7.12}/wiki/00scratch.md +0 -0
  115. {gam7-7.7.10 → gam7-7.7.12}/wiki/Addresses.md +0 -0
  116. {gam7-7.7.10 → gam7-7.7.12}/wiki/Administrators.md +0 -0
  117. {gam7-7.7.10 → gam7-7.7.12}/wiki/Alert-Center.md +0 -0
  118. {gam7-7.7.10 → gam7-7.7.12}/wiki/Aliases.md +0 -0
  119. {gam7-7.7.10 → gam7-7.7.12}/wiki/BNF-Syntax.md +0 -0
  120. {gam7-7.7.10 → gam7-7.7.12}/wiki/Basic-Items.md +0 -0
  121. {gam7-7.7.10 → gam7-7.7.12}/wiki/Bulk-Processing.md +0 -0
  122. {gam7-7.7.10 → gam7-7.7.12}/wiki/CSV-Input-Filtering.md +0 -0
  123. {gam7-7.7.10 → gam7-7.7.12}/wiki/CSV-Output-Filtering.md +0 -0
  124. {gam7-7.7.10 → gam7-7.7.12}/wiki/CSV-Special-Characters.md +0 -0
  125. {gam7-7.7.10 → gam7-7.7.12}/wiki/Calendars-Access.md +0 -0
  126. {gam7-7.7.10 → gam7-7.7.12}/wiki/Calendars-Events.md +0 -0
  127. {gam7-7.7.10 → gam7-7.7.12}/wiki/Calendars.md +0 -0
  128. {gam7-7.7.10 → gam7-7.7.12}/wiki/Chat-Bot.md +0 -0
  129. {gam7-7.7.10 → gam7-7.7.12}/wiki/Chrome-AUE-Counts.md +0 -0
  130. {gam7-7.7.10 → gam7-7.7.12}/wiki/Chrome-Browser-Cloud-Management.md +0 -0
  131. {gam7-7.7.10 → gam7-7.7.12}/wiki/Chrome-Installed-Apps.md +0 -0
  132. {gam7-7.7.10 → gam7-7.7.12}/wiki/Chrome-Needs-Attention-Counts.md +0 -0
  133. {gam7-7.7.10 → gam7-7.7.12}/wiki/Chrome-Policies.md +0 -0
  134. {gam7-7.7.10 → gam7-7.7.12}/wiki/Chrome-Printers.md +0 -0
  135. {gam7-7.7.10 → gam7-7.7.12}/wiki/Chrome-Profile-Management.md +0 -0
  136. {gam7-7.7.10 → gam7-7.7.12}/wiki/Chrome-Version-Counts.md +0 -0
  137. {gam7-7.7.10 → gam7-7.7.12}/wiki/Chrome-Version-History.md +0 -0
  138. {gam7-7.7.10 → gam7-7.7.12}/wiki/ChromeOS-Devices.md +0 -0
  139. {gam7-7.7.10 → gam7-7.7.12}/wiki/Classroom-Courses.md +0 -0
  140. {gam7-7.7.10 → gam7-7.7.12}/wiki/Classroom-Guardians.md +0 -0
  141. {gam7-7.7.10 → gam7-7.7.12}/wiki/Classroom-Invitations.md +0 -0
  142. {gam7-7.7.10 → gam7-7.7.12}/wiki/Classroom-Membership.md +0 -0
  143. {gam7-7.7.10 → gam7-7.7.12}/wiki/Cloud-Channel.md +0 -0
  144. {gam7-7.7.10 → gam7-7.7.12}/wiki/Cloud-Identity-Devices.md +0 -0
  145. {gam7-7.7.10 → gam7-7.7.12}/wiki/Cloud-Identity-Groups-Membership.md +0 -0
  146. {gam7-7.7.10 → gam7-7.7.12}/wiki/Cloud-Identity-Groups.md +0 -0
  147. {gam7-7.7.10 → gam7-7.7.12}/wiki/Cloud-Identity-Policies.md +0 -0
  148. {gam7-7.7.10 → gam7-7.7.12}/wiki/Cloud-Storage.md +0 -0
  149. {gam7-7.7.10 → gam7-7.7.12}/wiki/Collections-of-ChromeOS-Devices.md +0 -0
  150. {gam7-7.7.10 → gam7-7.7.12}/wiki/Collections-of-Items.md +0 -0
  151. {gam7-7.7.10 → gam7-7.7.12}/wiki/Collections-of-Users.md +0 -0
  152. {gam7-7.7.10 → gam7-7.7.12}/wiki/Command-Data-From-Google-Docs-Sheets-Storage.md +0 -0
  153. {gam7-7.7.10 → gam7-7.7.12}/wiki/Command-Line-Parsing.md +0 -0
  154. {gam7-7.7.10 → gam7-7.7.12}/wiki/Command-Logging-Progress.md +0 -0
  155. {gam7-7.7.10 → gam7-7.7.12}/wiki/Context-Aware-Access-Levels.md +0 -0
  156. {gam7-7.7.10 → gam7-7.7.12}/wiki/Customer.md +0 -0
  157. {gam7-7.7.10 → gam7-7.7.12}/wiki/Domain-People-Contacts-Profiles.md +0 -0
  158. {gam7-7.7.10 → gam7-7.7.12}/wiki/Domain-SharedContacts.md +0 -0
  159. {gam7-7.7.10 → gam7-7.7.12}/wiki/Domains-Verification.md +0 -0
  160. {gam7-7.7.10 → gam7-7.7.12}/wiki/Domains.md +0 -0
  161. {gam7-7.7.10 → gam7-7.7.12}/wiki/Downloads-Installs.md +0 -0
  162. {gam7-7.7.10 → gam7-7.7.12}/wiki/Drive-File-Selection.md +0 -0
  163. {gam7-7.7.10 → gam7-7.7.12}/wiki/Drive-Items.md +0 -0
  164. {gam7-7.7.10 → gam7-7.7.12}/wiki/Drive-REST-API-v3.md +0 -0
  165. {gam7-7.7.10 → gam7-7.7.12}/wiki/Email-Audit-Monitor.md +0 -0
  166. {gam7-7.7.10 → gam7-7.7.12}/wiki/Find-File-Owner.md +0 -0
  167. {gam7-7.7.10 → gam7-7.7.12}/wiki/GAM-Public-Chat-Room.md +0 -0
  168. {gam7-7.7.10 → gam7-7.7.12}/wiki/GAM-Return-Codes.md +0 -0
  169. {gam7-7.7.10 → gam7-7.7.12}/wiki/GAM-with-minimal-GCP-rights.md +0 -0
  170. {gam7-7.7.10 → gam7-7.7.12}/wiki/GAM7-on-Android-Devices.md +0 -0
  171. {gam7-7.7.10 → gam7-7.7.12}/wiki/GAM7-on-Chrome-OS-Devices.md +0 -0
  172. {gam7-7.7.10 → gam7-7.7.12}/wiki/Google-Data-Transfers.md +0 -0
  173. {gam7-7.7.10 → gam7-7.7.12}/wiki/Google-Network-Addresses.md +0 -0
  174. {gam7-7.7.10 → gam7-7.7.12}/wiki/Groups-Membership.md +0 -0
  175. {gam7-7.7.10 → gam7-7.7.12}/wiki/HTTPS-Proxy.md +0 -0
  176. {gam7-7.7.10 → gam7-7.7.12}/wiki/Home.md +0 -0
  177. {gam7-7.7.10 → gam7-7.7.12}/wiki/How-to-Install-GAM7.md +0 -0
  178. {gam7-7.7.10 → gam7-7.7.12}/wiki/How-to-Uninstall-GAM7.md +0 -0
  179. {gam7-7.7.10 → gam7-7.7.12}/wiki/How-to-Update-GAM7.md +0 -0
  180. {gam7-7.7.10 → gam7-7.7.12}/wiki/How-to-Upgrade-GAMADV-XTD3-to-GAM7.md +0 -0
  181. {gam7-7.7.10 → gam7-7.7.12}/wiki/Inbound-SSO.md +0 -0
  182. {gam7-7.7.10 → gam7-7.7.12}/wiki/Install-GAM-as-Python-Library.md +0 -0
  183. {gam7-7.7.10 → gam7-7.7.12}/wiki/Licenses.md +0 -0
  184. {gam7-7.7.10 → gam7-7.7.12}/wiki/List-Items.md +0 -0
  185. {gam7-7.7.10 → gam7-7.7.12}/wiki/List.md +0 -0
  186. {gam7-7.7.10 → gam7-7.7.12}/wiki/Meta-Commands-and-File-Redirection.md +0 -0
  187. {gam7-7.7.10 → gam7-7.7.12}/wiki/Mobile-Devices.md +0 -0
  188. {gam7-7.7.10 → gam7-7.7.12}/wiki/Organizational-Units.md +0 -0
  189. {gam7-7.7.10 → gam7-7.7.12}/wiki/Other-Resources.md +0 -0
  190. {gam7-7.7.10 → gam7-7.7.12}/wiki/Permission-Matches.md +0 -0
  191. {gam7-7.7.10 → gam7-7.7.12}/wiki/Python-Regular-Expressions.md +0 -0
  192. {gam7-7.7.10 → gam7-7.7.12}/wiki/README.md +0 -0
  193. {gam7-7.7.10 → gam7-7.7.12}/wiki/Rclone.md +0 -0
  194. {gam7-7.7.10 → gam7-7.7.12}/wiki/Reports.md +0 -0
  195. {gam7-7.7.10 → gam7-7.7.12}/wiki/Reseller.md +0 -0
  196. {gam7-7.7.10 → gam7-7.7.12}/wiki/Resources.md +0 -0
  197. {gam7-7.7.10 → gam7-7.7.12}/wiki/Running-GAM7-securely-on-a-Google-Compute-Engine.md +0 -0
  198. {gam7-7.7.10 → gam7-7.7.12}/wiki/SSL-Root-CA-Certificates.md +0 -0
  199. {gam7-7.7.10 → gam7-7.7.12}/wiki/Schemas.md +0 -0
  200. {gam7-7.7.10 → gam7-7.7.12}/wiki/Scripts.md +0 -0
  201. {gam7-7.7.10 → gam7-7.7.12}/wiki/Send-Email.md +0 -0
  202. {gam7-7.7.10 → gam7-7.7.12}/wiki/Shared-Drives.md +0 -0
  203. {gam7-7.7.10 → gam7-7.7.12}/wiki/Sites.md +0 -0
  204. {gam7-7.7.10 → gam7-7.7.12}/wiki/Tag-Replace.md +0 -0
  205. {gam7-7.7.10 → gam7-7.7.12}/wiki/Todrive.md +0 -0
  206. {gam7-7.7.10 → gam7-7.7.12}/wiki/Unmanaged-Accounts.md +0 -0
  207. {gam7-7.7.10 → gam7-7.7.12}/wiki/Upgrade-Benefits.md +0 -0
  208. {gam7-7.7.10 → gam7-7.7.12}/wiki/Users-Analytics-Admin.md +0 -0
  209. {gam7-7.7.10 → gam7-7.7.12}/wiki/Users-Application-Specific-Passwords.md +0 -0
  210. {gam7-7.7.10 → gam7-7.7.12}/wiki/Users-Backup-Verification-Codes.md +0 -0
  211. {gam7-7.7.10 → gam7-7.7.12}/wiki/Users-Calendars-Access.md +0 -0
  212. {gam7-7.7.10 → gam7-7.7.12}/wiki/Users-Calendars-Events.md +0 -0
  213. {gam7-7.7.10 → gam7-7.7.12}/wiki/Users-Calendars.md +0 -0
  214. {gam7-7.7.10 → gam7-7.7.12}/wiki/Users-Chat.md +0 -0
  215. {gam7-7.7.10 → gam7-7.7.12}/wiki/Users-Classification-Labels.md +0 -0
  216. {gam7-7.7.10 → gam7-7.7.12}/wiki/Users-Classroom-Profile.md +0 -0
  217. {gam7-7.7.10 → gam7-7.7.12}/wiki/Users-Contacts-Delegates.md +0 -0
  218. {gam7-7.7.10 → gam7-7.7.12}/wiki/Users-Contacts.md +0 -0
  219. {gam7-7.7.10 → gam7-7.7.12}/wiki/Users-Deprovision.md +0 -0
  220. {gam7-7.7.10 → gam7-7.7.12}/wiki/Users-Drive-Activity-Settings.md +0 -0
  221. {gam7-7.7.10 → gam7-7.7.12}/wiki/Users-Drive-Cleanup.md +0 -0
  222. {gam7-7.7.10 → gam7-7.7.12}/wiki/Users-Drive-Comments.md +0 -0
  223. {gam7-7.7.10 → gam7-7.7.12}/wiki/Users-Drive-Copy-Move.md +0 -0
  224. {gam7-7.7.10 → gam7-7.7.12}/wiki/Users-Drive-Files-Display.md +0 -0
  225. {gam7-7.7.10 → gam7-7.7.12}/wiki/Users-Drive-Files-Manage.md +0 -0
  226. {gam7-7.7.10 → gam7-7.7.12}/wiki/Users-Drive-Orphans.md +0 -0
  227. {gam7-7.7.10 → gam7-7.7.12}/wiki/Users-Drive-Ownership.md +0 -0
  228. {gam7-7.7.10 → gam7-7.7.12}/wiki/Users-Drive-Permissions.md +0 -0
  229. {gam7-7.7.10 → gam7-7.7.12}/wiki/Users-Drive-Query.md +0 -0
  230. {gam7-7.7.10 → gam7-7.7.12}/wiki/Users-Drive-Revisions.md +0 -0
  231. {gam7-7.7.10 → gam7-7.7.12}/wiki/Users-Drive-Shortcuts.md +0 -0
  232. {gam7-7.7.10 → gam7-7.7.12}/wiki/Users-Drive-Transfer.md +0 -0
  233. {gam7-7.7.10 → gam7-7.7.12}/wiki/Users-Forms.md +0 -0
  234. {gam7-7.7.10 → gam7-7.7.12}/wiki/Users-Gmail-CSE.md +0 -0
  235. {gam7-7.7.10 → gam7-7.7.12}/wiki/Users-Gmail-Delegates.md +0 -0
  236. {gam7-7.7.10 → gam7-7.7.12}/wiki/Users-Gmail-Filters.md +0 -0
  237. {gam7-7.7.10 → gam7-7.7.12}/wiki/Users-Gmail-Forwarding.md +0 -0
  238. {gam7-7.7.10 → gam7-7.7.12}/wiki/Users-Gmail-Labels.md +0 -0
  239. {gam7-7.7.10 → gam7-7.7.12}/wiki/Users-Gmail-Messages-Threads.md +0 -0
  240. {gam7-7.7.10 → gam7-7.7.12}/wiki/Users-Gmail-Profile.md +0 -0
  241. {gam7-7.7.10 → gam7-7.7.12}/wiki/Users-Gmail-S-MIME.md +0 -0
  242. {gam7-7.7.10 → gam7-7.7.12}/wiki/Users-Gmail-Send-As-Signature-Vacation.md +0 -0
  243. {gam7-7.7.10 → gam7-7.7.12}/wiki/Users-Gmail-Settings.md +0 -0
  244. {gam7-7.7.10 → gam7-7.7.12}/wiki/Users-Group-Membership.md +0 -0
  245. {gam7-7.7.10 → gam7-7.7.12}/wiki/Users-Keep-Notes.md +0 -0
  246. {gam7-7.7.10 → gam7-7.7.12}/wiki/Users-Looker-Studio.md +0 -0
  247. {gam7-7.7.10 → gam7-7.7.12}/wiki/Users-Meet.md +0 -0
  248. {gam7-7.7.10 → gam7-7.7.12}/wiki/Users-People-Contacts-Profiles.md +0 -0
  249. {gam7-7.7.10 → gam7-7.7.12}/wiki/Users-Photo.md +0 -0
  250. {gam7-7.7.10 → gam7-7.7.12}/wiki/Users-Profile-Photo.md +0 -0
  251. {gam7-7.7.10 → gam7-7.7.12}/wiki/Users-Profile-Sharing.md +0 -0
  252. {gam7-7.7.10 → gam7-7.7.12}/wiki/Users-Shared-Drives.md +0 -0
  253. {gam7-7.7.10 → gam7-7.7.12}/wiki/Users-Signout-Turnoff2SV.md +0 -0
  254. {gam7-7.7.10 → gam7-7.7.12}/wiki/Users-Spreadsheets.md +0 -0
  255. {gam7-7.7.10 → gam7-7.7.12}/wiki/Users-Tasks.md +0 -0
  256. {gam7-7.7.10 → gam7-7.7.12}/wiki/Users-Tokens.md +0 -0
  257. {gam7-7.7.10 → gam7-7.7.12}/wiki/Users-YouTube.md +0 -0
  258. {gam7-7.7.10 → gam7-7.7.12}/wiki/Users.md +0 -0
  259. {gam7-7.7.10 → gam7-7.7.12}/wiki/Using-GAM7-with-a-YubiKey.md +0 -0
  260. {gam7-7.7.10 → gam7-7.7.12}/wiki/Using-GAM7-with-a-delegated-admin-service-account.md +0 -0
  261. {gam7-7.7.10 → gam7-7.7.12}/wiki/Vault-Takeout.md +0 -0
  262. {gam7-7.7.10 → gam7-7.7.12}/wiki/Verifying-a-GAM7-Build-is-Legitimate-and-Official.md +0 -0
  263. {gam7-7.7.10 → gam7-7.7.12}/wiki/_Sidebar.md +0 -0
  264. {gam7-7.7.10 → gam7-7.7.12}/wiki/l-AdminSettingsExamples.md +0 -0
  265. {gam7-7.7.10 → gam7-7.7.12}/wiki/l-Android-Installation.md +0 -0
  266. {gam7-7.7.10 → gam7-7.7.12}/wiki/l-BulkOperations.md +0 -0
  267. {gam7-7.7.10 → gam7-7.7.12}/wiki/l-CalendarExamples.md +0 -0
  268. {gam7-7.7.10 → gam7-7.7.12}/wiki/l-Chat-Bot.md +0 -0
  269. {gam7-7.7.10 → gam7-7.7.12}/wiki/l-Chrome-Browser-Management.md +0 -0
  270. {gam7-7.7.10 → gam7-7.7.12}/wiki/l-Chrome-OS-Installation.md +0 -0
  271. {gam7-7.7.10 → gam7-7.7.12}/wiki/l-Chrome-Policy-Settings.md +0 -0
  272. {gam7-7.7.10 → gam7-7.7.12}/wiki/l-Cloud-Identity-Groups.md +0 -0
  273. {gam7-7.7.10 → gam7-7.7.12}/wiki/l-Command-Reference-Calendar-Resources.md +0 -0
  274. {gam7-7.7.10 → gam7-7.7.12}/wiki/l-Command-Reference-Calendars.md +0 -0
  275. {gam7-7.7.10 → gam7-7.7.12}/wiki/l-Command-Reference-Definitions.md +0 -0
  276. {gam7-7.7.10 → gam7-7.7.12}/wiki/l-Command-Reference-Drive.md +0 -0
  277. {gam7-7.7.10 → gam7-7.7.12}/wiki/l-Command-Reference-Email.md +0 -0
  278. {gam7-7.7.10 → gam7-7.7.12}/wiki/l-Command-Reference-Group-Attributes.md +0 -0
  279. {gam7-7.7.10 → gam7-7.7.12}/wiki/l-Command-Reference-Groups.md +0 -0
  280. {gam7-7.7.10 → gam7-7.7.12}/wiki/l-Command-Reference-Users.md +0 -0
  281. {gam7-7.7.10 → gam7-7.7.12}/wiki/l-Context-Aware-Access-Levels.md +0 -0
  282. {gam7-7.7.10 → gam7-7.7.12}/wiki/l-Creating-client_secrets.json-and-oauth2service.json.md +0 -0
  283. {gam7-7.7.10 → gam7-7.7.12}/wiki/l-CreatingClientSecretsFile.md +0 -0
  284. {gam7-7.7.10 → gam7-7.7.12}/wiki/l-Custom-Schemas.md +0 -0
  285. {gam7-7.7.10 → gam7-7.7.12}/wiki/l-Data-Transfers.md +0 -0
  286. {gam7-7.7.10 → gam7-7.7.12}/wiki/l-DomainVerification.md +0 -0
  287. {gam7-7.7.10 → gam7-7.7.12}/wiki/l-ExamplesAccountAuditing.md +0 -0
  288. {gam7-7.7.10 → gam7-7.7.12}/wiki/l-ExamplesCSV.md +0 -0
  289. {gam7-7.7.10 → gam7-7.7.12}/wiki/l-ExamplesEmailSettings.md +0 -0
  290. {gam7-7.7.10 → gam7-7.7.12}/wiki/l-ExamplesOrganizations.md +0 -0
  291. {gam7-7.7.10 → gam7-7.7.12}/wiki/l-GAM-Discussion-Group.md +0 -0
  292. {gam7-7.7.10 → gam7-7.7.12}/wiki/l-GAM-on-Android-and-Chrome-OS.md +0 -0
  293. {gam7-7.7.10 → gam7-7.7.12}/wiki/l-GAM-options-files.md +0 -0
  294. {gam7-7.7.10 → gam7-7.7.12}/wiki/l-GAM-with--minimal-GCP-rights.md +0 -0
  295. {gam7-7.7.10 → gam7-7.7.12}/wiki/l-GAM3CSVListings.md +0 -0
  296. {gam7-7.7.10 → gam7-7.7.12}/wiki/l-GAM3DirectoryCommands.md +0 -0
  297. {gam7-7.7.10 → gam7-7.7.12}/wiki/l-GAM3GroupSettings.md +0 -0
  298. {gam7-7.7.10 → gam7-7.7.12}/wiki/l-GAM7-FAQ.md +0 -0
  299. {gam7-7.7.10 → gam7-7.7.12}/wiki/l-Google-Vault---Takeout-Commands.md +0 -0
  300. {gam7-7.7.10 → gam7-7.7.12}/wiki/l-GoogleDriveManagement.md +0 -0
  301. {gam7-7.7.10 → gam7-7.7.12}/wiki/l-Grouping-18-or-Older-Users.md +0 -0
  302. {gam7-7.7.10 → gam7-7.7.12}/wiki/l-Home.md +0 -0
  303. {gam7-7.7.10 → gam7-7.7.12}/wiki/l-How-to-upgrade-from-Standard-GAM.md +0 -0
  304. {gam7-7.7.10 → gam7-7.7.12}/wiki/l-Inbound-SSO-Settings.md +0 -0
  305. {gam7-7.7.10 → gam7-7.7.12}/wiki/l-LicenseExamples.md +0 -0
  306. {gam7-7.7.10 → gam7-7.7.12}/wiki/l-Managing-Admins.md +0 -0
  307. {gam7-7.7.10 → gam7-7.7.12}/wiki/l-Managing-CloudPrint-Printers.md +0 -0
  308. {gam7-7.7.10 → gam7-7.7.12}/wiki/l-Managing-Devices.md +0 -0
  309. {gam7-7.7.10 → gam7-7.7.12}/wiki/l-Managing-Google-Classroom.md +0 -0
  310. {gam7-7.7.10 → gam7-7.7.12}/wiki/l-OAuthKeyManagement.md +0 -0
  311. {gam7-7.7.10 → gam7-7.7.12}/wiki/l-Printers.md +0 -0
  312. {gam7-7.7.10 → gam7-7.7.12}/wiki/l-ResellerCommands.md +0 -0
  313. {gam7-7.7.10 → gam7-7.7.12}/wiki/l-Running-GAM-on-Google-Compute-Engine-(GCE)-Securely.md +0 -0
  314. {gam7-7.7.10 → gam7-7.7.12}/wiki/l-SecurityExamples.md +0 -0
  315. {gam7-7.7.10 → gam7-7.7.12}/wiki/l-UnmanagedUsersExamples.md +0 -0
  316. {gam7-7.7.10 → gam7-7.7.12}/wiki/l-Use-a-Yubikey.md +0 -0
  317. {gam7-7.7.10 → gam7-7.7.12}/wiki/l-Using-GAM-with-a-delegated-admin-service-account-(DASA).md +0 -0
  318. {gam7-7.7.10 → gam7-7.7.12}/wiki/l-_Footer.md +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: gam7
3
- Version: 7.7.10
3
+ Version: 7.7.12
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
@@ -1,3 +1,22 @@
1
+ 7.07.12
2
+
3
+ Fixed bug in `gam print|show oushareddrives` that caused a trap.
4
+
5
+ Improved getting Shared Drive names from IDs when accessing Shared Drives in external workspaces.
6
+
7
+ 7.07.11
8
+
9
+ Updated `gam calendars <CalendarEntity> update events` and `gam <UserTypeEntity> update events <UserCalendarEntity>`
10
+ to handle the following error:
11
+ ```
12
+ ERROR: 400: badRequest - Bad Request
13
+ ```
14
+
15
+ Updated `gam <UserTypeEntity> move drivefile` to handle the following error:
16
+ ```
17
+ ERROR: 400: shareOutNotPermitted
18
+ ```
19
+
1
20
  7.07.10
2
21
 
3
22
  Updated `gam calendars <CalendarEntity> update events` and `gam <UserTypeEntity> update events <UserCalendarEntity>`
@@ -3,7 +3,7 @@
3
3
  #
4
4
  # GAM7
5
5
  #
6
- # Copyright 2024, All Rights Reserved.
6
+ # Copyright 2025, All Rights Reserved.
7
7
  #
8
8
  # Licensed under the Apache License, Version 2.0 (the "License");
9
9
  # you may not use this file except in compliance with the License.
@@ -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.07.10'
28
+ __version__ = '7.07.12'
29
29
  __license__ = 'Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0)'
30
30
 
31
31
  #pylint: disable=wrong-import-position
@@ -39299,7 +39299,7 @@ def _updateCalendarEvents(origUser, user, origCal, calIds, count, calendarEventE
39299
39299
  throwReasons=GAPI.CALENDAR_THROW_REASONS+[GAPI.NOT_FOUND, GAPI.DELETED, GAPI.FORBIDDEN, GAPI.BACKEND_ERROR,
39300
39300
  GAPI.INVALID, GAPI.REQUIRED, GAPI.TIME_RANGE_EMPTY, GAPI.EVENT_DURATION_EXCEEDS_LIMIT,
39301
39301
  GAPI.REQUIRED_ACCESS_LEVEL, GAPI.CANNOT_CHANGE_ORGANIZER_OF_INSTANCE,
39302
- GAPI.MALFORMED_WORKING_LOCATION_EVENT, GAPI.EVENT_TYPE_RESTRICTION],
39302
+ GAPI.MALFORMED_WORKING_LOCATION_EVENT, GAPI.EVENT_TYPE_RESTRICTION, GAPI.BAD_REQUEST],
39303
39303
  retryReasons=GAPI.SERVICE_NOT_AVAILABLE_RETRY_REASONS+[GAPI.BACKEND_ERROR],
39304
39304
  calendarId=calId, eventId=eventId, conferenceDataVersion=1, sendUpdates=parameters['sendUpdates'], supportsAttachments=True,
39305
39305
  body=body, fields=pfields)
@@ -39316,7 +39316,7 @@ def _updateCalendarEvents(origUser, user, origCal, calIds, count, calendarEventE
39316
39316
  entityActionFailedWarning([Ent.CALENDAR, calId, Ent.EVENT, eventId], str(e), j, jcount)
39317
39317
  except (GAPI.forbidden, GAPI.backendError, GAPI.invalid, GAPI.required, GAPI.timeRangeEmpty, GAPI.eventDurationExceedsLimit,
39318
39318
  GAPI.requiredAccessLevel, GAPI.cannotChangeOrganizerOfInstance, GAPI.malformedWorkingLocationEvent,
39319
- GAPI.eventTypeRestriction) as e:
39319
+ GAPI.eventTypeRestriction, GAPI.badRequest) as e:
39320
39320
  entityActionFailedWarning([Ent.CALENDAR, calId, Ent.EVENT, eventId], str(e), j, jcount)
39321
39321
  except GAPI.notACalendarUser:
39322
39322
  userCalServiceNotEnabledWarning(calId, i, count)
@@ -42021,22 +42021,21 @@ def printShowUserVaultHolds(entityList):
42021
42021
  else:
42022
42022
  printKeyValueList(['Total Holds', totalHolds])
42023
42023
 
42024
- def _cleanVaultQuery(query, cd):
42024
+ def _cleanVaultQuery(query, cd, drive):
42025
42025
  if 'query' in query:
42026
- if cd is not None:
42027
- if 'orgUnitInfo' in query['query']:
42028
- query['query']['orgUnitInfo']['orgUnitPath'] = convertOrgUnitIDtoPath(cd, query['query']['orgUnitInfo']['orgUnitId'])
42029
- if 'sharedDriveInfo' in query['query']:
42030
- query['query']['sharedDriveInfo']['sharedDriveNames'] = []
42031
- for sharedDriveId in query['query']['sharedDriveInfo']['sharedDriveIds']:
42032
- query['query']['sharedDriveInfo']['sharedDriveNames'].append(_getSharedDriveNameFromId(sharedDriveId))
42026
+ if cd is not None and 'orgUnitInfo' in query['query']:
42027
+ query['query']['orgUnitInfo']['orgUnitPath'] = convertOrgUnitIDtoPath(cd, query['query']['orgUnitInfo']['orgUnitId'])
42028
+ if drive is not None and 'sharedDriveInfo' in query['query']:
42029
+ query['query']['sharedDriveInfo']['sharedDriveNames'] = []
42030
+ for sharedDriveId in query['query']['sharedDriveInfo']['sharedDriveIds']:
42031
+ query['query']['sharedDriveInfo']['sharedDriveNames'].append(_getSharedDriveNameFromId(drive, sharedDriveId, False))
42033
42032
  query['query'].pop('searchMethod', None)
42034
42033
  query['query'].pop('teamDriveInfo', None)
42035
42034
 
42036
42035
  VAULT_QUERY_TIME_OBJECTS = {'createTime', 'endTime', 'startTime', 'versionDate'}
42037
42036
 
42038
- def _showVaultQuery(matterNameId, query, cd, FJQC, k=0, kcount=0):
42039
- _cleanVaultQuery(query, cd)
42037
+ def _showVaultQuery(matterNameId, query, cd, drive, FJQC, k=0, kcount=0):
42038
+ _cleanVaultQuery(query, cd, drive)
42040
42039
  if FJQC is not None and FJQC.formatJSON:
42041
42040
  printLine(json.dumps(cleanJSON(query, timeObjects=VAULT_QUERY_TIME_OBJECTS), ensure_ascii=False, sort_keys=False))
42042
42041
  return
@@ -42068,7 +42067,7 @@ def doInfoVaultQuery():
42068
42067
  queryId, queryName, queryNameId = convertQueryNameToID(v, getString(Cmd.OB_QUERY_ITEM), matterId, matterNameId)
42069
42068
  else:
42070
42069
  queryName = getString(Cmd.OB_QUERY_ITEM)
42071
- cd = None
42070
+ cd = drive = None
42072
42071
  fieldsList = []
42073
42072
  FJQC = FormatJSONQuoteChar()
42074
42073
  while Cmd.ArgumentsRemaining():
@@ -42078,8 +42077,8 @@ def doInfoVaultQuery():
42078
42077
  queryId, queryName, queryNameId = convertQueryNameToID(v, queryName, matterId, matterNameId)
42079
42078
  elif myarg == 'shownames':
42080
42079
  cd = buildGAPIObject(API.DIRECTORY)
42081
- _, GM.Globals[GM.ADMIN_DRIVE] = buildGAPIServiceObject(API.DRIVE3, _getAdminEmail())
42082
- if GM.Globals[GM.ADMIN_DRIVE] is None:
42080
+ _, drive = buildGAPIServiceObject(API.DRIVE3, _getAdminEmail())
42081
+ if drive is None:
42083
42082
  return
42084
42083
  elif getFieldsList(myarg, VAULT_QUERY_FIELDS_CHOICE_MAP, fieldsList, initialField=['savedQueryId', 'displayName']):
42085
42084
  pass
@@ -42090,7 +42089,7 @@ def doInfoVaultQuery():
42090
42089
  query = callGAPI(v.matters().savedQueries(), 'get',
42091
42090
  throwReasons=[GAPI.NOT_FOUND, GAPI.BAD_REQUEST, GAPI.FORBIDDEN, GAPI.INVALID_ARGUMENT],
42092
42091
  matterId=matterId, savedQueryId=queryId, fields=fields)
42093
- _showVaultQuery(matterNameId, query, cd, FJQC)
42092
+ _showVaultQuery(matterNameId, query, cd, drive, FJQC)
42094
42093
  except (GAPI.notFound, GAPI.badRequest, GAPI.forbidden, GAPI.invalidArgument) as e:
42095
42094
  entityActionFailedWarning([Ent.VAULT_MATTER, matterNameId, Ent.VAULT_QUERY, queryNameId], str(e))
42096
42095
 
@@ -42107,7 +42106,7 @@ def doPrintShowVaultQueries():
42107
42106
  csvPF = CSVPrintFile(PRINT_VAULT_QUERIES_TITLES, 'sortall') if Act.csvFormat() else None
42108
42107
  FJQC = FormatJSONQuoteChar(csvPF)
42109
42108
  matters = []
42110
- cd = None
42109
+ cd = drive = None
42111
42110
  fieldsList = []
42112
42111
  while Cmd.ArgumentsRemaining():
42113
42112
  myarg = getArgument()
@@ -42117,8 +42116,8 @@ def doPrintShowVaultQueries():
42117
42116
  matters = shlexSplitList(getString(Cmd.OB_MATTER_ITEM_LIST))
42118
42117
  elif myarg == 'shownames':
42119
42118
  cd = buildGAPIObject(API.DIRECTORY)
42120
- _, GM.Globals[GM.ADMIN_DRIVE] = buildGAPIServiceObject(API.DRIVE3, _getAdminEmail())
42121
- if GM.Globals[GM.ADMIN_DRIVE] is None:
42119
+ _, drive = buildGAPIServiceObject(API.DRIVE3, _getAdminEmail())
42120
+ if drive is None:
42122
42121
  return
42123
42122
  elif getFieldsList(myarg, VAULT_QUERY_FIELDS_CHOICE_MAP, fieldsList, initialField=['savedQueryId', 'displayName']):
42124
42123
  pass
@@ -42180,11 +42179,11 @@ def doPrintShowVaultQueries():
42180
42179
  k = 0
42181
42180
  for query in queries:
42182
42181
  k += 1
42183
- _showVaultQuery(matterNameId, query, cd, FJQC, k, kcount)
42182
+ _showVaultQuery(matterNameId, query, cd, drive, FJQC, k, kcount)
42184
42183
  Ind.Decrement()
42185
42184
  else:
42186
42185
  for query in queries:
42187
- _cleanVaultQuery(query, cd)
42186
+ _cleanVaultQuery(query, cd, drive)
42188
42187
  row = flattenJSON(query, flattened={'matterId': matterId, 'matterName': matterName}, timeObjects=VAULT_QUERY_TIME_OBJECTS)
42189
42188
  if not FJQC.formatJSON:
42190
42189
  csvPF.WriteRowTitles(row)
@@ -52447,20 +52446,15 @@ def _convertSharedDriveNameToId(drive, user, i, count, fileIdEntity, useDomainAd
52447
52446
  ','.join([td['id'] for td in tdlist])), i, count)
52448
52447
  return False
52449
52448
 
52450
- def _getSharedDriveNameFromId(sharedDriveId):
52449
+ def _getSharedDriveNameFromId(drive, sharedDriveId, useDomainAdminAccess=False):
52451
52450
  sharedDriveName = GM.Globals[GM.MAP_SHAREDDRIVE_ID_TO_NAME].get(sharedDriveId)
52452
52451
  if not sharedDriveName:
52453
- if not GM.Globals[GM.ADMIN_DRIVE]:
52454
- _, GM.Globals[GM.ADMIN_DRIVE] = buildGAPIServiceObject(API.DRIVE3, _getAdminEmail())
52455
- if GM.Globals[GM.ADMIN_DRIVE]:
52456
- try:
52457
- sharedDriveName = callGAPI(GM.Globals[GM.ADMIN_DRIVE].drives(), 'get',
52458
- throwReasons=GAPI.DRIVE_USER_THROW_REASONS+[GAPI.NOT_FOUND],
52459
- useDomainAdminAccess=True,
52460
- driveId=sharedDriveId, fields='name')['name']
52461
- except (GAPI.notFound, GAPI.serviceNotAvailable, GAPI.authError, GAPI.domainPolicy):
52462
- sharedDriveName = TEAM_DRIVE
52463
- else:
52452
+ try:
52453
+ sharedDriveName = callGAPI(drive.drives(), 'get',
52454
+ throwReasons=GAPI.DRIVE_USER_THROW_REASONS+[GAPI.NOT_FOUND],
52455
+ useDomainAdminAccess=useDomainAdminAccess,
52456
+ driveId=sharedDriveId, fields='name')['name']
52457
+ except (GAPI.notFound, GAPI.serviceNotAvailable, GAPI.authError, GAPI.domainPolicy):
52464
52458
  sharedDriveName = TEAM_DRIVE
52465
52459
  GM.Globals[GM.MAP_SHAREDDRIVE_ID_TO_NAME][sharedDriveId] = sharedDriveName
52466
52460
  return sharedDriveName
@@ -52473,7 +52467,7 @@ def _getDriveFileNameFromId(drive, fileId, combineTitleId=True, useDomainAdminAc
52473
52467
  if result:
52474
52468
  fileName = result['name']
52475
52469
  if (result['mimeType'] == MIMETYPE_GA_FOLDER) and result.get('driveId') and (result['name'] == TEAM_DRIVE):
52476
- fileName = _getSharedDriveNameFromId(result['driveId'])
52470
+ fileName = _getSharedDriveNameFromId(drive, result['driveId'])
52477
52471
  if combineTitleId:
52478
52472
  fileName += '('+fileId+')'
52479
52473
  return (fileName, _getEntityMimeType(result), result['mimeType'])
@@ -53555,7 +53549,7 @@ def getFilePaths(drive, fileTree, initialResult, filePathInfo, addParentsToTree=
53555
53549
  fullpath=False, showDepth=False, folderPathOnly=False):
53556
53550
  def _getParentName(result):
53557
53551
  if (result['mimeType'] == MIMETYPE_GA_FOLDER) and result.get('driveId') and (result['name'] == TEAM_DRIVE):
53558
- parentName = _getSharedDriveNameFromId(result['driveId'])
53552
+ parentName = _getSharedDriveNameFromId(drive, result['driveId'])
53559
53553
  if parentName != TEAM_DRIVE:
53560
53554
  return f'{SHARED_DRIVES}{filePathInfo["delimiter"]}{parentName}'
53561
53555
  return result['name']
@@ -54254,9 +54248,9 @@ def showFileInfo(users):
54254
54248
  driveId = result.get('driveId')
54255
54249
  if driveId:
54256
54250
  if result['mimeType'] == MIMETYPE_GA_FOLDER and result['name'] == TEAM_DRIVE:
54257
- result['name'] = _getSharedDriveNameFromId(driveId)
54251
+ result['name'] = _getSharedDriveNameFromId(drive, driveId)
54258
54252
  if DFF.showSharedDriveNames:
54259
- result['driveName'] = _getSharedDriveNameFromId(driveId)
54253
+ result['driveName'] = _getSharedDriveNameFromId(drive, driveId)
54260
54254
  if showNoParents:
54261
54255
  result.setdefault('parents', [])
54262
54256
  if getPermissionsForSharedDrives and driveId and 'permissions' not in result:
@@ -54944,7 +54938,7 @@ def extendFileTreeParents(drive, fileTree, fields):
54944
54938
  result['parents'] = [ORPHANS] if result.get('ownedByMe', False) and 'sharedWithMeTime' not in result else [SHARED_WITHME]
54945
54939
  else:
54946
54940
  if result['name'] == TEAM_DRIVE:
54947
- result['name'] = _getSharedDriveNameFromId(result['driveId'])
54941
+ result['name'] = _getSharedDriveNameFromId(drive, result['driveId'])
54948
54942
  result['parents'] = [SHARED_DRIVES] if 'sharedWithMeTime' not in result else [SHARED_WITHME]
54949
54943
  fileTree[fileId]['info'] = result
54950
54944
  fileTree[fileId]['info']['noDisplay'] = True
@@ -55689,7 +55683,7 @@ def printFileList(users):
55689
55683
  if not pmselect and 'permissions' in fileInfo:
55690
55684
  fileInfo['permissions'] = DLP.GetFileMatchingPermission(fileInfo)
55691
55685
  if DFF.showSharedDriveNames and driveId:
55692
- fileInfo['driveName'] = _getSharedDriveNameFromId(driveId)
55686
+ fileInfo['driveName'] = _getSharedDriveNameFromId(drive, driveId)
55693
55687
  if filepath:
55694
55688
  if not FJQC.formatJSON or not addPathsToJSON:
55695
55689
  addFilePathsToRow(drive, fileTree, fileInfo, filePathInfo, csvPF, row,
@@ -56559,7 +56553,7 @@ def printShowFilePaths(users):
56559
56553
  driveId = result.get('driveId')
56560
56554
  if driveId:
56561
56555
  if result['mimeType'] == MIMETYPE_GA_FOLDER and result['name'] == TEAM_DRIVE:
56562
- result['name'] = _getSharedDriveNameFromId(driveId)
56556
+ result['name'] = _getSharedDriveNameFromId(drive, driveId)
56563
56557
  if returnPathOnly:
56564
56558
  if fullpath:
56565
56559
  writeStdout(f'{SHARED_DRIVES}/{result["name"]}\n')
@@ -56649,7 +56643,7 @@ def printFileParentTree(users):
56649
56643
  driveId = result.get('driveId')
56650
56644
  if driveId:
56651
56645
  if result['mimeType'] == MIMETYPE_GA_FOLDER and result['name'] == TEAM_DRIVE:
56652
- result['name'] = _getSharedDriveNameFromId(driveId)
56646
+ result['name'] = _getSharedDriveNameFromId(drive, driveId)
56653
56647
  result['isRoot'] = True
56654
56648
  result['parents'] = ['']
56655
56649
  fileList.append(result)
@@ -56886,7 +56880,7 @@ def printShowFileCounts(users):
56886
56880
  if not drive:
56887
56881
  continue
56888
56882
  sharedDriveId = fileIdEntity.get('shareddrive', {}).get('driveId', '')
56889
- sharedDriveName = _getSharedDriveNameFromId(sharedDriveId) if sharedDriveId else ''
56883
+ sharedDriveName = _getSharedDriveNameFromId(drive, sharedDriveId) if sharedDriveId else ''
56890
56884
  mimeTypeInfo = {}
56891
56885
  userLastModification = _initLastModification()
56892
56886
  gettingEntity = _getGettingEntity(user, fileIdEntity)
@@ -57031,7 +57025,7 @@ def printShowDrivelastModifications(users):
57031
57025
  if not drive:
57032
57026
  continue
57033
57027
  sharedDriveId = fileIdEntity.get('shareddrive', {}).get('driveId', '')
57034
- sharedDriveName = _getSharedDriveNameFromId(sharedDriveId) if sharedDriveId else ''
57028
+ sharedDriveName = _getSharedDriveNameFromId(drive, sharedDriveId) if sharedDriveId else ''
57035
57029
  userLastModification = _initLastModification()
57036
57030
  gettingEntity = _getGettingEntity(user, fileIdEntity)
57037
57031
  printGettingAllEntityItemsForWhom(Ent.DRIVE_FILE_OR_FOLDER, gettingEntity, i, count)
@@ -57214,7 +57208,7 @@ def printDiskUsage(users):
57214
57208
  includeOwner = False
57215
57209
  csvPF.RemoveTitles(['Owner', 'ownedByMe'])
57216
57210
  if topFolder['name'] == TEAM_DRIVE and not topFolder.get('parents'):
57217
- topFolder['name'] = _getSharedDriveNameFromId(driveId)
57211
+ topFolder['name'] = _getSharedDriveNameFromId(drive, driveId)
57218
57212
  topFolder['path'] = f'{SHARED_DRIVES}{pathDelimiter}{topFolder["name"]}'
57219
57213
  else:
57220
57214
  topFolder['path'] = topFolder['name']
@@ -57654,7 +57648,7 @@ def printShowFileTree(users):
57654
57648
  fileId=fileId, fields=fields, supportsAllDrives=True)
57655
57649
  if (fileEntryInfo['mimeType'] == MIMETYPE_GA_FOLDER and fileEntryInfo.get('driveId') and
57656
57650
  fileEntryInfo['name'] == TEAM_DRIVE and not fileEntryInfo.get('parents', [])):
57657
- fileEntryInfo['name'] = f"{SHARED_DRIVES}/{_getSharedDriveNameFromId(fileId)}"
57651
+ fileEntryInfo['name'] = f"{SHARED_DRIVES}/{_getSharedDriveNameFromId(drive, fileId)}"
57658
57652
  if stripCRsFromName:
57659
57653
  fileEntryInfo['name'] = _stripControlCharsFromName(fileEntryInfo['name'])
57660
57654
  if buildTree:
@@ -59295,7 +59289,7 @@ def _getCopyMoveParentInfo(drive, user, i, count, j, jcount, newParentId, statis
59295
59289
  result['destParentType'] = DEST_PARENT_MYDRIVE_FOLDER
59296
59290
  else:
59297
59291
  if result['name'] == TEAM_DRIVE and not result.get('parents', []):
59298
- result['name'] = _getSharedDriveNameFromId(result['driveId'])
59292
+ result['name'] = _getSharedDriveNameFromId(drive, result['driveId'])
59299
59293
  result['destParentType'] = DEST_PARENT_SHAREDDRIVE_ROOT
59300
59294
  else:
59301
59295
  result['destParentType'] = DEST_PARENT_SHAREDDRIVE_FOLDER
@@ -59844,7 +59838,7 @@ def copyDriveFile(users):
59844
59838
  # Source at root of Shared Drive?
59845
59839
  sourceMimeType = source['mimeType']
59846
59840
  if sourceMimeType == MIMETYPE_GA_FOLDER and source.get('driveId') and source['name'] == TEAM_DRIVE and not source.get('parents', []):
59847
- source['name'] = _getSharedDriveNameFromId(source['driveId'])
59841
+ source['name'] = _getSharedDriveNameFromId(drive, source['driveId'])
59848
59842
  sourceName = source['name']
59849
59843
  sourceNameId = f"{sourceName}({source['id']})"
59850
59844
  copyMoveOptions['sourceDriveId'] = source.get('driveId')
@@ -60450,6 +60444,7 @@ def moveDriveFile(users):
60450
60444
  GAPI.FILE_OWNER_NOT_MEMBER_OF_TEAMDRIVE,
60451
60445
  GAPI.FILE_OWNER_NOT_MEMBER_OF_WRITER_DOMAIN,
60452
60446
  GAPI.FILE_WRITER_TEAMDRIVE_MOVE_IN_DISABLED,
60447
+ GAPI.SHARE_OUT_NOT_PERMITTED,
60453
60448
  GAPI.TARGET_USER_ROLE_LIMITED_BY_LICENSE_RESTRICTION,
60454
60449
  GAPI.CANNOT_MOVE_TRASHED_ITEM_INTO_TEAMDRIVE,
60455
60450
  GAPI.CANNOT_MOVE_TRASHED_ITEM_OUT_OF_TEAMDRIVE,
@@ -60464,7 +60459,7 @@ def moveDriveFile(users):
60464
60459
  _incrStatistic(statistics, STAT_FILE_COPIED_MOVED)
60465
60460
  return
60466
60461
  except (GAPI.fileNotFound, GAPI.forbidden, GAPI.internalError, GAPI.unknownError, GAPI.badRequest,
60467
- GAPI.targetUserRoleLimitedByLicenseRestriction,
60462
+ GAPI.shareOutNotPermitted, GAPI.targetUserRoleLimitedByLicenseRestriction,
60468
60463
  GAPI.cannotMoveTrashedItemIntoTeamDrive, GAPI.cannotMoveTrashedItemOutOfTeamDrive,
60469
60464
  GAPI.teamDrivesShortcutFileNotSupported, GAPI.storageQuotaExceeded) as e:
60470
60465
  entityActionFailedWarning(kvList, str(e), k, kcount)
@@ -60614,7 +60609,7 @@ def moveDriveFile(users):
60614
60609
  if sourceMimeType == MIMETYPE_GA_FOLDER and source['name'] in [MY_DRIVE, TEAM_DRIVE] and not source.get('parents', []):
60615
60610
  copyMoveOptions['sourceIsMyDriveSharedDrive'] = True
60616
60611
  if source.get('driveId'):
60617
- source['name'] = _getSharedDriveNameFromId(source['driveId'])
60612
+ source['name'] = _getSharedDriveNameFromId(drive, source['driveId'])
60618
60613
  sourceName = source['name']
60619
60614
  sourceNameId = f"{sourceName}({source['id']})"
60620
60615
  copyMoveOptions['sourceDriveId'] = source.get('driveId')
@@ -63058,7 +63053,7 @@ def printEmptyDriveFolders(users):
63058
63053
  fileIdEntity['shareddrive'] = {'driveId': sharedDriveId, 'corpora': 'drive', 'includeItemsFromAllDrives': True, 'supportsAllDrives': True}
63059
63054
  csvPF.AddTitles(['driveId'])
63060
63055
  csvPF.MoveTitlesToEnd(['name'])
63061
- pathList = [f'{SHARED_DRIVES}/{_getSharedDriveNameFromId(sharedDriveId)}']
63056
+ pathList = [f'{SHARED_DRIVES}/{_getSharedDriveNameFromId(drive, sharedDriveId)}']
63062
63057
  else:
63063
63058
  pathList = [fileEntryInfo['name']]
63064
63059
  mimeType = fileEntryInfo['mimeType']
@@ -63148,7 +63143,7 @@ def deleteEmptyDriveFolders(users):
63148
63143
  if 'driveId' in fileEntryInfo:
63149
63144
  sharedDriveId = fileEntryInfo['driveId']
63150
63145
  fileIdEntity['shareddrive'] = {'driveId': sharedDriveId, 'corpora': 'drive', 'includeItemsFromAllDrives': True, 'supportsAllDrives': True}
63151
- pathList = [f'{SHARED_DRIVES}/{_getSharedDriveNameFromId(sharedDriveId)}']
63146
+ pathList = [f'{SHARED_DRIVES}/{_getSharedDriveNameFromId(drive, sharedDriveId)}']
63152
63147
  else:
63153
63148
  pathList = [fileEntryInfo['name']]
63154
63149
  mimeType = fileEntryInfo['mimeType']
@@ -65585,7 +65580,7 @@ def doPrintShowSharedDrives():
65585
65580
  def doPrintShowOrgunitSharedDrives():
65586
65581
  def _getOrgUnitSharedDriveInfo(shareddrive):
65587
65582
  shareddrive['driveId'] = shareddrive['name'].rsplit(';')[1]
65588
- shareddrive['driveName'] = _getSharedDriveNameFromId(shareddrive['driveId'])
65583
+ shareddrive['driveName'] = _getSharedDriveNameFromId(drive, shareddrive['driveId'], True)
65589
65584
  shareddrive['orgUnitPath'] = orgUnitPath
65590
65585
 
65591
65586
  def _showOrgUnitSharedDrive(shareddrive, j, jcount, FJQC):
@@ -65599,13 +65594,13 @@ def doPrintShowOrgunitSharedDrives():
65599
65594
  printEntity([Ent.MEMBER_URI, shareddrive['memberUri']])
65600
65595
  printEntity([Ent.SHAREDDRIVE_ID, shareddrive['driveId']])
65601
65596
  printEntity([Ent.SHAREDDRIVE_NAME, shareddrive['driveName']])
65602
- printEntity([Ent.ORGANIZATIONAL_UNIT, shareddrive['orgUnit']])
65597
+ printEntity([Ent.ORGANIZATIONAL_UNIT, shareddrive['orgUnitPath']])
65603
65598
  Ind.Decrement()
65604
65599
 
65605
65600
  ci = buildGAPIObject(API.CLOUDIDENTITY_ORGUNITS_BETA)
65606
65601
  cd = buildGAPIObject(API.DIRECTORY)
65607
- _, GM.Globals[GM.ADMIN_DRIVE] = buildGAPIServiceObject(API.DRIVE3, _getAdminEmail())
65608
- if not GM.Globals[GM.ADMIN_DRIVE]:
65602
+ _, drive = buildGAPIServiceObject(API.DRIVE3, _getAdminEmail())
65603
+ if drive is None:
65609
65604
  return
65610
65605
  csvPF = CSVPrintFile(['name', 'type', 'member', 'memberUri', 'driveId', 'driveName', 'orgUnitPath']) if Act.csvFormat() else None
65611
65606
  FJQC = FormatJSONQuoteChar(csvPF)
@@ -65684,13 +65679,13 @@ def copySyncSharedDriveACLs(users, useDomainAdminAccess=False):
65684
65679
  if not drive:
65685
65680
  continue
65686
65681
  if not srcFileIdEntity.get('shareddrivename'):
65687
- srcFileIdEntity['shareddrivename'] = _getSharedDriveNameFromId(srcFileIdEntity['shareddrive']['driveId'])
65682
+ srcFileIdEntity['shareddrivename'] = _getSharedDriveNameFromId(drive, srcFileIdEntity['shareddrive']['driveId'])
65688
65683
  if tgtFileIdEntity.get('shareddrivename'):
65689
65684
  if not _convertSharedDriveNameToId(drive, user, i, count, tgtFileIdEntity, useDomainAdminAccess):
65690
65685
  continue
65691
65686
  tgtFileIdEntity['shareddrive']['corpora'] = 'drive'
65692
65687
  else:
65693
- tgtFileIdEntity['shareddrivename'] = _getSharedDriveNameFromId(tgtFileIdEntity['shareddrive']['driveId'])
65688
+ tgtFileIdEntity['shareddrivename'] = _getSharedDriveNameFromId(drive, tgtFileIdEntity['shareddrive']['driveId'])
65694
65689
  statistics = _initStatistics()
65695
65690
  copyMoveOptions['sourceDriveId'] = srcFileIdEntity['shareddrive']['driveId']
65696
65691
  copyMoveOptions['destDriveId'] = tgtFileIdEntity['shareddrive']['driveId']
@@ -1,6 +1,6 @@
1
1
  # -*- coding: utf-8 -*-
2
2
 
3
- # Copyright (C) 2024 Ross Scroggs All Rights Reserved.
3
+ # Copyright (C) 2025 Ross Scroggs All Rights Reserved.
4
4
  #
5
5
  # All Rights Reserved.
6
6
  #
@@ -260,12 +260,12 @@ SMTP_HOST = 'smtp_host'
260
260
  SMTP_USERNAME = 'smtp_username'
261
261
  # SMTP password
262
262
  SMTP_PASSWORD = 'smtp_password'
263
+ # Time Zone
264
+ TIMEZONE = 'timezone'
263
265
  ## Minimum TLS Version required for HTTPS connections
264
266
  TLS_MIN_VERSION = 'tls_min_version'
265
267
  ## Maximum TLS Version used for HTTPS connections
266
268
  TLS_MAX_VERSION = 'tls_max_version'
267
- # Time Zone
268
- TIMEZONE = 'timezone'
269
269
  # Clear basic filter when updating an existing sheet
270
270
  TODRIVE_CLEARFILTER = 'todrive_clearfilter'
271
271
  # Use client access for todrive
@@ -431,9 +431,9 @@ Defaults = {
431
431
  SMTP_HOST: '',
432
432
  SMTP_USERNAME: '',
433
433
  SMTP_PASSWORD: '',
434
+ TIMEZONE: 'utc',
434
435
  TLS_MIN_VERSION: 'TLSv1_3',
435
436
  TLS_MAX_VERSION: '',
436
- TIMEZONE: 'utc',
437
437
  TODRIVE_CLEARFILTER: FALSE,
438
438
  TODRIVE_CLIENTACCESS: FALSE,
439
439
  TODRIVE_CONVERSION: TRUE,
@@ -599,9 +599,9 @@ VAR_INFO = {
599
599
  SMTP_HOST: {VAR_TYPE: TYPE_STRING, VAR_LIMITS: (0, None)},
600
600
  SMTP_USERNAME: {VAR_TYPE: TYPE_STRING, VAR_LIMITS: (0, None)},
601
601
  SMTP_PASSWORD: {VAR_TYPE: TYPE_PASSWORD, VAR_LIMITS: (0, None)},
602
+ TIMEZONE: {VAR_TYPE: TYPE_TIMEZONE},
602
603
  TLS_MIN_VERSION: {VAR_TYPE: TYPE_CHOICE, VAR_ENVVAR: 'GAM_TLS_MIN_VERSION', VAR_CHOICES: TLS_CHOICE_MAP},
603
604
  TLS_MAX_VERSION: {VAR_TYPE: TYPE_CHOICE, VAR_ENVVAR: 'GAM_TLS_MAX_VERSION', VAR_CHOICES: TLS_CHOICE_MAP},
604
- TIMEZONE: {VAR_TYPE: TYPE_TIMEZONE},
605
605
  TODRIVE_CLEARFILTER: {VAR_TYPE: TYPE_BOOLEAN},
606
606
  TODRIVE_CLIENTACCESS: {VAR_TYPE: TYPE_BOOLEAN},
607
607
  TODRIVE_CONVERSION: {VAR_TYPE: TYPE_BOOLEAN},
@@ -1,6 +1,6 @@
1
1
  # -*- coding: utf-8 -*-
2
2
 
3
- # Copyright (C) 2023 Ross Scroggs All Rights Reserved.
3
+ # Copyright (C) 2025 Ross Scroggs All Rights Reserved.
4
4
  #
5
5
  # All Rights Reserved.
6
6
  #
@@ -25,8 +25,6 @@
25
25
  # Some commands want to set a non-zero return code but not bail
26
26
  # GAM admin user from oauth2.txt or oauth2service.json
27
27
  ADMIN = 'admn'
28
- # Drive service for admin; used to look up Shared Drive Names
29
- ADMIN_DRIVE = 'addr'
30
28
  # Number/length of API call retries
31
29
  API_CALLS_RETRY_DATA = 'rtry'
32
30
  # GAM cache directory. If no_cache is True, this variable will be set to None
@@ -220,7 +218,6 @@ REDIRECT_QUEUE_EOF = 'eof'
220
218
  #
221
219
  Globals = {
222
220
  ADMIN: None,
223
- ADMIN_DRIVE: None,
224
221
  API_CALLS_RETRY_DATA: {},
225
222
  CACHE_DIR: None,
226
223
  CACHE_DISCOVERY_ONLY: True,
@@ -64,6 +64,7 @@ Verify the following steps:
64
64
  * If groups are used to authenticate access, make sure the super admin is in one of the groups
65
65
  * Collapse "Service status"
66
66
  * Expand "Cloud Resource Manager API settings"
67
+ * Select the OU in the left that contains the super admin you'll be using
67
68
  * Make sure that "Allow users to create projects" is checked
68
69
 
69
70
  Verify that all scopes are available:
@@ -10,6 +10,27 @@ 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.07.11
14
+
15
+ Updated `gam calendars <CalendarEntity> update events` and `gam <UserTypeEntity> update events <UserCalendarEntity>`
16
+ to handle the following error:
17
+ ```
18
+ ERROR: 400: badRequest - Bad Request
19
+ ```
20
+
21
+ Updated `gam <UserTypeEntity> move drivefile` to handle the following error:
22
+ ```
23
+ ERROR: 400: shareOutNotPermitted
24
+ ```
25
+
26
+ ### 7.07.10
27
+
28
+ Updated `gam calendars <CalendarEntity> update events` and `gam <UserTypeEntity> update events <UserCalendarEntity>`
29
+ to handle the following error:
30
+ ```
31
+ ERROR: 400: eventTypeRestriction - Attendees cannot be added to 'fromGmail' event with this visibility setting.
32
+ ```
33
+
13
34
  ### 7.07.09
14
35
 
15
36
  Updated `gam calendars <CalendarEntity> update events` and `gam <UserTypeEntity> update events <UserCalendarEntity>`
@@ -335,6 +335,11 @@ gam update group group@domain.com whoCanViewMembership ALL_MEMBERS_CAN_VIEW whoC
335
335
  Group: group@domain.com, Updated
336
336
  ```
337
337
 
338
+ If you are entering a valid combination but an error message is returned, do the following and then re-issue your command.
339
+ ```
340
+ gam update group group@domain.com whoCanViewMembership ALL_IN_DOMAIN_CAN_VIEW whoCanDiscoverGroup ALL_IN_DOMAIN_CAN_DISCOVER
341
+ ```
342
+
338
343
  ## Manage groups
339
344
 
340
345
  These commands allow you to create, update and delete groups.
@@ -251,7 +251,7 @@ writes the credentials into the file oauth2.txt.
251
251
  admin@server:/Users/admin$ rm -f /Users/admin/GAMConfig/oauth2.txt
252
252
  admin@server:/Users/admin$ gam version
253
253
  WARNING: Config File: /Users/admin/GAMConfig/gam.cfg, Section: DEFAULT, Item: oauth2_txt, Value: /Users/admin/GAMConfig/oauth2.txt, Not Found
254
- GAM 7.07.09 - https://github.com/GAM-team/GAM - pyinstaller
254
+ GAM 7.07.11 - https://github.com/GAM-team/GAM - pyinstaller
255
255
  GAM Team <google-apps-manager@googlegroups.com>
256
256
  Python 3.13.3 64-bit final
257
257
  MacOS Sequoia 15.5 x86_64
@@ -989,7 +989,7 @@ writes the credentials into the file oauth2.txt.
989
989
  C:\>del C:\GAMConfig\oauth2.txt
990
990
  C:\>gam version
991
991
  WARNING: Config File: C:\GAMConfig\gam.cfg, Section: DEFAULT, Item: oauth2_txt, Value: C:\GAMConfig\oauth2.txt, Not Found
992
- GAM 7.07.09 - https://github.com/GAM-team/GAM - pythonsource
992
+ GAM 7.07.11 - https://github.com/GAM-team/GAM - pythonsource
993
993
  GAM Team <google-apps-manager@googlegroups.com>
994
994
  Python 3.13.3 64-bit final
995
995
  Windows-10-10.0.17134 AMD64
@@ -3,7 +3,7 @@
3
3
  Print the current version of Gam with details
4
4
  ```
5
5
  gam version
6
- GAM 7.07.09 - https://github.com/GAM-team/GAM - pyinstaller
6
+ GAM 7.07.11 - https://github.com/GAM-team/GAM - pyinstaller
7
7
  GAM Team <google-apps-manager@googlegroups.com>
8
8
  Python 3.13.3 64-bit final
9
9
  MacOS Sequoia 15.5 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.07.09 - https://github.com/GAM-team/GAM - pyinstaller
18
+ GAM 7.07.11 - https://github.com/GAM-team/GAM - pyinstaller
19
19
  GAM Team <google-apps-manager@googlegroups.com>
20
20
  Python 3.13.3 64-bit final
21
21
  MacOS Sequoia 15.5 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.07.09 - https://github.com/GAM-team/GAM - pyinstaller
30
+ GAM 7.07.11 - https://github.com/GAM-team/GAM - pyinstaller
31
31
  GAM Team <google-apps-manager@googlegroups.com>
32
32
  Python 3.13.3 64-bit final
33
33
  MacOS Sequoia 15.5 x86_64
@@ -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.07.09
67
+ Latest: 7.07.11
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.07.09
75
+ 7.07.11
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.07.09 - https://github.com/GAM-team/GAM
85
+ GAM 7.07.11 - https://github.com/GAM-team/GAM
86
86
  GAM Team <google-apps-manager@googlegroups.com>
87
87
  Python 3.13.3 64-bit final
88
88
  MacOS Sequoia 15.5 x86_64
@@ -287,7 +287,7 @@ csv_output_users_audit
287
287
  Default: False
288
288
  customer_id
289
289
  Google Customer ID
290
- Default: Blank
290
+ Default: my_customer
291
291
  Environment variable: CUSTOMER_ID
292
292
  debug_level
293
293
  If debug_level > 0, turn on API debugging output.
@@ -321,7 +321,7 @@ drive_v3_native_names
321
321
  email_batch_size
322
322
  When archiving, printing, showing, trashing, untrashing, marking as spam Gmail messages.
323
323
  how many should be processed in each batch
324
- Default: 100
324
+ Default: 50
325
325
  Range: 1 - 100
326
326
  enable_dasa
327
327
  Enable/disable Delegated Admin Service Account API Access
@@ -384,7 +384,7 @@ message_batch_size
384
384
  message_max_results
385
385
  When retrieving lists of Gmail messages from API,
386
386
  how many should be retrieved in each API call
387
- Default: 1000
387
+ Default: 500
388
388
  Range: 1 - 10000
389
389
  mobile_max_results
390
390
  When retrieving lists of Mobile devices from API,
@@ -416,8 +416,10 @@ no_short_urls
416
416
  the shortened URL redirects to the long URL.
417
417
  When True, the long scopes URLs in `gam oauth create` and
418
418
  `gam <UserTypeEntity> check|update serviceaccount` will be used as is.
419
+ Default: True
419
420
  no_verify_ssl
420
421
  Disable SSL certificate validation
422
+ Default: False
421
423
  num_tbatch_threads
422
424
  Number of threads for gam tbatch
423
425
  Default: 2
File without changes
File without changes
File without changes
File without changes