gam7 7.22.5__tar.gz → 7.22.6__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.22.5 → gam7-7.22.6}/PKG-INFO +1 -1
  2. {gam7-7.22.5 → gam7-7.22.6}/src/GamCommands.txt +30 -5
  3. {gam7-7.22.5 → gam7-7.22.6}/src/GamUpdate.txt +35 -0
  4. {gam7-7.22.5 → gam7-7.22.6}/src/gam/__init__.py +133 -29
  5. {gam7-7.22.5 → gam7-7.22.6}/src/gam/gamlib/glclargs.py +1 -0
  6. {gam7-7.22.5 → gam7-7.22.6}/wiki/GamUpdates.md +16 -1
  7. {gam7-7.22.5 → gam7-7.22.6}/wiki/How-to-Upgrade-Legacy-GAM-to-GAM7.md +1 -1
  8. {gam7-7.22.5 → gam7-7.22.6}/wiki/Users-Drive-Permissions.md +1 -0
  9. {gam7-7.22.5 → gam7-7.22.6}/wiki/Vault-Takeout.md +25 -11
  10. {gam7-7.22.5 → gam7-7.22.6}/wiki/Version-and-Help.md +3 -3
  11. {gam7-7.22.5 → gam7-7.22.6}/.github/ISSUE_TEMPLATE/aa-question.md +0 -0
  12. {gam7-7.22.5 → gam7-7.22.6}/.github/ISSUE_TEMPLATE/za-bug-report.md +0 -0
  13. {gam7-7.22.5 → gam7-7.22.6}/.github/ISSUE_TEMPLATE/zz-feature-request.md +0 -0
  14. {gam7-7.22.5 → gam7-7.22.6}/.github/ISSUE_TEMPLATE.txt +0 -0
  15. {gam7-7.22.5 → gam7-7.22.6}/.github/actions/decrypt.sh +0 -0
  16. {gam7-7.22.5 → gam7-7.22.6}/.github/actions/entitlements.plist +0 -0
  17. {gam7-7.22.5 → gam7-7.22.6}/.github/actions/package_exclusions.txt +0 -0
  18. {gam7-7.22.5 → gam7-7.22.6}/.github/stale.yml +0 -0
  19. {gam7-7.22.5 → gam7-7.22.6}/.github/workflows/build.yml +0 -0
  20. {gam7-7.22.5 → gam7-7.22.6}/.github/workflows/codeql-analysis.yml +0 -0
  21. {gam7-7.22.5 → gam7-7.22.6}/.github/workflows/get-cacerts.yml +0 -0
  22. {gam7-7.22.5 → gam7-7.22.6}/.github/workflows/pushwiki.yml +0 -0
  23. {gam7-7.22.5 → gam7-7.22.6}/.github/workflows/pypi.yml +0 -0
  24. {gam7-7.22.5 → gam7-7.22.6}/LICENSE +0 -0
  25. {gam7-7.22.5 → gam7-7.22.6}/README.md +0 -0
  26. {gam7-7.22.5 → gam7-7.22.6}/pyproject.toml +0 -0
  27. {gam7-7.22.5 → gam7-7.22.6}/src/.gitignore +0 -0
  28. {gam7-7.22.5 → gam7-7.22.6}/src/LICENSE +0 -0
  29. {gam7-7.22.5 → gam7-7.22.6}/src/README.md +0 -0
  30. {gam7-7.22.5 → gam7-7.22.6}/src/callgam.py +0 -0
  31. {gam7-7.22.5 → gam7-7.22.6}/src/gam/__main__.py +0 -0
  32. {gam7-7.22.5 → gam7-7.22.6}/src/gam/atom/__init__.py +0 -0
  33. {gam7-7.22.5 → gam7-7.22.6}/src/gam/atom/auth.py +0 -0
  34. {gam7-7.22.5 → gam7-7.22.6}/src/gam/atom/client.py +0 -0
  35. {gam7-7.22.5 → gam7-7.22.6}/src/gam/atom/core.py +0 -0
  36. {gam7-7.22.5 → gam7-7.22.6}/src/gam/atom/data.py +0 -0
  37. {gam7-7.22.5 → gam7-7.22.6}/src/gam/atom/http.py +0 -0
  38. {gam7-7.22.5 → gam7-7.22.6}/src/gam/atom/http_core.py +0 -0
  39. {gam7-7.22.5 → gam7-7.22.6}/src/gam/atom/http_interface.py +0 -0
  40. {gam7-7.22.5 → gam7-7.22.6}/src/gam/atom/mock_http.py +0 -0
  41. {gam7-7.22.5 → gam7-7.22.6}/src/gam/atom/mock_http_core.py +0 -0
  42. {gam7-7.22.5 → gam7-7.22.6}/src/gam/atom/mock_service.py +0 -0
  43. {gam7-7.22.5 → gam7-7.22.6}/src/gam/atom/service.py +0 -0
  44. {gam7-7.22.5 → gam7-7.22.6}/src/gam/atom/token_store.py +0 -0
  45. {gam7-7.22.5 → gam7-7.22.6}/src/gam/atom/url.py +0 -0
  46. {gam7-7.22.5 → gam7-7.22.6}/src/gam/cacerts.pem +0 -0
  47. {gam7-7.22.5 → gam7-7.22.6}/src/gam/cbcm-v1.1beta1.json +0 -0
  48. {gam7-7.22.5 → gam7-7.22.6}/src/gam/contactdelegation-v1.json +0 -0
  49. {gam7-7.22.5 → gam7-7.22.6}/src/gam/datastudio-v1.json +0 -0
  50. {gam7-7.22.5 → gam7-7.22.6}/src/gam/gamlib/__init__.py +0 -0
  51. {gam7-7.22.5 → gam7-7.22.6}/src/gam/gamlib/glaction.py +0 -0
  52. {gam7-7.22.5 → gam7-7.22.6}/src/gam/gamlib/glapi.py +0 -0
  53. {gam7-7.22.5 → gam7-7.22.6}/src/gam/gamlib/glcfg.py +0 -0
  54. {gam7-7.22.5 → gam7-7.22.6}/src/gam/gamlib/glentity.py +0 -0
  55. {gam7-7.22.5 → gam7-7.22.6}/src/gam/gamlib/glgapi.py +0 -0
  56. {gam7-7.22.5 → gam7-7.22.6}/src/gam/gamlib/glgdata.py +0 -0
  57. {gam7-7.22.5 → gam7-7.22.6}/src/gam/gamlib/glglobals.py +0 -0
  58. {gam7-7.22.5 → gam7-7.22.6}/src/gam/gamlib/glindent.py +0 -0
  59. {gam7-7.22.5 → gam7-7.22.6}/src/gam/gamlib/glmsgs.py +0 -0
  60. {gam7-7.22.5 → gam7-7.22.6}/src/gam/gamlib/glskus.py +0 -0
  61. {gam7-7.22.5 → gam7-7.22.6}/src/gam/gamlib/gluprop.py +0 -0
  62. {gam7-7.22.5 → gam7-7.22.6}/src/gam/gamlib/glverlibs.py +0 -0
  63. {gam7-7.22.5 → gam7-7.22.6}/src/gam/gamlib/yubikey.py +0 -0
  64. {gam7-7.22.5 → gam7-7.22.6}/src/gam/gdata/__init__.py +0 -0
  65. {gam7-7.22.5 → gam7-7.22.6}/src/gam/gdata/alt/__init__.py +0 -0
  66. {gam7-7.22.5 → gam7-7.22.6}/src/gam/gdata/alt/app_engine.py +0 -0
  67. {gam7-7.22.5 → gam7-7.22.6}/src/gam/gdata/alt/appengine.py +0 -0
  68. {gam7-7.22.5 → gam7-7.22.6}/src/gam/gdata/apps/__init__.py +0 -0
  69. {gam7-7.22.5 → gam7-7.22.6}/src/gam/gdata/apps/audit/__init__.py +0 -0
  70. {gam7-7.22.5 → gam7-7.22.6}/src/gam/gdata/apps/audit/service.py +0 -0
  71. {gam7-7.22.5 → gam7-7.22.6}/src/gam/gdata/apps/contacts/__init__.py +0 -0
  72. {gam7-7.22.5 → gam7-7.22.6}/src/gam/gdata/apps/contacts/service.py +0 -0
  73. {gam7-7.22.5 → gam7-7.22.6}/src/gam/gdata/apps/service.py +0 -0
  74. {gam7-7.22.5 → gam7-7.22.6}/src/gam/gdata/service.py +0 -0
  75. {gam7-7.22.5 → gam7-7.22.6}/src/gam/gdata/urlfetch.py +0 -0
  76. {gam7-7.22.5 → gam7-7.22.6}/src/gam/meet-v2beta.json +0 -0
  77. {gam7-7.22.5 → gam7-7.22.6}/src/gam/serviceaccountlookup-v1.json +0 -0
  78. {gam7-7.22.5 → gam7-7.22.6}/src/gam-install.sh +0 -0
  79. {gam7-7.22.5 → gam7-7.22.6}/src/gam-setup.bat +0 -0
  80. {gam7-7.22.5 → gam7-7.22.6}/src/gam.exe.manifest +0 -0
  81. {gam7-7.22.5 → gam7-7.22.6}/src/gam.py +0 -0
  82. {gam7-7.22.5 → gam7-7.22.6}/src/gam.spec +0 -0
  83. {gam7-7.22.5 → gam7-7.22.6}/src/gam.wxs +0 -0
  84. {gam7-7.22.5 → gam7-7.22.6}/src/license.rtf +0 -0
  85. {gam7-7.22.5 → gam7-7.22.6}/src/tools/a_atleast_b.py +0 -0
  86. {gam7-7.22.5 → gam7-7.22.6}/src/tools/gen-wix-xml-filelist.py +0 -0
  87. {gam7-7.22.5 → gam7-7.22.6}/src/tools/hooks/hook-googleapiclient.model.py +0 -0
  88. {gam7-7.22.5 → gam7-7.22.6}/src/tools/hooks/hook-httplib2.py +0 -0
  89. {gam7-7.22.5 → gam7-7.22.6}/src/tools/mkGamRef.py +0 -0
  90. {gam7-7.22.5 → gam7-7.22.6}/src/tools/openssl.props +0 -0
  91. {gam7-7.22.5 → gam7-7.22.6}/src/tools/ssd.mjs +0 -0
  92. {gam7-7.22.5 → gam7-7.22.6}/src/version_info.txt.in +0 -0
  93. {gam7-7.22.5 → gam7-7.22.6}/wiki/00scratch.md +0 -0
  94. {gam7-7.22.5 → gam7-7.22.6}/wiki/Addresses.md +0 -0
  95. {gam7-7.22.5 → gam7-7.22.6}/wiki/Administrators.md +0 -0
  96. {gam7-7.22.5 → gam7-7.22.6}/wiki/Alert-Center.md +0 -0
  97. {gam7-7.22.5 → gam7-7.22.6}/wiki/Aliases.md +0 -0
  98. {gam7-7.22.5 → gam7-7.22.6}/wiki/Authorization.md +0 -0
  99. {gam7-7.22.5 → gam7-7.22.6}/wiki/BNF-Syntax.md +0 -0
  100. {gam7-7.22.5 → gam7-7.22.6}/wiki/Basic-Items.md +0 -0
  101. {gam7-7.22.5 → gam7-7.22.6}/wiki/Bulk-Processing.md +0 -0
  102. {gam7-7.22.5 → gam7-7.22.6}/wiki/Business-Account-Management.md +0 -0
  103. {gam7-7.22.5 → gam7-7.22.6}/wiki/CSV-Input-Filtering.md +0 -0
  104. {gam7-7.22.5 → gam7-7.22.6}/wiki/CSV-Output-Filtering.md +0 -0
  105. {gam7-7.22.5 → gam7-7.22.6}/wiki/CSV-Special-Characters.md +0 -0
  106. {gam7-7.22.5 → gam7-7.22.6}/wiki/Calendars-Access.md +0 -0
  107. {gam7-7.22.5 → gam7-7.22.6}/wiki/Calendars-Events.md +0 -0
  108. {gam7-7.22.5 → gam7-7.22.6}/wiki/Calendars.md +0 -0
  109. {gam7-7.22.5 → gam7-7.22.6}/wiki/Chat-Bot-Setup-Use.md +0 -0
  110. {gam7-7.22.5 → gam7-7.22.6}/wiki/Chrome-AUE-Counts.md +0 -0
  111. {gam7-7.22.5 → gam7-7.22.6}/wiki/Chrome-Browser-Cloud-Management.md +0 -0
  112. {gam7-7.22.5 → gam7-7.22.6}/wiki/Chrome-Installed-Apps.md +0 -0
  113. {gam7-7.22.5 → gam7-7.22.6}/wiki/Chrome-Needs-Attention-Counts.md +0 -0
  114. {gam7-7.22.5 → gam7-7.22.6}/wiki/Chrome-Policies.md +0 -0
  115. {gam7-7.22.5 → gam7-7.22.6}/wiki/Chrome-Printers.md +0 -0
  116. {gam7-7.22.5 → gam7-7.22.6}/wiki/Chrome-Profile-Management.md +0 -0
  117. {gam7-7.22.5 → gam7-7.22.6}/wiki/Chrome-Version-Counts.md +0 -0
  118. {gam7-7.22.5 → gam7-7.22.6}/wiki/Chrome-Version-History.md +0 -0
  119. {gam7-7.22.5 → gam7-7.22.6}/wiki/ChromeOS-Devices.md +0 -0
  120. {gam7-7.22.5 → gam7-7.22.6}/wiki/Classroom-Courses.md +0 -0
  121. {gam7-7.22.5 → gam7-7.22.6}/wiki/Classroom-Guardians.md +0 -0
  122. {gam7-7.22.5 → gam7-7.22.6}/wiki/Classroom-Invitations.md +0 -0
  123. {gam7-7.22.5 → gam7-7.22.6}/wiki/Classroom-Membership.md +0 -0
  124. {gam7-7.22.5 → gam7-7.22.6}/wiki/Classroom-StudentGroups.md +0 -0
  125. {gam7-7.22.5 → gam7-7.22.6}/wiki/Cloud-Channel.md +0 -0
  126. {gam7-7.22.5 → gam7-7.22.6}/wiki/Cloud-Identity-Devices.md +0 -0
  127. {gam7-7.22.5 → gam7-7.22.6}/wiki/Cloud-Identity-Groups-Membership.md +0 -0
  128. {gam7-7.22.5 → gam7-7.22.6}/wiki/Cloud-Identity-Groups.md +0 -0
  129. {gam7-7.22.5 → gam7-7.22.6}/wiki/Cloud-Identity-Policies.md +0 -0
  130. {gam7-7.22.5 → gam7-7.22.6}/wiki/Cloud-Storage.md +0 -0
  131. {gam7-7.22.5 → gam7-7.22.6}/wiki/Collections-of-ChromeOS-Devices.md +0 -0
  132. {gam7-7.22.5 → gam7-7.22.6}/wiki/Collections-of-Items.md +0 -0
  133. {gam7-7.22.5 → gam7-7.22.6}/wiki/Collections-of-Users.md +0 -0
  134. {gam7-7.22.5 → gam7-7.22.6}/wiki/Command-Data-From-Google-Docs-Sheets-Storage.md +0 -0
  135. {gam7-7.22.5 → gam7-7.22.6}/wiki/Command-Line-Parsing.md +0 -0
  136. {gam7-7.22.5 → gam7-7.22.6}/wiki/Command-Logging-Progress.md +0 -0
  137. {gam7-7.22.5 → gam7-7.22.6}/wiki/Context-Aware-Access-Levels.md +0 -0
  138. {gam7-7.22.5 → gam7-7.22.6}/wiki/Customer.md +0 -0
  139. {gam7-7.22.5 → gam7-7.22.6}/wiki/Domain-People-Contacts-Profiles.md +0 -0
  140. {gam7-7.22.5 → gam7-7.22.6}/wiki/Domain-SharedContacts.md +0 -0
  141. {gam7-7.22.5 → gam7-7.22.6}/wiki/Domains-Verification.md +0 -0
  142. {gam7-7.22.5 → gam7-7.22.6}/wiki/Domains.md +0 -0
  143. {gam7-7.22.5 → gam7-7.22.6}/wiki/Downloads-Installs.md +0 -0
  144. {gam7-7.22.5 → gam7-7.22.6}/wiki/Drive-File-Selection.md +0 -0
  145. {gam7-7.22.5 → gam7-7.22.6}/wiki/Drive-Items.md +0 -0
  146. {gam7-7.22.5 → gam7-7.22.6}/wiki/Drive-REST-API-v3.md +0 -0
  147. {gam7-7.22.5 → gam7-7.22.6}/wiki/Email-Audit-Monitor.md +0 -0
  148. {gam7-7.22.5 → gam7-7.22.6}/wiki/Find-File-Owner.md +0 -0
  149. {gam7-7.22.5 → gam7-7.22.6}/wiki/GAM-Public-Chat-Room.md +0 -0
  150. {gam7-7.22.5 → gam7-7.22.6}/wiki/GAM-Release-Process.md +0 -0
  151. {gam7-7.22.5 → gam7-7.22.6}/wiki/GAM-Return-Codes.md +0 -0
  152. {gam7-7.22.5 → gam7-7.22.6}/wiki/GAM-with-minimal-GCP-rights.md +0 -0
  153. {gam7-7.22.5 → gam7-7.22.6}/wiki/GAM7-FAQ.md +0 -0
  154. {gam7-7.22.5 → gam7-7.22.6}/wiki/GAM7-on-Android-Devices.md +0 -0
  155. {gam7-7.22.5 → gam7-7.22.6}/wiki/GAM7-on-Chrome-OS-Devices.md +0 -0
  156. {gam7-7.22.5 → gam7-7.22.6}/wiki/Global-Address-List.md +0 -0
  157. {gam7-7.22.5 → gam7-7.22.6}/wiki/Google-Data-Transfers.md +0 -0
  158. {gam7-7.22.5 → gam7-7.22.6}/wiki/Google-Network-Addresses.md +0 -0
  159. {gam7-7.22.5 → gam7-7.22.6}/wiki/Groups-Membership.md +0 -0
  160. {gam7-7.22.5 → gam7-7.22.6}/wiki/Groups.md +0 -0
  161. {gam7-7.22.5 → gam7-7.22.6}/wiki/HTTPS-Proxy.md +0 -0
  162. {gam7-7.22.5 → gam7-7.22.6}/wiki/Home.md +0 -0
  163. {gam7-7.22.5 → gam7-7.22.6}/wiki/How-to-Install-GAM7.md +0 -0
  164. {gam7-7.22.5 → gam7-7.22.6}/wiki/How-to-Uninstall-GAM7.md +0 -0
  165. {gam7-7.22.5 → gam7-7.22.6}/wiki/How-to-Update-GAM7.md +0 -0
  166. {gam7-7.22.5 → gam7-7.22.6}/wiki/How-to-Upgrade-GAMADV-XTD3-to-GAM7.md +0 -0
  167. {gam7-7.22.5 → gam7-7.22.6}/wiki/Inbound-SSO.md +0 -0
  168. {gam7-7.22.5 → gam7-7.22.6}/wiki/Install-GAM-as-Python-Library.md +0 -0
  169. {gam7-7.22.5 → gam7-7.22.6}/wiki/Licenses.md +0 -0
  170. {gam7-7.22.5 → gam7-7.22.6}/wiki/List-Items.md +0 -0
  171. {gam7-7.22.5 → gam7-7.22.6}/wiki/List.md +0 -0
  172. {gam7-7.22.5 → gam7-7.22.6}/wiki/Meta-Commands-and-File-Redirection.md +0 -0
  173. {gam7-7.22.5 → gam7-7.22.6}/wiki/Mobile-Devices.md +0 -0
  174. {gam7-7.22.5 → gam7-7.22.6}/wiki/Organizational-Units.md +0 -0
  175. {gam7-7.22.5 → gam7-7.22.6}/wiki/Other-Resources.md +0 -0
  176. {gam7-7.22.5 → gam7-7.22.6}/wiki/Permission-Matches.md +0 -0
  177. {gam7-7.22.5 → gam7-7.22.6}/wiki/Python-Regular-Expressions.md +0 -0
  178. {gam7-7.22.5 → gam7-7.22.6}/wiki/README.md +0 -0
  179. {gam7-7.22.5 → gam7-7.22.6}/wiki/Rclone.md +0 -0
  180. {gam7-7.22.5 → gam7-7.22.6}/wiki/Reports.md +0 -0
  181. {gam7-7.22.5 → gam7-7.22.6}/wiki/Reseller.md +0 -0
  182. {gam7-7.22.5 → gam7-7.22.6}/wiki/Resources.md +0 -0
  183. {gam7-7.22.5 → gam7-7.22.6}/wiki/Running-GAM7-securely-on-a-Google-Compute-Engine.md +0 -0
  184. {gam7-7.22.5 → gam7-7.22.6}/wiki/SSL-Root-CA-Certificates.md +0 -0
  185. {gam7-7.22.5 → gam7-7.22.6}/wiki/Schemas.md +0 -0
  186. {gam7-7.22.5 → gam7-7.22.6}/wiki/Scripts.md +0 -0
  187. {gam7-7.22.5 → gam7-7.22.6}/wiki/Send-Email.md +0 -0
  188. {gam7-7.22.5 → gam7-7.22.6}/wiki/Shared-Drives.md +0 -0
  189. {gam7-7.22.5 → gam7-7.22.6}/wiki/Sites.md +0 -0
  190. {gam7-7.22.5 → gam7-7.22.6}/wiki/Tag-Replace.md +0 -0
  191. {gam7-7.22.5 → gam7-7.22.6}/wiki/Todrive.md +0 -0
  192. {gam7-7.22.5 → gam7-7.22.6}/wiki/Unmanaged-Accounts.md +0 -0
  193. {gam7-7.22.5 → gam7-7.22.6}/wiki/Upgrade-Benefits.md +0 -0
  194. {gam7-7.22.5 → gam7-7.22.6}/wiki/Users-Analytics-Admin.md +0 -0
  195. {gam7-7.22.5 → gam7-7.22.6}/wiki/Users-Application-Specific-Passwords.md +0 -0
  196. {gam7-7.22.5 → gam7-7.22.6}/wiki/Users-Backup-Verification-Codes.md +0 -0
  197. {gam7-7.22.5 → gam7-7.22.6}/wiki/Users-Calendars-Access.md +0 -0
  198. {gam7-7.22.5 → gam7-7.22.6}/wiki/Users-Calendars-Events.md +0 -0
  199. {gam7-7.22.5 → gam7-7.22.6}/wiki/Users-Calendars.md +0 -0
  200. {gam7-7.22.5 → gam7-7.22.6}/wiki/Users-Chat.md +0 -0
  201. {gam7-7.22.5 → gam7-7.22.6}/wiki/Users-Classification-Labels.md +0 -0
  202. {gam7-7.22.5 → gam7-7.22.6}/wiki/Users-Classroom-Profile.md +0 -0
  203. {gam7-7.22.5 → gam7-7.22.6}/wiki/Users-Contacts-Delegates.md +0 -0
  204. {gam7-7.22.5 → gam7-7.22.6}/wiki/Users-Contacts.md +0 -0
  205. {gam7-7.22.5 → gam7-7.22.6}/wiki/Users-Deprovision.md +0 -0
  206. {gam7-7.22.5 → gam7-7.22.6}/wiki/Users-Drive-Activity-Settings.md +0 -0
  207. {gam7-7.22.5 → gam7-7.22.6}/wiki/Users-Drive-Cleanup.md +0 -0
  208. {gam7-7.22.5 → gam7-7.22.6}/wiki/Users-Drive-Comments.md +0 -0
  209. {gam7-7.22.5 → gam7-7.22.6}/wiki/Users-Drive-Copy-Move.md +0 -0
  210. {gam7-7.22.5 → gam7-7.22.6}/wiki/Users-Drive-Files-Display.md +0 -0
  211. {gam7-7.22.5 → gam7-7.22.6}/wiki/Users-Drive-Files-Manage.md +0 -0
  212. {gam7-7.22.5 → gam7-7.22.6}/wiki/Users-Drive-Orphans.md +0 -0
  213. {gam7-7.22.5 → gam7-7.22.6}/wiki/Users-Drive-Ownership.md +0 -0
  214. {gam7-7.22.5 → gam7-7.22.6}/wiki/Users-Drive-Query.md +0 -0
  215. {gam7-7.22.5 → gam7-7.22.6}/wiki/Users-Drive-Revisions.md +0 -0
  216. {gam7-7.22.5 → gam7-7.22.6}/wiki/Users-Drive-Shortcuts.md +0 -0
  217. {gam7-7.22.5 → gam7-7.22.6}/wiki/Users-Drive-Transfer.md +0 -0
  218. {gam7-7.22.5 → gam7-7.22.6}/wiki/Users-Forms.md +0 -0
  219. {gam7-7.22.5 → gam7-7.22.6}/wiki/Users-Gmail-CSE.md +0 -0
  220. {gam7-7.22.5 → gam7-7.22.6}/wiki/Users-Gmail-Delegates.md +0 -0
  221. {gam7-7.22.5 → gam7-7.22.6}/wiki/Users-Gmail-Filters.md +0 -0
  222. {gam7-7.22.5 → gam7-7.22.6}/wiki/Users-Gmail-Forwarding.md +0 -0
  223. {gam7-7.22.5 → gam7-7.22.6}/wiki/Users-Gmail-Labels.md +0 -0
  224. {gam7-7.22.5 → gam7-7.22.6}/wiki/Users-Gmail-Messages-Threads.md +0 -0
  225. {gam7-7.22.5 → gam7-7.22.6}/wiki/Users-Gmail-Profile.md +0 -0
  226. {gam7-7.22.5 → gam7-7.22.6}/wiki/Users-Gmail-S-MIME.md +0 -0
  227. {gam7-7.22.5 → gam7-7.22.6}/wiki/Users-Gmail-Send-As-Signature-Vacation.md +0 -0
  228. {gam7-7.22.5 → gam7-7.22.6}/wiki/Users-Gmail-Settings.md +0 -0
  229. {gam7-7.22.5 → gam7-7.22.6}/wiki/Users-Group-Membership.md +0 -0
  230. {gam7-7.22.5 → gam7-7.22.6}/wiki/Users-Keep-Notes.md +0 -0
  231. {gam7-7.22.5 → gam7-7.22.6}/wiki/Users-Looker-Studio.md +0 -0
  232. {gam7-7.22.5 → gam7-7.22.6}/wiki/Users-Meet.md +0 -0
  233. {gam7-7.22.5 → gam7-7.22.6}/wiki/Users-People-Contacts-Profiles.md +0 -0
  234. {gam7-7.22.5 → gam7-7.22.6}/wiki/Users-Photo.md +0 -0
  235. {gam7-7.22.5 → gam7-7.22.6}/wiki/Users-Profile-Photo.md +0 -0
  236. {gam7-7.22.5 → gam7-7.22.6}/wiki/Users-Profile-Sharing.md +0 -0
  237. {gam7-7.22.5 → gam7-7.22.6}/wiki/Users-Shared-Drives.md +0 -0
  238. {gam7-7.22.5 → gam7-7.22.6}/wiki/Users-Signout-Turnoff2SV.md +0 -0
  239. {gam7-7.22.5 → gam7-7.22.6}/wiki/Users-Spreadsheets.md +0 -0
  240. {gam7-7.22.5 → gam7-7.22.6}/wiki/Users-Tag-Manager.md +0 -0
  241. {gam7-7.22.5 → gam7-7.22.6}/wiki/Users-Tasks.md +0 -0
  242. {gam7-7.22.5 → gam7-7.22.6}/wiki/Users-Tokens.md +0 -0
  243. {gam7-7.22.5 → gam7-7.22.6}/wiki/Users-Web-Resources-and-Sites.md +0 -0
  244. {gam7-7.22.5 → gam7-7.22.6}/wiki/Users-YouTube.md +0 -0
  245. {gam7-7.22.5 → gam7-7.22.6}/wiki/Users.md +0 -0
  246. {gam7-7.22.5 → gam7-7.22.6}/wiki/Using-GAM7-with-a-YubiKey.md +0 -0
  247. {gam7-7.22.5 → gam7-7.22.6}/wiki/Using-GAM7-with-a-delegated-admin-service-account.md +0 -0
  248. {gam7-7.22.5 → gam7-7.22.6}/wiki/Using-GAM7-with-keyless-authentication-Workload-Identity-Federation.md +0 -0
  249. {gam7-7.22.5 → gam7-7.22.6}/wiki/Verifying-a-GAM7-Build-is-Legitimate-and-Official.md +0 -0
  250. {gam7-7.22.5 → gam7-7.22.6}/wiki/_Sidebar.md +0 -0
  251. {gam7-7.22.5 → gam7-7.22.6}/wiki/gam.cfg.md +0 -0
  252. {gam7-7.22.5 → gam7-7.22.6}/wiki/legacy/l-AdminSettingsExamples.md +0 -0
  253. {gam7-7.22.5 → gam7-7.22.6}/wiki/legacy/l-Android-Installation.md +0 -0
  254. {gam7-7.22.5 → gam7-7.22.6}/wiki/legacy/l-BulkOperations.md +0 -0
  255. {gam7-7.22.5 → gam7-7.22.6}/wiki/legacy/l-CalendarExamples.md +0 -0
  256. {gam7-7.22.5 → gam7-7.22.6}/wiki/legacy/l-Chat-Bot.md +0 -0
  257. {gam7-7.22.5 → gam7-7.22.6}/wiki/legacy/l-Chrome-Browser-Management.md +0 -0
  258. {gam7-7.22.5 → gam7-7.22.6}/wiki/legacy/l-Chrome-OS-Installation.md +0 -0
  259. {gam7-7.22.5 → gam7-7.22.6}/wiki/legacy/l-Chrome-Policy-Settings.md +0 -0
  260. {gam7-7.22.5 → gam7-7.22.6}/wiki/legacy/l-Cloud-Identity-Groups.md +0 -0
  261. {gam7-7.22.5 → gam7-7.22.6}/wiki/legacy/l-Command-Reference-Calendar-Resources.md +0 -0
  262. {gam7-7.22.5 → gam7-7.22.6}/wiki/legacy/l-Command-Reference-Calendars.md +0 -0
  263. {gam7-7.22.5 → gam7-7.22.6}/wiki/legacy/l-Command-Reference-Definitions.md +0 -0
  264. {gam7-7.22.5 → gam7-7.22.6}/wiki/legacy/l-Command-Reference-Drive.md +0 -0
  265. {gam7-7.22.5 → gam7-7.22.6}/wiki/legacy/l-Command-Reference-Email.md +0 -0
  266. {gam7-7.22.5 → gam7-7.22.6}/wiki/legacy/l-Command-Reference-Group-Attributes.md +0 -0
  267. {gam7-7.22.5 → gam7-7.22.6}/wiki/legacy/l-Command-Reference-Groups.md +0 -0
  268. {gam7-7.22.5 → gam7-7.22.6}/wiki/legacy/l-Command-Reference-Users.md +0 -0
  269. {gam7-7.22.5 → gam7-7.22.6}/wiki/legacy/l-Context-Aware-Access-Levels.md +0 -0
  270. {gam7-7.22.5 → gam7-7.22.6}/wiki/legacy/l-Creating-client_secrets.json-and-oauth2service.json.md +0 -0
  271. {gam7-7.22.5 → gam7-7.22.6}/wiki/legacy/l-CreatingClientSecretsFile.md +0 -0
  272. {gam7-7.22.5 → gam7-7.22.6}/wiki/legacy/l-Custom-Schemas.md +0 -0
  273. {gam7-7.22.5 → gam7-7.22.6}/wiki/legacy/l-Data-Transfers.md +0 -0
  274. {gam7-7.22.5 → gam7-7.22.6}/wiki/legacy/l-DomainVerification.md +0 -0
  275. {gam7-7.22.5 → gam7-7.22.6}/wiki/legacy/l-ExamplesAccountAuditing.md +0 -0
  276. {gam7-7.22.5 → gam7-7.22.6}/wiki/legacy/l-ExamplesCSV.md +0 -0
  277. {gam7-7.22.5 → gam7-7.22.6}/wiki/legacy/l-ExamplesEmailSettings.md +0 -0
  278. {gam7-7.22.5 → gam7-7.22.6}/wiki/legacy/l-ExamplesOrganizations.md +0 -0
  279. {gam7-7.22.5 → gam7-7.22.6}/wiki/legacy/l-GAM-Discussion-Group.md +0 -0
  280. {gam7-7.22.5 → gam7-7.22.6}/wiki/legacy/l-GAM-on-Android-and-Chrome-OS.md +0 -0
  281. {gam7-7.22.5 → gam7-7.22.6}/wiki/legacy/l-GAM-options-files.md +0 -0
  282. {gam7-7.22.5 → gam7-7.22.6}/wiki/legacy/l-GAM-with--minimal-GCP-rights.md +0 -0
  283. {gam7-7.22.5 → gam7-7.22.6}/wiki/legacy/l-GAM3CSVListings.md +0 -0
  284. {gam7-7.22.5 → gam7-7.22.6}/wiki/legacy/l-GAM3DirectoryCommands.md +0 -0
  285. {gam7-7.22.5 → gam7-7.22.6}/wiki/legacy/l-GAM3GroupSettings.md +0 -0
  286. {gam7-7.22.5 → gam7-7.22.6}/wiki/legacy/l-Google-Vault---Takeout-Commands.md +0 -0
  287. {gam7-7.22.5 → gam7-7.22.6}/wiki/legacy/l-GoogleDriveManagement.md +0 -0
  288. {gam7-7.22.5 → gam7-7.22.6}/wiki/legacy/l-Grouping-18-or-Older-Users.md +0 -0
  289. {gam7-7.22.5 → gam7-7.22.6}/wiki/legacy/l-Home.md +0 -0
  290. {gam7-7.22.5 → gam7-7.22.6}/wiki/legacy/l-How-to-upgrade-from-Standard-GAM.md +0 -0
  291. {gam7-7.22.5 → gam7-7.22.6}/wiki/legacy/l-Inbound-SSO-Settings.md +0 -0
  292. {gam7-7.22.5 → gam7-7.22.6}/wiki/legacy/l-LicenseExamples.md +0 -0
  293. {gam7-7.22.5 → gam7-7.22.6}/wiki/legacy/l-Managing-Admins.md +0 -0
  294. {gam7-7.22.5 → gam7-7.22.6}/wiki/legacy/l-Managing-CloudPrint-Printers.md +0 -0
  295. {gam7-7.22.5 → gam7-7.22.6}/wiki/legacy/l-Managing-Devices.md +0 -0
  296. {gam7-7.22.5 → gam7-7.22.6}/wiki/legacy/l-Managing-Google-Classroom.md +0 -0
  297. {gam7-7.22.5 → gam7-7.22.6}/wiki/legacy/l-OAuthKeyManagement.md +0 -0
  298. {gam7-7.22.5 → gam7-7.22.6}/wiki/legacy/l-Printers.md +0 -0
  299. {gam7-7.22.5 → gam7-7.22.6}/wiki/legacy/l-ResellerCommands.md +0 -0
  300. {gam7-7.22.5 → gam7-7.22.6}/wiki/legacy/l-SecurityExamples.md +0 -0
  301. {gam7-7.22.5 → gam7-7.22.6}/wiki/legacy/l-UnmanagedUsersExamples.md +0 -0
  302. {gam7-7.22.5 → gam7-7.22.6}/wiki/legacy/l-Using-GAM-with-a-delegated-admin-service-account-(DASA).md +0 -0
  303. {gam7-7.22.5 → gam7-7.22.6}/wiki/legacy/l-_Footer.md +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: gam7
3
- Version: 7.22.5
3
+ Version: 7.22.6
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
@@ -729,6 +729,7 @@ If an item contains spaces, it should be surrounded by ".
729
729
  <DomainNameList> ::= "<DomainName>(,<DomainName>)*"
730
730
  <DriveFileACLRoleList> ::= "<DriveFileACLRole>(,<DriveFileACLRole>)*"
731
731
  <DriveFileACLTypeList> ::= "<DriveFileACLType>(,<DriveFileACLType>)*"
732
+ <DriveFileIDList> ::= "<DriveFileID>(,<DriveFileID>)*"
732
733
  <DriveFileList> ::= "<DriveFileItem>(,<DriveFileItem>)*"
733
734
  <DriveFilePermissionList> ::= "<DriveFilePermission>(,<DriveFilePermission>)*"
734
735
  <DriveFilePermissionIDList> ::= "<DriveFilePermissionID>(,<DriveFilePermissionID>)*"
@@ -5411,12 +5412,13 @@ gam show vaultmatters|matters [matterstate <MatterStateList>]
5411
5412
  [formatjson]
5412
5413
 
5413
5414
  gam print vaultcounts [todrive <ToDriveAttributes>*]
5414
- matter <MatterItem> corpus mail|groups
5415
- [(accounts <EmailAddressEntity>) | (orgunit|org|ou <OrgUnitPath>) | everyone]
5416
- [(shareddrives|teamdrives (<SharedDriveIDList>|(select <FileSelector>|<CSVFileSelector>))) |
5417
- (rooms (<ChatSpaceList>|(select <FileSelector>|<CSVFileSelector>))) |
5418
- (sitesurl (<URLList>||(select <FileSelector>|<CSVFileSelector>)))]
5415
+ matter <MatterItem> <QueryItem>
5416
+ [wait <Integer>]
5417
+ gam print vaultcounts [todrive <ToDriveAttributes>*]
5418
+ matter <MatterItem>
5419
+ corpus mail|groups
5419
5420
  [scope [all_data|held_data|unprocessed_data]]
5421
+ [(accounts <EmailAddressEntity>) | (orgunit|org|ou <OrgUnitPath>) | everyone]
5420
5422
  [terms <String>] [start|starttime <Date>|<Time>] [end|endtime <Date>|<Time>] [timezone <TimeZone>]
5421
5423
  [excludedrafts <Boolean>]
5422
5424
  [wait <Integer>]
@@ -5558,6 +5560,29 @@ gam show vaultholds|holds [matters <MatterItemList>]
5558
5560
  gam <UserTypeEntity> print vaultholds|holds [todrive <ToDriveAttribute>*]
5559
5561
  gam <UserTypeEntity> show vaultholds|holds
5560
5562
 
5563
+ gam create vaultquery <MatterItem> [name <String>]
5564
+ corpus calendar|drive|gemini|groups|hangouts_chat|mail|voice
5565
+ [scope all_data|held_data|unprocessed_data]
5566
+ (accounts <EmailAddressEntity>) | (orgunit|org|ou <OrgUnitPath>) | everyone
5567
+ (documentids (<DriveFileIDList>|(select <FileSelector>|<CSVFileSelector>))) |
5568
+ (shareddrives|teamdrives (<SharedDriveIDList>|(select <FileSelector>|<CSVFileSelector>))) |
5569
+ [(includeshareddrives <Boolean>)|(shareddrivesoption included|included_if_account_is_not_a_member|not_included)]
5570
+ (sitesurl (<URLList>||(select <FileSelector>|<CSVFileSelector>)))
5571
+ [driveversiondate <Date>|<Time>]
5572
+ [includerooms <Boolean>]
5573
+ (rooms (<ChatSpaceList>|(select <FileSelector>|<CSVFileSelector>))) |
5574
+ [terms <String>] [start|starttime <Date>|<Time>] [end|endtime <Date>|<Time>] [timezone <TimeZone>]
5575
+ [locationquery <StringList>] [peoplequery <StringList>] [minuswords <StringList>]
5576
+ [responsestatuses <AttendeeStatus>(,<AttendeeStatus>)*] [calendarversiondate <Date>|<Time>]
5577
+ (covereddata calllogs|textmessages|voicemails)*
5578
+ [shownames] [formatjson]
5579
+
5580
+ gam copy vaultquery <MatterItem> <QueryItem> [targetmatter <MatterItem"] [name <String>]
5581
+ [shownames] [formatjson]
5582
+
5583
+ gam delete vaultquery <QueryItem> matter <MatterItem>
5584
+ gam delete vaultquery <MatterItem> <QueryItem>
5585
+
5561
5586
  <VaultQueryFieldName> ::=
5562
5587
  createtime |
5563
5588
  displayname |
@@ -1,3 +1,38 @@
1
+ 7.22.06
2
+
3
+ Added commands to create, copy and delete Vault saved queries.
4
+ ```
5
+ gam create vaultquery <MatterItem> [name <String>]
6
+ corpus calendar|drive|gemini|groups|hangouts_chat|mail|voice
7
+ [scope all_data|held_data|unprocessed_data]
8
+ (accounts <EmailAddressEntity>) | (orgunit|org|ou <OrgUnitPath>) | everyone
9
+ (documentids (<DriveFileIDList>|(select <FileSelector>|<CSVFileSelector>))) |
10
+ (shareddrives|teamdrives (<SharedDriveIDList>|(select <FileSelector>|<CSVFileSelector>))) |
11
+ [(includeshareddrives <Boolean>)|(shareddrivesoption included|included_if_account_is_not_a_member|not_included)]
12
+ (sitesurl (<URLList>||(select <FileSelector>|<CSVFileSelector>)))
13
+ [driveversiondate <Date>|<Time>]
14
+ [includerooms <Boolean>]
15
+ (rooms (<ChatSpaceList>|(select <FileSelector>|<CSVFileSelector>))) |
16
+ [terms <String>] [start|starttime <Date>|<Time>] [end|endtime <Date>|<Time>] [timezone <TimeZone>]
17
+ [locationquery <StringList>] [peoplequery <StringList>] [minuswords <StringList>]
18
+ [responsestatuses <AttendeeStatus>(,<AttendeeStatus>)*] [calendarversiondate <Date>|<Time>]
19
+ (covereddata calllogs|textmessages|voicemails)*
20
+ [shownames] [formatjson]
21
+
22
+ gam copy vaultquery <MatterItem> <QueryItem> [targetmatter <MatterItem"] [name <String>]
23
+ [shownames] [formatjson]
24
+
25
+ gam delete vaultquery <QueryItem> matter <MatterItem>
26
+ gam delete vaultquery <MatterItem> <QueryItem>
27
+ ```
28
+
29
+ Added a variant of `gam print vaultcounts` that gets its query parameters from a saved Vault query.
30
+ ```
31
+ gam print vaultcounts [todrive <ToDriveAttributes>*]
32
+ matter <MatterItem> <QueryItem>
33
+ [wait <Integer>]
34
+ ```
35
+
1
36
  7.22.05
2
37
 
3
38
  Added a variant of `gam create vaultexport` that gets its query parameters from a saved Vault query.
@@ -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.22.05'
28
+ __version__ = '7.22.06'
29
29
  __license__ = 'Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0)'
30
30
 
31
31
  #pylint: disable=wrong-import-position
@@ -41716,6 +41716,7 @@ VAULT_SEARCH_METHODS_MAP = {
41716
41716
  'accounts': 'ACCOUNT',
41717
41717
  'chatspace': 'ROOM',
41718
41718
  'chatspaces': 'ROOM',
41719
+ 'documentids': 'DRIVE_DOCUMENT',
41719
41720
  'entireorg': 'ENTIRE_ORG',
41720
41721
  'everyone': 'ENTIRE_ORG',
41721
41722
  'org': 'ORG_UNIT',
@@ -41831,6 +41832,8 @@ def _buildVaultQuery(myarg, query, corpusArgumentMap):
41831
41832
  query['dataScope'] = 'ALL_DATA'
41832
41833
  if myarg == 'corpus':
41833
41834
  query['corpus'] = getChoice(corpusArgumentMap, mapChoice=True)
41835
+ elif myarg == 'scope':
41836
+ query['dataScope'] = getChoice(VAULT_EXPORT_DATASCOPE_MAP, mapChoice=True)
41834
41837
  elif myarg in VAULT_SEARCH_METHODS_MAP:
41835
41838
  if query.get('searchMethod'):
41836
41839
  Cmd.Backup()
@@ -41851,8 +41854,8 @@ def _buildVaultQuery(myarg, query, corpusArgumentMap):
41851
41854
  query['hangoutsChatInfo'] = {'roomId': roomIds}
41852
41855
  elif searchMethod == 'SITES_URL':
41853
41856
  query['sitesUrlInfo'] = {'urls': _getQueryList(Cmd.OB_URL_LIST)}
41854
- elif myarg == 'scope':
41855
- query['dataScope'] = getChoice(VAULT_EXPORT_DATASCOPE_MAP, mapChoice=True)
41857
+ elif searchMethod == 'DRIVE_DOCUMENT':
41858
+ query['driveDocumentInfo'] = {'documentIds': {'ids': _getQueryList(Cmd.OB_DRIVE_FILE_ID_LIST)}}
41856
41859
  elif myarg == 'terms':
41857
41860
  query['terms'] = getString(Cmd.OB_STRING)
41858
41861
  elif myarg in {'start', 'starttime'}:
@@ -41919,17 +41922,18 @@ def _validateVaultQuery(body, corpusArgumentMap):
41919
41922
  # [region any|europe|us] [showdetails|returnidonly]
41920
41923
  # gam create vaultexport|export matter <MatterItem> [name <String>]
41921
41924
  # corpus calendar|drive|gemini|groups|hangouts_chat|mail|voice
41922
- # (accounts <EmailAddressEntity>) | (orgunit|org|ou <OrgUnitPath>) | everyone
41925
+ # [scope all_data|held_data|unprocessed_data]
41926
+ # (accounts <EmailAddressEntity>) | (orgunit|org|ou <OrgUnitPath>) | everyone|entireorg
41927
+ # (documentids (<DriveFileIDList>|(select <FileSelector>|<CSVFileSelector>))) |
41923
41928
  # (shareddrives|teamdrives (<SharedDriveIDList>|(select <FileSelector>|<CSVFileSelector>))) |
41924
- # (rooms (<ChatSpaceList>|(select <FileSelector>|<CSVFileSelector>))) |
41925
- # (sitesurl (<URLList>||(select <FileSelector>|<CSVFileSelector>)))
41926
- # [scope <all_data|held_data|unprocessed_data>]
41927
- # [terms <String>] [start|starttime <Date>|<Time>] [end|endtime <Date>|<Time>] [timezone <TimeZone>]
41928
- # [locationquery <StringList>] [peoplequery <StringList>] [minuswords <StringList>]
41929
- # [responsestatuses <AttendeeStatus>(,<AttendeeStatus>)*] [calendarversiondate <Date>|<Time>]
41930
41929
  # [(includeshareddrives <Boolean>)|(shareddrivesoption included|included_if_account_is_not_a_member|not_included)]
41930
+ # (sitesurl (<URLList>||(select <FileSelector>|<CSVFileSelector>)))
41931
41931
  # [driveversiondate <Date>|<Time>]
41932
41932
  # [includerooms <Boolean>]
41933
+ # (rooms (<ChatSpaceList>|(select <FileSelector>|<CSVFileSelector>))) |
41934
+ # [terms <String>] [start|starttime <Date>|<Time>] [end|endtime <Date>|<Time>] [timezone <TimeZone>]
41935
+ # [locationquery <StringList>] [peoplequery <StringList>] [minuswords <StringList>]
41936
+ # [responsestatuses <AttendeeStatus>(,<AttendeeStatus>)*] [calendarversiondate <Date>|<Time>]
41933
41937
  # (covereddata calllogs|textmessages|voicemails)*
41934
41938
  # [driveclientsideencryption any|encrypted|unencrypted]
41935
41939
  # [includeaccessinfo <Boolean>]
@@ -41943,6 +41947,7 @@ def doCreateVaultExport():
41943
41947
  body = {'query': {'dataScope': 'ALL_DATA'}, 'exportOptions': {}}
41944
41948
  includeAccessInfo = None
41945
41949
  exportFormat = None
41950
+ formatLocation = None
41946
41951
  useNewExport = None
41947
41952
  showConfidentialModeContent = None
41948
41953
  exportLinkedDriveFiles = None
@@ -41961,6 +41966,7 @@ def doCreateVaultExport():
41961
41966
  elif myarg == 'includeaccessinfo':
41962
41967
  includeAccessInfo = getBoolean()
41963
41968
  elif myarg == 'format':
41969
+ formatLocation = Cmd.Location()
41964
41970
  exportFormat = getChoice(VAULT_EXPORT_FORMAT_MAP, mapChoice=True)
41965
41971
  elif myarg == 'usenewexport':
41966
41972
  useNewExport = getBoolean()
@@ -41981,18 +41987,19 @@ def doCreateVaultExport():
41981
41987
  if not matterId:
41982
41988
  missingArgumentExit('matter')
41983
41989
  _validateVaultQuery(body, VAULT_CORPUS_ARGUMENT_MAP)
41984
- if exportFormat is not None:
41985
- if not exportFormat in VAULT_CORPUS_EXPORT_FORMATS[body['query']['corpus']]:
41986
- invalidChoiceExit(exportFormat, VAULT_CORPUS_EXPORT_FORMATS[body['query']['corpus']], False)
41987
- elif body['query']['corpus'] != 'DRIVE':
41988
- exportFormat = VAULT_CORPUS_EXPORT_FORMATS[body['query']['corpus']][0]
41989
41990
  if 'name' not in body:
41990
41991
  body['name'] = f'GAM {body["query"]["corpus"]} Export - {ISOformatTimeStamp(todaysTime())}'
41991
41992
  optionsField = VAULT_CORPUS_OPTIONS_MAP[body['query']['corpus']]
41992
41993
  if body['query']['corpus'] == 'DRIVE':
41993
41994
  if includeAccessInfo is not None:
41994
- body['exportOptions'][optionsField]['includeAccessInfo'] = includeAccessInfo
41995
+ body['exportOptions'][optionsField] = {'includeAccessInfo': includeAccessInfo}
41995
41996
  else:
41997
+ if exportFormat is not None:
41998
+ if not exportFormat in VAULT_CORPUS_EXPORT_FORMATS[body['query']['corpus']]:
41999
+ Cmd.SetLocation(formatLocation)
42000
+ invalidChoiceExit(exportFormat, VAULT_CORPUS_EXPORT_FORMATS[body['query']['corpus']], False)
42001
+ else:
42002
+ exportFormat = VAULT_CORPUS_EXPORT_FORMATS[body['query']['corpus']][0]
41996
42003
  body['exportOptions'][optionsField] = {'exportFormat': exportFormat}
41997
42004
  if body['query']['corpus'] == 'MAIL':
41998
42005
  if showConfidentialModeContent is not None:
@@ -42474,7 +42481,7 @@ def _showVaultHold(matterNameId, hold, cd, FJQC, k=0, kcount=0):
42474
42481
  showJSON(None, hold, timeObjects=VAULT_HOLD_TIME_OBJECTS)
42475
42482
  Ind.Decrement()
42476
42483
 
42477
- def _useVaultQuery(v, matterId, matterNameId, body):
42484
+ def _useVaultQueryForHold(v, matterId, matterNameId, body):
42478
42485
  _, _, _, query = convertQueryNameToID(v, getString(Cmd.OB_QUERY_ITEM), matterId, matterNameId)
42479
42486
  body['corpus'] = query['corpus']
42480
42487
  method = query.get('method')
@@ -42579,7 +42586,7 @@ def doCreateVaultHold():
42579
42586
  elif myarg == 'name':
42580
42587
  body['name'] = getString(Cmd.OB_STRING)
42581
42588
  elif matterId is not None and myarg == 'vaultquery':
42582
- _useVaultQuery(v, matterId, matterNameId, body)
42589
+ _useVaultQueryForHold(v, matterId, matterNameId, body)
42583
42590
  usedVaultQuery = True
42584
42591
  elif myarg == 'corpus':
42585
42592
  body['corpus'] = getChoice(VAULT_CORPUS_ARGUMENT_MAP, mapChoice=True)
@@ -43038,6 +43045,99 @@ def _showVaultQuery(matterNameId, query, cd, drive, FJQC, k=0, kcount=0):
43038
43045
  showJSON(None, query, timeObjects=VAULT_QUERY_TIME_OBJECTS)
43039
43046
  Ind.Decrement()
43040
43047
 
43048
+ def doCreateCopyVaultQuery(copyCmd):
43049
+ v = buildGAPIObject(API.VAULT)
43050
+ body = {'query': {'dataScope': 'ALL_DATA'}, 'displayName': ''}
43051
+ matterId, matterNameId = getMatterItem(v)
43052
+ if copyCmd:
43053
+ _, queryName, _, body['query'] = convertQueryNameToID(v, getString(Cmd.OB_QUERY_ITEM), matterId, matterNameId)
43054
+ targetId = None
43055
+ cd = drive = None
43056
+ FJQC = FormatJSONQuoteChar()
43057
+ while Cmd.ArgumentsRemaining():
43058
+ myarg = getArgument()
43059
+ if myarg == 'name':
43060
+ body['displayName'] = getString(Cmd.OB_STRING)
43061
+ elif copyCmd and myarg == 'targetmatter':
43062
+ targetId, targetNameId = getMatterItem(v)
43063
+ elif not copyCmd and myarg in VAULT_QUERY_ARGS:
43064
+ _buildVaultQuery(myarg, body['query'], VAULT_CORPUS_ARGUMENT_MAP)
43065
+ elif myarg == 'shownames':
43066
+ cd = buildGAPIObject(API.DIRECTORY)
43067
+ _, drive = buildGAPIServiceObject(API.DRIVE3, _getAdminEmail())
43068
+ if drive is None:
43069
+ return
43070
+ else:
43071
+ FJQC.GetFormatJSON(myarg)
43072
+ if copyCmd:
43073
+ if targetId is None:
43074
+ targetId = matterId
43075
+ targetNameId = matterNameId
43076
+ if not body['displayName']:
43077
+ body['displayName'] = f'Copy of {queryName}' if matterId == targetId else queryName
43078
+ resultId = targetId
43079
+ resultNameId = targetNameId
43080
+ else:
43081
+ if not body['displayName']:
43082
+ body['displayName'] = 'GAM {body["query"]["corpus"]} Query - {ISOformatTimeStamp(todaysTime())}'
43083
+ resultId = matterId
43084
+ resultNameId = matterNameId
43085
+ try:
43086
+ result = callGAPI(v.matters().savedQueries(), 'create',
43087
+ throwReasons=[GAPI.NOT_FOUND, GAPI.BAD_REQUEST, GAPI.FORBIDDEN, GAPI.INVALID_ARGUMENT, GAPI.ALREADY_EXISTS],
43088
+ matterId=resultId, body=body)
43089
+ _showVaultQuery(resultNameId, result, cd, drive, FJQC)
43090
+ except (GAPI.notFound, GAPI.badRequest, GAPI.forbidden, GAPI.invalidArgument, GAPI.alreadyExists) as e:
43091
+ entityActionFailedWarning([Ent.VAULT_MATTER, resultNameId, Ent.VAULT_QUERY, body['displayName']], str(e))
43092
+
43093
+ # gam create vaultquery <MatterItem> [name <String>]
43094
+ # corpus calendar|drive|gemini|groups|hangouts_chat|mail|voice
43095
+ # [scope all_data|held_data|unprocessed_data]
43096
+ # (accounts <EmailAddressEntity>) | (orgunit|org|ou <OrgUnitPath>) | everyone|entireorg
43097
+ # (documentids (<DriveFileIDList>|(select <FileSelector>|<CSVFileSelector>))) |
43098
+ # (shareddrives|teamdrives (<SharedDriveIDList>|(select <FileSelector>|<CSVFileSelector>))) |
43099
+ # [(includeshareddrives <Boolean>)|(shareddrivesoption included|included_if_account_is_not_a_member|not_included)]
43100
+ # (sitesurl (<URLList>||(select <FileSelector>|<CSVFileSelector>)))
43101
+ # [driveversiondate <Date>|<Time>]
43102
+ # [includerooms <Boolean>]
43103
+ # (rooms (<ChatSpaceList>|(select <FileSelector>|<CSVFileSelector>))) |
43104
+ # [terms <String>] [start|starttime <Date>|<Time>] [end|endtime <Date>|<Time>] [timezone <TimeZone>]
43105
+ # [locationquery <StringList>] [peoplequery <StringList>] [minuswords <StringList>]
43106
+ # [responsestatuses <AttendeeStatus>(,<AttendeeStatus>)*] [calendarversiondate <Date>|<Time>]
43107
+ # (covereddata calllogs|textmessages|voicemails)*
43108
+ # [shownames] [formatjson]
43109
+ def doCreateVaultQuery():
43110
+ doCreateCopyVaultQuery(False)
43111
+
43112
+ # gam copy vaultquery <MatterItem> <QueryItem> [targetmatter <MatterItem"] [name <String>]
43113
+ # [shownames] [formatjson]
43114
+ def doCopyVaultQuery():
43115
+ doCreateCopyVaultQuery(True)
43116
+
43117
+ # gam delete vaultquery <QueryItem> matter <MatterItem>
43118
+ # gam delete vaultquery <MatterItem> <QueryItem>
43119
+ def doDeleteVaultQuery():
43120
+ v = buildGAPIObject(API.VAULT)
43121
+ if not Cmd.ArgumentIsAhead('matter'):
43122
+ matterId, matterNameId = getMatterItem(v)
43123
+ queryId, queryName, queryNameId, _ = convertQueryNameToID(v, getString(Cmd.OB_QUERY_ITEM), matterId, matterNameId)
43124
+ else:
43125
+ queryName = getString(Cmd.OB_QUERY_ITEM)
43126
+ while Cmd.ArgumentsRemaining():
43127
+ myarg = getArgument()
43128
+ if myarg == 'matter':
43129
+ matterId, matterNameId = getMatterItem(v)
43130
+ queryId, queryName, queryNameId, _ = convertQueryNameToID(v, queryName, matterId, matterNameId)
43131
+ else:
43132
+ unknownArgumentExit()
43133
+ try:
43134
+ callGAPI(v.matters().savedQueries(), 'delete',
43135
+ throwReasons=[GAPI.NOT_FOUND, GAPI.BAD_REQUEST, GAPI.FORBIDDEN, GAPI.INVALID_ARGUMENT],
43136
+ matterId=matterId, savedQueryId=queryId)
43137
+ entityActionPerformed([Ent.VAULT_MATTER, matterNameId, Ent.VAULT_QUERY, queryNameId])
43138
+ except (GAPI.notFound, GAPI.badRequest, GAPI.forbidden, GAPI.invalidArgument) as e:
43139
+ entityActionFailedWarning([Ent.VAULT_MATTER, matterNameId, Ent.VAULT_QUERY, queryNameId], str(e))
43140
+
43041
43141
  VAULT_QUERY_FIELDS_CHOICE_MAP = {
43042
43142
  'createtime': 'createTime',
43043
43143
  'displayname': 'displayName',
@@ -43523,12 +43623,13 @@ def doPrintShowVaultMatters():
43523
43623
  PRINT_VAULT_COUNTS_TITLES = ['account', 'count', 'error']
43524
43624
 
43525
43625
  # gam print vaultcounts [todrive <ToDriveAttributes>*]
43526
- # matter <MatterItem> corpus mail|groups
43527
- # (accounts <EmailAddressEntity>) | (orgunit|org|ou <OrgUnitPath>) | everyone
43528
- # (shareddrives|teamdrives (<SharedDriveIDList>|(select <FileSelector>|<CSVFileSelector>))) |
43529
- # (rooms (<ChatSpaceList>|(select <FileSelector>|<CSVFileSelector>))) |
43530
- # (sitesurl (<URLList>||(select <FileSelector>|<CSVFileSelector>)))
43531
- # [scope <all_data|held_data|unprocessed_data>]
43626
+ # matter <MatterItem> <QueryItem>
43627
+ # [wait <Integer>]
43628
+ # gam print vaultcounts [todrive <ToDriveAttributes>*]
43629
+ # matter <MatterItem>
43630
+ # corpus mail|groups
43631
+ # [scope all_data|held_data|unprocessed_data]
43632
+ # (accounts <EmailAddressEntity>) | (orgunit|org|ou <OrgUnitPath>) | everyone|entireorg
43532
43633
  # [terms <String>] [start|starttime <Date>|<Time>] [end|endtime <Date>|<Time>] [timezone <TimeZone>]
43533
43634
  # [excludedrafts <Boolean>]
43534
43635
  # [wait <Integer>]
@@ -43539,18 +43640,19 @@ def doPrintVaultCounts():
43539
43640
  csvPF = CSVPrintFile(PRINT_VAULT_COUNTS_TITLES, 'sortall')
43540
43641
  matterId = name = None
43541
43642
  operationWait = 15
43542
- body = {'view': 'ALL'}
43543
- query = {}
43643
+ body = {'view': 'ALL', 'query': {}}
43544
43644
  while Cmd.ArgumentsRemaining():
43545
43645
  myarg = getArgument()
43546
43646
  if csvPF and myarg == 'todrive':
43547
43647
  csvPF.GetTodriveParameters()
43548
43648
  elif myarg == 'matter':
43549
- matterId, _ = getMatterItem(v)
43649
+ matterId, matterNameId = getMatterItem(v)
43650
+ elif matterId is not None and myarg == 'vaultquery':
43651
+ _, _, _, body['query'] = convertQueryNameToID(v, getString(Cmd.OB_QUERY_ITEM), matterId, matterNameId)
43550
43652
  elif myarg == 'operation':
43551
43653
  name = getString(Cmd.OB_STRING)
43552
43654
  elif myarg in VAULT_QUERY_ARGS:
43553
- _buildVaultQuery(myarg, query, VAULT_COUNTS_CORPUS_ARGUMENT_MAP)
43655
+ _buildVaultQuery(myarg, body['query'], VAULT_COUNTS_CORPUS_ARGUMENT_MAP)
43554
43656
  elif myarg == 'wait':
43555
43657
  operationWait = getInteger(minVal=1)
43556
43658
  else:
@@ -43561,7 +43663,6 @@ def doPrintVaultCounts():
43561
43663
  operation = {'name': name}
43562
43664
  doWait = False
43563
43665
  else:
43564
- body['query'] = query
43565
43666
  _validateVaultQuery(body, VAULT_COUNTS_CORPUS_ARGUMENT_MAP)
43566
43667
  try:
43567
43668
  operation = callGAPI(v.matters(), 'count',
@@ -77976,6 +78077,7 @@ MAIN_ADD_CREATE_FUNCTIONS = {
77976
78077
  Cmd.ARG_VAULTEXPORT: doCreateVaultExport,
77977
78078
  Cmd.ARG_VAULTHOLD: doCreateVaultHold,
77978
78079
  Cmd.ARG_VAULTMATTER: doCreateVaultMatter,
78080
+ Cmd.ARG_VAULTQUERY: doCreateVaultQuery,
77979
78081
  Cmd.ARG_VERIFY: doCreateSiteVerification,
77980
78082
  }
77981
78083
 
@@ -78033,6 +78135,7 @@ MAIN_COMMANDS_WITH_OBJECTS = {
78033
78135
  {Cmd.ARG_SHAREDDRIVEACLS: doCopySyncSharedDriveACLs,
78034
78136
  Cmd.ARG_STORAGEBUCKET: doCopyCloudStorageBucket,
78035
78137
  Cmd.ARG_VAULTEXPORT: doCopyVaultExport,
78138
+ Cmd.ARG_VAULTQUERY: doCopyVaultQuery,
78036
78139
  }
78037
78140
  ),
78038
78141
  'create':
@@ -78097,6 +78200,7 @@ MAIN_COMMANDS_WITH_OBJECTS = {
78097
78200
  Cmd.ARG_VAULTEXPORT: doDeleteVaultExport,
78098
78201
  Cmd.ARG_VAULTHOLD: doDeleteVaultHold,
78099
78202
  Cmd.ARG_VAULTMATTER: doDeleteVaultMatter,
78203
+ Cmd.ARG_VAULTQUERY: doDeleteVaultQuery,
78100
78204
  }
78101
78205
  ),
78102
78206
  'download':
@@ -1216,6 +1216,7 @@ class GamCLArgs():
1216
1216
  OB_DOMAIN_NAME_LIST = 'DomainNameList'
1217
1217
  OB_DRIVE_FILE_ENTITY = 'DriveFileEntity'
1218
1218
  OB_DRIVE_FILE_ID = 'DriveFileID'
1219
+ OB_DRIVE_FILE_ID_LIST = 'DriveFileIDList'
1219
1220
  OB_DRIVE_FILE_NAME = 'DriveFileName'
1220
1221
  OB_DRIVE_FILE_PERMISSION_ENTITY = 'DriveFilePermissionEntity'
1221
1222
  OB_DRIVE_FILE_PERMISSION_ID = 'DriveFilePermissionID'
@@ -10,7 +10,22 @@ 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.22.04
13
+ ### 7.22.05
14
+
15
+ Added a variant of `gam create vaultexport` that gets its query parameters from a saved Vault query.
16
+
17
+ ```
18
+ gam create vaultexport|export matter <MatterItem> [name <String>]
19
+ vaultquery <QueryItem>
20
+ [driveclientsideencryption any|encrypted|unencrypted]
21
+ [includeaccessinfo <Boolean>]
22
+ [excludedrafts <Boolean>] [mailclientsideencryption any|encrypted|unencrypted]
23
+ [showconfidentialmodecontent <Boolean>] [usenewexport <Boolean>] [exportlinkeddrivefiles <Boolean>]
24
+ [format ics|mbox|pst|xml]
25
+ [region any|europe|us] [showdetails|returnidonly]
26
+ ```
27
+
28
+ ### 7.22.04
14
29
 
15
30
  Added a variant of `gam create vaulthold` that gets its parameters from a saved Vault query.
16
31
  ```
@@ -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.22.04 - https://github.com/GAM-team/GAM - pyinstaller
255
+ GAM 7.22.05 - 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 Sequoia 15.6.1 x86_64
@@ -29,6 +29,7 @@
29
29
  ```
30
30
  <DomainName> ::= <String>(.<String>)+
31
31
  <EmailAddress> ::= <String>@<DomainName>
32
+ <JSONData> ::= (json [charset <Charset>] <String>) | (json file <FileName> [charset <Charset>]) |
32
33
  <UniqueID> ::= id:<String>
33
34
  <UserItem> ::= <EmailAddress>|<UniqueID>|<String>
34
35
 
@@ -243,7 +243,19 @@ gam print vaultcounts [todrive <ToDriveAttributes>*]
243
243
 
244
244
  ## Vault Exports
245
245
  ## Create Vault Exports
246
- Create a Google Vault export request.
246
+ ### Create a Google Vault export request using a saved Vault query.
247
+ ```
248
+ gam create vaultexport|export matter <MatterItem> [name <String>]
249
+ vaultquery <QueryItem>
250
+ [driveclientsideencryption any|encrypted|unencrypted]
251
+ [includeaccessinfo <Boolean>]
252
+ [excludedrafts <Boolean>] [mailclientsideencryption any|encrypted|unencrypted]
253
+ [showconfidentialmodecontent <Boolean>] [usenewexport <Boolean>] [exportlinkeddrivefiles <Boolean>]
254
+ [format ics|mbox|pst|xml]
255
+ [region any|europe|us] [showdetails|returnidonly]
256
+ ```
257
+
258
+ Create a Google Vault export request by specifying the query parameters.
247
259
  ```
248
260
  gam create vaultexport|export matter <MatterItem> [name <String>] corpus calendar|drive|gemini|groups|hangouts_chat|mail|voice
249
261
  (accounts <EmailAddressEntity>) | (orgunit|org|ou <OrgUnitPath>) | everyone
@@ -255,12 +267,13 @@ gam create vaultexport|export matter <MatterItem> [name <String>] corpus calenda
255
267
  [locationquery <StringList>] [peoplequery <StringList>] [minuswords <StringList>]
256
268
  [responsestatuses <AttendeeStatus>(,<AttendeeStatus>)*] [calendarversiondate <Date>|<Time>]
257
269
  [(includeshareddrives <Boolean>)|(shareddrivesoption included|included_if_account_is_not_a_member|not_included)]
258
- [driveversiondate <Date>|<Time>] [includeaccessinfo <Boolean>]
259
- [driveclientsideencryption any|encrypted|unencrypted]
270
+ [driveversiondate <Date>|<Time>]
260
271
  [includerooms <Boolean>]
272
+ (covereddata calllogs|textmessages|voicemails)*
273
+ [driveclientsideencryption any|encrypted|unencrypted]
274
+ [includeaccessinfo <Boolean>]
261
275
  [excludedrafts <Boolean>] [mailclientsideencryption any|encrypted|unencrypted]
262
276
  [showconfidentialmodecontent <Boolean>] [usenewexport <Boolean>] [exportlinkeddrivefiles <Boolean>]
263
- (covereddata calllogs|textmessages|voicemails)*
264
277
  [format ics|mbox|pst|xml]
265
278
  [region any|europe|us] [showdetails|returnidonly]
266
279
  ```
@@ -366,7 +379,7 @@ For `corpus mail`, you can specify whether to enable exporting linked Drive file
366
379
  See: https://support.google.com/vault/answer/4388708#new_gmail_export&zippy=%2Cfebruary-new-gmail-export-system-available
367
380
 
368
381
  For `corpus calendar`, you can specify the format of the exported data:
369
- * `format ics - Export in ICS format, this is the default
382
+ * `format ics` - Export in ICS format, this is the default
370
383
  * `format pst` - Export in PST format
371
384
 
372
385
  For `corpus drive`, you can not specify the format of the exported data,
@@ -377,7 +390,7 @@ For `corpus groups`, `corpus hangouts_chat`, `corpus mail` and `corpus voice`, y
377
390
  * `format mbox` - Export in MBOX format, this is the default
378
391
  * `format pst` - Export in PST format
379
392
 
380
- For `corpus voice` you can specify thet data covered by the export,
393
+ For `corpus voice` you can specify the data covered by the export,
381
394
  multiple values are allowed.:
382
395
  * `covereddata calllogs` - Call logs
383
396
  * `covereddata textmessages` - Voice text messages
@@ -624,7 +637,8 @@ Use the `returnidonly` option to have only the hold ID displayed.
624
637
 
625
638
  ### Create a hold from parameters.
626
639
  ```
627
- gam create vaulthold|hold matter <MatterItem> [name <String>] corpus calendar|drive|mail|groups|hangouts_chat|voice
640
+ gam create vaulthold|hold matter <MatterItem> [name <String>]
641
+ corpus calendar|drive|mail|groups|hangouts_chat|voice
628
642
  [(accounts|groups|users <EmailItemList>) | (orgunit|org|ou <OrgUnit>)]
629
643
  [query <QueryVaultCorpus>]
630
644
  [terms <String>] [start|starttime <Date>|<Time>] [end|endtime <Date>|<Time>]
@@ -655,10 +669,10 @@ For `corpus drive`, you can specify advanced search options:
655
669
  * `includeshareddrives False` - Files in shared drives are not included in the hold, this is the default
656
670
  * `includeshareddrives True` - Files in shared drives are included in the hold
657
671
 
658
- For `corpus mail`, you can specify search terms to limit the search.
672
+ For `corpus mail|group`, you can specify search terms to limit the search.
659
673
  * `terms <String>` - [Vault search](https://support.google.com/vault/answer/2474474)
660
674
 
661
- For `corpus mail`, you can specify time limits on the search:
675
+ For `corpus mail|group`, you can specify time limits on the search:
662
676
  * `start|starttime <Date>|<Time>` - The start time range for the search query. These timestamps are in GMT and rounded down to the start of the given date.
663
677
  * `end|endtime <Date>|<Time>` - The end time range for the search query. These timestamps are in GMT and rounded down to the start of the given date.
664
678
 
@@ -691,10 +705,10 @@ For a hold with `corpus drive`, you can specify advanced search options:
691
705
  * `includeshareddrives False` - Files in shared drives are not included in the hold, this is the default
692
706
  * `includeshareddrives True` - Files in shared drives are included in the hold
693
707
 
694
- For a hold with `corpus mail`, you can specify search terms to limit the search.
708
+ For a hold with `corpus mail|groups`, you can specify search terms to limit the search.
695
709
  * `terms <String>` - [Vault search](https://support.google.com/vault/answer/2474474)
696
710
 
697
- For a hold with `corpus mail`, you can specify time limits on the search:
711
+ For a hold with `corpus mai|groupsl`, you can specify time limits on the search:
698
712
  * `start|starttime <Date>|<Time>` - The start time range for the search query. These timestamps are in GMT and rounded down to the start of the given date.
699
713
  * `end|endtime <Date>|<Time>` - The end time range for the search query. These timestamps are in GMT and rounded down to the start of the given date.
700
714
 
@@ -3,7 +3,7 @@
3
3
  Print the current version of Gam with details
4
4
  ```
5
5
  gam version
6
- GAM 7.22.04 - https://github.com/GAM-team/GAM - pyinstaller
6
+ GAM 7.22.05 - 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 Sequoia 15.7 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.22.04 - https://github.com/GAM-team/GAM - pyinstaller
18
+ GAM 7.22.05 - 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 Sequoia 15.7 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.22.04 - https://github.com/GAM-team/GAM - pyinstaller
30
+ GAM 7.22.05 - 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 Sequoia 15.7 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