gam7 7.23.5__tar.gz → 7.23.7__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 (303) hide show
  1. {gam7-7.23.5 → gam7-7.23.7}/PKG-INFO +1 -1
  2. {gam7-7.23.5 → gam7-7.23.7}/src/GamCommands.txt +7 -0
  3. {gam7-7.23.5 → gam7-7.23.7}/src/GamUpdate.txt +16 -2
  4. {gam7-7.23.5 → gam7-7.23.7}/src/gam/__init__.py +46 -15
  5. {gam7-7.23.5 → gam7-7.23.7}/src/gam/gamlib/glclargs.py +1 -0
  6. {gam7-7.23.5 → gam7-7.23.7}/wiki/Administrators.md +15 -4
  7. {gam7-7.23.5 → gam7-7.23.7}/wiki/Basic-Items.md +1 -0
  8. {gam7-7.23.5 → gam7-7.23.7}/wiki/GamUpdates.md +14 -0
  9. {gam7-7.23.5 → gam7-7.23.7}/wiki/How-to-Upgrade-Legacy-GAM-to-GAM7.md +1 -1
  10. {gam7-7.23.5 → gam7-7.23.7}/wiki/List-Items.md +1 -0
  11. {gam7-7.23.5 → gam7-7.23.7}/wiki/Version-and-Help.md +3 -3
  12. {gam7-7.23.5 → gam7-7.23.7}/.github/ISSUE_TEMPLATE/aa-question.md +0 -0
  13. {gam7-7.23.5 → gam7-7.23.7}/.github/ISSUE_TEMPLATE/za-bug-report.md +0 -0
  14. {gam7-7.23.5 → gam7-7.23.7}/.github/ISSUE_TEMPLATE/zz-feature-request.md +0 -0
  15. {gam7-7.23.5 → gam7-7.23.7}/.github/ISSUE_TEMPLATE.txt +0 -0
  16. {gam7-7.23.5 → gam7-7.23.7}/.github/actions/decrypt.sh +0 -0
  17. {gam7-7.23.5 → gam7-7.23.7}/.github/actions/entitlements.plist +0 -0
  18. {gam7-7.23.5 → gam7-7.23.7}/.github/actions/package_exclusions.txt +0 -0
  19. {gam7-7.23.5 → gam7-7.23.7}/.github/stale.yml +0 -0
  20. {gam7-7.23.5 → gam7-7.23.7}/.github/workflows/build.yml +0 -0
  21. {gam7-7.23.5 → gam7-7.23.7}/.github/workflows/codeql-analysis.yml +0 -0
  22. {gam7-7.23.5 → gam7-7.23.7}/.github/workflows/get-cacerts.yml +0 -0
  23. {gam7-7.23.5 → gam7-7.23.7}/.github/workflows/pushwiki.yml +0 -0
  24. {gam7-7.23.5 → gam7-7.23.7}/.github/workflows/pypi.yml +0 -0
  25. {gam7-7.23.5 → gam7-7.23.7}/LICENSE +0 -0
  26. {gam7-7.23.5 → gam7-7.23.7}/README.md +0 -0
  27. {gam7-7.23.5 → gam7-7.23.7}/pyproject.toml +0 -0
  28. {gam7-7.23.5 → gam7-7.23.7}/src/.gitignore +0 -0
  29. {gam7-7.23.5 → gam7-7.23.7}/src/LICENSE +0 -0
  30. {gam7-7.23.5 → gam7-7.23.7}/src/README.md +0 -0
  31. {gam7-7.23.5 → gam7-7.23.7}/src/callgam.py +0 -0
  32. {gam7-7.23.5 → gam7-7.23.7}/src/gam/__main__.py +0 -0
  33. {gam7-7.23.5 → gam7-7.23.7}/src/gam/atom/__init__.py +0 -0
  34. {gam7-7.23.5 → gam7-7.23.7}/src/gam/atom/auth.py +0 -0
  35. {gam7-7.23.5 → gam7-7.23.7}/src/gam/atom/client.py +0 -0
  36. {gam7-7.23.5 → gam7-7.23.7}/src/gam/atom/core.py +0 -0
  37. {gam7-7.23.5 → gam7-7.23.7}/src/gam/atom/data.py +0 -0
  38. {gam7-7.23.5 → gam7-7.23.7}/src/gam/atom/http.py +0 -0
  39. {gam7-7.23.5 → gam7-7.23.7}/src/gam/atom/http_core.py +0 -0
  40. {gam7-7.23.5 → gam7-7.23.7}/src/gam/atom/http_interface.py +0 -0
  41. {gam7-7.23.5 → gam7-7.23.7}/src/gam/atom/mock_http.py +0 -0
  42. {gam7-7.23.5 → gam7-7.23.7}/src/gam/atom/mock_http_core.py +0 -0
  43. {gam7-7.23.5 → gam7-7.23.7}/src/gam/atom/mock_service.py +0 -0
  44. {gam7-7.23.5 → gam7-7.23.7}/src/gam/atom/service.py +0 -0
  45. {gam7-7.23.5 → gam7-7.23.7}/src/gam/atom/token_store.py +0 -0
  46. {gam7-7.23.5 → gam7-7.23.7}/src/gam/atom/url.py +0 -0
  47. {gam7-7.23.5 → gam7-7.23.7}/src/gam/cacerts.pem +0 -0
  48. {gam7-7.23.5 → gam7-7.23.7}/src/gam/cbcm-v1.1beta1.json +0 -0
  49. {gam7-7.23.5 → gam7-7.23.7}/src/gam/contactdelegation-v1.json +0 -0
  50. {gam7-7.23.5 → gam7-7.23.7}/src/gam/datastudio-v1.json +0 -0
  51. {gam7-7.23.5 → gam7-7.23.7}/src/gam/gamlib/__init__.py +0 -0
  52. {gam7-7.23.5 → gam7-7.23.7}/src/gam/gamlib/glaction.py +0 -0
  53. {gam7-7.23.5 → gam7-7.23.7}/src/gam/gamlib/glapi.py +0 -0
  54. {gam7-7.23.5 → gam7-7.23.7}/src/gam/gamlib/glcfg.py +0 -0
  55. {gam7-7.23.5 → gam7-7.23.7}/src/gam/gamlib/glentity.py +0 -0
  56. {gam7-7.23.5 → gam7-7.23.7}/src/gam/gamlib/glgapi.py +0 -0
  57. {gam7-7.23.5 → gam7-7.23.7}/src/gam/gamlib/glgdata.py +0 -0
  58. {gam7-7.23.5 → gam7-7.23.7}/src/gam/gamlib/glglobals.py +0 -0
  59. {gam7-7.23.5 → gam7-7.23.7}/src/gam/gamlib/glindent.py +0 -0
  60. {gam7-7.23.5 → gam7-7.23.7}/src/gam/gamlib/glmsgs.py +0 -0
  61. {gam7-7.23.5 → gam7-7.23.7}/src/gam/gamlib/glskus.py +0 -0
  62. {gam7-7.23.5 → gam7-7.23.7}/src/gam/gamlib/gluprop.py +0 -0
  63. {gam7-7.23.5 → gam7-7.23.7}/src/gam/gamlib/glverlibs.py +0 -0
  64. {gam7-7.23.5 → gam7-7.23.7}/src/gam/gamlib/yubikey.py +0 -0
  65. {gam7-7.23.5 → gam7-7.23.7}/src/gam/gdata/__init__.py +0 -0
  66. {gam7-7.23.5 → gam7-7.23.7}/src/gam/gdata/alt/__init__.py +0 -0
  67. {gam7-7.23.5 → gam7-7.23.7}/src/gam/gdata/alt/app_engine.py +0 -0
  68. {gam7-7.23.5 → gam7-7.23.7}/src/gam/gdata/alt/appengine.py +0 -0
  69. {gam7-7.23.5 → gam7-7.23.7}/src/gam/gdata/apps/__init__.py +0 -0
  70. {gam7-7.23.5 → gam7-7.23.7}/src/gam/gdata/apps/audit/__init__.py +0 -0
  71. {gam7-7.23.5 → gam7-7.23.7}/src/gam/gdata/apps/audit/service.py +0 -0
  72. {gam7-7.23.5 → gam7-7.23.7}/src/gam/gdata/apps/contacts/__init__.py +0 -0
  73. {gam7-7.23.5 → gam7-7.23.7}/src/gam/gdata/apps/contacts/service.py +0 -0
  74. {gam7-7.23.5 → gam7-7.23.7}/src/gam/gdata/apps/service.py +0 -0
  75. {gam7-7.23.5 → gam7-7.23.7}/src/gam/gdata/service.py +0 -0
  76. {gam7-7.23.5 → gam7-7.23.7}/src/gam/gdata/urlfetch.py +0 -0
  77. {gam7-7.23.5 → gam7-7.23.7}/src/gam/meet-v2beta.json +0 -0
  78. {gam7-7.23.5 → gam7-7.23.7}/src/gam/serviceaccountlookup-v1.json +0 -0
  79. {gam7-7.23.5 → gam7-7.23.7}/src/gam-install.sh +0 -0
  80. {gam7-7.23.5 → gam7-7.23.7}/src/gam-setup.bat +0 -0
  81. {gam7-7.23.5 → gam7-7.23.7}/src/gam.exe.manifest +0 -0
  82. {gam7-7.23.5 → gam7-7.23.7}/src/gam.py +0 -0
  83. {gam7-7.23.5 → gam7-7.23.7}/src/gam.spec +0 -0
  84. {gam7-7.23.5 → gam7-7.23.7}/src/gam.wxs +0 -0
  85. {gam7-7.23.5 → gam7-7.23.7}/src/license.rtf +0 -0
  86. {gam7-7.23.5 → gam7-7.23.7}/src/tools/a_atleast_b.py +0 -0
  87. {gam7-7.23.5 → gam7-7.23.7}/src/tools/gen-wix-xml-filelist.py +0 -0
  88. {gam7-7.23.5 → gam7-7.23.7}/src/tools/hooks/hook-googleapiclient.model.py +0 -0
  89. {gam7-7.23.5 → gam7-7.23.7}/src/tools/hooks/hook-httplib2.py +0 -0
  90. {gam7-7.23.5 → gam7-7.23.7}/src/tools/mkGamRef.py +0 -0
  91. {gam7-7.23.5 → gam7-7.23.7}/src/tools/openssl.props +0 -0
  92. {gam7-7.23.5 → gam7-7.23.7}/src/tools/ssd.mjs +0 -0
  93. {gam7-7.23.5 → gam7-7.23.7}/src/version_info.txt.in +0 -0
  94. {gam7-7.23.5 → gam7-7.23.7}/wiki/00scratch.md +0 -0
  95. {gam7-7.23.5 → gam7-7.23.7}/wiki/Addresses.md +0 -0
  96. {gam7-7.23.5 → gam7-7.23.7}/wiki/Alert-Center.md +0 -0
  97. {gam7-7.23.5 → gam7-7.23.7}/wiki/Aliases.md +0 -0
  98. {gam7-7.23.5 → gam7-7.23.7}/wiki/Authorization.md +0 -0
  99. {gam7-7.23.5 → gam7-7.23.7}/wiki/BNF-Syntax.md +0 -0
  100. {gam7-7.23.5 → gam7-7.23.7}/wiki/Bulk-Processing.md +0 -0
  101. {gam7-7.23.5 → gam7-7.23.7}/wiki/Business-Account-Management.md +0 -0
  102. {gam7-7.23.5 → gam7-7.23.7}/wiki/CSV-Input-Filtering.md +0 -0
  103. {gam7-7.23.5 → gam7-7.23.7}/wiki/CSV-Output-Filtering.md +0 -0
  104. {gam7-7.23.5 → gam7-7.23.7}/wiki/CSV-Special-Characters.md +0 -0
  105. {gam7-7.23.5 → gam7-7.23.7}/wiki/Calendars-Access.md +0 -0
  106. {gam7-7.23.5 → gam7-7.23.7}/wiki/Calendars-Events.md +0 -0
  107. {gam7-7.23.5 → gam7-7.23.7}/wiki/Calendars.md +0 -0
  108. {gam7-7.23.5 → gam7-7.23.7}/wiki/Chat-Bot-Setup-Use.md +0 -0
  109. {gam7-7.23.5 → gam7-7.23.7}/wiki/Chrome-AUE-Counts.md +0 -0
  110. {gam7-7.23.5 → gam7-7.23.7}/wiki/Chrome-Browser-Cloud-Management.md +0 -0
  111. {gam7-7.23.5 → gam7-7.23.7}/wiki/Chrome-Installed-Apps.md +0 -0
  112. {gam7-7.23.5 → gam7-7.23.7}/wiki/Chrome-Needs-Attention-Counts.md +0 -0
  113. {gam7-7.23.5 → gam7-7.23.7}/wiki/Chrome-Policies.md +0 -0
  114. {gam7-7.23.5 → gam7-7.23.7}/wiki/Chrome-Printers.md +0 -0
  115. {gam7-7.23.5 → gam7-7.23.7}/wiki/Chrome-Profile-Management.md +0 -0
  116. {gam7-7.23.5 → gam7-7.23.7}/wiki/Chrome-Version-Counts.md +0 -0
  117. {gam7-7.23.5 → gam7-7.23.7}/wiki/Chrome-Version-History.md +0 -0
  118. {gam7-7.23.5 → gam7-7.23.7}/wiki/ChromeOS-Devices.md +0 -0
  119. {gam7-7.23.5 → gam7-7.23.7}/wiki/Classroom-Courses.md +0 -0
  120. {gam7-7.23.5 → gam7-7.23.7}/wiki/Classroom-Guardians.md +0 -0
  121. {gam7-7.23.5 → gam7-7.23.7}/wiki/Classroom-Invitations.md +0 -0
  122. {gam7-7.23.5 → gam7-7.23.7}/wiki/Classroom-Membership.md +0 -0
  123. {gam7-7.23.5 → gam7-7.23.7}/wiki/Classroom-StudentGroups.md +0 -0
  124. {gam7-7.23.5 → gam7-7.23.7}/wiki/Cloud-Channel.md +0 -0
  125. {gam7-7.23.5 → gam7-7.23.7}/wiki/Cloud-Identity-Devices.md +0 -0
  126. {gam7-7.23.5 → gam7-7.23.7}/wiki/Cloud-Identity-Groups-Membership.md +0 -0
  127. {gam7-7.23.5 → gam7-7.23.7}/wiki/Cloud-Identity-Groups.md +0 -0
  128. {gam7-7.23.5 → gam7-7.23.7}/wiki/Cloud-Identity-Policies.md +0 -0
  129. {gam7-7.23.5 → gam7-7.23.7}/wiki/Cloud-Storage.md +0 -0
  130. {gam7-7.23.5 → gam7-7.23.7}/wiki/Collections-of-ChromeOS-Devices.md +0 -0
  131. {gam7-7.23.5 → gam7-7.23.7}/wiki/Collections-of-Items.md +0 -0
  132. {gam7-7.23.5 → gam7-7.23.7}/wiki/Collections-of-Users.md +0 -0
  133. {gam7-7.23.5 → gam7-7.23.7}/wiki/Command-Data-From-Google-Docs-Sheets-Storage.md +0 -0
  134. {gam7-7.23.5 → gam7-7.23.7}/wiki/Command-Line-Parsing.md +0 -0
  135. {gam7-7.23.5 → gam7-7.23.7}/wiki/Command-Logging-Progress.md +0 -0
  136. {gam7-7.23.5 → gam7-7.23.7}/wiki/Context-Aware-Access-Levels.md +0 -0
  137. {gam7-7.23.5 → gam7-7.23.7}/wiki/Customer.md +0 -0
  138. {gam7-7.23.5 → gam7-7.23.7}/wiki/Domain-People-Contacts-Profiles.md +0 -0
  139. {gam7-7.23.5 → gam7-7.23.7}/wiki/Domain-SharedContacts.md +0 -0
  140. {gam7-7.23.5 → gam7-7.23.7}/wiki/Domains-Verification.md +0 -0
  141. {gam7-7.23.5 → gam7-7.23.7}/wiki/Domains.md +0 -0
  142. {gam7-7.23.5 → gam7-7.23.7}/wiki/Downloads-Installs.md +0 -0
  143. {gam7-7.23.5 → gam7-7.23.7}/wiki/Drive-File-Selection.md +0 -0
  144. {gam7-7.23.5 → gam7-7.23.7}/wiki/Drive-Items.md +0 -0
  145. {gam7-7.23.5 → gam7-7.23.7}/wiki/Drive-REST-API-v3.md +0 -0
  146. {gam7-7.23.5 → gam7-7.23.7}/wiki/Email-Audit-Monitor.md +0 -0
  147. {gam7-7.23.5 → gam7-7.23.7}/wiki/Find-File-Owner.md +0 -0
  148. {gam7-7.23.5 → gam7-7.23.7}/wiki/GAM-Public-Chat-Room.md +0 -0
  149. {gam7-7.23.5 → gam7-7.23.7}/wiki/GAM-Release-Process.md +0 -0
  150. {gam7-7.23.5 → gam7-7.23.7}/wiki/GAM-Return-Codes.md +0 -0
  151. {gam7-7.23.5 → gam7-7.23.7}/wiki/GAM-with-minimal-GCP-rights.md +0 -0
  152. {gam7-7.23.5 → gam7-7.23.7}/wiki/GAM7-FAQ.md +0 -0
  153. {gam7-7.23.5 → gam7-7.23.7}/wiki/GAM7-on-Android-Devices.md +0 -0
  154. {gam7-7.23.5 → gam7-7.23.7}/wiki/GAM7-on-Chrome-OS-Devices.md +0 -0
  155. {gam7-7.23.5 → gam7-7.23.7}/wiki/Global-Address-List.md +0 -0
  156. {gam7-7.23.5 → gam7-7.23.7}/wiki/Google-Data-Transfers.md +0 -0
  157. {gam7-7.23.5 → gam7-7.23.7}/wiki/Google-Network-Addresses.md +0 -0
  158. {gam7-7.23.5 → gam7-7.23.7}/wiki/Groups-Membership.md +0 -0
  159. {gam7-7.23.5 → gam7-7.23.7}/wiki/Groups.md +0 -0
  160. {gam7-7.23.5 → gam7-7.23.7}/wiki/HTTPS-Proxy.md +0 -0
  161. {gam7-7.23.5 → gam7-7.23.7}/wiki/Home.md +0 -0
  162. {gam7-7.23.5 → gam7-7.23.7}/wiki/How-to-Install-GAM7.md +0 -0
  163. {gam7-7.23.5 → gam7-7.23.7}/wiki/How-to-Uninstall-GAM7.md +0 -0
  164. {gam7-7.23.5 → gam7-7.23.7}/wiki/How-to-Update-GAM7.md +0 -0
  165. {gam7-7.23.5 → gam7-7.23.7}/wiki/How-to-Upgrade-GAMADV-XTD3-to-GAM7.md +0 -0
  166. {gam7-7.23.5 → gam7-7.23.7}/wiki/Inbound-SSO.md +0 -0
  167. {gam7-7.23.5 → gam7-7.23.7}/wiki/Install-GAM-as-Python-Library.md +0 -0
  168. {gam7-7.23.5 → gam7-7.23.7}/wiki/Licenses.md +0 -0
  169. {gam7-7.23.5 → gam7-7.23.7}/wiki/List.md +0 -0
  170. {gam7-7.23.5 → gam7-7.23.7}/wiki/Meta-Commands-and-File-Redirection.md +0 -0
  171. {gam7-7.23.5 → gam7-7.23.7}/wiki/Mobile-Devices.md +0 -0
  172. {gam7-7.23.5 → gam7-7.23.7}/wiki/Organizational-Units.md +0 -0
  173. {gam7-7.23.5 → gam7-7.23.7}/wiki/Other-Resources.md +0 -0
  174. {gam7-7.23.5 → gam7-7.23.7}/wiki/Permission-Matches.md +0 -0
  175. {gam7-7.23.5 → gam7-7.23.7}/wiki/Python-Regular-Expressions.md +0 -0
  176. {gam7-7.23.5 → gam7-7.23.7}/wiki/README.md +0 -0
  177. {gam7-7.23.5 → gam7-7.23.7}/wiki/Rclone.md +0 -0
  178. {gam7-7.23.5 → gam7-7.23.7}/wiki/Reports.md +0 -0
  179. {gam7-7.23.5 → gam7-7.23.7}/wiki/Reseller.md +0 -0
  180. {gam7-7.23.5 → gam7-7.23.7}/wiki/Resources.md +0 -0
  181. {gam7-7.23.5 → gam7-7.23.7}/wiki/Running-GAM7-securely-on-a-Google-Compute-Engine.md +0 -0
  182. {gam7-7.23.5 → gam7-7.23.7}/wiki/SSL-Root-CA-Certificates.md +0 -0
  183. {gam7-7.23.5 → gam7-7.23.7}/wiki/Schemas.md +0 -0
  184. {gam7-7.23.5 → gam7-7.23.7}/wiki/Scripts.md +0 -0
  185. {gam7-7.23.5 → gam7-7.23.7}/wiki/Send-Email.md +0 -0
  186. {gam7-7.23.5 → gam7-7.23.7}/wiki/Shared-Drives.md +0 -0
  187. {gam7-7.23.5 → gam7-7.23.7}/wiki/Sites.md +0 -0
  188. {gam7-7.23.5 → gam7-7.23.7}/wiki/Tag-Replace.md +0 -0
  189. {gam7-7.23.5 → gam7-7.23.7}/wiki/Todrive.md +0 -0
  190. {gam7-7.23.5 → gam7-7.23.7}/wiki/Unmanaged-Accounts.md +0 -0
  191. {gam7-7.23.5 → gam7-7.23.7}/wiki/Upgrade-Benefits.md +0 -0
  192. {gam7-7.23.5 → gam7-7.23.7}/wiki/Users-Analytics-Admin.md +0 -0
  193. {gam7-7.23.5 → gam7-7.23.7}/wiki/Users-Application-Specific-Passwords.md +0 -0
  194. {gam7-7.23.5 → gam7-7.23.7}/wiki/Users-Backup-Verification-Codes.md +0 -0
  195. {gam7-7.23.5 → gam7-7.23.7}/wiki/Users-Calendars-Access.md +0 -0
  196. {gam7-7.23.5 → gam7-7.23.7}/wiki/Users-Calendars-Events.md +0 -0
  197. {gam7-7.23.5 → gam7-7.23.7}/wiki/Users-Calendars.md +0 -0
  198. {gam7-7.23.5 → gam7-7.23.7}/wiki/Users-Chat.md +0 -0
  199. {gam7-7.23.5 → gam7-7.23.7}/wiki/Users-Classification-Labels.md +0 -0
  200. {gam7-7.23.5 → gam7-7.23.7}/wiki/Users-Classroom-Profile.md +0 -0
  201. {gam7-7.23.5 → gam7-7.23.7}/wiki/Users-Contacts-Delegates.md +0 -0
  202. {gam7-7.23.5 → gam7-7.23.7}/wiki/Users-Contacts.md +0 -0
  203. {gam7-7.23.5 → gam7-7.23.7}/wiki/Users-Deprovision.md +0 -0
  204. {gam7-7.23.5 → gam7-7.23.7}/wiki/Users-Drive-Activity-Settings.md +0 -0
  205. {gam7-7.23.5 → gam7-7.23.7}/wiki/Users-Drive-Cleanup.md +0 -0
  206. {gam7-7.23.5 → gam7-7.23.7}/wiki/Users-Drive-Comments.md +0 -0
  207. {gam7-7.23.5 → gam7-7.23.7}/wiki/Users-Drive-Copy-Move.md +0 -0
  208. {gam7-7.23.5 → gam7-7.23.7}/wiki/Users-Drive-Files-Display.md +0 -0
  209. {gam7-7.23.5 → gam7-7.23.7}/wiki/Users-Drive-Files-Manage.md +0 -0
  210. {gam7-7.23.5 → gam7-7.23.7}/wiki/Users-Drive-Orphans.md +0 -0
  211. {gam7-7.23.5 → gam7-7.23.7}/wiki/Users-Drive-Ownership.md +0 -0
  212. {gam7-7.23.5 → gam7-7.23.7}/wiki/Users-Drive-Permissions.md +0 -0
  213. {gam7-7.23.5 → gam7-7.23.7}/wiki/Users-Drive-Query.md +0 -0
  214. {gam7-7.23.5 → gam7-7.23.7}/wiki/Users-Drive-Revisions.md +0 -0
  215. {gam7-7.23.5 → gam7-7.23.7}/wiki/Users-Drive-Shortcuts.md +0 -0
  216. {gam7-7.23.5 → gam7-7.23.7}/wiki/Users-Drive-Transfer.md +0 -0
  217. {gam7-7.23.5 → gam7-7.23.7}/wiki/Users-Forms.md +0 -0
  218. {gam7-7.23.5 → gam7-7.23.7}/wiki/Users-Gmail-CSE.md +0 -0
  219. {gam7-7.23.5 → gam7-7.23.7}/wiki/Users-Gmail-Delegates.md +0 -0
  220. {gam7-7.23.5 → gam7-7.23.7}/wiki/Users-Gmail-Filters.md +0 -0
  221. {gam7-7.23.5 → gam7-7.23.7}/wiki/Users-Gmail-Forwarding.md +0 -0
  222. {gam7-7.23.5 → gam7-7.23.7}/wiki/Users-Gmail-Labels.md +0 -0
  223. {gam7-7.23.5 → gam7-7.23.7}/wiki/Users-Gmail-Messages-Threads.md +0 -0
  224. {gam7-7.23.5 → gam7-7.23.7}/wiki/Users-Gmail-Profile.md +0 -0
  225. {gam7-7.23.5 → gam7-7.23.7}/wiki/Users-Gmail-S-MIME.md +0 -0
  226. {gam7-7.23.5 → gam7-7.23.7}/wiki/Users-Gmail-Send-As-Signature-Vacation.md +0 -0
  227. {gam7-7.23.5 → gam7-7.23.7}/wiki/Users-Gmail-Settings.md +0 -0
  228. {gam7-7.23.5 → gam7-7.23.7}/wiki/Users-Group-Membership.md +0 -0
  229. {gam7-7.23.5 → gam7-7.23.7}/wiki/Users-Keep-Notes.md +0 -0
  230. {gam7-7.23.5 → gam7-7.23.7}/wiki/Users-Looker-Studio.md +0 -0
  231. {gam7-7.23.5 → gam7-7.23.7}/wiki/Users-Meet.md +0 -0
  232. {gam7-7.23.5 → gam7-7.23.7}/wiki/Users-People-Contacts-Profiles.md +0 -0
  233. {gam7-7.23.5 → gam7-7.23.7}/wiki/Users-Photo.md +0 -0
  234. {gam7-7.23.5 → gam7-7.23.7}/wiki/Users-Profile-Photo.md +0 -0
  235. {gam7-7.23.5 → gam7-7.23.7}/wiki/Users-Profile-Sharing.md +0 -0
  236. {gam7-7.23.5 → gam7-7.23.7}/wiki/Users-Shared-Drives.md +0 -0
  237. {gam7-7.23.5 → gam7-7.23.7}/wiki/Users-Signout-Turnoff2SV.md +0 -0
  238. {gam7-7.23.5 → gam7-7.23.7}/wiki/Users-Spreadsheets.md +0 -0
  239. {gam7-7.23.5 → gam7-7.23.7}/wiki/Users-Tag-Manager.md +0 -0
  240. {gam7-7.23.5 → gam7-7.23.7}/wiki/Users-Tasks.md +0 -0
  241. {gam7-7.23.5 → gam7-7.23.7}/wiki/Users-Tokens.md +0 -0
  242. {gam7-7.23.5 → gam7-7.23.7}/wiki/Users-Web-Resources-and-Sites.md +0 -0
  243. {gam7-7.23.5 → gam7-7.23.7}/wiki/Users-YouTube.md +0 -0
  244. {gam7-7.23.5 → gam7-7.23.7}/wiki/Users.md +0 -0
  245. {gam7-7.23.5 → gam7-7.23.7}/wiki/Using-GAM7-with-a-YubiKey.md +0 -0
  246. {gam7-7.23.5 → gam7-7.23.7}/wiki/Using-GAM7-with-a-delegated-admin-service-account.md +0 -0
  247. {gam7-7.23.5 → gam7-7.23.7}/wiki/Using-GAM7-with-keyless-authentication-Workload-Identity-Federation.md +0 -0
  248. {gam7-7.23.5 → gam7-7.23.7}/wiki/Vault-Takeout.md +0 -0
  249. {gam7-7.23.5 → gam7-7.23.7}/wiki/Verifying-a-GAM7-Build-is-Legitimate-and-Official.md +0 -0
  250. {gam7-7.23.5 → gam7-7.23.7}/wiki/_Sidebar.md +0 -0
  251. {gam7-7.23.5 → gam7-7.23.7}/wiki/gam.cfg.md +0 -0
  252. {gam7-7.23.5 → gam7-7.23.7}/wiki/legacy/l-AdminSettingsExamples.md +0 -0
  253. {gam7-7.23.5 → gam7-7.23.7}/wiki/legacy/l-Android-Installation.md +0 -0
  254. {gam7-7.23.5 → gam7-7.23.7}/wiki/legacy/l-BulkOperations.md +0 -0
  255. {gam7-7.23.5 → gam7-7.23.7}/wiki/legacy/l-CalendarExamples.md +0 -0
  256. {gam7-7.23.5 → gam7-7.23.7}/wiki/legacy/l-Chat-Bot.md +0 -0
  257. {gam7-7.23.5 → gam7-7.23.7}/wiki/legacy/l-Chrome-Browser-Management.md +0 -0
  258. {gam7-7.23.5 → gam7-7.23.7}/wiki/legacy/l-Chrome-OS-Installation.md +0 -0
  259. {gam7-7.23.5 → gam7-7.23.7}/wiki/legacy/l-Chrome-Policy-Settings.md +0 -0
  260. {gam7-7.23.5 → gam7-7.23.7}/wiki/legacy/l-Cloud-Identity-Groups.md +0 -0
  261. {gam7-7.23.5 → gam7-7.23.7}/wiki/legacy/l-Command-Reference-Calendar-Resources.md +0 -0
  262. {gam7-7.23.5 → gam7-7.23.7}/wiki/legacy/l-Command-Reference-Calendars.md +0 -0
  263. {gam7-7.23.5 → gam7-7.23.7}/wiki/legacy/l-Command-Reference-Definitions.md +0 -0
  264. {gam7-7.23.5 → gam7-7.23.7}/wiki/legacy/l-Command-Reference-Drive.md +0 -0
  265. {gam7-7.23.5 → gam7-7.23.7}/wiki/legacy/l-Command-Reference-Email.md +0 -0
  266. {gam7-7.23.5 → gam7-7.23.7}/wiki/legacy/l-Command-Reference-Group-Attributes.md +0 -0
  267. {gam7-7.23.5 → gam7-7.23.7}/wiki/legacy/l-Command-Reference-Groups.md +0 -0
  268. {gam7-7.23.5 → gam7-7.23.7}/wiki/legacy/l-Command-Reference-Users.md +0 -0
  269. {gam7-7.23.5 → gam7-7.23.7}/wiki/legacy/l-Context-Aware-Access-Levels.md +0 -0
  270. {gam7-7.23.5 → gam7-7.23.7}/wiki/legacy/l-Creating-client_secrets.json-and-oauth2service.json.md +0 -0
  271. {gam7-7.23.5 → gam7-7.23.7}/wiki/legacy/l-CreatingClientSecretsFile.md +0 -0
  272. {gam7-7.23.5 → gam7-7.23.7}/wiki/legacy/l-Custom-Schemas.md +0 -0
  273. {gam7-7.23.5 → gam7-7.23.7}/wiki/legacy/l-Data-Transfers.md +0 -0
  274. {gam7-7.23.5 → gam7-7.23.7}/wiki/legacy/l-DomainVerification.md +0 -0
  275. {gam7-7.23.5 → gam7-7.23.7}/wiki/legacy/l-ExamplesAccountAuditing.md +0 -0
  276. {gam7-7.23.5 → gam7-7.23.7}/wiki/legacy/l-ExamplesCSV.md +0 -0
  277. {gam7-7.23.5 → gam7-7.23.7}/wiki/legacy/l-ExamplesEmailSettings.md +0 -0
  278. {gam7-7.23.5 → gam7-7.23.7}/wiki/legacy/l-ExamplesOrganizations.md +0 -0
  279. {gam7-7.23.5 → gam7-7.23.7}/wiki/legacy/l-GAM-Discussion-Group.md +0 -0
  280. {gam7-7.23.5 → gam7-7.23.7}/wiki/legacy/l-GAM-on-Android-and-Chrome-OS.md +0 -0
  281. {gam7-7.23.5 → gam7-7.23.7}/wiki/legacy/l-GAM-options-files.md +0 -0
  282. {gam7-7.23.5 → gam7-7.23.7}/wiki/legacy/l-GAM-with--minimal-GCP-rights.md +0 -0
  283. {gam7-7.23.5 → gam7-7.23.7}/wiki/legacy/l-GAM3CSVListings.md +0 -0
  284. {gam7-7.23.5 → gam7-7.23.7}/wiki/legacy/l-GAM3DirectoryCommands.md +0 -0
  285. {gam7-7.23.5 → gam7-7.23.7}/wiki/legacy/l-GAM3GroupSettings.md +0 -0
  286. {gam7-7.23.5 → gam7-7.23.7}/wiki/legacy/l-Google-Vault---Takeout-Commands.md +0 -0
  287. {gam7-7.23.5 → gam7-7.23.7}/wiki/legacy/l-GoogleDriveManagement.md +0 -0
  288. {gam7-7.23.5 → gam7-7.23.7}/wiki/legacy/l-Grouping-18-or-Older-Users.md +0 -0
  289. {gam7-7.23.5 → gam7-7.23.7}/wiki/legacy/l-Home.md +0 -0
  290. {gam7-7.23.5 → gam7-7.23.7}/wiki/legacy/l-How-to-upgrade-from-Standard-GAM.md +0 -0
  291. {gam7-7.23.5 → gam7-7.23.7}/wiki/legacy/l-Inbound-SSO-Settings.md +0 -0
  292. {gam7-7.23.5 → gam7-7.23.7}/wiki/legacy/l-LicenseExamples.md +0 -0
  293. {gam7-7.23.5 → gam7-7.23.7}/wiki/legacy/l-Managing-Admins.md +0 -0
  294. {gam7-7.23.5 → gam7-7.23.7}/wiki/legacy/l-Managing-CloudPrint-Printers.md +0 -0
  295. {gam7-7.23.5 → gam7-7.23.7}/wiki/legacy/l-Managing-Devices.md +0 -0
  296. {gam7-7.23.5 → gam7-7.23.7}/wiki/legacy/l-Managing-Google-Classroom.md +0 -0
  297. {gam7-7.23.5 → gam7-7.23.7}/wiki/legacy/l-OAuthKeyManagement.md +0 -0
  298. {gam7-7.23.5 → gam7-7.23.7}/wiki/legacy/l-Printers.md +0 -0
  299. {gam7-7.23.5 → gam7-7.23.7}/wiki/legacy/l-ResellerCommands.md +0 -0
  300. {gam7-7.23.5 → gam7-7.23.7}/wiki/legacy/l-SecurityExamples.md +0 -0
  301. {gam7-7.23.5 → gam7-7.23.7}/wiki/legacy/l-UnmanagedUsersExamples.md +0 -0
  302. {gam7-7.23.5 → gam7-7.23.7}/wiki/legacy/l-Using-GAM-with-a-delegated-admin-service-account-(DASA).md +0 -0
  303. {gam7-7.23.5 → gam7-7.23.7}/wiki/legacy/l-_Footer.md +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: gam7
3
- Version: 7.23.5
3
+ Version: 7.23.7
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
@@ -368,6 +368,7 @@ If an item contains spaces, it should be surrounded by ".
368
368
  ## Named items
369
369
 
370
370
  <AccessToken> ::= <String>
371
+ <AdminAssigneeType> ::= group|user|serviceaccount|unknown
371
372
  <AlertID> ::= <String>
372
373
  <APIScopeURL> ::= <String>
373
374
  <APPID> ::= <String>
@@ -691,6 +692,7 @@ If an item contains spaces, it should be surrounded by ".
691
692
 
692
693
  ## Lists of basic items
693
694
 
695
+ <AdminAssigneeTypeList> ::= "<AdminAssigneeType>(,<AdminAssigneeType>)*"
694
696
  <APIScopeURLList> ::= "<APIScopeURL>(,<APIScopeURL>)*"
695
697
  <ASPIDList> ::= "<ASPID>(,<ASPID>)*"
696
698
  <AssetTagList> ::= "<AssetTag>(,<AssetTag>)*"
@@ -1551,11 +1553,16 @@ gam create|add admin <EmailAddress>|<UniqueID> <RoleItem> customer|(org_unit <Or
1551
1553
  [condition securitygroup|nonsecuritygroup]
1552
1554
  gam delete admin <RoleAssignmentId>
1553
1555
 
1556
+ <AdminAssigneeType> ::= group|user|serviceaccount|unknown
1557
+ <AdminAssigneeTypeList> ::= "<AdminAssigneeType>(,<AdminAssigneeType>)*"
1558
+
1554
1559
  gam print admins [todrive <ToDriveAttribute>*]
1555
1560
  [user|group <EmailAddress>|<UniqueID>] [role <RoleItem>]
1561
+ [types <AdminAssigneeTypeList>]
1556
1562
  [recursive] [condition] [privileges] [oneitemperrow]
1557
1563
  gam show admins
1558
1564
  [user|group <EmailAddress>|<UniqueID>] [role <RoleItem>]
1565
+ [types <AdminAssigneeTypeList>]
1559
1566
  [recursive] [condition] [privileges]
1560
1567
 
1561
1568
  # Alert Center
@@ -1,7 +1,21 @@
1
+ 7.23.07
2
+
3
+ Fixed bug in `gam print|show admins` where all admin assignments were not displayed when
4
+ `types <AdminAssigneeTypeList>` was not specified, i.e., all assignments should be displayed.
5
+
6
+ 7.23.06
7
+
8
+ Added option `types <AdminAssigneeTypeList>` to `gam print|show admins` that allows filtering
9
+ of admin assignments by the type of the assignee; by default, all assignee types are displayed.
10
+ ```
11
+ <AdminAssigneeType> ::= group|user|serviceaccount|unknown
12
+ <AdminAssigneeTypeList> ::= "<AdminAssigneeType>(,<AdminAssigneeType>)*"
13
+ ```
14
+
1
15
  7.23.05
2
16
 
3
- Added option `recursive` to `gam print|show admins` that will display assignments to the members
4
- of security groups assigned to roles; the security group membershop is recursively expanded.
17
+ Added option `recursive` that will display assignments to the members
18
+ of security groups assigned to roles; the security group membership is recursively expanded.
5
19
 
6
20
  7.23.04
7
21
 
@@ -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.23.05'
28
+ __version__ = '7.23.07'
29
29
  __license__ = 'Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0)'
30
30
 
31
31
  #pylint: disable=wrong-import-position
@@ -16990,23 +16990,39 @@ def doDeleteAdmin():
16990
16990
  except (GAPI.forbidden, GAPI.permissionDenied) as e:
16991
16991
  ClientAPIAccessDeniedExit(str(e))
16992
16992
 
16993
- ASSIGNEE_EMAILTYPE_TOFIELD_MAP = {
16993
+ ADMIN_ASSIGNEE_TYPE_TO_ASSIGNEDTO_FIELD_MAP = {
16994
16994
  'user': 'assignedToUser',
16995
16995
  'group': 'assignedToGroup',
16996
16996
  'serviceaccount': 'assignedToServiceAccount',
16997
+ 'unknown': 'assignedToUnknown',
16997
16998
  }
16998
- PRINT_ADMIN_FIELDS = ['roleAssignmentId', 'roleId', 'assignedTo', 'scopeType', 'orgUnitId', 'assigneeType']
16999
+ ALL_ASSIGNEE_TYPES = ['user', 'group', 'serviceaccount']
17000
+
17001
+ PRINT_ADMIN_FIELDS = ['roleAssignmentId', 'roleId', 'assignedTo', 'scopeType', 'orgUnitId']
16999
17002
  PRINT_ADMIN_TITLES = ['roleAssignmentId', 'roleId', 'role',
17000
17003
  'assignedTo', 'assignedToUser', 'assignedToGroup', 'assignedToServiceAccount', 'assignedToUnknown',
17001
17004
  'scopeType', 'orgUnitId', 'orgUnit']
17002
17005
 
17003
17006
  # gam print admins [todrive <ToDriveAttribute>*]
17004
17007
  # [user|group <EmailAddress>|<UniqueID>] [role <RoleItem>]
17008
+ # [types <AdminAssigneeTypeList>]
17005
17009
  # [recursive] [condition] [privileges] [oneitemperrow]
17006
17010
  # gam show admins
17007
17011
  # [user|group <EmailAddress>|<UniqueID>] [role <RoleItem>]
17012
+ # [types <AdminAssigneeTypeList>]
17008
17013
  # [recursive] [condition] [privileges]
17009
17014
  def doPrintShowAdmins():
17015
+ def _getAssigneeTypes(myarg):
17016
+ if myarg in {'type', 'types'}:
17017
+ for gtype in getString(Cmd.OB_ADMIN_ASSIGNEE_TYPE_LIST).lower().replace(',', ' ').split():
17018
+ if gtype in ADMIN_ASSIGNEE_TYPE_TO_ASSIGNEDTO_FIELD_MAP:
17019
+ typesSet.add(ADMIN_ASSIGNEE_TYPE_TO_ASSIGNEDTO_FIELD_MAP[gtype])
17020
+ else:
17021
+ invalidChoiceExit(gtype, ADMIN_ASSIGNEE_TYPE_TO_ASSIGNEDTO_FIELD_MAP, True)
17022
+ else:
17023
+ return False
17024
+ return True
17025
+
17010
17026
  def _getPrivileges(admin):
17011
17027
  if showPrivileges:
17012
17028
  roleId = admin['roleId']
@@ -17032,16 +17048,19 @@ def doPrintShowAdmins():
17032
17048
  def _setNamesFromIds(admin, privileges):
17033
17049
  admin['role'] = role_from_roleid(admin['roleId'])
17034
17050
  assignedTo = admin['assignedTo']
17051
+ admin['assignedToUnknown'] = False
17035
17052
  if assignedTo not in assignedToIdEmailMap:
17036
- assigneeEmail, assigneeType = convertUIDtoEmailAddressWithType(f'uid:{assignedTo}', cd, sal,
17037
- emailTypes=allAssigneeTypes if admin.get('assigneeType') != 'group' else ['group'])
17038
- if assigneeType in ASSIGNEE_EMAILTYPE_TOFIELD_MAP:
17039
- assignedToField = ASSIGNEE_EMAILTYPE_TOFIELD_MAP[assigneeType]
17053
+ emailTypes = ALL_ASSIGNEE_TYPES if admin.get('assigneeType', '') != 'group' else ['group']
17054
+ assigneeEmail, assigneeType = convertUIDtoEmailAddressWithType(f'uid:{assignedTo}', cd, sal, emailTypes=emailTypes)
17055
+ if assigneeType in ADMIN_ASSIGNEE_TYPE_TO_ASSIGNEDTO_FIELD_MAP:
17056
+ assignedToField = ADMIN_ASSIGNEE_TYPE_TO_ASSIGNEDTO_FIELD_MAP[assigneeType]
17040
17057
  else:
17041
17058
  assignedToField = 'assignedToUnknown'
17059
+ if assignedToField == 'assignedToUnknown':
17042
17060
  assigneeEmail = True
17043
17061
  assignedToIdEmailMap[assignedTo] = {'assignedToField': assignedToField, 'assigneeEmail': assigneeEmail}
17044
17062
  admin[assignedToIdEmailMap[assignedTo]['assignedToField']] = assignedToIdEmailMap[assignedTo]['assigneeEmail']
17063
+ admin['assignedToField'] = assignedToIdEmailMap[assignedTo]['assignedToField']
17045
17064
  if privileges is not None:
17046
17065
  admin.update(privileges)
17047
17066
  if 'orgUnitId' in admin:
@@ -17051,18 +17070,22 @@ def doPrintShowAdmins():
17051
17070
  admin['condition'] = 'securitygroup'
17052
17071
  elif admin['condition'] == NONSECURITY_GROUP_CONDITION:
17053
17072
  admin['condition'] = 'nonsecuritygroup'
17073
+ if debug:
17074
+ print('******', admin['assignedTo'], admin.get('assigneeType', 'no type'),
17075
+ admin['assignedToField'], not typesSet or admin['assignedToField'] in typesSet)
17076
+ return not typesSet or admin['assignedToField'] in typesSet
17054
17077
 
17055
17078
  cd = buildGAPIObject(API.DIRECTORY)
17056
17079
  sal = buildGAPIObject(API.SERVICEACCOUNTLOOKUP)
17057
17080
  csvPF = CSVPrintFile(PRINT_ADMIN_TITLES) if Act.csvFormat() else None
17058
17081
  roleId = None
17059
17082
  userKey = None
17060
- oneItemPerRow = recursive = showPrivileges = False
17083
+ debug = oneItemPerRow = recursive = showPrivileges = False
17084
+ typesSet = set()
17061
17085
  kwargs = {}
17062
17086
  rolePrivileges = {}
17063
- fieldsList = PRINT_ADMIN_FIELDS
17087
+ fieldsList = PRINT_ADMIN_FIELDS+['assigneeType']
17064
17088
  assignedToIdEmailMap = {}
17065
- allAssigneeTypes = list(ASSIGNEE_EMAILTYPE_TOFIELD_MAP.keys())
17066
17089
  while Cmd.ArgumentsRemaining():
17067
17090
  myarg = getArgument()
17068
17091
  if csvPF and myarg == 'todrive':
@@ -17071,6 +17094,8 @@ def doPrintShowAdmins():
17071
17094
  userKey = kwargs['userKey'] = getEmailAddress()
17072
17095
  elif myarg == 'role':
17073
17096
  _, roleId = getRoleId()
17097
+ elif _getAssigneeTypes(myarg):
17098
+ pass
17074
17099
  elif myarg == 'recursive':
17075
17100
  recursive = True
17076
17101
  allGroupRoles = ','.join(sorted(ALL_GROUP_ROLES))
@@ -17088,6 +17113,8 @@ def doPrintShowAdmins():
17088
17113
  showPrivileges = True
17089
17114
  elif myarg == 'oneitemperrow':
17090
17115
  oneItemPerRow = True
17116
+ elif myarg == 'debug':
17117
+ debug = True
17091
17118
  else:
17092
17119
  unknownArgumentExit()
17093
17120
  if roleId and not kwargs:
@@ -17123,11 +17150,11 @@ def doPrintShowAdmins():
17123
17150
  i += 1
17124
17151
  if roleId and roleId != admin['roleId']:
17125
17152
  continue
17153
+ assignedTo = admin['assignedTo']
17126
17154
  if admin['assigneeType'] != 'group' or not recursive:
17127
- _setNamesFromIds(admin, _getPrivileges(admin))
17128
- expandedAdmins.append(admin)
17155
+ if _setNamesFromIds(admin, _getPrivileges(admin)):
17156
+ expandedAdmins.append(admin)
17129
17157
  continue
17130
- assignedTo = admin['assignedTo']
17131
17158
  if assignedTo not in groupMembers:
17132
17159
  membersList = []
17133
17160
  membersSet = set()
@@ -17135,7 +17162,9 @@ def doPrintShowAdmins():
17135
17162
  getGroupMembers(cd, assignedTo, allGroupRoles, membersList, membersSet, i, count,
17136
17163
  memberOptions, memberDisplayOptions, level, {Ent.TYPE_USER})
17137
17164
  groupMembers[assignedTo] = membersList[:]
17138
- _setNamesFromIds(admin, _getPrivileges(admin))
17165
+ if not _setNamesFromIds(admin, _getPrivileges(admin)):
17166
+ continue
17167
+ expandedAdmins.append(admin)
17139
17168
  if not groupMembers[assignedTo]:
17140
17169
  expandedAdmins.append(admin)
17141
17170
  continue
@@ -17158,7 +17187,7 @@ def doPrintShowAdmins():
17158
17187
  Ind.Increment()
17159
17188
  for field in PRINT_ADMIN_TITLES:
17160
17189
  if field in admin:
17161
- if field == 'roleAssignmentId':
17190
+ if (field == 'roleAssignmentId') or (field == 'assignedToUnknown' and not admin[field]):
17162
17191
  continue
17163
17192
  printKeyValueList([field, admin[field]])
17164
17193
  if showPrivileges:
@@ -17173,6 +17202,8 @@ def doPrintShowAdmins():
17173
17202
  Ind.Decrement()
17174
17203
  else:
17175
17204
  for admin in expandedAdmins:
17205
+ admin.pop('assigneeType', None)
17206
+ admin.pop('assignedToField')
17176
17207
  if not oneItemPerRow or 'rolePrivileges' not in admin:
17177
17208
  csvPF.WriteRowTitles(flattenJSON(admin))
17178
17209
  else:
@@ -1138,6 +1138,7 @@ class GamCLArgs():
1138
1138
  OB_ARGUMENT = 'argument'
1139
1139
  OB_ASP_ID_LIST = 'ASPIDList'
1140
1140
  OB_ASSET_ID = 'AssetID'
1141
+ OB_ADMIN_ASSIGNEE_TYPE_LIST = 'AdminAssigneeTypeList'
1141
1142
  OB_BROWSER_ENROLLEMNT_TOKEN_ID = 'BrowserEnrollmentTokenID'
1142
1143
  OB_BROWSER_ENTITY = 'BrowserEntity'
1143
1144
  OB_BUILDING_ID = 'BuildingID'
@@ -19,6 +19,8 @@
19
19
 
20
20
  ## Definitions
21
21
  ```
22
+ <AdminAssigneeType> ::= group|user|serviceaccount|unknown
23
+ <AdminAssigneeTypeList> ::= "<AdminAssigneeType>(,<AdminAssigneeType>)*"
22
24
  <DomainName> ::= <String>(.<String>)+
23
25
  <EmailAddress> ::= <String>@<DomainName>
24
26
  <GroupItem> ::= <EmailAddress>|<UniqueID>|<String>
@@ -1475,16 +1477,25 @@ gam delete admin <RoleAssignmentId>
1475
1477
  ## Display administrators
1476
1478
  ```
1477
1479
  gam print admins [todrive <ToDriveAttribute>*]
1478
- [user|group <EmailAddress>|<UniqueID>] [role <RoleItem>] [condition]
1479
- [privileges] [oneitemperrow]
1480
+ [user|group <EmailAddress>|<UniqueID>] [role <RoleItem>]
1481
+ [types <AdminAssigneeTypeList>]
1482
+ [recursive] [condition] [privileges] [oneitemperrow]
1480
1483
  gam show admins
1481
- [user|group <EmailAddress>|<UniqueID>] [role <RoleItem>] [condition] [privileges]
1484
+ [user|group <EmailAddress>|<UniqueID>] [role <RoleItem>]
1485
+ [types <AdminAssigneeTypeList>]
1486
+ [recursive] [condition] [privileges]
1482
1487
  ```
1483
1488
  By default, all administrators and roles are displayed; choose from the following
1484
1489
  options to limit the display:
1485
- * `user <UserItem>` - Display only this administrator
1490
+ * `user|group <EmailAddress>|<UniqueID>` - Display assignments to this administrator
1486
1491
  * `role <RoleItem>` - Display only administrators with this role
1487
1492
 
1493
+ By default, all admin assignee types are displayed. use `types <AdminAssigneeTypeList>` to filter
1494
+ admin assignments by the type of the assignee.
1495
+
1496
+ By default, assignments to security groups are displayed as a single item; use `recursive`
1497
+ to display assignments to the members of the security groups; the security group membershop is recursively expanded.
1498
+
1488
1499
  * `condition` - Display any conditions associated with a role assignment
1489
1500
  * `privileges` - Display privileges associated with each role assignment
1490
1501
 
@@ -265,6 +265,7 @@
265
265
  ## Named items
266
266
  ```
267
267
  <AccessToken> ::= <String>
268
+ <AdminAssigneeType> ::= group|user|serviceaccount|unknown
268
269
  <AlertID> ::= <String>
269
270
  <APIScopeURL> ::= <String>
270
271
  <APPID> ::= <String>
@@ -10,6 +10,20 @@ 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.23.06
14
+
15
+ Added option `types <AdminAssigneeTypeList>` to `gam print|show admins` that allows filtering
16
+ of admin assignments by the type of the assignee; by default, all assignee types are displayed.
17
+ ```
18
+ <AdminAssigneeType> ::= group|user|serviceaccount|unknown
19
+ <AdminAssigneeTypeList> ::= "<AdminAssigneeType>(,<AdminAssigneeType>)*"
20
+ ```
21
+
22
+ ### 7.23.05
23
+
24
+ Added option `recursive` to `gam print|show admins` that will display assignments to the members
25
+ of security groups assigned to roles; the security group membership is recursively expanded.
26
+
13
27
  ### 7.23.04
14
28
 
15
29
  Added option `addcsvdata <FieldName> <String>` to `gam <UserTypeEntity> print events`
@@ -252,7 +252,7 @@ writes the credentials into the file oauth2.txt.
252
252
  admin@server:/Users/admin$ rm -f /Users/admin/GAMConfig/oauth2.txt
253
253
  admin@server:/Users/admin$ gam version
254
254
  WARNING: Config File: /Users/admin/GAMConfig/gam.cfg, Section: DEFAULT, Item: oauth2_txt, Value: /Users/admin/GAMConfig/oauth2.txt, Not Found
255
- GAM 7.23.04 - https://github.com/GAM-team/GAM - pyinstaller
255
+ GAM 7.23.06 - https://github.com/GAM-team/GAM - pyinstaller
256
256
  GAM Team <google-apps-manager@googlegroups.com>
257
257
  Python 3.13.7 64-bit final
258
258
  macOS Tahoe 26.0.1 x86_64
@@ -5,6 +5,7 @@
5
5
 
6
6
  ## Lists of basic items
7
7
  ```
8
+ <AdminAssigneeTypeList> ::= "<AdminAssigneeType>(,<AdminAssigneeType>)*"
8
9
  <APIScopeURLList> ::= "<APIScopeURL>(,<APIScopeURL>)*"
9
10
  <ASPIDList> ::= "<ASPID>(,<ASPID>)*"
10
11
  <AssetTagList> ::= "<AssetTag>(,<AssetTag>)*"
@@ -3,7 +3,7 @@
3
3
  Print the current version of Gam with details
4
4
  ```
5
5
  gam version
6
- GAM 7.23.04 - https://github.com/GAM-team/GAM - pyinstaller
6
+ GAM 7.23.06 - https://github.com/GAM-team/GAM - pyinstaller
7
7
  GAM Team <google-apps-manager@googlegroups.com>
8
8
  Python 3.13.7 64-bit final
9
9
  macOS Tahoe 26.0.1 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.23.04 - https://github.com/GAM-team/GAM - pyinstaller
18
+ GAM 7.23.06 - https://github.com/GAM-team/GAM - pyinstaller
19
19
  GAM Team <google-apps-manager@googlegroups.com>
20
20
  Python 3.13.7 64-bit final
21
21
  macOS Tahoe 26.0.1 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.23.04 - https://github.com/GAM-team/GAM - pyinstaller
30
+ GAM 7.23.06 - https://github.com/GAM-team/GAM - pyinstaller
31
31
  GAM Team <google-apps-manager@googlegroups.com>
32
32
  Python 3.13.7 64-bit final
33
33
  macOS Tahoe 26.0.1 x86_64
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
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
File without changes
File without changes