gam7 7.27.4__tar.gz → 7.27.5__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.27.4 → gam7-7.27.5}/.github/workflows/build.yml +21 -14
  2. {gam7-7.27.4 → gam7-7.27.5}/PKG-INFO +1 -1
  3. {gam7-7.27.4 → gam7-7.27.5}/src/GamCommands.txt +1 -0
  4. {gam7-7.27.4 → gam7-7.27.5}/src/GamUpdate.txt +8 -0
  5. {gam7-7.27.4 → gam7-7.27.5}/src/gam/__init__.py +19 -14
  6. {gam7-7.27.4 → gam7-7.27.5}/src/gam/gamlib/glapi.py +0 -6
  7. {gam7-7.27.4 → gam7-7.27.5}/wiki/Classroom-Courses.md +4 -1
  8. {gam7-7.27.4 → gam7-7.27.5}/wiki/Cloud-Identity-Groups.md +1 -10
  9. {gam7-7.27.4 → gam7-7.27.5}/wiki/GamUpdates.md +8 -0
  10. {gam7-7.27.4 → gam7-7.27.5}/wiki/How-to-Upgrade-Legacy-GAM-to-GAM7.md +2 -2
  11. {gam7-7.27.4 → gam7-7.27.5}/wiki/Reports.md +4 -0
  12. {gam7-7.27.4 → gam7-7.27.5}/wiki/Version-and-Help.md +6 -6
  13. {gam7-7.27.4 → gam7-7.27.5}/.github/ISSUE_TEMPLATE/aa-question.md +0 -0
  14. {gam7-7.27.4 → gam7-7.27.5}/.github/ISSUE_TEMPLATE/za-bug-report.md +0 -0
  15. {gam7-7.27.4 → gam7-7.27.5}/.github/ISSUE_TEMPLATE/zz-feature-request.md +0 -0
  16. {gam7-7.27.4 → gam7-7.27.5}/.github/ISSUE_TEMPLATE.txt +0 -0
  17. {gam7-7.27.4 → gam7-7.27.5}/.github/actions/decrypt.sh +0 -0
  18. {gam7-7.27.4 → gam7-7.27.5}/.github/actions/entitlements.plist +0 -0
  19. {gam7-7.27.4 → gam7-7.27.5}/.github/actions/package_exclusions.txt +0 -0
  20. {gam7-7.27.4 → gam7-7.27.5}/.github/stale.yml +0 -0
  21. {gam7-7.27.4 → gam7-7.27.5}/.github/workflows/codeql-analysis.yml +0 -0
  22. {gam7-7.27.4 → gam7-7.27.5}/.github/workflows/get-cacerts.yml +0 -0
  23. {gam7-7.27.4 → gam7-7.27.5}/.github/workflows/pushwiki.yml +0 -0
  24. {gam7-7.27.4 → gam7-7.27.5}/.github/workflows/pypi.yml +0 -0
  25. {gam7-7.27.4 → gam7-7.27.5}/LICENSE +0 -0
  26. {gam7-7.27.4 → gam7-7.27.5}/README.md +0 -0
  27. {gam7-7.27.4 → gam7-7.27.5}/pyproject.toml +0 -0
  28. {gam7-7.27.4 → gam7-7.27.5}/src/.gitignore +0 -0
  29. {gam7-7.27.4 → gam7-7.27.5}/src/LICENSE +0 -0
  30. {gam7-7.27.4 → gam7-7.27.5}/src/README.md +0 -0
  31. {gam7-7.27.4 → gam7-7.27.5}/src/callgam.py +0 -0
  32. {gam7-7.27.4 → gam7-7.27.5}/src/gam/__main__.py +0 -0
  33. {gam7-7.27.4 → gam7-7.27.5}/src/gam/atom/__init__.py +0 -0
  34. {gam7-7.27.4 → gam7-7.27.5}/src/gam/atom/auth.py +0 -0
  35. {gam7-7.27.4 → gam7-7.27.5}/src/gam/atom/client.py +0 -0
  36. {gam7-7.27.4 → gam7-7.27.5}/src/gam/atom/core.py +0 -0
  37. {gam7-7.27.4 → gam7-7.27.5}/src/gam/atom/data.py +0 -0
  38. {gam7-7.27.4 → gam7-7.27.5}/src/gam/atom/http.py +0 -0
  39. {gam7-7.27.4 → gam7-7.27.5}/src/gam/atom/http_core.py +0 -0
  40. {gam7-7.27.4 → gam7-7.27.5}/src/gam/atom/http_interface.py +0 -0
  41. {gam7-7.27.4 → gam7-7.27.5}/src/gam/atom/mock_http.py +0 -0
  42. {gam7-7.27.4 → gam7-7.27.5}/src/gam/atom/mock_http_core.py +0 -0
  43. {gam7-7.27.4 → gam7-7.27.5}/src/gam/atom/mock_service.py +0 -0
  44. {gam7-7.27.4 → gam7-7.27.5}/src/gam/atom/service.py +0 -0
  45. {gam7-7.27.4 → gam7-7.27.5}/src/gam/atom/token_store.py +0 -0
  46. {gam7-7.27.4 → gam7-7.27.5}/src/gam/atom/url.py +0 -0
  47. {gam7-7.27.4 → gam7-7.27.5}/src/gam/cacerts.pem +0 -0
  48. {gam7-7.27.4 → gam7-7.27.5}/src/gam/cbcm-v1.1beta1.json +0 -0
  49. {gam7-7.27.4 → gam7-7.27.5}/src/gam/contactdelegation-v1.json +0 -0
  50. {gam7-7.27.4 → gam7-7.27.5}/src/gam/datastudio-v1.json +0 -0
  51. {gam7-7.27.4 → gam7-7.27.5}/src/gam/gamlib/__init__.py +0 -0
  52. {gam7-7.27.4 → gam7-7.27.5}/src/gam/gamlib/glaction.py +0 -0
  53. {gam7-7.27.4 → gam7-7.27.5}/src/gam/gamlib/glcfg.py +0 -0
  54. {gam7-7.27.4 → gam7-7.27.5}/src/gam/gamlib/glclargs.py +0 -0
  55. {gam7-7.27.4 → gam7-7.27.5}/src/gam/gamlib/glentity.py +0 -0
  56. {gam7-7.27.4 → gam7-7.27.5}/src/gam/gamlib/glgapi.py +0 -0
  57. {gam7-7.27.4 → gam7-7.27.5}/src/gam/gamlib/glgdata.py +0 -0
  58. {gam7-7.27.4 → gam7-7.27.5}/src/gam/gamlib/glglobals.py +0 -0
  59. {gam7-7.27.4 → gam7-7.27.5}/src/gam/gamlib/glindent.py +0 -0
  60. {gam7-7.27.4 → gam7-7.27.5}/src/gam/gamlib/glmsgs.py +0 -0
  61. {gam7-7.27.4 → gam7-7.27.5}/src/gam/gamlib/glskus.py +0 -0
  62. {gam7-7.27.4 → gam7-7.27.5}/src/gam/gamlib/gluprop.py +0 -0
  63. {gam7-7.27.4 → gam7-7.27.5}/src/gam/gamlib/glverlibs.py +0 -0
  64. {gam7-7.27.4 → gam7-7.27.5}/src/gam/gamlib/yubikey.py +0 -0
  65. {gam7-7.27.4 → gam7-7.27.5}/src/gam/gdata/__init__.py +0 -0
  66. {gam7-7.27.4 → gam7-7.27.5}/src/gam/gdata/alt/__init__.py +0 -0
  67. {gam7-7.27.4 → gam7-7.27.5}/src/gam/gdata/alt/app_engine.py +0 -0
  68. {gam7-7.27.4 → gam7-7.27.5}/src/gam/gdata/alt/appengine.py +0 -0
  69. {gam7-7.27.4 → gam7-7.27.5}/src/gam/gdata/apps/__init__.py +0 -0
  70. {gam7-7.27.4 → gam7-7.27.5}/src/gam/gdata/apps/audit/__init__.py +0 -0
  71. {gam7-7.27.4 → gam7-7.27.5}/src/gam/gdata/apps/audit/service.py +0 -0
  72. {gam7-7.27.4 → gam7-7.27.5}/src/gam/gdata/apps/contacts/__init__.py +0 -0
  73. {gam7-7.27.4 → gam7-7.27.5}/src/gam/gdata/apps/contacts/service.py +0 -0
  74. {gam7-7.27.4 → gam7-7.27.5}/src/gam/gdata/apps/service.py +0 -0
  75. {gam7-7.27.4 → gam7-7.27.5}/src/gam/gdata/service.py +0 -0
  76. {gam7-7.27.4 → gam7-7.27.5}/src/gam/gdata/urlfetch.py +0 -0
  77. {gam7-7.27.4 → gam7-7.27.5}/src/gam/meet-v2beta.json +0 -0
  78. {gam7-7.27.4 → gam7-7.27.5}/src/gam/serviceaccountlookup-v1.json +0 -0
  79. {gam7-7.27.4 → gam7-7.27.5}/src/gam-install.sh +0 -0
  80. {gam7-7.27.4 → gam7-7.27.5}/src/gam-setup.bat +0 -0
  81. {gam7-7.27.4 → gam7-7.27.5}/src/gam.exe.manifest +0 -0
  82. {gam7-7.27.4 → gam7-7.27.5}/src/gam.py +0 -0
  83. {gam7-7.27.4 → gam7-7.27.5}/src/gam.spec +0 -0
  84. {gam7-7.27.4 → gam7-7.27.5}/src/gam.wxs +0 -0
  85. {gam7-7.27.4 → gam7-7.27.5}/src/license.rtf +0 -0
  86. {gam7-7.27.4 → gam7-7.27.5}/src/tools/a_atleast_b.py +0 -0
  87. {gam7-7.27.4 → gam7-7.27.5}/src/tools/gen-wix-xml-filelist.py +0 -0
  88. {gam7-7.27.4 → gam7-7.27.5}/src/tools/hooks/hook-googleapiclient.model.py +0 -0
  89. {gam7-7.27.4 → gam7-7.27.5}/src/tools/hooks/hook-httplib2.py +0 -0
  90. {gam7-7.27.4 → gam7-7.27.5}/src/tools/mkGamRef.py +0 -0
  91. {gam7-7.27.4 → gam7-7.27.5}/src/tools/openssl.props +0 -0
  92. {gam7-7.27.4 → gam7-7.27.5}/src/tools/ssd.mjs +0 -0
  93. {gam7-7.27.4 → gam7-7.27.5}/src/version_info.txt.in +0 -0
  94. {gam7-7.27.4 → gam7-7.27.5}/wiki/00scratch.md +0 -0
  95. {gam7-7.27.4 → gam7-7.27.5}/wiki/Addresses.md +0 -0
  96. {gam7-7.27.4 → gam7-7.27.5}/wiki/Administrators.md +0 -0
  97. {gam7-7.27.4 → gam7-7.27.5}/wiki/Alert-Center.md +0 -0
  98. {gam7-7.27.4 → gam7-7.27.5}/wiki/Aliases.md +0 -0
  99. {gam7-7.27.4 → gam7-7.27.5}/wiki/Authorization.md +0 -0
  100. {gam7-7.27.4 → gam7-7.27.5}/wiki/BNF-Syntax.md +0 -0
  101. {gam7-7.27.4 → gam7-7.27.5}/wiki/Basic-Items.md +0 -0
  102. {gam7-7.27.4 → gam7-7.27.5}/wiki/Bulk-Processing.md +0 -0
  103. {gam7-7.27.4 → gam7-7.27.5}/wiki/Business-Account-Management.md +0 -0
  104. {gam7-7.27.4 → gam7-7.27.5}/wiki/CSV-Input-Filtering.md +0 -0
  105. {gam7-7.27.4 → gam7-7.27.5}/wiki/CSV-Output-Filtering.md +0 -0
  106. {gam7-7.27.4 → gam7-7.27.5}/wiki/CSV-Special-Characters.md +0 -0
  107. {gam7-7.27.4 → gam7-7.27.5}/wiki/Calendars-Access.md +0 -0
  108. {gam7-7.27.4 → gam7-7.27.5}/wiki/Calendars-Events.md +0 -0
  109. {gam7-7.27.4 → gam7-7.27.5}/wiki/Calendars.md +0 -0
  110. {gam7-7.27.4 → gam7-7.27.5}/wiki/Chat-Bot-Setup-Use.md +0 -0
  111. {gam7-7.27.4 → gam7-7.27.5}/wiki/Chrome-AUE-Counts.md +0 -0
  112. {gam7-7.27.4 → gam7-7.27.5}/wiki/Chrome-Browser-Cloud-Management.md +0 -0
  113. {gam7-7.27.4 → gam7-7.27.5}/wiki/Chrome-Installed-Apps.md +0 -0
  114. {gam7-7.27.4 → gam7-7.27.5}/wiki/Chrome-Needs-Attention-Counts.md +0 -0
  115. {gam7-7.27.4 → gam7-7.27.5}/wiki/Chrome-Policies.md +0 -0
  116. {gam7-7.27.4 → gam7-7.27.5}/wiki/Chrome-Printers.md +0 -0
  117. {gam7-7.27.4 → gam7-7.27.5}/wiki/Chrome-Profile-Management.md +0 -0
  118. {gam7-7.27.4 → gam7-7.27.5}/wiki/Chrome-Version-Counts.md +0 -0
  119. {gam7-7.27.4 → gam7-7.27.5}/wiki/Chrome-Version-History.md +0 -0
  120. {gam7-7.27.4 → gam7-7.27.5}/wiki/ChromeOS-Devices.md +0 -0
  121. {gam7-7.27.4 → gam7-7.27.5}/wiki/Classroom-Guardians.md +0 -0
  122. {gam7-7.27.4 → gam7-7.27.5}/wiki/Classroom-Invitations.md +0 -0
  123. {gam7-7.27.4 → gam7-7.27.5}/wiki/Classroom-Membership.md +0 -0
  124. {gam7-7.27.4 → gam7-7.27.5}/wiki/Classroom-StudentGroups.md +0 -0
  125. {gam7-7.27.4 → gam7-7.27.5}/wiki/Cloud-Channel.md +0 -0
  126. {gam7-7.27.4 → gam7-7.27.5}/wiki/Cloud-Identity-Devices.md +0 -0
  127. {gam7-7.27.4 → gam7-7.27.5}/wiki/Cloud-Identity-Groups-Membership.md +0 -0
  128. {gam7-7.27.4 → gam7-7.27.5}/wiki/Cloud-Identity-Policies.md +0 -0
  129. {gam7-7.27.4 → gam7-7.27.5}/wiki/Cloud-Storage.md +0 -0
  130. {gam7-7.27.4 → gam7-7.27.5}/wiki/Collections-of-ChromeOS-Devices.md +0 -0
  131. {gam7-7.27.4 → gam7-7.27.5}/wiki/Collections-of-Items.md +0 -0
  132. {gam7-7.27.4 → gam7-7.27.5}/wiki/Collections-of-Users.md +0 -0
  133. {gam7-7.27.4 → gam7-7.27.5}/wiki/Command-Data-From-Google-Docs-Sheets-Storage.md +0 -0
  134. {gam7-7.27.4 → gam7-7.27.5}/wiki/Command-Line-Parsing.md +0 -0
  135. {gam7-7.27.4 → gam7-7.27.5}/wiki/Command-Logging-Progress.md +0 -0
  136. {gam7-7.27.4 → gam7-7.27.5}/wiki/Context-Aware-Access-Levels.md +0 -0
  137. {gam7-7.27.4 → gam7-7.27.5}/wiki/Customer.md +0 -0
  138. {gam7-7.27.4 → gam7-7.27.5}/wiki/Domain-People-Contacts-Profiles.md +0 -0
  139. {gam7-7.27.4 → gam7-7.27.5}/wiki/Domain-SharedContacts.md +0 -0
  140. {gam7-7.27.4 → gam7-7.27.5}/wiki/Domains-Verification.md +0 -0
  141. {gam7-7.27.4 → gam7-7.27.5}/wiki/Domains.md +0 -0
  142. {gam7-7.27.4 → gam7-7.27.5}/wiki/Downloads-Installs.md +0 -0
  143. {gam7-7.27.4 → gam7-7.27.5}/wiki/Drive-File-Selection.md +0 -0
  144. {gam7-7.27.4 → gam7-7.27.5}/wiki/Drive-Items.md +0 -0
  145. {gam7-7.27.4 → gam7-7.27.5}/wiki/Drive-REST-API-v3.md +0 -0
  146. {gam7-7.27.4 → gam7-7.27.5}/wiki/Email-Audit-Monitor.md +0 -0
  147. {gam7-7.27.4 → gam7-7.27.5}/wiki/Find-File-Owner.md +0 -0
  148. {gam7-7.27.4 → gam7-7.27.5}/wiki/GAM-Public-Chat-Room.md +0 -0
  149. {gam7-7.27.4 → gam7-7.27.5}/wiki/GAM-Release-Process.md +0 -0
  150. {gam7-7.27.4 → gam7-7.27.5}/wiki/GAM-Return-Codes.md +0 -0
  151. {gam7-7.27.4 → gam7-7.27.5}/wiki/GAM-with-minimal-GCP-rights.md +0 -0
  152. {gam7-7.27.4 → gam7-7.27.5}/wiki/GAM7-FAQ.md +0 -0
  153. {gam7-7.27.4 → gam7-7.27.5}/wiki/GAM7-on-Android-Devices.md +0 -0
  154. {gam7-7.27.4 → gam7-7.27.5}/wiki/GAM7-on-Chrome-OS-Devices.md +0 -0
  155. {gam7-7.27.4 → gam7-7.27.5}/wiki/Global-Address-List.md +0 -0
  156. {gam7-7.27.4 → gam7-7.27.5}/wiki/Google-Data-Transfers.md +0 -0
  157. {gam7-7.27.4 → gam7-7.27.5}/wiki/Google-Network-Addresses.md +0 -0
  158. {gam7-7.27.4 → gam7-7.27.5}/wiki/Groups-Membership.md +0 -0
  159. {gam7-7.27.4 → gam7-7.27.5}/wiki/Groups.md +0 -0
  160. {gam7-7.27.4 → gam7-7.27.5}/wiki/HTTPS-Proxy.md +0 -0
  161. {gam7-7.27.4 → gam7-7.27.5}/wiki/Home.md +0 -0
  162. {gam7-7.27.4 → gam7-7.27.5}/wiki/How-to-Install-GAM7.md +0 -0
  163. {gam7-7.27.4 → gam7-7.27.5}/wiki/How-to-Uninstall-GAM7.md +0 -0
  164. {gam7-7.27.4 → gam7-7.27.5}/wiki/How-to-Update-GAM7.md +0 -0
  165. {gam7-7.27.4 → gam7-7.27.5}/wiki/How-to-Upgrade-GAMADV-XTD3-to-GAM7.md +0 -0
  166. {gam7-7.27.4 → gam7-7.27.5}/wiki/Inbound-SSO.md +0 -0
  167. {gam7-7.27.4 → gam7-7.27.5}/wiki/Install-GAM-as-Python-Library.md +0 -0
  168. {gam7-7.27.4 → gam7-7.27.5}/wiki/Licenses.md +0 -0
  169. {gam7-7.27.4 → gam7-7.27.5}/wiki/List-Items.md +0 -0
  170. {gam7-7.27.4 → gam7-7.27.5}/wiki/List.md +0 -0
  171. {gam7-7.27.4 → gam7-7.27.5}/wiki/Meta-Commands-and-File-Redirection.md +0 -0
  172. {gam7-7.27.4 → gam7-7.27.5}/wiki/Mobile-Devices.md +0 -0
  173. {gam7-7.27.4 → gam7-7.27.5}/wiki/Organizational-Units.md +0 -0
  174. {gam7-7.27.4 → gam7-7.27.5}/wiki/Other-Resources.md +0 -0
  175. {gam7-7.27.4 → gam7-7.27.5}/wiki/Permission-Matches.md +0 -0
  176. {gam7-7.27.4 → gam7-7.27.5}/wiki/Python-Regular-Expressions.md +0 -0
  177. {gam7-7.27.4 → gam7-7.27.5}/wiki/README.md +0 -0
  178. {gam7-7.27.4 → gam7-7.27.5}/wiki/Rclone.md +0 -0
  179. {gam7-7.27.4 → gam7-7.27.5}/wiki/Reseller.md +0 -0
  180. {gam7-7.27.4 → gam7-7.27.5}/wiki/Resources.md +0 -0
  181. {gam7-7.27.4 → gam7-7.27.5}/wiki/Running-GAM7-securely-on-a-Google-Compute-Engine.md +0 -0
  182. {gam7-7.27.4 → gam7-7.27.5}/wiki/SSL-Root-CA-Certificates.md +0 -0
  183. {gam7-7.27.4 → gam7-7.27.5}/wiki/Schemas.md +0 -0
  184. {gam7-7.27.4 → gam7-7.27.5}/wiki/Scripts.md +0 -0
  185. {gam7-7.27.4 → gam7-7.27.5}/wiki/Send-Email.md +0 -0
  186. {gam7-7.27.4 → gam7-7.27.5}/wiki/Shared-Drives.md +0 -0
  187. {gam7-7.27.4 → gam7-7.27.5}/wiki/Sites.md +0 -0
  188. {gam7-7.27.4 → gam7-7.27.5}/wiki/Tag-Replace.md +0 -0
  189. {gam7-7.27.4 → gam7-7.27.5}/wiki/Todrive.md +0 -0
  190. {gam7-7.27.4 → gam7-7.27.5}/wiki/Unmanaged-Accounts.md +0 -0
  191. {gam7-7.27.4 → gam7-7.27.5}/wiki/Upgrade-Benefits.md +0 -0
  192. {gam7-7.27.4 → gam7-7.27.5}/wiki/Users-Analytics-Admin.md +0 -0
  193. {gam7-7.27.4 → gam7-7.27.5}/wiki/Users-Application-Specific-Passwords.md +0 -0
  194. {gam7-7.27.4 → gam7-7.27.5}/wiki/Users-Backup-Verification-Codes.md +0 -0
  195. {gam7-7.27.4 → gam7-7.27.5}/wiki/Users-Calendars-Access.md +0 -0
  196. {gam7-7.27.4 → gam7-7.27.5}/wiki/Users-Calendars-Events.md +0 -0
  197. {gam7-7.27.4 → gam7-7.27.5}/wiki/Users-Calendars.md +0 -0
  198. {gam7-7.27.4 → gam7-7.27.5}/wiki/Users-Chat.md +0 -0
  199. {gam7-7.27.4 → gam7-7.27.5}/wiki/Users-Classification-Labels.md +0 -0
  200. {gam7-7.27.4 → gam7-7.27.5}/wiki/Users-Classroom-Profile.md +0 -0
  201. {gam7-7.27.4 → gam7-7.27.5}/wiki/Users-Contacts-Delegates.md +0 -0
  202. {gam7-7.27.4 → gam7-7.27.5}/wiki/Users-Contacts.md +0 -0
  203. {gam7-7.27.4 → gam7-7.27.5}/wiki/Users-Deprovision.md +0 -0
  204. {gam7-7.27.4 → gam7-7.27.5}/wiki/Users-Drive-Activity-Settings.md +0 -0
  205. {gam7-7.27.4 → gam7-7.27.5}/wiki/Users-Drive-Cleanup.md +0 -0
  206. {gam7-7.27.4 → gam7-7.27.5}/wiki/Users-Drive-Comments.md +0 -0
  207. {gam7-7.27.4 → gam7-7.27.5}/wiki/Users-Drive-Copy-Move.md +0 -0
  208. {gam7-7.27.4 → gam7-7.27.5}/wiki/Users-Drive-Files-Display.md +0 -0
  209. {gam7-7.27.4 → gam7-7.27.5}/wiki/Users-Drive-Files-Manage.md +0 -0
  210. {gam7-7.27.4 → gam7-7.27.5}/wiki/Users-Drive-Orphans.md +0 -0
  211. {gam7-7.27.4 → gam7-7.27.5}/wiki/Users-Drive-Ownership.md +0 -0
  212. {gam7-7.27.4 → gam7-7.27.5}/wiki/Users-Drive-Permissions.md +0 -0
  213. {gam7-7.27.4 → gam7-7.27.5}/wiki/Users-Drive-Query.md +0 -0
  214. {gam7-7.27.4 → gam7-7.27.5}/wiki/Users-Drive-Revisions.md +0 -0
  215. {gam7-7.27.4 → gam7-7.27.5}/wiki/Users-Drive-Shortcuts.md +0 -0
  216. {gam7-7.27.4 → gam7-7.27.5}/wiki/Users-Drive-Transfer.md +0 -0
  217. {gam7-7.27.4 → gam7-7.27.5}/wiki/Users-Forms.md +0 -0
  218. {gam7-7.27.4 → gam7-7.27.5}/wiki/Users-Gmail-CSE.md +0 -0
  219. {gam7-7.27.4 → gam7-7.27.5}/wiki/Users-Gmail-Delegates.md +0 -0
  220. {gam7-7.27.4 → gam7-7.27.5}/wiki/Users-Gmail-Filters.md +0 -0
  221. {gam7-7.27.4 → gam7-7.27.5}/wiki/Users-Gmail-Forwarding.md +0 -0
  222. {gam7-7.27.4 → gam7-7.27.5}/wiki/Users-Gmail-Labels.md +0 -0
  223. {gam7-7.27.4 → gam7-7.27.5}/wiki/Users-Gmail-Messages-Threads.md +0 -0
  224. {gam7-7.27.4 → gam7-7.27.5}/wiki/Users-Gmail-Profile.md +0 -0
  225. {gam7-7.27.4 → gam7-7.27.5}/wiki/Users-Gmail-S-MIME.md +0 -0
  226. {gam7-7.27.4 → gam7-7.27.5}/wiki/Users-Gmail-Send-As-Signature-Vacation.md +0 -0
  227. {gam7-7.27.4 → gam7-7.27.5}/wiki/Users-Gmail-Settings.md +0 -0
  228. {gam7-7.27.4 → gam7-7.27.5}/wiki/Users-Group-Membership.md +0 -0
  229. {gam7-7.27.4 → gam7-7.27.5}/wiki/Users-Keep-Notes.md +0 -0
  230. {gam7-7.27.4 → gam7-7.27.5}/wiki/Users-Looker-Studio.md +0 -0
  231. {gam7-7.27.4 → gam7-7.27.5}/wiki/Users-Meet.md +0 -0
  232. {gam7-7.27.4 → gam7-7.27.5}/wiki/Users-People-Contacts-Profiles.md +0 -0
  233. {gam7-7.27.4 → gam7-7.27.5}/wiki/Users-Photo.md +0 -0
  234. {gam7-7.27.4 → gam7-7.27.5}/wiki/Users-Profile-Photo.md +0 -0
  235. {gam7-7.27.4 → gam7-7.27.5}/wiki/Users-Profile-Sharing.md +0 -0
  236. {gam7-7.27.4 → gam7-7.27.5}/wiki/Users-Shared-Drives.md +0 -0
  237. {gam7-7.27.4 → gam7-7.27.5}/wiki/Users-Signout-Turnoff2SV.md +0 -0
  238. {gam7-7.27.4 → gam7-7.27.5}/wiki/Users-Spreadsheets.md +0 -0
  239. {gam7-7.27.4 → gam7-7.27.5}/wiki/Users-Tag-Manager.md +0 -0
  240. {gam7-7.27.4 → gam7-7.27.5}/wiki/Users-Tasks.md +0 -0
  241. {gam7-7.27.4 → gam7-7.27.5}/wiki/Users-Tokens.md +0 -0
  242. {gam7-7.27.4 → gam7-7.27.5}/wiki/Users-Web-Resources-and-Sites.md +0 -0
  243. {gam7-7.27.4 → gam7-7.27.5}/wiki/Users-YouTube.md +0 -0
  244. {gam7-7.27.4 → gam7-7.27.5}/wiki/Users.md +0 -0
  245. {gam7-7.27.4 → gam7-7.27.5}/wiki/Using-GAM7-with-a-YubiKey.md +0 -0
  246. {gam7-7.27.4 → gam7-7.27.5}/wiki/Using-GAM7-with-a-delegated-admin-service-account.md +0 -0
  247. {gam7-7.27.4 → gam7-7.27.5}/wiki/Using-GAM7-with-keyless-authentication-Workload-Identity-Federation.md +0 -0
  248. {gam7-7.27.4 → gam7-7.27.5}/wiki/Vault-Takeout.md +0 -0
  249. {gam7-7.27.4 → gam7-7.27.5}/wiki/Verifying-a-GAM7-Build-is-Legitimate-and-Official.md +0 -0
  250. {gam7-7.27.4 → gam7-7.27.5}/wiki/_Sidebar.md +0 -0
  251. {gam7-7.27.4 → gam7-7.27.5}/wiki/gam.cfg.md +0 -0
  252. {gam7-7.27.4 → gam7-7.27.5}/wiki/legacy/l-AdminSettingsExamples.md +0 -0
  253. {gam7-7.27.4 → gam7-7.27.5}/wiki/legacy/l-Android-Installation.md +0 -0
  254. {gam7-7.27.4 → gam7-7.27.5}/wiki/legacy/l-BulkOperations.md +0 -0
  255. {gam7-7.27.4 → gam7-7.27.5}/wiki/legacy/l-CalendarExamples.md +0 -0
  256. {gam7-7.27.4 → gam7-7.27.5}/wiki/legacy/l-Chat-Bot.md +0 -0
  257. {gam7-7.27.4 → gam7-7.27.5}/wiki/legacy/l-Chrome-Browser-Management.md +0 -0
  258. {gam7-7.27.4 → gam7-7.27.5}/wiki/legacy/l-Chrome-OS-Installation.md +0 -0
  259. {gam7-7.27.4 → gam7-7.27.5}/wiki/legacy/l-Chrome-Policy-Settings.md +0 -0
  260. {gam7-7.27.4 → gam7-7.27.5}/wiki/legacy/l-Cloud-Identity-Groups.md +0 -0
  261. {gam7-7.27.4 → gam7-7.27.5}/wiki/legacy/l-Command-Reference-Calendar-Resources.md +0 -0
  262. {gam7-7.27.4 → gam7-7.27.5}/wiki/legacy/l-Command-Reference-Calendars.md +0 -0
  263. {gam7-7.27.4 → gam7-7.27.5}/wiki/legacy/l-Command-Reference-Definitions.md +0 -0
  264. {gam7-7.27.4 → gam7-7.27.5}/wiki/legacy/l-Command-Reference-Drive.md +0 -0
  265. {gam7-7.27.4 → gam7-7.27.5}/wiki/legacy/l-Command-Reference-Email.md +0 -0
  266. {gam7-7.27.4 → gam7-7.27.5}/wiki/legacy/l-Command-Reference-Group-Attributes.md +0 -0
  267. {gam7-7.27.4 → gam7-7.27.5}/wiki/legacy/l-Command-Reference-Groups.md +0 -0
  268. {gam7-7.27.4 → gam7-7.27.5}/wiki/legacy/l-Command-Reference-Users.md +0 -0
  269. {gam7-7.27.4 → gam7-7.27.5}/wiki/legacy/l-Context-Aware-Access-Levels.md +0 -0
  270. {gam7-7.27.4 → gam7-7.27.5}/wiki/legacy/l-Creating-client_secrets.json-and-oauth2service.json.md +0 -0
  271. {gam7-7.27.4 → gam7-7.27.5}/wiki/legacy/l-CreatingClientSecretsFile.md +0 -0
  272. {gam7-7.27.4 → gam7-7.27.5}/wiki/legacy/l-Custom-Schemas.md +0 -0
  273. {gam7-7.27.4 → gam7-7.27.5}/wiki/legacy/l-Data-Transfers.md +0 -0
  274. {gam7-7.27.4 → gam7-7.27.5}/wiki/legacy/l-DomainVerification.md +0 -0
  275. {gam7-7.27.4 → gam7-7.27.5}/wiki/legacy/l-ExamplesAccountAuditing.md +0 -0
  276. {gam7-7.27.4 → gam7-7.27.5}/wiki/legacy/l-ExamplesCSV.md +0 -0
  277. {gam7-7.27.4 → gam7-7.27.5}/wiki/legacy/l-ExamplesEmailSettings.md +0 -0
  278. {gam7-7.27.4 → gam7-7.27.5}/wiki/legacy/l-ExamplesOrganizations.md +0 -0
  279. {gam7-7.27.4 → gam7-7.27.5}/wiki/legacy/l-GAM-Discussion-Group.md +0 -0
  280. {gam7-7.27.4 → gam7-7.27.5}/wiki/legacy/l-GAM-on-Android-and-Chrome-OS.md +0 -0
  281. {gam7-7.27.4 → gam7-7.27.5}/wiki/legacy/l-GAM-options-files.md +0 -0
  282. {gam7-7.27.4 → gam7-7.27.5}/wiki/legacy/l-GAM-with--minimal-GCP-rights.md +0 -0
  283. {gam7-7.27.4 → gam7-7.27.5}/wiki/legacy/l-GAM3CSVListings.md +0 -0
  284. {gam7-7.27.4 → gam7-7.27.5}/wiki/legacy/l-GAM3DirectoryCommands.md +0 -0
  285. {gam7-7.27.4 → gam7-7.27.5}/wiki/legacy/l-GAM3GroupSettings.md +0 -0
  286. {gam7-7.27.4 → gam7-7.27.5}/wiki/legacy/l-Google-Vault---Takeout-Commands.md +0 -0
  287. {gam7-7.27.4 → gam7-7.27.5}/wiki/legacy/l-GoogleDriveManagement.md +0 -0
  288. {gam7-7.27.4 → gam7-7.27.5}/wiki/legacy/l-Grouping-18-or-Older-Users.md +0 -0
  289. {gam7-7.27.4 → gam7-7.27.5}/wiki/legacy/l-Home.md +0 -0
  290. {gam7-7.27.4 → gam7-7.27.5}/wiki/legacy/l-How-to-upgrade-from-Standard-GAM.md +0 -0
  291. {gam7-7.27.4 → gam7-7.27.5}/wiki/legacy/l-Inbound-SSO-Settings.md +0 -0
  292. {gam7-7.27.4 → gam7-7.27.5}/wiki/legacy/l-LicenseExamples.md +0 -0
  293. {gam7-7.27.4 → gam7-7.27.5}/wiki/legacy/l-Managing-Admins.md +0 -0
  294. {gam7-7.27.4 → gam7-7.27.5}/wiki/legacy/l-Managing-CloudPrint-Printers.md +0 -0
  295. {gam7-7.27.4 → gam7-7.27.5}/wiki/legacy/l-Managing-Devices.md +0 -0
  296. {gam7-7.27.4 → gam7-7.27.5}/wiki/legacy/l-Managing-Google-Classroom.md +0 -0
  297. {gam7-7.27.4 → gam7-7.27.5}/wiki/legacy/l-OAuthKeyManagement.md +0 -0
  298. {gam7-7.27.4 → gam7-7.27.5}/wiki/legacy/l-Printers.md +0 -0
  299. {gam7-7.27.4 → gam7-7.27.5}/wiki/legacy/l-ResellerCommands.md +0 -0
  300. {gam7-7.27.4 → gam7-7.27.5}/wiki/legacy/l-SecurityExamples.md +0 -0
  301. {gam7-7.27.4 → gam7-7.27.5}/wiki/legacy/l-UnmanagedUsersExamples.md +0 -0
  302. {gam7-7.27.4 → gam7-7.27.5}/wiki/legacy/l-Using-GAM-with-a-delegated-admin-service-account-(DASA).md +0 -0
  303. {gam7-7.27.4 → gam7-7.27.5}/wiki/legacy/l-_Footer.md +0 -0
@@ -479,24 +479,16 @@ jobs:
479
479
  "${PYTHON}" -V
480
480
  "${PYTHON}" -c "import ssl; print(f'Using {ssl.OPENSSL_VERSION}')"
481
481
 
482
- - name: Upgrade pip, wheel, etc
483
- run: |
484
- curl $curl_retry -O https://bootstrap.pypa.io/get-pip.py
485
- "$PYTHON" get-pip.py
486
- "$PYTHON" -m pip install --upgrade pip
487
- "$PYTHON" -m pip install --upgrade wheel
488
- "$PYTHON" -m pip install --upgrade setuptools
489
- "$PYTHON" -m pip install --upgrade importlib-metadata
490
- "$PYTHON" -m pip install --upgrade setuptools-scm
491
- "$PYTHON" -m pip list
492
-
493
482
  - name: Create and use Python venv
494
483
  run: |
495
484
  cd "$GITHUB_WORKSPACE"
485
+ curl -o get-pip.py https://bootstrap.pypa.io/get-pip.py
486
+ "$PYTHON" get-pip.py
496
487
  "$PYTHON" -m venv venv
497
488
  if [[ "$RUNNER_OS" == "Windows" ]]; then
498
- # hack till pyscard has a wheel for win arm64
499
- "$PYTHON" -m pip install --upgrade --force-reinstall pyscard
489
+ # pyscard seems to build outside venv but not in it.
490
+ # build it so it's cached.
491
+ "$PYTHON" -m pip install --upgrade pyscard
500
492
  export PYTHON="${GITHUB_WORKSPACE}/venv/scripts/python.exe"
501
493
  else
502
494
  export PYTHON="${GITHUB_WORKSPACE}/venv/bin/python3"
@@ -507,6 +499,18 @@ jobs:
507
499
  echo "gam=${gam}" >> $GITHUB_ENV
508
500
  fi
509
501
 
502
+ - name: Upgrade pip, wheel, etc
503
+ run: |
504
+ curl $curl_retry -O https://bootstrap.pypa.io/get-pip.py
505
+ "$PYTHON" get-pip.py
506
+ "$PYTHON" -m pip install --upgrade pip
507
+ "$PYTHON" -m pip install --upgrade wheel
508
+ "$PYTHON" -m pip install --upgrade setuptools
509
+ "$PYTHON" -m pip install --upgrade importlib-metadata
510
+ "$PYTHON" -m pip install --upgrade setuptools-scm
511
+ "$PYTHON" -m pip install --upgrade packaging
512
+ "$PYTHON" -m pip list
513
+
510
514
  - name: Install pip requirements
511
515
  run: |
512
516
  echo "before anything..."
@@ -515,7 +519,10 @@ jobs:
515
519
  "$PYTHON" -m pip cache info
516
520
  echo "--list--"
517
521
  "$PYTHON" -m pip cache list
518
- "$PYTHON" -m pip install --upgrade ..[yubikey]
522
+ echo "--pip debug verbose--"
523
+ "$PYTHON" -m pip debug --verbose
524
+ echo "--------"
525
+ "$PYTHON" -m pip install -vvv --upgrade ..[yubikey]
519
526
  echo "after everything..."
520
527
  "$PYTHON" -m pip list
521
528
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: gam7
3
- Version: 7.27.4
3
+ Version: 7.27.5
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
@@ -3279,6 +3279,7 @@ gam print courses [todrive <ToDriveAttribute>*]
3279
3279
  [show all|students|teachers] [countsonly]
3280
3280
  [timefilter creationtime|updatetime] [start|starttime <Date>|<Time>] [end|endtime <Date>|<Time>]
3281
3281
  [fields <CourseFieldNameList>] [skipfields <CourseFieldNameList>]
3282
+ (addcsvdata <FieldName> <String>)*
3282
3283
  [formatjson [quotechar <Character>]]
3283
3284
  [showitemcountonly]
3284
3285
 
@@ -1,3 +1,11 @@
1
+ 7.27.05
2
+
3
+ Added option `addcsvdata <FieldName> <String>` to `gam print courses`
4
+ that adds additional columns of data to the CSV file output.
5
+
6
+ The following scope is no longer necessary: `Cloud Identity API - Groups Beta (Enables group locking/unlocking)`
7
+ as this scope `Cloud Identity API - Groups` now provides group locking/unlocking.
8
+
1
9
  7.27.04
2
10
 
3
11
  Added options to `gam <UserTypeEntity> create delegate` that support
@@ -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.27.04'
28
+ __version__ = '7.27.05'
29
29
  __license__ = 'Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0)'
30
30
 
31
31
  #pylint: disable=wrong-import-position
@@ -35921,7 +35921,7 @@ def doPrintShowGroupTree():
35921
35921
  # gam create cigroup <EmailAddress>
35922
35922
  # [copyfrom <GroupItem>] <GroupAttribute>
35923
35923
  # [makeowner] [alias|aliases <CIGroupAliasList>]
35924
- # [security|makesecuritygroup]
35924
+ # [security|makesecuritygroup] [locked]
35925
35925
  # [dynamic <QueryDynamicGroup>]
35926
35926
  def doCreateCIGroup():
35927
35927
  doCreateGroup(ciGroupsAPI=True)
@@ -36105,7 +36105,6 @@ def doUpdateCIGroups():
36105
36105
 
36106
36106
  cd = buildGAPIObject(API.DIRECTORY)
36107
36107
  ci = buildGAPIObject(API.CLOUDIDENTITY_GROUPS)
36108
- cib = None
36109
36108
  entityType = Ent.CLOUD_IDENTITY_GROUP
36110
36109
  csvPF = None
36111
36110
  getBeforeUpdate = preview = False
@@ -36214,7 +36213,6 @@ def doUpdateCIGroups():
36214
36213
  _, name, _ = convertGroupEmailToCloudID(ci, group, i, count)
36215
36214
  if not name:
36216
36215
  continue
36217
- cipl = ci
36218
36216
  twoUpdates = False
36219
36217
  if 'labels' in ci_body or lockGroup is not None:
36220
36218
  try:
@@ -36243,20 +36241,16 @@ def doUpdateCIGroups():
36243
36241
  else:
36244
36242
  if CIGROUP_LOCKED_LABEL in ci_body['labels']:
36245
36243
  ci_body['labels'].pop(CIGROUP_LOCKED_LABEL)
36246
- if CIGROUP_LOCKED_LABEL in ci_body['labels']:
36247
- if cib is None:
36248
- cib = buildGAPIObject(API.CLOUDIDENTITY_GROUPS_BETA)
36249
- cipl = cib
36250
36244
  if ci_body:
36251
36245
  try:
36252
36246
  if twoUpdates:
36253
36247
  ci_body['labels'].pop(CIGROUP_LOCKED_LABEL)
36254
- callGAPI(cipl.groups(), 'patch',
36248
+ callGAPI(ci.groups(), 'patch',
36255
36249
  throwReasons=GAPI.CIGROUP_UPDATE_THROW_REASONS,
36256
36250
  retryReasons=GAPI.CIGROUP_RETRY_REASONS,
36257
36251
  name=name, body=ci_body, updateMask=','.join(list(ci_body.keys())))
36258
36252
  ci_body['labels'][CIGROUP_LOCKED_LABEL] = ''
36259
- callGAPI(cipl.groups(), 'patch',
36253
+ callGAPI(ci.groups(), 'patch',
36260
36254
  throwReasons=GAPI.CIGROUP_UPDATE_THROW_REASONS,
36261
36255
  retryReasons=GAPI.CIGROUP_RETRY_REASONS,
36262
36256
  name=name, body=ci_body, updateMask=','.join(list(ci_body.keys())))
@@ -37240,20 +37234,17 @@ def doPrintCIGroups():
37240
37234
  else:
37241
37235
  getFullFieldsList = list(CIGROUP_FULL_FIELDS)
37242
37236
  getFullFields = ','.join(getFullFieldsList)#
37243
- cipl = ci
37244
37237
  if query:
37245
37238
  method = 'search'
37246
37239
  if 'parent' not in query:
37247
37240
  query += f" && parent == '{parent}'"
37248
37241
  kwargs = {'query': query}
37249
- if CIGROUP_LOCKED_LABEL in query:
37250
- cipl = buildGAPIObject(API.CLOUDIDENTITY_GROUPS_BETA)
37251
37242
  else:
37252
37243
  method = 'list'
37253
37244
  kwargs = {'parent': parent}
37254
37245
  printGettingAllAccountEntities(Ent.CLOUD_IDENTITY_GROUP, query)
37255
37246
  try:
37256
- entityList = callGAPIpages(cipl.groups(), method, 'groups',
37247
+ entityList = callGAPIpages(ci.groups(), method, 'groups',
37257
37248
  pageMessage=getPageMessage(showFirstLastItems=True), messageAttribute=['groupKey', 'id'],
37258
37249
  throwReasons=GAPI.CIGROUP_LIST_THROW_REASONS, retryReasons=GAPI.CIGROUP_RETRY_REASONS,
37259
37250
  view='FULL', fields=fieldsnp, pageSize=pageSize, **kwargs)
@@ -49166,6 +49157,7 @@ def _getCoursesInfo(croom, courseSelectionParameters, courseShowProperties, getO
49166
49157
  # [show none|all|students|teachers] [countsonly]
49167
49158
  # [fields <CourseFieldNameList>] [skipfields <CourseFieldNameList>]
49168
49159
  # [timefilter creationtime|updatetime] [start|starttime <Date>|<Time>] [end|endtime <Date>|<Time>]
49160
+ # (addcsvdata <FieldName> <String>)*
49169
49161
  # [showitemcountonly] [formatjson [quotechar <Character>]]
49170
49162
  def doPrintCourses():
49171
49163
  def _saveParticipants(course, participants, role, rtitles):
@@ -49209,6 +49201,7 @@ def doPrintCourses():
49209
49201
  delimiter = GC.Values[GC.CSV_OUTPUT_FIELD_DELIMITER]
49210
49202
  showItemCountOnly = False
49211
49203
  useOwnerAccess = GC.Values[GC.USE_COURSE_OWNER_ACCESS]
49204
+ addCSVData = {}
49212
49205
  while Cmd.ArgumentsRemaining():
49213
49206
  myarg = getArgument()
49214
49207
  if myarg == 'todrive':
@@ -49223,6 +49216,9 @@ def doPrintCourses():
49223
49216
  pass
49224
49217
  elif myarg == 'showitemcountonly':
49225
49218
  showItemCountOnly = True
49219
+ elif myarg == 'addcsvdata':
49220
+ k = getString(Cmd.OB_STRING)
49221
+ addCSVData[k] = getString(Cmd.OB_STRING, minLen=0)
49226
49222
  else:
49227
49223
  FJQC.GetFormatJSONQuoteChar(myarg, True)
49228
49224
  applyCourseItemFilter = _setApplyCourseItemFilter(courseItemFilter, None)
@@ -49234,6 +49230,11 @@ def doPrintCourses():
49234
49230
  if showItemCountOnly:
49235
49231
  writeStdout('0\n')
49236
49232
  return
49233
+ if addCSVData:
49234
+ csvPF.AddTitles(sorted(addCSVData.keys()))
49235
+ if FJQC.formatJSON:
49236
+ csvPF.AddJSONTitles(sorted(addCSVData.keys()))
49237
+ csvPF.MoveJSONTitlesToEnd(['JSON'])
49237
49238
  if courseShowProperties['aliases']:
49238
49239
  if FJQC.formatJSON:
49239
49240
  csvPF.AddJSONTitles('JSON-aliases')
@@ -49291,11 +49292,15 @@ def doPrintCourses():
49291
49292
  if courseShowProperties['members'] != 'teachers':
49292
49293
  _saveParticipants(course, students, 'students', stitles)
49293
49294
  row = flattenJSON(course, timeObjects=COURSE_TIME_OBJECTS, noLenObjects=COURSE_NOLEN_OBJECTS)
49295
+ if addCSVData:
49296
+ row.update(addCSVData)
49294
49297
  if not FJQC.formatJSON:
49295
49298
  csvPF.WriteRowTitles(row)
49296
49299
  elif csvPF.CheckRowTitles(row):
49297
49300
  row = {'id': courseId, 'JSON': json.dumps(cleanJSON(course, timeObjects=COURSE_TIME_OBJECTS),
49298
49301
  ensure_ascii=False, sort_keys=True)}
49302
+ if addCSVData:
49303
+ row.update(addCSVData)
49299
49304
  if courseShowProperties['aliases']:
49300
49305
  row['JSON-aliases'] = json.dumps(list(aliases))
49301
49306
  if courseShowProperties['members'] != 'none':
@@ -46,7 +46,6 @@ CLASSROOM = 'classroom'
46
46
  CLOUDCHANNEL = 'cloudchannel'
47
47
  CLOUDIDENTITY_DEVICES = 'cloudidentitydevices'
48
48
  CLOUDIDENTITY_GROUPS = 'cloudidentitygroups'
49
- CLOUDIDENTITY_GROUPS_BETA = 'cloudidentitygroupsbeta'
50
49
  CLOUDIDENTITY_INBOUND_SSO = 'cloudidentityinboundsso'
51
50
  CLOUDIDENTITY_ORGUNITS = 'cloudidentityorgunits'
52
51
  CLOUDIDENTITY_ORGUNITS_BETA = 'cloudidentityorgunitsbeta'
@@ -242,7 +241,6 @@ _INFO = {
242
241
  CLOUDCHANNEL: {'name': 'Cloud Channel API', 'version': 'v1', 'v2discovery': True},
243
242
  CLOUDIDENTITY_DEVICES: {'name': 'Cloud Identity API - Devices', 'version': 'v1', 'v2discovery': True, 'mappedAPI': 'cloudidentity'},
244
243
  CLOUDIDENTITY_GROUPS: {'name': 'Cloud Identity API - Groups', 'version': 'v1', 'v2discovery': True, 'mappedAPI': 'cloudidentity'},
245
- CLOUDIDENTITY_GROUPS_BETA: {'name': 'Cloud Identity API - Groups Beta', 'version': 'v1beta1', 'v2discovery': True, 'mappedAPI': 'cloudidentity'},
246
244
  CLOUDIDENTITY_INBOUND_SSO: {'name': 'Cloud Identity API - Inbound SSO Settings', 'version': 'v1', 'v2discovery': True, 'mappedAPI': 'cloudidentity'},
247
245
  CLOUDIDENTITY_ORGUNITS: {'name': 'Cloud Identity API - OrgUnits', 'version': 'v1', 'v2discovery': True, 'mappedAPI': 'cloudidentity'},
248
246
  CLOUDIDENTITY_ORGUNITS_BETA: {'name': 'Cloud Identity API - OrgUnits Beta', 'version': 'v1beta1', 'v2discovery': True, 'mappedAPI': 'cloudidentity'},
@@ -387,10 +385,6 @@ _CLIENT_SCOPES = [
387
385
  'api': CLOUDIDENTITY_GROUPS,
388
386
  'subscopes': READONLY,
389
387
  'scope': 'https://www.googleapis.com/auth/cloud-identity.groups'},
390
- {'name': 'Cloud Identity API - Groups Beta (Enables group locking/unlocking)',
391
- 'api': CLOUDIDENTITY_GROUPS_BETA,
392
- 'subscopes': [],
393
- 'scope': 'https://www.googleapis.com/auth/cloud-identity.groups'},
394
388
  {'name': 'Cloud Identity API - Inbound SSO Settings',
395
389
  'api': CLOUDIDENTITY_INBOUND_SSO,
396
390
  'subscopes': READONLY,
@@ -441,8 +441,10 @@ gam print courses [todrive <ToDriveAttribute>*]
441
441
  [owneremail] [owneremailmatchpattern <REMatchPattern>]
442
442
  [alias|aliases|aliasesincolumns [delimiter <Character>]]
443
443
  [show all|students|teachers] [countsonly]
444
- [fields <CourseFieldNameList>] [skipfields <CourseFieldNameList>] [formatjson [quotechar <Character>]]
445
444
  [timefilter creationtime|updatetime] [start|starttime <Date>|<Time>] [end|endtime <Date>|<Time>]
445
+ [fields <CourseFieldNameList>] [skipfields <CourseFieldNameList>] [formatjson [quotechar <Character>]]
446
+ (addcsvdata <FieldName> <String>)*
447
+ [formatjson [quotechar <Character>]]
446
448
  ```
447
449
  By default, the `print courses` command displays information about all courses.
448
450
 
@@ -477,6 +479,7 @@ By default, all basic course fields are displayed; use the following options to
477
479
  * `countsonly` - Eliminates the student/teacher profile information and outputs only the student/teacher counts.
478
480
  * `fields <CourseFieldNameList>` - Select specific basic fields to display.
479
481
  * `skipfields <CourseFieldNameList>` - Select specific basic fields to eliminate from display; typically used with `coursematerialsets`.
482
+ * `addcsvdata <FieldName> <String>` - Add additional columns of data from the command line to the output
480
483
 
481
484
  By default, Gam displays the information as columns of fields; the following option causes the output to be in JSON format,
482
485
  * `formatjson` - Display the fields in JSON format.
@@ -11,7 +11,7 @@
11
11
 
12
12
  ## API documentation
13
13
  * [Cloud Identity Groups Overview](https://cloud.google.com/identity/docs/groups)
14
- * [Create and Manage Groups uning API](https://support.google.com/a/answer/10427204)
14
+ * [Create and Manage Groups using API](https://support.google.com/a/answer/10427204)
15
15
  * [Cloud Identity Groups API - Groups](https://cloud.google.com/identity/docs/reference/rest/v1/groups)
16
16
  * [Restrict Group Membership](https://support.google.com/a/answer/11192679)
17
17
  * [Lock Groups Beta](https://workspaceupdates.googleblog.com/2024/12/locked-groups-open-beta.html)
@@ -26,15 +26,6 @@
26
26
 
27
27
  ## Notes
28
28
 
29
- In version 7.02.01 options `locked` and `unlocked` wre added to `gam update cigroups` that allow locking groups.
30
-
31
- * See: https://workspaceupdates.googleblog.com/2024/12/locked-groups-open-beta.html
32
-
33
- You'll have to do a `gam oauth create` and enable the following scope to use these options:
34
- ```
35
- [*] 22) Cloud Identity Groups API Beta (Enables group locking/unlocking)
36
- ```
37
-
38
29
  In the Admin Directory API a group has the following characteristics:
39
30
  * `id` - The unique ID of a group
40
31
  * `email` - The group's email address
@@ -10,6 +10,14 @@ 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.27.05
14
+
15
+ Added option `addcsvdata <FieldName> <String>` to `gam print courses`
16
+ that adds additional columns of data to the CSV file output.
17
+
18
+ The following scope is no longer necessary: `Cloud Identity API - Groups Beta (Enables group locking/unlocking)`
19
+ as this scope `Cloud Identity API - Groups` now provides group locking/unlocking.
20
+
13
21
  ### 7.27.04
14
22
 
15
23
  Added options to `gam <UserTypeEntity> create delegate` that support
@@ -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.27.04 - https://github.com/GAM-team/GAM - pyinstaller
255
+ GAM 7.27.05 - https://github.com/GAM-team/GAM - pyinstaller
256
256
  GAM Team <google-apps-manager@googlegroups.com>
257
257
  Python 3.14.0 64-bit final
258
258
  macOS Tahoe 26.0.1 x86_64
@@ -990,7 +990,7 @@ writes the credentials into the file oauth2.txt.
990
990
  C:\>del C:\GAMConfig\oauth2.txt
991
991
  C:\>gam version
992
992
  WARNING: Config File: C:\GAMConfig\gam.cfg, Section: DEFAULT, Item: oauth2_txt, Value: C:\GAMConfig\oauth2.txt, Not Found
993
- GAM 7.27.04 - https://github.com/GAM-team/GAM - pythonsource
993
+ GAM 7.27.05 - https://github.com/GAM-team/GAM - pythonsource
994
994
  GAM Team <google-apps-manager@googlegroups.com>
995
995
  Python 3.14.0 64-bit final
996
996
  Windows-10-10.0.17134 AMD64
@@ -12,6 +12,10 @@
12
12
  - [User reports](#user-reports)
13
13
 
14
14
  ## API documentation
15
+ Changes starting 2025-10-29.
16
+
17
+ * [Reports API - Admin log event changes]https://support.google.com/a/answer/16601511
18
+
15
19
  These pages show event/parameter names; scroll down in the left column to: Reports.
16
20
 
17
21
  * [Reports API - Activities](https://developers.google.com/admin-sdk/reports/v1/reference/activities)
@@ -3,7 +3,7 @@
3
3
  Print the current version of Gam with details
4
4
  ```
5
5
  gam version
6
- GAM 7.27.04 - https://github.com/GAM-team/GAM - pyinstaller
6
+ GAM 7.27.05 - https://github.com/GAM-team/GAM - pyinstaller
7
7
  GAM Team <google-apps-manager@googlegroups.com>
8
8
  Python 3.14.0 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.27.04 - https://github.com/GAM-team/GAM - pyinstaller
18
+ GAM 7.27.05 - https://github.com/GAM-team/GAM - pyinstaller
19
19
  GAM Team <google-apps-manager@googlegroups.com>
20
20
  Python 3.14.0 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.27.04 - https://github.com/GAM-team/GAM - pyinstaller
30
+ GAM 7.27.05 - https://github.com/GAM-team/GAM - pyinstaller
31
31
  GAM Team <google-apps-manager@googlegroups.com>
32
32
  Python 3.14.0 64-bit final
33
33
  macOS Tahoe 26.0.1 x86_64
@@ -68,7 +68,7 @@ MacOS High Sierra 10.13.6 x86_64
68
68
  Path: /Users/Admin/bin/gam7
69
69
  Version Check:
70
70
  Current: 5.35.08
71
- Latest: 7.27.04
71
+ Latest: 7.27.05
72
72
  echo $?
73
73
  1
74
74
  ```
@@ -76,7 +76,7 @@ echo $?
76
76
  Print the current version number without details
77
77
  ```
78
78
  gam version simple
79
- 7.27.04
79
+ 7.27.05
80
80
  ```
81
81
  In Linux/MacOS you can do:
82
82
  ```
@@ -86,7 +86,7 @@ echo $VER
86
86
  Print the current version of Gam and address of this Wiki
87
87
  ```
88
88
  gam help
89
- GAM 7.27.04 - https://github.com/GAM-team/GAM
89
+ GAM 7.27.05 - https://github.com/GAM-team/GAM
90
90
  GAM Team <google-apps-manager@googlegroups.com>
91
91
  Python 3.14.0 64-bit final
92
92
  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