gam7 7.14.2__tar.gz → 7.14.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 (321) hide show
  1. {gam7-7.14.2 → gam7-7.14.4}/.github/workflows/build.yml +4 -5
  2. {gam7-7.14.2 → gam7-7.14.4}/PKG-INFO +1 -1
  3. {gam7-7.14.2 → gam7-7.14.4}/pyproject.toml +0 -1
  4. {gam7-7.14.2 → gam7-7.14.4}/src/GamUpdate.txt +19 -0
  5. {gam7-7.14.2 → gam7-7.14.4}/src/gam/__init__.py +22 -12
  6. {gam7-7.14.2 → gam7-7.14.4}/src/gam/gamlib/glgapi.py +4 -0
  7. {gam7-7.14.2 → gam7-7.14.4}/wiki/Cloud-Identity-Groups-Membership.md +1 -1
  8. {gam7-7.14.2 → gam7-7.14.4}/wiki/Cloud-Identity-Groups.md +1 -1
  9. {gam7-7.14.2 → gam7-7.14.4}/wiki/GamUpdates.md +11 -0
  10. {gam7-7.14.2 → gam7-7.14.4}/wiki/How-to-Upgrade-Legacy-GAM-to-GAM7.md +2 -2
  11. {gam7-7.14.2 → gam7-7.14.4}/wiki/Install-GAM-as-Python-Library.md +5 -11
  12. {gam7-7.14.2 → gam7-7.14.4}/wiki/Users-Drive-Permissions.md +16 -0
  13. {gam7-7.14.2 → gam7-7.14.4}/wiki/Version-and-Help.md +6 -6
  14. gam7-7.14.2/src/requirements.txt +0 -14
  15. gam7-7.14.2/src/setup.cfg +0 -55
  16. gam7-7.14.2/src/setup.py +0 -3
  17. {gam7-7.14.2 → gam7-7.14.4}/.github/ISSUE_TEMPLATE/aa-question.md +0 -0
  18. {gam7-7.14.2 → gam7-7.14.4}/.github/ISSUE_TEMPLATE/za-bug-report.md +0 -0
  19. {gam7-7.14.2 → gam7-7.14.4}/.github/ISSUE_TEMPLATE/zz-feature-request.md +0 -0
  20. {gam7-7.14.2 → gam7-7.14.4}/.github/ISSUE_TEMPLATE.txt +0 -0
  21. {gam7-7.14.2 → gam7-7.14.4}/.github/actions/decrypt.sh +0 -0
  22. {gam7-7.14.2 → gam7-7.14.4}/.github/actions/entitlements.plist +0 -0
  23. {gam7-7.14.2 → gam7-7.14.4}/.github/actions/package_exclusions.txt +0 -0
  24. {gam7-7.14.2 → gam7-7.14.4}/.github/stale.yml +0 -0
  25. {gam7-7.14.2 → gam7-7.14.4}/.github/workflows/codeql-analysis.yml +0 -0
  26. {gam7-7.14.2 → gam7-7.14.4}/.github/workflows/get-cacerts.yml +0 -0
  27. {gam7-7.14.2 → gam7-7.14.4}/.github/workflows/pushwiki.yml +0 -0
  28. {gam7-7.14.2 → gam7-7.14.4}/.github/workflows/pypi.yml +0 -0
  29. {gam7-7.14.2 → gam7-7.14.4}/.pre-commit-config.yaml +0 -0
  30. {gam7-7.14.2 → gam7-7.14.4}/LICENSE +0 -0
  31. {gam7-7.14.2 → gam7-7.14.4}/README.md +0 -0
  32. {gam7-7.14.2 → gam7-7.14.4}/src/.gitignore +0 -0
  33. {gam7-7.14.2 → gam7-7.14.4}/src/GamCommands.txt +0 -0
  34. {gam7-7.14.2 → gam7-7.14.4}/src/LICENSE +0 -0
  35. {gam7-7.14.2 → gam7-7.14.4}/src/README.md +0 -0
  36. {gam7-7.14.2 → gam7-7.14.4}/src/cacerts.pem +0 -0
  37. {gam7-7.14.2 → gam7-7.14.4}/src/callgam.py +0 -0
  38. {gam7-7.14.2 → gam7-7.14.4}/src/gam/__main__.py +0 -0
  39. {gam7-7.14.2 → gam7-7.14.4}/src/gam/atom/__init__.py +0 -0
  40. {gam7-7.14.2 → gam7-7.14.4}/src/gam/atom/auth.py +0 -0
  41. {gam7-7.14.2 → gam7-7.14.4}/src/gam/atom/client.py +0 -0
  42. {gam7-7.14.2 → gam7-7.14.4}/src/gam/atom/core.py +0 -0
  43. {gam7-7.14.2 → gam7-7.14.4}/src/gam/atom/data.py +0 -0
  44. {gam7-7.14.2 → gam7-7.14.4}/src/gam/atom/http.py +0 -0
  45. {gam7-7.14.2 → gam7-7.14.4}/src/gam/atom/http_core.py +0 -0
  46. {gam7-7.14.2 → gam7-7.14.4}/src/gam/atom/http_interface.py +0 -0
  47. {gam7-7.14.2 → gam7-7.14.4}/src/gam/atom/mock_http.py +0 -0
  48. {gam7-7.14.2 → gam7-7.14.4}/src/gam/atom/mock_http_core.py +0 -0
  49. {gam7-7.14.2 → gam7-7.14.4}/src/gam/atom/mock_service.py +0 -0
  50. {gam7-7.14.2 → gam7-7.14.4}/src/gam/atom/service.py +0 -0
  51. {gam7-7.14.2 → gam7-7.14.4}/src/gam/atom/token_store.py +0 -0
  52. {gam7-7.14.2 → gam7-7.14.4}/src/gam/atom/url.py +0 -0
  53. {gam7-7.14.2 → gam7-7.14.4}/src/gam/cacerts.pem +0 -0
  54. {gam7-7.14.2 → gam7-7.14.4}/src/gam/cbcm-v1.1beta1.json +0 -0
  55. {gam7-7.14.2 → gam7-7.14.4}/src/gam/contactdelegation-v1.json +0 -0
  56. {gam7-7.14.2 → gam7-7.14.4}/src/gam/datastudio-v1.json +0 -0
  57. {gam7-7.14.2 → gam7-7.14.4}/src/gam/gamlib/__init__.py +0 -0
  58. {gam7-7.14.2 → gam7-7.14.4}/src/gam/gamlib/glaction.py +0 -0
  59. {gam7-7.14.2 → gam7-7.14.4}/src/gam/gamlib/glapi.py +0 -0
  60. {gam7-7.14.2 → gam7-7.14.4}/src/gam/gamlib/glcfg.py +0 -0
  61. {gam7-7.14.2 → gam7-7.14.4}/src/gam/gamlib/glclargs.py +0 -0
  62. {gam7-7.14.2 → gam7-7.14.4}/src/gam/gamlib/glentity.py +0 -0
  63. {gam7-7.14.2 → gam7-7.14.4}/src/gam/gamlib/glgdata.py +0 -0
  64. {gam7-7.14.2 → gam7-7.14.4}/src/gam/gamlib/glglobals.py +0 -0
  65. {gam7-7.14.2 → gam7-7.14.4}/src/gam/gamlib/glindent.py +0 -0
  66. {gam7-7.14.2 → gam7-7.14.4}/src/gam/gamlib/glmsgs.py +0 -0
  67. {gam7-7.14.2 → gam7-7.14.4}/src/gam/gamlib/glskus.py +0 -0
  68. {gam7-7.14.2 → gam7-7.14.4}/src/gam/gamlib/gluprop.py +0 -0
  69. {gam7-7.14.2 → gam7-7.14.4}/src/gam/gamlib/glverlibs.py +0 -0
  70. {gam7-7.14.2 → gam7-7.14.4}/src/gam/gamlib/yubikey.py +0 -0
  71. {gam7-7.14.2 → gam7-7.14.4}/src/gam/gdata/__init__.py +0 -0
  72. {gam7-7.14.2 → gam7-7.14.4}/src/gam/gdata/alt/__init__.py +0 -0
  73. {gam7-7.14.2 → gam7-7.14.4}/src/gam/gdata/alt/app_engine.py +0 -0
  74. {gam7-7.14.2 → gam7-7.14.4}/src/gam/gdata/alt/appengine.py +0 -0
  75. {gam7-7.14.2 → gam7-7.14.4}/src/gam/gdata/apps/__init__.py +0 -0
  76. {gam7-7.14.2 → gam7-7.14.4}/src/gam/gdata/apps/audit/__init__.py +0 -0
  77. {gam7-7.14.2 → gam7-7.14.4}/src/gam/gdata/apps/audit/service.py +0 -0
  78. {gam7-7.14.2 → gam7-7.14.4}/src/gam/gdata/apps/contacts/__init__.py +0 -0
  79. {gam7-7.14.2 → gam7-7.14.4}/src/gam/gdata/apps/contacts/service.py +0 -0
  80. {gam7-7.14.2 → gam7-7.14.4}/src/gam/gdata/apps/service.py +0 -0
  81. {gam7-7.14.2 → gam7-7.14.4}/src/gam/gdata/service.py +0 -0
  82. {gam7-7.14.2 → gam7-7.14.4}/src/gam/gdata/urlfetch.py +0 -0
  83. {gam7-7.14.2 → gam7-7.14.4}/src/gam/googleapiclient/__init__.py +0 -0
  84. {gam7-7.14.2 → gam7-7.14.4}/src/gam/googleapiclient/_auth.py +0 -0
  85. {gam7-7.14.2 → gam7-7.14.4}/src/gam/googleapiclient/_helpers.py +0 -0
  86. {gam7-7.14.2 → gam7-7.14.4}/src/gam/googleapiclient/channel.py +0 -0
  87. {gam7-7.14.2 → gam7-7.14.4}/src/gam/googleapiclient/discovery.py +0 -0
  88. {gam7-7.14.2 → gam7-7.14.4}/src/gam/googleapiclient/discovery_cache/__init__.py +0 -0
  89. {gam7-7.14.2 → gam7-7.14.4}/src/gam/googleapiclient/discovery_cache/appengine_memcache.py +0 -0
  90. {gam7-7.14.2 → gam7-7.14.4}/src/gam/googleapiclient/discovery_cache/base.py +0 -0
  91. {gam7-7.14.2 → gam7-7.14.4}/src/gam/googleapiclient/discovery_cache/file_cache.py +0 -0
  92. {gam7-7.14.2 → gam7-7.14.4}/src/gam/googleapiclient/errors.py +0 -0
  93. {gam7-7.14.2 → gam7-7.14.4}/src/gam/googleapiclient/http.py +0 -0
  94. {gam7-7.14.2 → gam7-7.14.4}/src/gam/googleapiclient/mimeparse.py +0 -0
  95. {gam7-7.14.2 → gam7-7.14.4}/src/gam/googleapiclient/model.py +0 -0
  96. {gam7-7.14.2 → gam7-7.14.4}/src/gam/googleapiclient/schema.py +0 -0
  97. {gam7-7.14.2 → gam7-7.14.4}/src/gam/googleapiclient/version.py +0 -0
  98. {gam7-7.14.2 → gam7-7.14.4}/src/gam/iso8601/__init__.py +0 -0
  99. {gam7-7.14.2 → gam7-7.14.4}/src/gam/iso8601/iso8601.py +0 -0
  100. {gam7-7.14.2 → gam7-7.14.4}/src/gam/meet-v2beta.json +0 -0
  101. {gam7-7.14.2 → gam7-7.14.4}/src/gam/serviceaccountlookup-v1.json +0 -0
  102. {gam7-7.14.2 → gam7-7.14.4}/src/gam/six.py +0 -0
  103. {gam7-7.14.2 → gam7-7.14.4}/src/gam-install.sh +0 -0
  104. {gam7-7.14.2 → gam7-7.14.4}/src/gam-setup.bat +0 -0
  105. {gam7-7.14.2 → gam7-7.14.4}/src/gam.exe.manifest +0 -0
  106. {gam7-7.14.2 → gam7-7.14.4}/src/gam.py +0 -0
  107. {gam7-7.14.2 → gam7-7.14.4}/src/gam.spec +0 -0
  108. {gam7-7.14.2 → gam7-7.14.4}/src/gam.wxs +0 -0
  109. {gam7-7.14.2 → gam7-7.14.4}/src/license.rtf +0 -0
  110. {gam7-7.14.2 → gam7-7.14.4}/src/requirements-dev.txt +0 -0
  111. {gam7-7.14.2 → gam7-7.14.4}/src/tools/a_atleast_b.py +0 -0
  112. {gam7-7.14.2 → gam7-7.14.4}/src/tools/gen-wix-xml-filelist.py +0 -0
  113. {gam7-7.14.2 → gam7-7.14.4}/src/tools/mkGamRef.py +0 -0
  114. {gam7-7.14.2 → gam7-7.14.4}/src/tools/openssl.props +0 -0
  115. {gam7-7.14.2 → gam7-7.14.4}/src/version_info.txt.in +0 -0
  116. {gam7-7.14.2 → gam7-7.14.4}/wiki/00scratch.md +0 -0
  117. {gam7-7.14.2 → gam7-7.14.4}/wiki/Addresses.md +0 -0
  118. {gam7-7.14.2 → gam7-7.14.4}/wiki/Administrators.md +0 -0
  119. {gam7-7.14.2 → gam7-7.14.4}/wiki/Alert-Center.md +0 -0
  120. {gam7-7.14.2 → gam7-7.14.4}/wiki/Aliases.md +0 -0
  121. {gam7-7.14.2 → gam7-7.14.4}/wiki/Authorization.md +0 -0
  122. {gam7-7.14.2 → gam7-7.14.4}/wiki/BNF-Syntax.md +0 -0
  123. {gam7-7.14.2 → gam7-7.14.4}/wiki/Basic-Items.md +0 -0
  124. {gam7-7.14.2 → gam7-7.14.4}/wiki/Bulk-Processing.md +0 -0
  125. {gam7-7.14.2 → gam7-7.14.4}/wiki/CSV-Input-Filtering.md +0 -0
  126. {gam7-7.14.2 → gam7-7.14.4}/wiki/CSV-Output-Filtering.md +0 -0
  127. {gam7-7.14.2 → gam7-7.14.4}/wiki/CSV-Special-Characters.md +0 -0
  128. {gam7-7.14.2 → gam7-7.14.4}/wiki/Calendars-Access.md +0 -0
  129. {gam7-7.14.2 → gam7-7.14.4}/wiki/Calendars-Events.md +0 -0
  130. {gam7-7.14.2 → gam7-7.14.4}/wiki/Calendars.md +0 -0
  131. {gam7-7.14.2 → gam7-7.14.4}/wiki/Chat-Bot.md +0 -0
  132. {gam7-7.14.2 → gam7-7.14.4}/wiki/Chrome-AUE-Counts.md +0 -0
  133. {gam7-7.14.2 → gam7-7.14.4}/wiki/Chrome-Browser-Cloud-Management.md +0 -0
  134. {gam7-7.14.2 → gam7-7.14.4}/wiki/Chrome-Installed-Apps.md +0 -0
  135. {gam7-7.14.2 → gam7-7.14.4}/wiki/Chrome-Needs-Attention-Counts.md +0 -0
  136. {gam7-7.14.2 → gam7-7.14.4}/wiki/Chrome-Policies.md +0 -0
  137. {gam7-7.14.2 → gam7-7.14.4}/wiki/Chrome-Printers.md +0 -0
  138. {gam7-7.14.2 → gam7-7.14.4}/wiki/Chrome-Profile-Management.md +0 -0
  139. {gam7-7.14.2 → gam7-7.14.4}/wiki/Chrome-Version-Counts.md +0 -0
  140. {gam7-7.14.2 → gam7-7.14.4}/wiki/Chrome-Version-History.md +0 -0
  141. {gam7-7.14.2 → gam7-7.14.4}/wiki/ChromeOS-Devices.md +0 -0
  142. {gam7-7.14.2 → gam7-7.14.4}/wiki/Classroom-Courses.md +0 -0
  143. {gam7-7.14.2 → gam7-7.14.4}/wiki/Classroom-Guardians.md +0 -0
  144. {gam7-7.14.2 → gam7-7.14.4}/wiki/Classroom-Invitations.md +0 -0
  145. {gam7-7.14.2 → gam7-7.14.4}/wiki/Classroom-Membership.md +0 -0
  146. {gam7-7.14.2 → gam7-7.14.4}/wiki/Cloud-Channel.md +0 -0
  147. {gam7-7.14.2 → gam7-7.14.4}/wiki/Cloud-Identity-Devices.md +0 -0
  148. {gam7-7.14.2 → gam7-7.14.4}/wiki/Cloud-Identity-Policies.md +0 -0
  149. {gam7-7.14.2 → gam7-7.14.4}/wiki/Cloud-Storage.md +0 -0
  150. {gam7-7.14.2 → gam7-7.14.4}/wiki/Collections-of-ChromeOS-Devices.md +0 -0
  151. {gam7-7.14.2 → gam7-7.14.4}/wiki/Collections-of-Items.md +0 -0
  152. {gam7-7.14.2 → gam7-7.14.4}/wiki/Collections-of-Users.md +0 -0
  153. {gam7-7.14.2 → gam7-7.14.4}/wiki/Command-Data-From-Google-Docs-Sheets-Storage.md +0 -0
  154. {gam7-7.14.2 → gam7-7.14.4}/wiki/Command-Line-Parsing.md +0 -0
  155. {gam7-7.14.2 → gam7-7.14.4}/wiki/Command-Logging-Progress.md +0 -0
  156. {gam7-7.14.2 → gam7-7.14.4}/wiki/Context-Aware-Access-Levels.md +0 -0
  157. {gam7-7.14.2 → gam7-7.14.4}/wiki/Customer.md +0 -0
  158. {gam7-7.14.2 → gam7-7.14.4}/wiki/Domain-People-Contacts-Profiles.md +0 -0
  159. {gam7-7.14.2 → gam7-7.14.4}/wiki/Domain-SharedContacts.md +0 -0
  160. {gam7-7.14.2 → gam7-7.14.4}/wiki/Domains-Verification.md +0 -0
  161. {gam7-7.14.2 → gam7-7.14.4}/wiki/Domains.md +0 -0
  162. {gam7-7.14.2 → gam7-7.14.4}/wiki/Downloads-Installs.md +0 -0
  163. {gam7-7.14.2 → gam7-7.14.4}/wiki/Drive-File-Selection.md +0 -0
  164. {gam7-7.14.2 → gam7-7.14.4}/wiki/Drive-Items.md +0 -0
  165. {gam7-7.14.2 → gam7-7.14.4}/wiki/Drive-REST-API-v3.md +0 -0
  166. {gam7-7.14.2 → gam7-7.14.4}/wiki/Email-Audit-Monitor.md +0 -0
  167. {gam7-7.14.2 → gam7-7.14.4}/wiki/Find-File-Owner.md +0 -0
  168. {gam7-7.14.2 → gam7-7.14.4}/wiki/GAM-Public-Chat-Room.md +0 -0
  169. {gam7-7.14.2 → gam7-7.14.4}/wiki/GAM-Return-Codes.md +0 -0
  170. {gam7-7.14.2 → gam7-7.14.4}/wiki/GAM-with-minimal-GCP-rights.md +0 -0
  171. {gam7-7.14.2 → gam7-7.14.4}/wiki/GAM7-on-Android-Devices.md +0 -0
  172. {gam7-7.14.2 → gam7-7.14.4}/wiki/GAM7-on-Chrome-OS-Devices.md +0 -0
  173. {gam7-7.14.2 → gam7-7.14.4}/wiki/Global-Address-List.md +0 -0
  174. {gam7-7.14.2 → gam7-7.14.4}/wiki/Google-Data-Transfers.md +0 -0
  175. {gam7-7.14.2 → gam7-7.14.4}/wiki/Google-Network-Addresses.md +0 -0
  176. {gam7-7.14.2 → gam7-7.14.4}/wiki/Groups-Membership.md +0 -0
  177. {gam7-7.14.2 → gam7-7.14.4}/wiki/Groups.md +0 -0
  178. {gam7-7.14.2 → gam7-7.14.4}/wiki/HTTPS-Proxy.md +0 -0
  179. {gam7-7.14.2 → gam7-7.14.4}/wiki/Home.md +0 -0
  180. {gam7-7.14.2 → gam7-7.14.4}/wiki/How-to-Install-GAM7.md +0 -0
  181. {gam7-7.14.2 → gam7-7.14.4}/wiki/How-to-Uninstall-GAM7.md +0 -0
  182. {gam7-7.14.2 → gam7-7.14.4}/wiki/How-to-Update-GAM7.md +0 -0
  183. {gam7-7.14.2 → gam7-7.14.4}/wiki/How-to-Upgrade-GAMADV-XTD3-to-GAM7.md +0 -0
  184. {gam7-7.14.2 → gam7-7.14.4}/wiki/Inbound-SSO.md +0 -0
  185. {gam7-7.14.2 → gam7-7.14.4}/wiki/Licenses.md +0 -0
  186. {gam7-7.14.2 → gam7-7.14.4}/wiki/List-Items.md +0 -0
  187. {gam7-7.14.2 → gam7-7.14.4}/wiki/List.md +0 -0
  188. {gam7-7.14.2 → gam7-7.14.4}/wiki/Meta-Commands-and-File-Redirection.md +0 -0
  189. {gam7-7.14.2 → gam7-7.14.4}/wiki/Mobile-Devices.md +0 -0
  190. {gam7-7.14.2 → gam7-7.14.4}/wiki/Organizational-Units.md +0 -0
  191. {gam7-7.14.2 → gam7-7.14.4}/wiki/Other-Resources.md +0 -0
  192. {gam7-7.14.2 → gam7-7.14.4}/wiki/Permission-Matches.md +0 -0
  193. {gam7-7.14.2 → gam7-7.14.4}/wiki/Python-Regular-Expressions.md +0 -0
  194. {gam7-7.14.2 → gam7-7.14.4}/wiki/README.md +0 -0
  195. {gam7-7.14.2 → gam7-7.14.4}/wiki/Rclone.md +0 -0
  196. {gam7-7.14.2 → gam7-7.14.4}/wiki/Reports.md +0 -0
  197. {gam7-7.14.2 → gam7-7.14.4}/wiki/Reseller.md +0 -0
  198. {gam7-7.14.2 → gam7-7.14.4}/wiki/Resources.md +0 -0
  199. {gam7-7.14.2 → gam7-7.14.4}/wiki/Running-GAM7-securely-on-a-Google-Compute-Engine.md +0 -0
  200. {gam7-7.14.2 → gam7-7.14.4}/wiki/SSL-Root-CA-Certificates.md +0 -0
  201. {gam7-7.14.2 → gam7-7.14.4}/wiki/Schemas.md +0 -0
  202. {gam7-7.14.2 → gam7-7.14.4}/wiki/Scripts.md +0 -0
  203. {gam7-7.14.2 → gam7-7.14.4}/wiki/Send-Email.md +0 -0
  204. {gam7-7.14.2 → gam7-7.14.4}/wiki/Shared-Drives.md +0 -0
  205. {gam7-7.14.2 → gam7-7.14.4}/wiki/Sites.md +0 -0
  206. {gam7-7.14.2 → gam7-7.14.4}/wiki/Tag-Replace.md +0 -0
  207. {gam7-7.14.2 → gam7-7.14.4}/wiki/Todrive.md +0 -0
  208. {gam7-7.14.2 → gam7-7.14.4}/wiki/Unmanaged-Accounts.md +0 -0
  209. {gam7-7.14.2 → gam7-7.14.4}/wiki/Upgrade-Benefits.md +0 -0
  210. {gam7-7.14.2 → gam7-7.14.4}/wiki/Users-Analytics-Admin.md +0 -0
  211. {gam7-7.14.2 → gam7-7.14.4}/wiki/Users-Application-Specific-Passwords.md +0 -0
  212. {gam7-7.14.2 → gam7-7.14.4}/wiki/Users-Backup-Verification-Codes.md +0 -0
  213. {gam7-7.14.2 → gam7-7.14.4}/wiki/Users-Calendars-Access.md +0 -0
  214. {gam7-7.14.2 → gam7-7.14.4}/wiki/Users-Calendars-Events.md +0 -0
  215. {gam7-7.14.2 → gam7-7.14.4}/wiki/Users-Calendars.md +0 -0
  216. {gam7-7.14.2 → gam7-7.14.4}/wiki/Users-Chat.md +0 -0
  217. {gam7-7.14.2 → gam7-7.14.4}/wiki/Users-Classification-Labels.md +0 -0
  218. {gam7-7.14.2 → gam7-7.14.4}/wiki/Users-Classroom-Profile.md +0 -0
  219. {gam7-7.14.2 → gam7-7.14.4}/wiki/Users-Contacts-Delegates.md +0 -0
  220. {gam7-7.14.2 → gam7-7.14.4}/wiki/Users-Contacts.md +0 -0
  221. {gam7-7.14.2 → gam7-7.14.4}/wiki/Users-Deprovision.md +0 -0
  222. {gam7-7.14.2 → gam7-7.14.4}/wiki/Users-Drive-Activity-Settings.md +0 -0
  223. {gam7-7.14.2 → gam7-7.14.4}/wiki/Users-Drive-Cleanup.md +0 -0
  224. {gam7-7.14.2 → gam7-7.14.4}/wiki/Users-Drive-Comments.md +0 -0
  225. {gam7-7.14.2 → gam7-7.14.4}/wiki/Users-Drive-Copy-Move.md +0 -0
  226. {gam7-7.14.2 → gam7-7.14.4}/wiki/Users-Drive-Files-Display.md +0 -0
  227. {gam7-7.14.2 → gam7-7.14.4}/wiki/Users-Drive-Files-Manage.md +0 -0
  228. {gam7-7.14.2 → gam7-7.14.4}/wiki/Users-Drive-Orphans.md +0 -0
  229. {gam7-7.14.2 → gam7-7.14.4}/wiki/Users-Drive-Ownership.md +0 -0
  230. {gam7-7.14.2 → gam7-7.14.4}/wiki/Users-Drive-Query.md +0 -0
  231. {gam7-7.14.2 → gam7-7.14.4}/wiki/Users-Drive-Revisions.md +0 -0
  232. {gam7-7.14.2 → gam7-7.14.4}/wiki/Users-Drive-Shortcuts.md +0 -0
  233. {gam7-7.14.2 → gam7-7.14.4}/wiki/Users-Drive-Transfer.md +0 -0
  234. {gam7-7.14.2 → gam7-7.14.4}/wiki/Users-Forms.md +0 -0
  235. {gam7-7.14.2 → gam7-7.14.4}/wiki/Users-Gmail-CSE.md +0 -0
  236. {gam7-7.14.2 → gam7-7.14.4}/wiki/Users-Gmail-Delegates.md +0 -0
  237. {gam7-7.14.2 → gam7-7.14.4}/wiki/Users-Gmail-Filters.md +0 -0
  238. {gam7-7.14.2 → gam7-7.14.4}/wiki/Users-Gmail-Forwarding.md +0 -0
  239. {gam7-7.14.2 → gam7-7.14.4}/wiki/Users-Gmail-Labels.md +0 -0
  240. {gam7-7.14.2 → gam7-7.14.4}/wiki/Users-Gmail-Messages-Threads.md +0 -0
  241. {gam7-7.14.2 → gam7-7.14.4}/wiki/Users-Gmail-Profile.md +0 -0
  242. {gam7-7.14.2 → gam7-7.14.4}/wiki/Users-Gmail-S-MIME.md +0 -0
  243. {gam7-7.14.2 → gam7-7.14.4}/wiki/Users-Gmail-Send-As-Signature-Vacation.md +0 -0
  244. {gam7-7.14.2 → gam7-7.14.4}/wiki/Users-Gmail-Settings.md +0 -0
  245. {gam7-7.14.2 → gam7-7.14.4}/wiki/Users-Group-Membership.md +0 -0
  246. {gam7-7.14.2 → gam7-7.14.4}/wiki/Users-Keep-Notes.md +0 -0
  247. {gam7-7.14.2 → gam7-7.14.4}/wiki/Users-Looker-Studio.md +0 -0
  248. {gam7-7.14.2 → gam7-7.14.4}/wiki/Users-Meet.md +0 -0
  249. {gam7-7.14.2 → gam7-7.14.4}/wiki/Users-People-Contacts-Profiles.md +0 -0
  250. {gam7-7.14.2 → gam7-7.14.4}/wiki/Users-Photo.md +0 -0
  251. {gam7-7.14.2 → gam7-7.14.4}/wiki/Users-Profile-Photo.md +0 -0
  252. {gam7-7.14.2 → gam7-7.14.4}/wiki/Users-Profile-Sharing.md +0 -0
  253. {gam7-7.14.2 → gam7-7.14.4}/wiki/Users-Shared-Drives.md +0 -0
  254. {gam7-7.14.2 → gam7-7.14.4}/wiki/Users-Signout-Turnoff2SV.md +0 -0
  255. {gam7-7.14.2 → gam7-7.14.4}/wiki/Users-Spreadsheets.md +0 -0
  256. {gam7-7.14.2 → gam7-7.14.4}/wiki/Users-Tag-Manager.md +0 -0
  257. {gam7-7.14.2 → gam7-7.14.4}/wiki/Users-Tasks.md +0 -0
  258. {gam7-7.14.2 → gam7-7.14.4}/wiki/Users-Tokens.md +0 -0
  259. {gam7-7.14.2 → gam7-7.14.4}/wiki/Users-YouTube.md +0 -0
  260. {gam7-7.14.2 → gam7-7.14.4}/wiki/Users.md +0 -0
  261. {gam7-7.14.2 → gam7-7.14.4}/wiki/Using-GAM7-with-a-YubiKey.md +0 -0
  262. {gam7-7.14.2 → gam7-7.14.4}/wiki/Using-GAM7-with-a-delegated-admin-service-account.md +0 -0
  263. {gam7-7.14.2 → gam7-7.14.4}/wiki/Vault-Takeout.md +0 -0
  264. {gam7-7.14.2 → gam7-7.14.4}/wiki/Verifying-a-GAM7-Build-is-Legitimate-and-Official.md +0 -0
  265. {gam7-7.14.2 → gam7-7.14.4}/wiki/_Sidebar.md +0 -0
  266. {gam7-7.14.2 → gam7-7.14.4}/wiki/gam.cfg.md +0 -0
  267. {gam7-7.14.2 → gam7-7.14.4}/wiki/l-AdminSettingsExamples.md +0 -0
  268. {gam7-7.14.2 → gam7-7.14.4}/wiki/l-Android-Installation.md +0 -0
  269. {gam7-7.14.2 → gam7-7.14.4}/wiki/l-BulkOperations.md +0 -0
  270. {gam7-7.14.2 → gam7-7.14.4}/wiki/l-CalendarExamples.md +0 -0
  271. {gam7-7.14.2 → gam7-7.14.4}/wiki/l-Chat-Bot.md +0 -0
  272. {gam7-7.14.2 → gam7-7.14.4}/wiki/l-Chrome-Browser-Management.md +0 -0
  273. {gam7-7.14.2 → gam7-7.14.4}/wiki/l-Chrome-OS-Installation.md +0 -0
  274. {gam7-7.14.2 → gam7-7.14.4}/wiki/l-Chrome-Policy-Settings.md +0 -0
  275. {gam7-7.14.2 → gam7-7.14.4}/wiki/l-Cloud-Identity-Groups.md +0 -0
  276. {gam7-7.14.2 → gam7-7.14.4}/wiki/l-Command-Reference-Calendar-Resources.md +0 -0
  277. {gam7-7.14.2 → gam7-7.14.4}/wiki/l-Command-Reference-Calendars.md +0 -0
  278. {gam7-7.14.2 → gam7-7.14.4}/wiki/l-Command-Reference-Definitions.md +0 -0
  279. {gam7-7.14.2 → gam7-7.14.4}/wiki/l-Command-Reference-Drive.md +0 -0
  280. {gam7-7.14.2 → gam7-7.14.4}/wiki/l-Command-Reference-Email.md +0 -0
  281. {gam7-7.14.2 → gam7-7.14.4}/wiki/l-Command-Reference-Group-Attributes.md +0 -0
  282. {gam7-7.14.2 → gam7-7.14.4}/wiki/l-Command-Reference-Groups.md +0 -0
  283. {gam7-7.14.2 → gam7-7.14.4}/wiki/l-Command-Reference-Users.md +0 -0
  284. {gam7-7.14.2 → gam7-7.14.4}/wiki/l-Context-Aware-Access-Levels.md +0 -0
  285. {gam7-7.14.2 → gam7-7.14.4}/wiki/l-Creating-client_secrets.json-and-oauth2service.json.md +0 -0
  286. {gam7-7.14.2 → gam7-7.14.4}/wiki/l-CreatingClientSecretsFile.md +0 -0
  287. {gam7-7.14.2 → gam7-7.14.4}/wiki/l-Custom-Schemas.md +0 -0
  288. {gam7-7.14.2 → gam7-7.14.4}/wiki/l-Data-Transfers.md +0 -0
  289. {gam7-7.14.2 → gam7-7.14.4}/wiki/l-DomainVerification.md +0 -0
  290. {gam7-7.14.2 → gam7-7.14.4}/wiki/l-ExamplesAccountAuditing.md +0 -0
  291. {gam7-7.14.2 → gam7-7.14.4}/wiki/l-ExamplesCSV.md +0 -0
  292. {gam7-7.14.2 → gam7-7.14.4}/wiki/l-ExamplesEmailSettings.md +0 -0
  293. {gam7-7.14.2 → gam7-7.14.4}/wiki/l-ExamplesOrganizations.md +0 -0
  294. {gam7-7.14.2 → gam7-7.14.4}/wiki/l-GAM-Discussion-Group.md +0 -0
  295. {gam7-7.14.2 → gam7-7.14.4}/wiki/l-GAM-on-Android-and-Chrome-OS.md +0 -0
  296. {gam7-7.14.2 → gam7-7.14.4}/wiki/l-GAM-options-files.md +0 -0
  297. {gam7-7.14.2 → gam7-7.14.4}/wiki/l-GAM-with--minimal-GCP-rights.md +0 -0
  298. {gam7-7.14.2 → gam7-7.14.4}/wiki/l-GAM3CSVListings.md +0 -0
  299. {gam7-7.14.2 → gam7-7.14.4}/wiki/l-GAM3DirectoryCommands.md +0 -0
  300. {gam7-7.14.2 → gam7-7.14.4}/wiki/l-GAM3GroupSettings.md +0 -0
  301. {gam7-7.14.2 → gam7-7.14.4}/wiki/l-GAM7-FAQ.md +0 -0
  302. {gam7-7.14.2 → gam7-7.14.4}/wiki/l-Google-Vault---Takeout-Commands.md +0 -0
  303. {gam7-7.14.2 → gam7-7.14.4}/wiki/l-GoogleDriveManagement.md +0 -0
  304. {gam7-7.14.2 → gam7-7.14.4}/wiki/l-Grouping-18-or-Older-Users.md +0 -0
  305. {gam7-7.14.2 → gam7-7.14.4}/wiki/l-Home.md +0 -0
  306. {gam7-7.14.2 → gam7-7.14.4}/wiki/l-How-to-upgrade-from-Standard-GAM.md +0 -0
  307. {gam7-7.14.2 → gam7-7.14.4}/wiki/l-Inbound-SSO-Settings.md +0 -0
  308. {gam7-7.14.2 → gam7-7.14.4}/wiki/l-LicenseExamples.md +0 -0
  309. {gam7-7.14.2 → gam7-7.14.4}/wiki/l-Managing-Admins.md +0 -0
  310. {gam7-7.14.2 → gam7-7.14.4}/wiki/l-Managing-CloudPrint-Printers.md +0 -0
  311. {gam7-7.14.2 → gam7-7.14.4}/wiki/l-Managing-Devices.md +0 -0
  312. {gam7-7.14.2 → gam7-7.14.4}/wiki/l-Managing-Google-Classroom.md +0 -0
  313. {gam7-7.14.2 → gam7-7.14.4}/wiki/l-OAuthKeyManagement.md +0 -0
  314. {gam7-7.14.2 → gam7-7.14.4}/wiki/l-Printers.md +0 -0
  315. {gam7-7.14.2 → gam7-7.14.4}/wiki/l-ResellerCommands.md +0 -0
  316. {gam7-7.14.2 → gam7-7.14.4}/wiki/l-Running-GAM-on-Google-Compute-Engine-(GCE)-Securely.md +0 -0
  317. {gam7-7.14.2 → gam7-7.14.4}/wiki/l-SecurityExamples.md +0 -0
  318. {gam7-7.14.2 → gam7-7.14.4}/wiki/l-UnmanagedUsersExamples.md +0 -0
  319. {gam7-7.14.2 → gam7-7.14.4}/wiki/l-Use-a-Yubikey.md +0 -0
  320. {gam7-7.14.2 → gam7-7.14.4}/wiki/l-Using-GAM-with-a-delegated-admin-service-account-(DASA).md +0 -0
  321. {gam7-7.14.2 → gam7-7.14.4}/wiki/l-_Footer.md +0 -0
@@ -292,10 +292,10 @@ jobs:
292
292
  if: matrix.goal == 'build' && steps.cache-python-ssl.outputs.cache-hit != 'true'
293
293
  run: |
294
294
  cd "${OPENSSL_SOURCE_PATH}"
295
- if ([ "$RUNNER_OS" == "Windows" ] && [ "$RUNNER_ARCH" == "ARM64" ]); then
295
+ #if ([ "$RUNNER_OS" == "Windows" ] && [ "$RUNNER_ARCH" == "ARM64" ]); then
296
296
  # https://github.com/openssl/openssl/issues/26239
297
297
  export CFLAGS=-DNO_INTERLOCKEDOR64
298
- fi
298
+ #fi
299
299
  # --libdir=lib is needed so Python can find OpenSSL libraries
300
300
  "${PERL}" ./Configure --libdir=lib --prefix="${OPENSSL_INSTALL_PATH}" $OPENSSL_CONFIG_OPTS
301
301
 
@@ -462,7 +462,7 @@ jobs:
462
462
  curl -O -L "$latest_crypt_whl"
463
463
  "$PYTHON" -m pip install cryptography*.whl
464
464
 
465
- - uses: actions-rust-lang/setup-rust-toolchain@v1
465
+ #- uses: actions-rust-lang/setup-rust-toolchain@v1
466
466
 
467
467
  # - name: Compile cryptography from source (no legacy)
468
468
  # if: runner.os != 'Windows' || runner.arch != 'ARM64'
@@ -473,8 +473,7 @@ jobs:
473
473
  run: |
474
474
  echo "before anything..."
475
475
  "$PYTHON" -m pip list
476
- "$PYTHON" -m pip install --upgrade -r requirements.txt
477
- echo "after requirements..."
476
+ "$PYTHON" -m pip install --upgrade ..[yubikey]
478
477
  "$PYTHON" -m pip list
479
478
  #"$PYTHON" -m pip install --force-reinstall --no-deps --upgrade cryptography
480
479
  echo "after everything..."
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: gam7
3
- Version: 7.14.2
3
+ Version: 7.14.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
@@ -7,7 +7,6 @@ authors = [
7
7
  { name="Jay Lee", email="jay0lee@gmail.com" },
8
8
  { name="Ross Scroggs", email="Ross.Scroggs@gmail.com" },
9
9
  ]
10
- # The following deps and optional deps should be edited to match: setup.cfg, requirements.txt
11
10
  # notice that yubikey-manager remains optional further down since it is less command and adds
12
11
  #significant compile dependencies.
13
12
  dependencies = [
@@ -1,3 +1,22 @@
1
+ 7.14.04
2
+
3
+ Fixed bug in `gam print|show cigroups cimember <UserItem>` that generated the following error:
4
+ ```
5
+ ERROR: Cloud Identity Group: groups/-, Print Failed: Error(4013): Insufficient permissions to retrieve memberships.
6
+ ```
7
+
8
+ Updated `gam <UserTypeEntity> update user suspended off` and `gam <UserTypeEntity> unsuspend users`
9
+ to handle the following error that occurs when trying to unsuspend a user that has been suspended for abuse.
10
+ ```
11
+ ERROR: 412: adminCannotUnsuspend - Cannot restore a user suspended for abuse.
12
+ ```
13
+
14
+ * See: https://support.google.com/a/answer/1110339
15
+
16
+ 7.14.03
17
+
18
+ Fixed bug in `gam print cigroup-members includederivedmembership` that caused a trap.
19
+
1
20
  7.14.02
2
21
 
3
22
  Fixed bug in `gam print|show cigroups|cigroups-members cimember <UserItem>` that generated the following error:
@@ -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.14.02'
28
+ __version__ = '7.14.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
@@ -6011,7 +6011,11 @@ def getCIGroupMemberRoleFixType(member):
6011
6011
  def getCIGroupTransitiveMemberRoleFixType(groupName, tmember):
6012
6012
  ''' map transitive member to normal member '''
6013
6013
  tid = tmember['preferredMemberKey'][0].get('id', GC.Values[GC.CUSTOMER_ID]) if tmember['preferredMemberKey'] else ''
6014
- ttype, tname = tmember['member'].split('/')
6014
+ if '/' in tmember['member']:
6015
+ ttype, tname = tmember['member'].split('/')
6016
+ else:
6017
+ ttype = ''
6018
+ tname = tmember['member']
6015
6019
  member = {'name': f'{groupName}/membershipd/{tname}', 'preferredMemberKey': {'id': tid}}
6016
6020
  if 'type' not in tmember:
6017
6021
  if tid == GC.Values[GC.CUSTOMER_ID]:
@@ -36828,11 +36832,11 @@ def doPrintCIGroups():
36828
36832
 
36829
36833
  ci = buildGAPIObject(API.CLOUDIDENTITY_GROUPS)
36830
36834
  setTrueCustomerId()
36835
+ parent = f'customers/{GC.Values[GC.CUSTOMER_ID]}'
36831
36836
  delimiter = GC.Values[GC.CSV_OUTPUT_FIELD_DELIMITER]
36832
36837
  memberRestrictions = sortHeaders = False
36833
36838
  memberDisplayOptions = initPGGroupMemberDisplayOptions()
36834
36839
  pageSize = 500
36835
- parent = f'customers/{GC.Values[GC.CUSTOMER_ID]}'
36836
36840
  groupFieldsLists = {'ci': ['groupKey']}
36837
36841
  csvPF = CSVPrintFile(['email'])
36838
36842
  FJQC = FormatJSONQuoteChar(csvPF)
@@ -36850,7 +36854,7 @@ def doPrintCIGroups():
36850
36854
  showOwnedBy = convertUIDtoEmailAddress(getEmailAddress(), emailTypes=['user'])
36851
36855
  elif myarg in {'cimember', 'enterprisemember', 'ciowner'}:
36852
36856
  emailAddress = convertUIDtoEmailAddress(getEmailAddress(), emailTypes=['user', 'group'])
36853
- memberQuery = f"member_key_id == '{emailAddress}' && '{CIGROUP_DISCUSSION_FORUM_LABEL}' in labels"
36857
+ memberQuery = f"member_key_id == '{emailAddress}' && '{CIGROUP_DISCUSSION_FORUM_LABEL}' in labels && parent == '{parent}'"
36854
36858
  entitySelection = None
36855
36859
  if myarg == 'ciowner':
36856
36860
  showOwnedBy = emailAddress
@@ -37096,7 +37100,7 @@ def getCIGroupTransitiveMembers(ci, groupName, membersList, i, count):
37096
37100
  entityUnknownWarning(Ent.CLOUD_IDENTITY_GROUP, groupName, i, count)
37097
37101
  return False
37098
37102
  except GAPI.permissionDenied as e:
37099
- entityActionFailedExit([Ent.CLOUD_IDENTITY_GROUP, groupName], str(e))
37103
+ entityActionFailedWarning([Ent.CLOUD_IDENTITY_GROUP, groupName], str(e))
37100
37104
  return False
37101
37105
  for member in groupMembers:
37102
37106
  membersList.append(getCIGroupTransitiveMemberRoleFixType(groupName, member))
@@ -37252,6 +37256,7 @@ def _getCIListGroupMembersArgs(listView):
37252
37256
  def doPrintCIGroupMembers():
37253
37257
  ci = buildGAPIObject(API.CLOUDIDENTITY_GROUPS)
37254
37258
  setTrueCustomerId()
37259
+ parent = f'customers/{GC.Values[GC.CUSTOMER_ID]}'
37255
37260
  memberOptions = initMemberOptions()
37256
37261
  memberDisplayOptions = initIPSGMGroupMemberDisplayOptions()
37257
37262
  groupColumn = True
@@ -37273,7 +37278,7 @@ def doPrintCIGroupMembers():
37273
37278
  showOwnedBy = convertUIDtoEmailAddress(getEmailAddress(), emailTypes=['user'])
37274
37279
  elif myarg in {'cimember', 'enterprisemember', 'ciowner'}:
37275
37280
  emailAddress = convertUIDtoEmailAddress(getEmailAddress(), emailTypes=['user', 'group'])
37276
- query = f"member_key_id == '{emailAddress}' && '{CIGROUP_DISCUSSION_FORUM_LABEL}' in labels"
37281
+ query = f"member_key_id == '{emailAddress}' && '{CIGROUP_DISCUSSION_FORUM_LABEL}' in labels && parent == '{parent}'"
37277
37282
  entityList = None
37278
37283
  if myarg == 'ciowner':
37279
37284
  showOwnedBy = emailAddress
@@ -37475,6 +37480,7 @@ def doShowCIGroupMembers():
37475
37480
 
37476
37481
  ci = buildGAPIObject(API.CLOUDIDENTITY_GROUPS)
37477
37482
  setTrueCustomerId()
37483
+ parent = f'customers/{GC.Values[GC.CUSTOMER_ID]}'
37478
37484
  subTitle = f'{Msg.ALL} {Ent.Plural(Ent.CLOUD_IDENTITY_GROUP)}'
37479
37485
  groupFieldsLists = {'ci': ['groupKey', 'name']}
37480
37486
  entityList = query = showOwnedBy = None
@@ -37492,7 +37498,7 @@ def doShowCIGroupMembers():
37492
37498
  showOwnedBy = convertUIDtoEmailAddress(getEmailAddress(), emailTypes=['user'])
37493
37499
  elif myarg in {'cimember', 'enterprisemember', 'ciowner'}:
37494
37500
  emailAddress = convertUIDtoEmailAddress(getEmailAddress(), emailTypes=['user', 'group'])
37495
- query = f"member_key_id == '{emailAddress}' && '{CIGROUP_DISCUSSION_FORUM_LABEL}' in labels"
37501
+ query = f"member_key_id == '{emailAddress}' && '{CIGROUP_DISCUSSION_FORUM_LABEL}' in labels parent == '{parent}'"
37496
37502
  entityList = None
37497
37503
  if myarg == 'ciowner':
37498
37504
  showOwnedBy = emailAddress
@@ -44421,7 +44427,7 @@ def updateUsers(entityList):
44421
44427
  try:
44422
44428
  result = callGAPI(cd.users(), 'update',
44423
44429
  throwReasons=[GAPI.CONDITION_NOT_MET, GAPI.USER_NOT_FOUND, GAPI.DOMAIN_NOT_FOUND,
44424
- GAPI.FORBIDDEN, GAPI.BAD_REQUEST,
44430
+ GAPI.FORBIDDEN, GAPI.BAD_REQUEST, GAPI.ADMIN_CANNOT_UNSUSPEND,
44425
44431
  GAPI.INVALID, GAPI.INVALID_INPUT, GAPI.INVALID_PARAMETER,
44426
44432
  GAPI.INVALID_ORGUNIT, GAPI.INVALID_SCHEMA_VALUE, GAPI.DUPLICATE,
44427
44433
  GAPI.INSUFFICIENT_ARCHIVED_USER_LICENSES, GAPI.CONFLICT],
@@ -44483,7 +44489,8 @@ def updateUsers(entityList):
44483
44489
  entityActionFailedWarning([Ent.USER, user, Ent.USER, body['primaryEmail']], str(e), i, count)
44484
44490
  except GAPI.invalidOrgunit:
44485
44491
  entityActionFailedWarning([Ent.USER, user], Msg.INVALID_ORGUNIT, i, count)
44486
- except (GAPI.resourceNotFound, GAPI.domainNotFound, GAPI.domainCannotUseApis, GAPI.forbidden, GAPI.badRequest,
44492
+ except (GAPI.resourceNotFound, GAPI.domainNotFound, GAPI.domainCannotUseApis,
44493
+ GAPI.forbidden, GAPI.badRequest, GAPI.adminCannotUnsuspend,
44487
44494
  GAPI.invalid, GAPI.invalidInput, GAPI.invalidParameter, GAPI.insufficientArchivedUserLicenses,
44488
44495
  GAPI.conflict, GAPI.badRequest, GAPI.backendError, GAPI.systemError, GAPI.conditionNotMet) as e:
44489
44496
  entityActionFailedWarning([Ent.USER, user], str(e), i, count)
@@ -44651,12 +44658,14 @@ def suspendUnsuspendUsers(entityList):
44651
44658
  try:
44652
44659
  callGAPI(cd.users(), 'update',
44653
44660
  throwReasons=[GAPI.USER_NOT_FOUND, GAPI.DOMAIN_NOT_FOUND,
44654
- GAPI.DOMAIN_CANNOT_USE_APIS, GAPI.FORBIDDEN, GAPI.BAD_REQUEST],
44661
+ GAPI.DOMAIN_CANNOT_USE_APIS, GAPI.FORBIDDEN, GAPI.BAD_REQUEST,
44662
+ GAPI.ADMIN_CANNOT_UNSUSPEND],
44655
44663
  userKey=user, body=body)
44656
44664
  entityActionPerformed([Ent.USER, user], i, count)
44657
44665
  except GAPI.userNotFound:
44658
44666
  entityUnknownWarning(Ent.USER, user, i, count)
44659
- except (GAPI.domainNotFound, GAPI.domainCannotUseApis, GAPI.forbidden, GAPI.badRequest) as e:
44667
+ except (GAPI.domainNotFound, GAPI.domainCannotUseApis, GAPI.forbidden,
44668
+ GAPI.badRequest, GAPI.adminCannotUnsuspend) as e:
44660
44669
  entityActionFailedWarning([Ent.USER, user], str(e), i, count)
44661
44670
 
44662
44671
  # gam suspend users <UserTypeEntity> [noactionifalias]
@@ -45040,6 +45049,7 @@ def infoUsers(entityList):
45040
45049
 
45041
45050
  cd = buildGAPIObject(API.DIRECTORY)
45042
45051
  ci = None
45052
+ setTrueCustomerId()
45043
45053
  getAliases = getBuildingNames = getCIGroupsTree = getGroups = getLicenses = getSchemas = not GC.Values[GC.QUICK_INFO_USER]
45044
45054
  getGroupsTree = False
45045
45055
  FJQC = FormatJSONQuoteChar()
@@ -49541,7 +49551,7 @@ def doCourseAddItems(courseIdList, getEntityListArg):
49541
49551
  addItems = getStringReturnInList(Cmd.OB_COURSE_ALIAS)
49542
49552
  elif addType == Ent.COURSE_TOPIC:
49543
49553
  addItems = getStringReturnInList(Cmd.OB_COURSE_TOPIC)
49544
- else: # addType == Ent.COURSE_ANNOUNCEMENT:
49554
+ else: #elif addType == Ent.COURSE_ANNOUNCEMENT:
49545
49555
  addItems = [getCourseAnnouncement(True)]
49546
49556
  courseParticipantLists = None
49547
49557
  else:
@@ -23,6 +23,7 @@
23
23
  ABORTED = 'aborted'
24
24
  ABUSIVE_CONTENT_RESTRICTION = 'abusiveContentRestriction'
25
25
  ACCESS_NOT_CONFIGURED = 'accessNotConfigured'
26
+ ADMIN_CANNOT_UNSUSPEND = 'adminCannotUnsuspend'
26
27
  ALREADY_EXISTS = 'alreadyExists'
27
28
  APPLY_LABEL_FORBIDDEN = 'applyLabelForbidden'
28
29
  AUTH_ERROR = 'authError'
@@ -368,6 +369,8 @@ class abusiveContentRestriction(Exception):
368
369
  pass
369
370
  class accessNotConfigured(Exception):
370
371
  pass
372
+ class adminCannotUnsuspend(Exception):
373
+ pass
371
374
  class alreadyExists(Exception):
372
375
  pass
373
376
  class applyLabelForbidden(Exception):
@@ -689,6 +692,7 @@ REASON_EXCEPTION_MAP = {
689
692
  ABORTED: aborted,
690
693
  ABUSIVE_CONTENT_RESTRICTION: abusiveContentRestriction,
691
694
  ACCESS_NOT_CONFIGURED: accessNotConfigured,
695
+ ADMIN_CANNOT_UNSUSPEND: adminCannotUnsuspend,
692
696
  ALREADY_EXISTS: alreadyExists,
693
697
  APPLY_LABEL_FORBIDDEN: applyLabelForbidden,
694
698
  AUTH_ERROR: authError,
@@ -40,7 +40,7 @@ Dynamic Groups require Cloud Identity Premium accounts.
40
40
  * https://cloud.google.com/identity/docs/how-to/create-dynamic-groups
41
41
 
42
42
  The `cimember <UserItem>` option of `gam print|show cigroup-members` requires a Google Workspace Enterprise Standard, Enterprise Plus, and Enterprise for Education;
43
- and Cloud Identity Premium accounts. Unfortunately, even if you have the required account, the API call that supports the query doesn't work.
43
+ and Cloud Identity Premium accounts.
44
44
 
45
45
  * https://cloud.google.com/identity/docs/reference/rest/v1/groups.memberships/searchTransitiveGroups
46
46
 
@@ -52,7 +52,7 @@ Dynamic Groups require Cloud Identity Premium accounts.
52
52
  * https://cloud.google.com/identity/docs/how-to/create-dynamic-groups
53
53
 
54
54
  The `cimember <UserItem>` option of `gam print cigroups` requires a Google Workspace Enterprise Standard, Enterprise Plus, and Enterprise for Education;
55
- and Cloud Identity Premium accounts. Unfortunately, even if you have the required account, the API call that supports the query doesn't work.
55
+ and Cloud Identity Premium accounts.
56
56
 
57
57
  * https://cloud.google.com/identity/docs/reference/rest/v1/groups.memberships/searchTransitiveGroups
58
58
 
@@ -10,6 +10,17 @@ 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.14.03
14
+
15
+ Fixed bug in `gam print cigroup-members includederivedmembership` that caused a trap.
16
+
17
+ ### 7.14.02
18
+
19
+ Fixed bug in `gam print|show cigroups|cigroups-members cimember <UserItem>` that generated the following error:
20
+ ```
21
+ Cloud Identity Group Print Failed: Request contains an invalid argument.
22
+ ```
23
+
13
24
  ### 7.14.01
14
25
 
15
26
  Don't install yubikey library via pip by default. To install with yubikey support use pip install gam7[yubikey]
@@ -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.14.01 - https://github.com/GAM-team/GAM - pyinstaller
254
+ GAM 7.14.03 - https://github.com/GAM-team/GAM - pyinstaller
255
255
  GAM Team <google-apps-manager@googlegroups.com>
256
256
  Python 3.13.5 64-bit final
257
257
  MacOS Sequoia 15.5 x86_64
@@ -989,7 +989,7 @@ writes the credentials into the file oauth2.txt.
989
989
  C:\>del C:\GAMConfig\oauth2.txt
990
990
  C:\>gam version
991
991
  WARNING: Config File: C:\GAMConfig\gam.cfg, Section: DEFAULT, Item: oauth2_txt, Value: C:\GAMConfig\oauth2.txt, Not Found
992
- GAM 7.14.01 - https://github.com/GAM-team/GAM - pythonsource
992
+ GAM 7.14.03 - https://github.com/GAM-team/GAM - pythonsource
993
993
  GAM Team <google-apps-manager@googlegroups.com>
994
994
  Python 3.13.5 64-bit final
995
995
  Windows-10-10.0.17134 AMD64
@@ -1,20 +1,14 @@
1
1
  # Install GAM as Python Library
2
2
 
3
- Thanks to Jay Lee for showing me how to do this.
4
-
5
- On Windows, you need to install Git to use the pip command.
6
- * See: https://pythoninoffice.com/python-pip-install-from-github/
7
-
8
- Scroll down to Install Git
9
3
 
10
4
  You can install GAM as a Python library with pip.
11
5
  ```
12
- pip install git+https://github.com/GAM-team/GAM.git#subdirectory=src
6
+ pip install gam7
13
7
  ```
14
8
 
15
9
  Or as a PEP 508 Requirement Specifier, e.g. in requirements.txt file:
16
10
  ```
17
- gam-for-google-workspace @ git+https://github.com/GAM-team/GAM.git#subdirectory=src
11
+ gam7
18
12
  ```
19
13
 
20
14
  Or a pyproject.toml file:
@@ -23,13 +17,13 @@ Or a pyproject.toml file:
23
17
  name = "your-project"
24
18
  # ...
25
19
  dependencies = [
26
- "gam-for-google-workspace @ git+https://github.com/GAM-team/GAM.git#subdirectory=src"
20
+ "gam7"
27
21
  ]
28
22
  ```
29
23
 
30
- Target a specific revision or tag:
24
+ Target a specific version:
31
25
  ```
32
- gam-for-google-workspace @ git+https://github.com/GAM-team/GAM.git@v7.12.01#subdirectory=src
26
+ gam7==/7.13.3
33
27
  ```
34
28
 
35
29
  ## Using the library
@@ -214,6 +214,12 @@ The option `updatesheetprotectedranges` only applies to items in `<DriveFileEnti
214
214
  * ACLs with role reader or commenter will be removed from existing protected ranges
215
215
  * ACLs with role writer or higher will be added to existing protected ranges
216
216
 
217
+ `
218
+ `enforceexpansiveaccess` defaults to the value of `gam.cfg/enforce_expansive_access` that controls
219
+ the ability to update inherited ACLs.
220
+ * False - Inherited ACLs can be updated
221
+ * True = Inherited ACLs can not be updated
222
+
217
223
  By default, the file ID is displayed in the output; to see the file name, use the `showtitles`
218
224
  option; this requires an additional API call per file.
219
225
 
@@ -234,6 +240,11 @@ The option `updatesheetprotectedranges` only applies to items in `<DriveFileEnti
234
240
  * Sheet Protected Ranges are updated to reflect the deleted ACL; additional API calls are required.
235
241
  * ACLs with any role will be removed from existing protected ranges
236
242
 
243
+ `enforceexpansiveaccess` defaults to the value of `gam.cfg/enforce_expansive_access` that controls
244
+ the ability to delete delete inherited ACLs.
245
+ * False - Inherited ACLs can be deleted
246
+ * True = Inherited ACLs can not be deleted
247
+
237
248
  By default, the file ID is displayed in the output; to see the file name, use the `showtitles`
238
249
  option; this requires an additional API call per file.
239
250
 
@@ -266,6 +277,11 @@ gam <UserTypeEntity> delete permissions <DriveFileEntity> <DriveFilePermissionID
266
277
  <PermissionMatch>* [<PermissionMatchAction>]
267
278
  [enforceexpansiveaccess [<Boolean>]]
268
279
  ```
280
+ `enforceexpansiveaccess` defaults to the value of `gam.cfg/enforce_expansive_access` that controls
281
+ the ability to delete delete inherited ACLs.
282
+ * False - Inherited ACLs can be deleted
283
+ * True = Inherited ACLs can not be deleted
284
+
269
285
  When deleting permissions from JSON data, permissions with role `owner` true are never processed.
270
286
 
271
287
  ## Display file permissions/sharing
@@ -4,7 +4,7 @@ k
4
4
  Print the current version of Gam with details
5
5
  ```
6
6
  gam version
7
- GAM 7.14.01 - https://github.com/GAM-team/GAM - pyinstaller
7
+ GAM 7.14.03 - https://github.com/GAM-team/GAM - pyinstaller
8
8
  GAM Team <google-apps-manager@googlegroups.com>
9
9
  Python 3.13.5 64-bit final
10
10
  MacOS Sequoia 15.5 x86_64
@@ -16,7 +16,7 @@ Time: 2023-06-02T21:10:00-07:00
16
16
  Print the current version of Gam with details and time offset information
17
17
  ```
18
18
  gam version timeoffset
19
- GAM 7.14.01 - https://github.com/GAM-team/GAM - pyinstaller
19
+ GAM 7.14.03 - https://github.com/GAM-team/GAM - pyinstaller
20
20
  GAM Team <google-apps-manager@googlegroups.com>
21
21
  Python 3.13.5 64-bit final
22
22
  MacOS Sequoia 15.5 x86_64
@@ -28,7 +28,7 @@ Your system time differs from www.googleapis.com by less than 1 second
28
28
  Print the current version of Gam with extended details and SSL information
29
29
  ```
30
30
  gam version extended
31
- GAM 7.14.01 - https://github.com/GAM-team/GAM - pyinstaller
31
+ GAM 7.14.03 - https://github.com/GAM-team/GAM - pyinstaller
32
32
  GAM Team <google-apps-manager@googlegroups.com>
33
33
  Python 3.13.5 64-bit final
34
34
  MacOS Sequoia 15.5 x86_64
@@ -65,7 +65,7 @@ MacOS High Sierra 10.13.6 x86_64
65
65
  Path: /Users/Admin/bin/gam7
66
66
  Version Check:
67
67
  Current: 5.35.08
68
- Latest: 7.14.01
68
+ Latest: 7.14.03
69
69
  echo $?
70
70
  1
71
71
  ```
@@ -73,7 +73,7 @@ echo $?
73
73
  Print the current version number without details
74
74
  ```
75
75
  gam version simple
76
- 7.14.01
76
+ 7.14.03
77
77
  ```
78
78
  In Linux/MacOS you can do:
79
79
  ```
@@ -83,7 +83,7 @@ echo $VER
83
83
  Print the current version of Gam and address of this Wiki
84
84
  ```
85
85
  gam help
86
- GAM 7.14.01 - https://github.com/GAM-team/GAM
86
+ GAM 7.14.03 - https://github.com/GAM-team/GAM
87
87
  GAM Team <google-apps-manager@googlegroups.com>
88
88
  Python 3.13.5 64-bit final
89
89
  MacOS Sequoia 15.5 x86_64
@@ -1,14 +0,0 @@
1
- chardet>=5.2.0
2
- cryptography>=44.0.2
3
- distro; sys_platform=='linux'
4
- filelock>=3.18.0
5
- google-api-python-client>=2.167.0
6
- google-auth-httplib2>=0.2.0
7
- google-auth-oauthlib>=1.2.2
8
- google-auth>=2.39.0
9
- httplib2>=0.22.0
10
- lxml>=5.4.0
11
- passlib>=1.7.4
12
- pathvalidate>=3.2.3
13
- python-dateutil
14
- yubikey-manager>=5.6.1
gam7-7.14.2/src/setup.cfg DELETED
@@ -1,55 +0,0 @@
1
- [metadata]
2
- name = GAM for Google Workspace
3
- version = attr: gam__version__
4
- description = Command line management for Google Workspaces
5
- long_description = file: readme.md
6
- long_description_content_type = text/markdown
7
- url = https://github.com/GAM-team/GAM
8
- author = GAM Team
9
- author_email = google-apps-manager@googlegroups.com
10
- license = Apache
11
- license_files = LICENSE
12
- keywords = google, oauth2, gsuite, google-apps, google-admin-sdk, google-drive, google-cloud, google-calendar, gam, google-api, oauth2-client, google-workspace
13
- classifiers =
14
- Programming Language :: Python :: 3
15
- Programming Language :: Python :: 3 :: Only
16
- Programming Language :: Python :: 3.9
17
- Programming Language :: Python :: 3.10
18
- Programming Language :: Python :: 3.11
19
- Programming Language :: Python :: 3.12
20
- Programming Language :: Python :: 3.13
21
- License :: OSI Approved :: Apache License
22
-
23
- [options]
24
- packages = find:
25
- python_requires = >= 3.9
26
- # The following files should be edited to match: pyproject.toml, requirements.txt
27
- install_requires =
28
- chardet >= 5.2.0
29
- cryptography >= 44.0.2
30
- distro; sys_platform == 'linux'
31
- filelock >= 3.18.0
32
- google-api-python-client >= 2.167.0
33
- google-auth-httplib2 >= 0.2.0
34
- google-auth-oauthlib >= 1.2.2
35
- google-auth >= 2.39.0
36
- httplib2 >= 0.22.0
37
- lxml >= 5.4.0
38
- passlib >= 1.7.4
39
- pathvalidate >= 3.2.3
40
- python-dateutil
41
- yubikey-manager >= 5.6.1
42
-
43
- [options.package_data]
44
- * = *.pem
45
-
46
- # used during pip install .[test]
47
- [options.extras_require]
48
- test = pre-commit
49
-
50
- [options.entry_points]
51
- console_scripts =
52
- gam = gam.__main__:main
53
-
54
- [bdist_wheel]
55
- universal = True
gam7-7.14.2/src/setup.py DELETED
@@ -1,3 +0,0 @@
1
- from setuptools import setup
2
-
3
- setup()
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
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