gam7 7.13.2__tar.gz → 7.14.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of gam7 might be problematic. Click here for more details.

Files changed (321) hide show
  1. {gam7-7.13.2 → gam7-7.14.0}/PKG-INFO +1 -1
  2. {gam7-7.13.2 → gam7-7.14.0}/src/GamCommands.txt +84 -5
  3. {gam7-7.13.2 → gam7-7.14.0}/src/GamUpdate.txt +15 -0
  4. {gam7-7.13.2 → gam7-7.14.0}/src/gam/__init__.py +247 -50
  5. {gam7-7.13.2 → gam7-7.14.0}/src/gam/gamlib/glapi.py +15 -0
  6. {gam7-7.13.2 → gam7-7.14.0}/src/gam/gamlib/glclargs.py +13 -0
  7. {gam7-7.13.2 → gam7-7.14.0}/src/gam/gamlib/glentity.py +11 -1
  8. {gam7-7.13.2 → gam7-7.14.0}/src/gam/gamlib/glgapi.py +1 -0
  9. {gam7-7.13.2 → gam7-7.14.0}/src/setup.cfg +1 -1
  10. {gam7-7.13.2 → gam7-7.14.0}/wiki/Basic-Items.md +8 -0
  11. {gam7-7.13.2 → gam7-7.14.0}/wiki/Chrome-Profile-Management.md +63 -6
  12. {gam7-7.13.2 → gam7-7.14.0}/wiki/Collections-of-Items.md +11 -1
  13. {gam7-7.13.2 → gam7-7.14.0}/wiki/Domain-SharedContacts.md +0 -9
  14. {gam7-7.13.2 → gam7-7.14.0}/wiki/GamUpdates.md +21 -0
  15. gam7-7.14.0/wiki/Global-Address-List.md +17 -0
  16. {gam7-7.13.2 → gam7-7.14.0}/wiki/Google-Data-Transfers.md +2 -3
  17. {gam7-7.13.2 → gam7-7.14.0}/wiki/How-to-Upgrade-Legacy-GAM-to-GAM7.md +2 -2
  18. {gam7-7.13.2 → gam7-7.14.0}/wiki/List-Items.md +4 -0
  19. gam7-7.14.0/wiki/Users-Tag-Manager.md +132 -0
  20. {gam7-7.13.2 → gam7-7.14.0}/wiki/Version-and-Help.md +6 -6
  21. {gam7-7.13.2 → gam7-7.14.0}/wiki/_Sidebar.md +2 -0
  22. {gam7-7.13.2 → gam7-7.14.0}/wiki/gam.cfg.md +2 -1
  23. {gam7-7.13.2 → gam7-7.14.0}/.github/ISSUE_TEMPLATE/aa-question.md +0 -0
  24. {gam7-7.13.2 → gam7-7.14.0}/.github/ISSUE_TEMPLATE/za-bug-report.md +0 -0
  25. {gam7-7.13.2 → gam7-7.14.0}/.github/ISSUE_TEMPLATE/zz-feature-request.md +0 -0
  26. {gam7-7.13.2 → gam7-7.14.0}/.github/ISSUE_TEMPLATE.txt +0 -0
  27. {gam7-7.13.2 → gam7-7.14.0}/.github/actions/decrypt.sh +0 -0
  28. {gam7-7.13.2 → gam7-7.14.0}/.github/actions/entitlements.plist +0 -0
  29. {gam7-7.13.2 → gam7-7.14.0}/.github/actions/package_exclusions.txt +0 -0
  30. {gam7-7.13.2 → gam7-7.14.0}/.github/stale.yml +0 -0
  31. {gam7-7.13.2 → gam7-7.14.0}/.github/workflows/build.yml +0 -0
  32. {gam7-7.13.2 → gam7-7.14.0}/.github/workflows/codeql-analysis.yml +0 -0
  33. {gam7-7.13.2 → gam7-7.14.0}/.github/workflows/get-cacerts.yml +0 -0
  34. {gam7-7.13.2 → gam7-7.14.0}/.github/workflows/pushwiki.yml +0 -0
  35. {gam7-7.13.2 → gam7-7.14.0}/.github/workflows/pypi.yml +0 -0
  36. {gam7-7.13.2 → gam7-7.14.0}/.pre-commit-config.yaml +0 -0
  37. {gam7-7.13.2 → gam7-7.14.0}/LICENSE +0 -0
  38. {gam7-7.13.2 → gam7-7.14.0}/README.md +0 -0
  39. {gam7-7.13.2 → gam7-7.14.0}/pyproject.toml +0 -0
  40. {gam7-7.13.2 → gam7-7.14.0}/src/.gitignore +0 -0
  41. {gam7-7.13.2 → gam7-7.14.0}/src/LICENSE +0 -0
  42. {gam7-7.13.2 → gam7-7.14.0}/src/README.md +0 -0
  43. {gam7-7.13.2 → gam7-7.14.0}/src/cacerts.pem +0 -0
  44. {gam7-7.13.2 → gam7-7.14.0}/src/callgam.py +0 -0
  45. {gam7-7.13.2 → gam7-7.14.0}/src/gam/__main__.py +0 -0
  46. {gam7-7.13.2 → gam7-7.14.0}/src/gam/atom/__init__.py +0 -0
  47. {gam7-7.13.2 → gam7-7.14.0}/src/gam/atom/auth.py +0 -0
  48. {gam7-7.13.2 → gam7-7.14.0}/src/gam/atom/client.py +0 -0
  49. {gam7-7.13.2 → gam7-7.14.0}/src/gam/atom/core.py +0 -0
  50. {gam7-7.13.2 → gam7-7.14.0}/src/gam/atom/data.py +0 -0
  51. {gam7-7.13.2 → gam7-7.14.0}/src/gam/atom/http.py +0 -0
  52. {gam7-7.13.2 → gam7-7.14.0}/src/gam/atom/http_core.py +0 -0
  53. {gam7-7.13.2 → gam7-7.14.0}/src/gam/atom/http_interface.py +0 -0
  54. {gam7-7.13.2 → gam7-7.14.0}/src/gam/atom/mock_http.py +0 -0
  55. {gam7-7.13.2 → gam7-7.14.0}/src/gam/atom/mock_http_core.py +0 -0
  56. {gam7-7.13.2 → gam7-7.14.0}/src/gam/atom/mock_service.py +0 -0
  57. {gam7-7.13.2 → gam7-7.14.0}/src/gam/atom/service.py +0 -0
  58. {gam7-7.13.2 → gam7-7.14.0}/src/gam/atom/token_store.py +0 -0
  59. {gam7-7.13.2 → gam7-7.14.0}/src/gam/atom/url.py +0 -0
  60. {gam7-7.13.2 → gam7-7.14.0}/src/gam/cacerts.pem +0 -0
  61. {gam7-7.13.2 → gam7-7.14.0}/src/gam/cbcm-v1.1beta1.json +0 -0
  62. {gam7-7.13.2 → gam7-7.14.0}/src/gam/contactdelegation-v1.json +0 -0
  63. {gam7-7.13.2 → gam7-7.14.0}/src/gam/datastudio-v1.json +0 -0
  64. {gam7-7.13.2 → gam7-7.14.0}/src/gam/gamlib/__init__.py +0 -0
  65. {gam7-7.13.2 → gam7-7.14.0}/src/gam/gamlib/glaction.py +0 -0
  66. {gam7-7.13.2 → gam7-7.14.0}/src/gam/gamlib/glcfg.py +0 -0
  67. {gam7-7.13.2 → gam7-7.14.0}/src/gam/gamlib/glgdata.py +0 -0
  68. {gam7-7.13.2 → gam7-7.14.0}/src/gam/gamlib/glglobals.py +0 -0
  69. {gam7-7.13.2 → gam7-7.14.0}/src/gam/gamlib/glindent.py +0 -0
  70. {gam7-7.13.2 → gam7-7.14.0}/src/gam/gamlib/glmsgs.py +0 -0
  71. {gam7-7.13.2 → gam7-7.14.0}/src/gam/gamlib/glskus.py +0 -0
  72. {gam7-7.13.2 → gam7-7.14.0}/src/gam/gamlib/gluprop.py +0 -0
  73. {gam7-7.13.2 → gam7-7.14.0}/src/gam/gamlib/glverlibs.py +0 -0
  74. {gam7-7.13.2 → gam7-7.14.0}/src/gam/gamlib/yubikey.py +0 -0
  75. {gam7-7.13.2 → gam7-7.14.0}/src/gam/gdata/__init__.py +0 -0
  76. {gam7-7.13.2 → gam7-7.14.0}/src/gam/gdata/alt/__init__.py +0 -0
  77. {gam7-7.13.2 → gam7-7.14.0}/src/gam/gdata/alt/app_engine.py +0 -0
  78. {gam7-7.13.2 → gam7-7.14.0}/src/gam/gdata/alt/appengine.py +0 -0
  79. {gam7-7.13.2 → gam7-7.14.0}/src/gam/gdata/apps/__init__.py +0 -0
  80. {gam7-7.13.2 → gam7-7.14.0}/src/gam/gdata/apps/audit/__init__.py +0 -0
  81. {gam7-7.13.2 → gam7-7.14.0}/src/gam/gdata/apps/audit/service.py +0 -0
  82. {gam7-7.13.2 → gam7-7.14.0}/src/gam/gdata/apps/contacts/__init__.py +0 -0
  83. {gam7-7.13.2 → gam7-7.14.0}/src/gam/gdata/apps/contacts/service.py +0 -0
  84. {gam7-7.13.2 → gam7-7.14.0}/src/gam/gdata/apps/service.py +0 -0
  85. {gam7-7.13.2 → gam7-7.14.0}/src/gam/gdata/service.py +0 -0
  86. {gam7-7.13.2 → gam7-7.14.0}/src/gam/gdata/urlfetch.py +0 -0
  87. {gam7-7.13.2 → gam7-7.14.0}/src/gam/googleapiclient/__init__.py +0 -0
  88. {gam7-7.13.2 → gam7-7.14.0}/src/gam/googleapiclient/_auth.py +0 -0
  89. {gam7-7.13.2 → gam7-7.14.0}/src/gam/googleapiclient/_helpers.py +0 -0
  90. {gam7-7.13.2 → gam7-7.14.0}/src/gam/googleapiclient/channel.py +0 -0
  91. {gam7-7.13.2 → gam7-7.14.0}/src/gam/googleapiclient/discovery.py +0 -0
  92. {gam7-7.13.2 → gam7-7.14.0}/src/gam/googleapiclient/discovery_cache/__init__.py +0 -0
  93. {gam7-7.13.2 → gam7-7.14.0}/src/gam/googleapiclient/discovery_cache/appengine_memcache.py +0 -0
  94. {gam7-7.13.2 → gam7-7.14.0}/src/gam/googleapiclient/discovery_cache/base.py +0 -0
  95. {gam7-7.13.2 → gam7-7.14.0}/src/gam/googleapiclient/discovery_cache/file_cache.py +0 -0
  96. {gam7-7.13.2 → gam7-7.14.0}/src/gam/googleapiclient/errors.py +0 -0
  97. {gam7-7.13.2 → gam7-7.14.0}/src/gam/googleapiclient/http.py +0 -0
  98. {gam7-7.13.2 → gam7-7.14.0}/src/gam/googleapiclient/mimeparse.py +0 -0
  99. {gam7-7.13.2 → gam7-7.14.0}/src/gam/googleapiclient/model.py +0 -0
  100. {gam7-7.13.2 → gam7-7.14.0}/src/gam/googleapiclient/schema.py +0 -0
  101. {gam7-7.13.2 → gam7-7.14.0}/src/gam/googleapiclient/version.py +0 -0
  102. {gam7-7.13.2 → gam7-7.14.0}/src/gam/iso8601/__init__.py +0 -0
  103. {gam7-7.13.2 → gam7-7.14.0}/src/gam/iso8601/iso8601.py +0 -0
  104. {gam7-7.13.2 → gam7-7.14.0}/src/gam/meet-v2beta.json +0 -0
  105. {gam7-7.13.2 → gam7-7.14.0}/src/gam/serviceaccountlookup-v1.json +0 -0
  106. {gam7-7.13.2 → gam7-7.14.0}/src/gam/six.py +0 -0
  107. {gam7-7.13.2 → gam7-7.14.0}/src/gam-install.sh +0 -0
  108. {gam7-7.13.2 → gam7-7.14.0}/src/gam-setup.bat +0 -0
  109. {gam7-7.13.2 → gam7-7.14.0}/src/gam.exe.manifest +0 -0
  110. {gam7-7.13.2 → gam7-7.14.0}/src/gam.py +0 -0
  111. {gam7-7.13.2 → gam7-7.14.0}/src/gam.spec +0 -0
  112. {gam7-7.13.2 → gam7-7.14.0}/src/gam.wxs +0 -0
  113. {gam7-7.13.2 → gam7-7.14.0}/src/license.rtf +0 -0
  114. {gam7-7.13.2 → gam7-7.14.0}/src/requirements-dev.txt +0 -0
  115. {gam7-7.13.2 → gam7-7.14.0}/src/requirements.txt +0 -0
  116. {gam7-7.13.2 → gam7-7.14.0}/src/setup.py +0 -0
  117. {gam7-7.13.2 → gam7-7.14.0}/src/tools/a_atleast_b.py +0 -0
  118. {gam7-7.13.2 → gam7-7.14.0}/src/tools/gen-wix-xml-filelist.py +0 -0
  119. {gam7-7.13.2 → gam7-7.14.0}/src/tools/mkGamRef.py +0 -0
  120. {gam7-7.13.2 → gam7-7.14.0}/src/tools/openssl.props +0 -0
  121. {gam7-7.13.2 → gam7-7.14.0}/src/version_info.txt.in +0 -0
  122. {gam7-7.13.2 → gam7-7.14.0}/wiki/00scratch.md +0 -0
  123. {gam7-7.13.2 → gam7-7.14.0}/wiki/Addresses.md +0 -0
  124. {gam7-7.13.2 → gam7-7.14.0}/wiki/Administrators.md +0 -0
  125. {gam7-7.13.2 → gam7-7.14.0}/wiki/Alert-Center.md +0 -0
  126. {gam7-7.13.2 → gam7-7.14.0}/wiki/Aliases.md +0 -0
  127. {gam7-7.13.2 → gam7-7.14.0}/wiki/Authorization.md +0 -0
  128. {gam7-7.13.2 → gam7-7.14.0}/wiki/BNF-Syntax.md +0 -0
  129. {gam7-7.13.2 → gam7-7.14.0}/wiki/Bulk-Processing.md +0 -0
  130. {gam7-7.13.2 → gam7-7.14.0}/wiki/CSV-Input-Filtering.md +0 -0
  131. {gam7-7.13.2 → gam7-7.14.0}/wiki/CSV-Output-Filtering.md +0 -0
  132. {gam7-7.13.2 → gam7-7.14.0}/wiki/CSV-Special-Characters.md +0 -0
  133. {gam7-7.13.2 → gam7-7.14.0}/wiki/Calendars-Access.md +0 -0
  134. {gam7-7.13.2 → gam7-7.14.0}/wiki/Calendars-Events.md +0 -0
  135. {gam7-7.13.2 → gam7-7.14.0}/wiki/Calendars.md +0 -0
  136. {gam7-7.13.2 → gam7-7.14.0}/wiki/Chat-Bot.md +0 -0
  137. {gam7-7.13.2 → gam7-7.14.0}/wiki/Chrome-AUE-Counts.md +0 -0
  138. {gam7-7.13.2 → gam7-7.14.0}/wiki/Chrome-Browser-Cloud-Management.md +0 -0
  139. {gam7-7.13.2 → gam7-7.14.0}/wiki/Chrome-Installed-Apps.md +0 -0
  140. {gam7-7.13.2 → gam7-7.14.0}/wiki/Chrome-Needs-Attention-Counts.md +0 -0
  141. {gam7-7.13.2 → gam7-7.14.0}/wiki/Chrome-Policies.md +0 -0
  142. {gam7-7.13.2 → gam7-7.14.0}/wiki/Chrome-Printers.md +0 -0
  143. {gam7-7.13.2 → gam7-7.14.0}/wiki/Chrome-Version-Counts.md +0 -0
  144. {gam7-7.13.2 → gam7-7.14.0}/wiki/Chrome-Version-History.md +0 -0
  145. {gam7-7.13.2 → gam7-7.14.0}/wiki/ChromeOS-Devices.md +0 -0
  146. {gam7-7.13.2 → gam7-7.14.0}/wiki/Classroom-Courses.md +0 -0
  147. {gam7-7.13.2 → gam7-7.14.0}/wiki/Classroom-Guardians.md +0 -0
  148. {gam7-7.13.2 → gam7-7.14.0}/wiki/Classroom-Invitations.md +0 -0
  149. {gam7-7.13.2 → gam7-7.14.0}/wiki/Classroom-Membership.md +0 -0
  150. {gam7-7.13.2 → gam7-7.14.0}/wiki/Cloud-Channel.md +0 -0
  151. {gam7-7.13.2 → gam7-7.14.0}/wiki/Cloud-Identity-Devices.md +0 -0
  152. {gam7-7.13.2 → gam7-7.14.0}/wiki/Cloud-Identity-Groups-Membership.md +0 -0
  153. {gam7-7.13.2 → gam7-7.14.0}/wiki/Cloud-Identity-Groups.md +0 -0
  154. {gam7-7.13.2 → gam7-7.14.0}/wiki/Cloud-Identity-Policies.md +0 -0
  155. {gam7-7.13.2 → gam7-7.14.0}/wiki/Cloud-Storage.md +0 -0
  156. {gam7-7.13.2 → gam7-7.14.0}/wiki/Collections-of-ChromeOS-Devices.md +0 -0
  157. {gam7-7.13.2 → gam7-7.14.0}/wiki/Collections-of-Users.md +0 -0
  158. {gam7-7.13.2 → gam7-7.14.0}/wiki/Command-Data-From-Google-Docs-Sheets-Storage.md +0 -0
  159. {gam7-7.13.2 → gam7-7.14.0}/wiki/Command-Line-Parsing.md +0 -0
  160. {gam7-7.13.2 → gam7-7.14.0}/wiki/Command-Logging-Progress.md +0 -0
  161. {gam7-7.13.2 → gam7-7.14.0}/wiki/Context-Aware-Access-Levels.md +0 -0
  162. {gam7-7.13.2 → gam7-7.14.0}/wiki/Customer.md +0 -0
  163. {gam7-7.13.2 → gam7-7.14.0}/wiki/Domain-People-Contacts-Profiles.md +0 -0
  164. {gam7-7.13.2 → gam7-7.14.0}/wiki/Domains-Verification.md +0 -0
  165. {gam7-7.13.2 → gam7-7.14.0}/wiki/Domains.md +0 -0
  166. {gam7-7.13.2 → gam7-7.14.0}/wiki/Downloads-Installs.md +0 -0
  167. {gam7-7.13.2 → gam7-7.14.0}/wiki/Drive-File-Selection.md +0 -0
  168. {gam7-7.13.2 → gam7-7.14.0}/wiki/Drive-Items.md +0 -0
  169. {gam7-7.13.2 → gam7-7.14.0}/wiki/Drive-REST-API-v3.md +0 -0
  170. {gam7-7.13.2 → gam7-7.14.0}/wiki/Email-Audit-Monitor.md +0 -0
  171. {gam7-7.13.2 → gam7-7.14.0}/wiki/Find-File-Owner.md +0 -0
  172. {gam7-7.13.2 → gam7-7.14.0}/wiki/GAM-Public-Chat-Room.md +0 -0
  173. {gam7-7.13.2 → gam7-7.14.0}/wiki/GAM-Return-Codes.md +0 -0
  174. {gam7-7.13.2 → gam7-7.14.0}/wiki/GAM-with-minimal-GCP-rights.md +0 -0
  175. {gam7-7.13.2 → gam7-7.14.0}/wiki/GAM7-on-Android-Devices.md +0 -0
  176. {gam7-7.13.2 → gam7-7.14.0}/wiki/GAM7-on-Chrome-OS-Devices.md +0 -0
  177. {gam7-7.13.2 → gam7-7.14.0}/wiki/Google-Network-Addresses.md +0 -0
  178. {gam7-7.13.2 → gam7-7.14.0}/wiki/Groups-Membership.md +0 -0
  179. {gam7-7.13.2 → gam7-7.14.0}/wiki/Groups.md +0 -0
  180. {gam7-7.13.2 → gam7-7.14.0}/wiki/HTTPS-Proxy.md +0 -0
  181. {gam7-7.13.2 → gam7-7.14.0}/wiki/Home.md +0 -0
  182. {gam7-7.13.2 → gam7-7.14.0}/wiki/How-to-Install-GAM7.md +0 -0
  183. {gam7-7.13.2 → gam7-7.14.0}/wiki/How-to-Uninstall-GAM7.md +0 -0
  184. {gam7-7.13.2 → gam7-7.14.0}/wiki/How-to-Update-GAM7.md +0 -0
  185. {gam7-7.13.2 → gam7-7.14.0}/wiki/How-to-Upgrade-GAMADV-XTD3-to-GAM7.md +0 -0
  186. {gam7-7.13.2 → gam7-7.14.0}/wiki/Inbound-SSO.md +0 -0
  187. {gam7-7.13.2 → gam7-7.14.0}/wiki/Install-GAM-as-Python-Library.md +0 -0
  188. {gam7-7.13.2 → gam7-7.14.0}/wiki/Licenses.md +0 -0
  189. {gam7-7.13.2 → gam7-7.14.0}/wiki/List.md +0 -0
  190. {gam7-7.13.2 → gam7-7.14.0}/wiki/Meta-Commands-and-File-Redirection.md +0 -0
  191. {gam7-7.13.2 → gam7-7.14.0}/wiki/Mobile-Devices.md +0 -0
  192. {gam7-7.13.2 → gam7-7.14.0}/wiki/Organizational-Units.md +0 -0
  193. {gam7-7.13.2 → gam7-7.14.0}/wiki/Other-Resources.md +0 -0
  194. {gam7-7.13.2 → gam7-7.14.0}/wiki/Permission-Matches.md +0 -0
  195. {gam7-7.13.2 → gam7-7.14.0}/wiki/Python-Regular-Expressions.md +0 -0
  196. {gam7-7.13.2 → gam7-7.14.0}/wiki/README.md +0 -0
  197. {gam7-7.13.2 → gam7-7.14.0}/wiki/Rclone.md +0 -0
  198. {gam7-7.13.2 → gam7-7.14.0}/wiki/Reports.md +0 -0
  199. {gam7-7.13.2 → gam7-7.14.0}/wiki/Reseller.md +0 -0
  200. {gam7-7.13.2 → gam7-7.14.0}/wiki/Resources.md +0 -0
  201. {gam7-7.13.2 → gam7-7.14.0}/wiki/Running-GAM7-securely-on-a-Google-Compute-Engine.md +0 -0
  202. {gam7-7.13.2 → gam7-7.14.0}/wiki/SSL-Root-CA-Certificates.md +0 -0
  203. {gam7-7.13.2 → gam7-7.14.0}/wiki/Schemas.md +0 -0
  204. {gam7-7.13.2 → gam7-7.14.0}/wiki/Scripts.md +0 -0
  205. {gam7-7.13.2 → gam7-7.14.0}/wiki/Send-Email.md +0 -0
  206. {gam7-7.13.2 → gam7-7.14.0}/wiki/Shared-Drives.md +0 -0
  207. {gam7-7.13.2 → gam7-7.14.0}/wiki/Sites.md +0 -0
  208. {gam7-7.13.2 → gam7-7.14.0}/wiki/Tag-Replace.md +0 -0
  209. {gam7-7.13.2 → gam7-7.14.0}/wiki/Todrive.md +0 -0
  210. {gam7-7.13.2 → gam7-7.14.0}/wiki/Unmanaged-Accounts.md +0 -0
  211. {gam7-7.13.2 → gam7-7.14.0}/wiki/Upgrade-Benefits.md +0 -0
  212. {gam7-7.13.2 → gam7-7.14.0}/wiki/Users-Analytics-Admin.md +0 -0
  213. {gam7-7.13.2 → gam7-7.14.0}/wiki/Users-Application-Specific-Passwords.md +0 -0
  214. {gam7-7.13.2 → gam7-7.14.0}/wiki/Users-Backup-Verification-Codes.md +0 -0
  215. {gam7-7.13.2 → gam7-7.14.0}/wiki/Users-Calendars-Access.md +0 -0
  216. {gam7-7.13.2 → gam7-7.14.0}/wiki/Users-Calendars-Events.md +0 -0
  217. {gam7-7.13.2 → gam7-7.14.0}/wiki/Users-Calendars.md +0 -0
  218. {gam7-7.13.2 → gam7-7.14.0}/wiki/Users-Chat.md +0 -0
  219. {gam7-7.13.2 → gam7-7.14.0}/wiki/Users-Classification-Labels.md +0 -0
  220. {gam7-7.13.2 → gam7-7.14.0}/wiki/Users-Classroom-Profile.md +0 -0
  221. {gam7-7.13.2 → gam7-7.14.0}/wiki/Users-Contacts-Delegates.md +0 -0
  222. {gam7-7.13.2 → gam7-7.14.0}/wiki/Users-Contacts.md +0 -0
  223. {gam7-7.13.2 → gam7-7.14.0}/wiki/Users-Deprovision.md +0 -0
  224. {gam7-7.13.2 → gam7-7.14.0}/wiki/Users-Drive-Activity-Settings.md +0 -0
  225. {gam7-7.13.2 → gam7-7.14.0}/wiki/Users-Drive-Cleanup.md +0 -0
  226. {gam7-7.13.2 → gam7-7.14.0}/wiki/Users-Drive-Comments.md +0 -0
  227. {gam7-7.13.2 → gam7-7.14.0}/wiki/Users-Drive-Copy-Move.md +0 -0
  228. {gam7-7.13.2 → gam7-7.14.0}/wiki/Users-Drive-Files-Display.md +0 -0
  229. {gam7-7.13.2 → gam7-7.14.0}/wiki/Users-Drive-Files-Manage.md +0 -0
  230. {gam7-7.13.2 → gam7-7.14.0}/wiki/Users-Drive-Orphans.md +0 -0
  231. {gam7-7.13.2 → gam7-7.14.0}/wiki/Users-Drive-Ownership.md +0 -0
  232. {gam7-7.13.2 → gam7-7.14.0}/wiki/Users-Drive-Permissions.md +0 -0
  233. {gam7-7.13.2 → gam7-7.14.0}/wiki/Users-Drive-Query.md +0 -0
  234. {gam7-7.13.2 → gam7-7.14.0}/wiki/Users-Drive-Revisions.md +0 -0
  235. {gam7-7.13.2 → gam7-7.14.0}/wiki/Users-Drive-Shortcuts.md +0 -0
  236. {gam7-7.13.2 → gam7-7.14.0}/wiki/Users-Drive-Transfer.md +0 -0
  237. {gam7-7.13.2 → gam7-7.14.0}/wiki/Users-Forms.md +0 -0
  238. {gam7-7.13.2 → gam7-7.14.0}/wiki/Users-Gmail-CSE.md +0 -0
  239. {gam7-7.13.2 → gam7-7.14.0}/wiki/Users-Gmail-Delegates.md +0 -0
  240. {gam7-7.13.2 → gam7-7.14.0}/wiki/Users-Gmail-Filters.md +0 -0
  241. {gam7-7.13.2 → gam7-7.14.0}/wiki/Users-Gmail-Forwarding.md +0 -0
  242. {gam7-7.13.2 → gam7-7.14.0}/wiki/Users-Gmail-Labels.md +0 -0
  243. {gam7-7.13.2 → gam7-7.14.0}/wiki/Users-Gmail-Messages-Threads.md +0 -0
  244. {gam7-7.13.2 → gam7-7.14.0}/wiki/Users-Gmail-Profile.md +0 -0
  245. {gam7-7.13.2 → gam7-7.14.0}/wiki/Users-Gmail-S-MIME.md +0 -0
  246. {gam7-7.13.2 → gam7-7.14.0}/wiki/Users-Gmail-Send-As-Signature-Vacation.md +0 -0
  247. {gam7-7.13.2 → gam7-7.14.0}/wiki/Users-Gmail-Settings.md +0 -0
  248. {gam7-7.13.2 → gam7-7.14.0}/wiki/Users-Group-Membership.md +0 -0
  249. {gam7-7.13.2 → gam7-7.14.0}/wiki/Users-Keep-Notes.md +0 -0
  250. {gam7-7.13.2 → gam7-7.14.0}/wiki/Users-Looker-Studio.md +0 -0
  251. {gam7-7.13.2 → gam7-7.14.0}/wiki/Users-Meet.md +0 -0
  252. {gam7-7.13.2 → gam7-7.14.0}/wiki/Users-People-Contacts-Profiles.md +0 -0
  253. {gam7-7.13.2 → gam7-7.14.0}/wiki/Users-Photo.md +0 -0
  254. {gam7-7.13.2 → gam7-7.14.0}/wiki/Users-Profile-Photo.md +0 -0
  255. {gam7-7.13.2 → gam7-7.14.0}/wiki/Users-Profile-Sharing.md +0 -0
  256. {gam7-7.13.2 → gam7-7.14.0}/wiki/Users-Shared-Drives.md +0 -0
  257. {gam7-7.13.2 → gam7-7.14.0}/wiki/Users-Signout-Turnoff2SV.md +0 -0
  258. {gam7-7.13.2 → gam7-7.14.0}/wiki/Users-Spreadsheets.md +0 -0
  259. {gam7-7.13.2 → gam7-7.14.0}/wiki/Users-Tasks.md +0 -0
  260. {gam7-7.13.2 → gam7-7.14.0}/wiki/Users-Tokens.md +0 -0
  261. {gam7-7.13.2 → gam7-7.14.0}/wiki/Users-YouTube.md +0 -0
  262. {gam7-7.13.2 → gam7-7.14.0}/wiki/Users.md +0 -0
  263. {gam7-7.13.2 → gam7-7.14.0}/wiki/Using-GAM7-with-a-YubiKey.md +0 -0
  264. {gam7-7.13.2 → gam7-7.14.0}/wiki/Using-GAM7-with-a-delegated-admin-service-account.md +0 -0
  265. {gam7-7.13.2 → gam7-7.14.0}/wiki/Vault-Takeout.md +0 -0
  266. {gam7-7.13.2 → gam7-7.14.0}/wiki/Verifying-a-GAM7-Build-is-Legitimate-and-Official.md +0 -0
  267. {gam7-7.13.2 → gam7-7.14.0}/wiki/l-AdminSettingsExamples.md +0 -0
  268. {gam7-7.13.2 → gam7-7.14.0}/wiki/l-Android-Installation.md +0 -0
  269. {gam7-7.13.2 → gam7-7.14.0}/wiki/l-BulkOperations.md +0 -0
  270. {gam7-7.13.2 → gam7-7.14.0}/wiki/l-CalendarExamples.md +0 -0
  271. {gam7-7.13.2 → gam7-7.14.0}/wiki/l-Chat-Bot.md +0 -0
  272. {gam7-7.13.2 → gam7-7.14.0}/wiki/l-Chrome-Browser-Management.md +0 -0
  273. {gam7-7.13.2 → gam7-7.14.0}/wiki/l-Chrome-OS-Installation.md +0 -0
  274. {gam7-7.13.2 → gam7-7.14.0}/wiki/l-Chrome-Policy-Settings.md +0 -0
  275. {gam7-7.13.2 → gam7-7.14.0}/wiki/l-Cloud-Identity-Groups.md +0 -0
  276. {gam7-7.13.2 → gam7-7.14.0}/wiki/l-Command-Reference-Calendar-Resources.md +0 -0
  277. {gam7-7.13.2 → gam7-7.14.0}/wiki/l-Command-Reference-Calendars.md +0 -0
  278. {gam7-7.13.2 → gam7-7.14.0}/wiki/l-Command-Reference-Definitions.md +0 -0
  279. {gam7-7.13.2 → gam7-7.14.0}/wiki/l-Command-Reference-Drive.md +0 -0
  280. {gam7-7.13.2 → gam7-7.14.0}/wiki/l-Command-Reference-Email.md +0 -0
  281. {gam7-7.13.2 → gam7-7.14.0}/wiki/l-Command-Reference-Group-Attributes.md +0 -0
  282. {gam7-7.13.2 → gam7-7.14.0}/wiki/l-Command-Reference-Groups.md +0 -0
  283. {gam7-7.13.2 → gam7-7.14.0}/wiki/l-Command-Reference-Users.md +0 -0
  284. {gam7-7.13.2 → gam7-7.14.0}/wiki/l-Context-Aware-Access-Levels.md +0 -0
  285. {gam7-7.13.2 → gam7-7.14.0}/wiki/l-Creating-client_secrets.json-and-oauth2service.json.md +0 -0
  286. {gam7-7.13.2 → gam7-7.14.0}/wiki/l-CreatingClientSecretsFile.md +0 -0
  287. {gam7-7.13.2 → gam7-7.14.0}/wiki/l-Custom-Schemas.md +0 -0
  288. {gam7-7.13.2 → gam7-7.14.0}/wiki/l-Data-Transfers.md +0 -0
  289. {gam7-7.13.2 → gam7-7.14.0}/wiki/l-DomainVerification.md +0 -0
  290. {gam7-7.13.2 → gam7-7.14.0}/wiki/l-ExamplesAccountAuditing.md +0 -0
  291. {gam7-7.13.2 → gam7-7.14.0}/wiki/l-ExamplesCSV.md +0 -0
  292. {gam7-7.13.2 → gam7-7.14.0}/wiki/l-ExamplesEmailSettings.md +0 -0
  293. {gam7-7.13.2 → gam7-7.14.0}/wiki/l-ExamplesOrganizations.md +0 -0
  294. {gam7-7.13.2 → gam7-7.14.0}/wiki/l-GAM-Discussion-Group.md +0 -0
  295. {gam7-7.13.2 → gam7-7.14.0}/wiki/l-GAM-on-Android-and-Chrome-OS.md +0 -0
  296. {gam7-7.13.2 → gam7-7.14.0}/wiki/l-GAM-options-files.md +0 -0
  297. {gam7-7.13.2 → gam7-7.14.0}/wiki/l-GAM-with--minimal-GCP-rights.md +0 -0
  298. {gam7-7.13.2 → gam7-7.14.0}/wiki/l-GAM3CSVListings.md +0 -0
  299. {gam7-7.13.2 → gam7-7.14.0}/wiki/l-GAM3DirectoryCommands.md +0 -0
  300. {gam7-7.13.2 → gam7-7.14.0}/wiki/l-GAM3GroupSettings.md +0 -0
  301. {gam7-7.13.2 → gam7-7.14.0}/wiki/l-GAM7-FAQ.md +0 -0
  302. {gam7-7.13.2 → gam7-7.14.0}/wiki/l-Google-Vault---Takeout-Commands.md +0 -0
  303. {gam7-7.13.2 → gam7-7.14.0}/wiki/l-GoogleDriveManagement.md +0 -0
  304. {gam7-7.13.2 → gam7-7.14.0}/wiki/l-Grouping-18-or-Older-Users.md +0 -0
  305. {gam7-7.13.2 → gam7-7.14.0}/wiki/l-Home.md +0 -0
  306. {gam7-7.13.2 → gam7-7.14.0}/wiki/l-How-to-upgrade-from-Standard-GAM.md +0 -0
  307. {gam7-7.13.2 → gam7-7.14.0}/wiki/l-Inbound-SSO-Settings.md +0 -0
  308. {gam7-7.13.2 → gam7-7.14.0}/wiki/l-LicenseExamples.md +0 -0
  309. {gam7-7.13.2 → gam7-7.14.0}/wiki/l-Managing-Admins.md +0 -0
  310. {gam7-7.13.2 → gam7-7.14.0}/wiki/l-Managing-CloudPrint-Printers.md +0 -0
  311. {gam7-7.13.2 → gam7-7.14.0}/wiki/l-Managing-Devices.md +0 -0
  312. {gam7-7.13.2 → gam7-7.14.0}/wiki/l-Managing-Google-Classroom.md +0 -0
  313. {gam7-7.13.2 → gam7-7.14.0}/wiki/l-OAuthKeyManagement.md +0 -0
  314. {gam7-7.13.2 → gam7-7.14.0}/wiki/l-Printers.md +0 -0
  315. {gam7-7.13.2 → gam7-7.14.0}/wiki/l-ResellerCommands.md +0 -0
  316. {gam7-7.13.2 → gam7-7.14.0}/wiki/l-Running-GAM-on-Google-Compute-Engine-(GCE)-Securely.md +0 -0
  317. {gam7-7.13.2 → gam7-7.14.0}/wiki/l-SecurityExamples.md +0 -0
  318. {gam7-7.13.2 → gam7-7.14.0}/wiki/l-UnmanagedUsersExamples.md +0 -0
  319. {gam7-7.13.2 → gam7-7.14.0}/wiki/l-Use-a-Yubikey.md +0 -0
  320. {gam7-7.13.2 → gam7-7.14.0}/wiki/l-Using-GAM-with-a-delegated-admin-service-account-(DASA).md +0 -0
  321. {gam7-7.13.2 → gam7-7.14.0}/wiki/l-_Footer.md +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: gam7
3
- Version: 7.13.2
3
+ Version: 7.14.0
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
@@ -622,6 +622,14 @@ If an item contains spaces, it should be surrounded by ".
622
622
  gs://<StorageBucketName>/<StorageObjectName>|
623
623
  <StorageBucketName>/<StorageObjectName>
624
624
  <Tag> ::= <String>
625
+ <TagManagerAccountID> ::= <String>
626
+ <TagManagerAccountPath> ::= accounts/<TagManagerAccountID>
627
+ <TagManagerContainerID> ::= <String>
628
+ <TagManagerContainerPath> ::= accounts/<TagManagerAccountID>/containers/<TagManagerContainerID>
629
+ <TagManagerWorkspaceID> ::= <String>
630
+ <TagManagerWorkspacePath> ::= accounts/<TagManagerAccountID>/containers/<TagManagerContainerID>/workspaces/<TagManagerWorkspaceID>
631
+ <TagManagerTagID> ::= <String>
632
+ <TagManagerTagPath> ::= accounts/<TagManagerAccountID>/containers/<TagManagerContainerID>/workspaces/<TagManagerWorkspaceID>/tags/<TagManagerTagID>
625
633
  <TakeoutBucketName> ::= takeout-export-[a-f,0-9,-]*
626
634
  <TaskID> ::= <String>
627
635
  <TaskListID> ::= <String>
@@ -685,6 +693,7 @@ If an item contains spaces, it should be surrounded by ".
685
693
  <CalendarList> ::= "<CalendarItem>(,<CalendarItem>)*"
686
694
  <ChatSpaceList> ::= "<ChatSpace>(,<ChatSpace>)*"
687
695
  <ChromeProfileNameList> ::= "<ChromeProfileName>(,<ChromeProfileName>)*"
696
+ <ChromeProfileCommandNameList> ::= "<ChromeProfileCommandName>(,<ChromeProfileCommandName>)*"
688
697
  <CIGroupAliasList> ::= "<CIGroupAlias>(,<CIGroupAlias>)*"
689
698
  <CIGroupMemberTypeList> ::= "<CIGroupMemberType>(,<CIGroupMemberType>)*"
690
699
  <CIPolicyNameList> ::= "<CIPolicyName>(,<CIPolicyName>)*"
@@ -770,6 +779,9 @@ If an item contains spaces, it should be surrounded by ".
770
779
  <SharedDriveACLRoleList> ::= "<SharedDriveACLRole>(,<SharedDriveACLRole>)*"
771
780
  <SharedDriveIDList> ::= "<SharedDriveID>(,<SharedDriveID>)*"
772
781
  <StringList> ::= "<String>(,<String>)*"
782
+ <TagManagerAccountPathList> ::= "<TagManagerAccountPath>(,<TagManagerAccountPath>)*"
783
+ <TagManagerContainerPathList> ::= "<TagManagerContainerPath>(,<TagManagerContainerPath>)*"
784
+ <TagManagerWorkspacePathList> ::= "<TagManagerWorkspacePath>(,<TagManagerWorkspacePath>)*"
773
785
  <TasklistIDList> ::= "<TasklistID>(,<TasklistID>)*"
774
786
  <TasklistTitleList> ::= "'<TasklistTitle>'(,'<TasklistTitle>')*"
775
787
  <TasklistIDTaskIDList> ::= "<TasklistIDTaskID>(,<TasklistIDTaskID>)*"
@@ -1025,7 +1037,10 @@ Specify a collection of items by directly specifying them; the item type is dete
1025
1037
  <CalendarEntity> ::=
1026
1038
  <CalendarList> | <FileSelector> | <CSVFileSelector> | <CSVkmdSelector> | <CSVDataSelector>
1027
1039
  <ChromeProfileNameEntity> ::=
1028
- <ChromeProfileNameList> | <FileSelector> | <CSVFileSelector>
1040
+ <ChromeProfileNameList> |
1041
+ (select <FileSelector>|<CSVFileSelector>) |
1042
+ (filter <String> (filtertime<String> <Time>)* [orderby <ChromeProfileOrderByFieldName> [ascending|descending]]) |
1043
+ (commands <ChromeProfileCommandNameList>|<FileSelector>|<CSVFileSelector>)
1029
1044
  <CIPolicyNameEntity> ::=
1030
1045
  <CIPolicyNameList> | <FileSelector> | <CSVFileSelector>
1031
1046
  <ClassificationLabelNameEntity> ::=
@@ -1228,6 +1243,15 @@ Specify a collection of items by directly specifying them; the item type is dete
1228
1243
  <SiteACLScopeList> | <FileSelector> | <CSVFileSelector> | <CSVkmdSelector> | <CSVDataSelector>
1229
1244
  <SiteEntity> ::=
1230
1245
  <SiteList> | <FileSelector> | <CSVFileSelector> | <CSVkmdSelector> | <CSVDataSelector>
1246
+ <TagManagerAccountPathEntity> ::=
1247
+ <TagManagerAccountPathList> |
1248
+ (select <FileSelector>|<CSVFileSelector>) |
1249
+ <TagManagerContainerPathEntity> ::=
1250
+ <TagManagerContainerPathList> |
1251
+ (select <FileSelector>|<CSVFileSelector>) |
1252
+ <TagManagerWorkspacePathEntity> ::=
1253
+ <TagManagerWorkspacePathList> |
1254
+ (select <FileSelector>|<CSVFileSelector>) |
1231
1255
  <TasklistEntity> ::=
1232
1256
  <TasklistIDList> | <TaskListTitleList> | <FileSelector> | <CSVFileSelector>
1233
1257
  <TasklistIDTaskIDEntity> ::=
@@ -2228,12 +2252,14 @@ gam show chromeneedsattn
2228
2252
 
2229
2253
  <ChromeProfilePermanentID> ::= <String>
2230
2254
  <ChromeProfileName> ::= customers/<CustomerID>/profiles/<ChromeProfilePermanentID> | <ChromeProfilePermanentID>
2231
- <ChromeProfileCommandName> ::= <ChomeProfileName>/commands/<String>
2232
2255
  <ChromeProfileNameList> ::= "<ChromeProfileName>(,<ChromeProfileName>)*"
2256
+ <ChromeProfileCommandName> ::= <ChomeProfileName>/commands/<String>
2257
+ <ChromeProfileCommandNameList> ::= "<ChromeProfileCommandName>(,<ChromeProfileCommandName>)*"
2233
2258
  <ChromeProfileNameEntity> ::=
2234
2259
  <ChromeProfileNameList> |
2235
- (select <FileSelector>|<CSVFileSelector>) |
2236
- (filter <String> (filtertime<String> <Time>)* [orderby <ChromeProfileOrderByFieldName> [ascending|descending]])
2260
+ (select <ChromeProfileNameList>|<FileSelector>|<CSVFileSelector>) |
2261
+ (filter <String> (filtertime<String> <Time>)* [orderby <ChromeProfileOrderByFieldName> [ascending|descending]]) |
2262
+ (commands <ChromeProfileCommandNameList>|<FileSelector>|<CSVFileSelector>)
2237
2263
 
2238
2264
  <ChromeProfileFieldName> ::=
2239
2265
  affiliationstate|
@@ -2297,7 +2323,7 @@ gam print chromeprofiles [todrive <ToDriveAttribute>*]
2297
2323
 
2298
2324
  gam create chromeprofilecommand <ChromeProfileNameEntity>
2299
2325
  [clearcache [<Boolean>]] [clearcookies [<Boolean>]]
2300
- [formatjson]
2326
+ [csv [todrive <ToDriveAttribute>*] [formatjson [quotechar <Character>]]]
2301
2327
 
2302
2328
  gam info chromeprofilecommand <ChromeProfileCommandName>
2303
2329
  [formatjson]
@@ -8334,6 +8360,59 @@ gam <UserTypeEntity> profile share|shared|unshare|unshared
8334
8360
 
8335
8361
  gam <UserTypeEntity> show profile
8336
8362
 
8363
+ # Users - Tag Manager
8364
+
8365
+ <TagManagerAccountID> ::= <String>
8366
+ <TagManagerAccountPath> ::= accounts/<TagManagerAccountID>
8367
+ <TagManagerAccountPathList> ::= "<TagManagerAccountPath>(,<TagManagerAccountPath>)*"
8368
+ <TagManagerAccountPathEntity> ::=
8369
+ <TagManagerAccountPathList> |
8370
+ (select <FileSelector>|<CSVFileSelector>) |
8371
+
8372
+ <TagManagerContainerID> ::= <String>
8373
+ <TagManagerContainerPath> ::= accounts/<TagManagerAccountID>/containers/<TagManagerContainerID>
8374
+ <TagManagerContainerPathList> ::= "<TagManagerContainerPath>(,<TagManagerContainerPath>)*"
8375
+ <TagManagerContainerPathEntity> ::=
8376
+ <TagManagerContainerPathList> |
8377
+ (select <FileSelector>|<CSVFileSelector>) |
8378
+
8379
+ <TagManagerWorkspaceID> ::= <String>
8380
+ <TagManagerWorkspacePath> ::= accounts/<TagManagerAccountID>/containers/<TagManagerContainerID>/workspaces/<TagManagerWorkspaceID>
8381
+ <TagManagerWorkspacePathList> ::= "<TagManagerWorkspacePath>(,<TagManagerWorkspacePath>)*"
8382
+ <TagManagerWorkspacePathEntity> ::=
8383
+ <TagManagerWorkspacePathList> |
8384
+ (select <FileSelector>|<CSVFileSelector>) |
8385
+
8386
+ <TagManagerTagID> ::= <String>
8387
+ <TagManagerTagPath> ::= accounts/<TagManagerAccountID>/containers/<TagManagerContainerID>/workspaces/<TagManagerWorkspaceID>/tags/<TagManagerTagID>
8388
+
8389
+ gam <UserTypeEntity> show tagmanageraccounts
8390
+ [includegoogletags [<Boolean>]]
8391
+ [formatjson]
8392
+ gam <UserTypeEntity> print tagmanagerccounts [todrive <ToDriveAttribute>*]
8393
+ [includegoogletags [<Boolean>]]
8394
+ [formatjson [quotechar <Character>]]
8395
+
8396
+ gam <UserTypeEntity> show tagmanagercontainers <TagManagerAccountPathEntity>
8397
+ [formatjson]
8398
+ gam <UserTypeEntity> print tagmanagercontainers <TagManagerAccountPathEntity> [todrive <ToDriveAttribute>*]
8399
+ [formatjson [quotechar <Character>]]
8400
+
8401
+ gam <UserTypeEntity> show tagmanagerworkspaces <TagManagerContainerPathEntity>
8402
+ [formatjson]
8403
+ gam <UserTypeEntity> print tagmanagerworkspaces <TagManagerContainerPathEntity> [todrive <ToDriveAttribute>*]
8404
+ [formatjson [quotechar <Character>]]
8405
+
8406
+ gam <UserTypeEntity> show tagmanagertags <TagManagerWorkspacePathEntity>
8407
+ [formatjson]
8408
+ gam <UserTypeEntity> print tagmanagertags <TagManagerWorkspacePathEntity> [todrive <ToDriveAttribute>*]
8409
+ [formatjson [quotechar <Character>]]
8410
+
8411
+ gam <UserTypeEntity> show tagmanagerpermissions <TagManagerAccountPathEntity>
8412
+ [formatjson]
8413
+ gam <UserTypeEntity> print tagmanagerpermissions <TagManagerAccountPathEntity> [todrive <ToDriveAttribute>*]
8414
+ [formatjson [quotechar <Character>]]
8415
+
8337
8416
  # Users - Tasks
8338
8417
 
8339
8418
  <TaskAttribute> ::=
@@ -1,3 +1,18 @@
1
+ 7.14.00
2
+
3
+ Added commands to display Google Tag Manager accounts, containers, workspaces and tags.
4
+
5
+ * See: https://github.com/GAM-team/GAM/wiki/Users-Tag-Manager
6
+
7
+ 7.13.03
8
+
9
+ Added option `csv [todrive <ToDriveAttribute>*] [formatjson [quotechar <Character>]]]`
10
+ to `gam create chromeprofilecommand` so that command details are displayed in CSV format.
11
+
12
+ Added option `commands <ChromeProfileCommandNameList>|<FileSelector>|<CSVFileSelector>` to `<ChromeProfileNameEntity>`
13
+ so that `gam print|show chromeprofilecommands` can directly display the commands generated by
14
+ `gam create chromeprofilecommand` with the `csv` option.
15
+
1
16
  7.13.02
2
17
 
3
18
  Fixed bug in `gam create chromeprofilecommand` where `select|filter` were not recognized.
@@ -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.13.02'
28
+ __version__ = '7.14.00'
29
29
  __license__ = 'Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0)'
30
30
 
31
31
  #pylint: disable=wrong-import-position
@@ -24113,7 +24113,10 @@ def infoCrOSDevices(entityList):
24113
24113
  printKeyValueList([up, ''])
24114
24114
  Ind.Increment()
24115
24115
  for key, value in sorted(iter(cros[up].items())):
24116
- printKeyValueList([key, value])
24116
+ if key not in CROS_TIME_OBJECTS:
24117
+ printKeyValueList([key, value])
24118
+ else:
24119
+ printKeyValueList([key, formatLocalTime(value)])
24117
24120
  Ind.Decrement()
24118
24121
  if not noLists:
24119
24122
  activeTimeRanges = _filterActiveTimeRanges(cros, True, listLimit, startDate, endDate, activeTimeRangesOrder)
@@ -25677,24 +25680,28 @@ def doPrintShowChromeProfiles():
25677
25680
  csvPF.writeCSVfile('Chrome Profiles')
25678
25681
 
25679
25682
  def _getChromeProfileNameList():
25680
- if not Cmd.PeekArgumentPresent(['select', 'filter', 'filters']):
25683
+ if not Cmd.PeekArgumentPresent(['select', 'commands', 'filter', 'filters']):
25681
25684
  return getString(Cmd.OB_CHROMEPROFILE_NAME_LIST).replace(',', ' ').split()
25682
25685
  return []
25683
25686
 
25684
25687
  def _initChromeProfileNameParameters():
25685
25688
  cm = buildGAPIObject(API.CHROMEMANAGEMENT)
25686
- return (cm, {'profileNameList': _getChromeProfileNameList(), 'customerId': _getCustomerId(),
25689
+ return (cm, {'profileNameList': _getChromeProfileNameList(),
25690
+ 'commandNameList': [],
25691
+ 'customerId': _getCustomerId(),
25687
25692
  'cbfilter': None, 'filterTimes': {},
25688
25693
  'OBY': OrderBy(CHROMEPROFILE_ORDERBY_CHOICE_MAP)})
25689
25694
 
25690
25695
  def _getChromeProfileNameParameters(myarg, parameters):
25691
- if not parameters['cbfilter'] and myarg == 'select':
25696
+ if not parameters['cbfilter'] and not parameters['commandNameList'] and myarg == 'select':
25692
25697
  parameters['profileNameList'].extend(getEntityList(Cmd.OB_CHROMEPROFILE_NAME_LIST))
25693
- elif not parameters['profileNameList'] and myarg == 'orderby':
25698
+ elif not parameters['cbfilter'] and not parameters['profileNameList'] and myarg == 'commands':
25699
+ parameters['commandNameList'].extend(getEntityList(Cmd.OB_CHROMEPROFILE_COMMAND_NAME_LIST))
25700
+ elif not parameters['profileNameList'] and not parameters['commandNameList'] and myarg == 'orderby':
25694
25701
  parameters['OBY'].GetChoice()
25695
- elif not parameters['profileNameList'] and myarg.startswith('filtertime'):
25702
+ elif not parameters['profileNameList'] and not parameters['commandNameList'] and myarg.startswith('filtertime'):
25696
25703
  parameters['filterTimes'][myarg] = getTimeOrDeltaFromNow()
25697
- elif not parameters['profileNameList'] and myarg in {'filter', 'filters'}:
25704
+ elif not parameters['profileNameList'] and not parameters['commandNameList'] and myarg in {'filter', 'filters'}:
25698
25705
  parameters['cbfilter'] = getString(Cmd.OB_STRING)
25699
25706
  else:
25700
25707
  return False
@@ -25703,9 +25710,14 @@ def _getChromeProfileNameParameters(myarg, parameters):
25703
25710
  def _getChromeProfileNameEntityForCommand(cm, parameters):
25704
25711
  if parameters['cbfilter'] is None:
25705
25712
  customerId = parameters['customerId']
25706
- for i, profileName in enumerate(parameters['profileNameList']):
25707
- if not profileName.startswith('customers'):
25708
- parameters['profileNameList'][i] = f'customers/{customerId}/profiles/{profileName}'
25713
+ if parameters['profileNameList']:
25714
+ for i, profileName in enumerate(parameters['profileNameList']):
25715
+ if not profileName.startswith('customers'):
25716
+ parameters['profileNameList'][i] = f'customers/{customerId}/profiles/{profileName}'
25717
+ elif parameters['commandNameList']:
25718
+ for i, commandName in enumerate(parameters['commandNameList']):
25719
+ if not commandName.startswith('customers'):
25720
+ parameters['commandNameList'][i] = f'customers/{customerId}/profiles/{commandName}'
25709
25721
  return
25710
25722
  if parameters['filterTimes']:
25711
25723
  for filterTimeName, filterTimeValue in iter(parameters['filterTimes'].items()):
@@ -25740,13 +25752,23 @@ def _showChromeProfileCommand(profcmd, FJQC, i=0, count=0):
25740
25752
  showJSON(None, profcmd, timeObjects=CHROMEPROFILECOMMAND_TIME_OBJECTS)
25741
25753
  Ind.Decrement()
25742
25754
 
25755
+ def _printChromeProfileCommand(profcmd, csvPF, FJQC):
25756
+ row = flattenJSON(profcmd, timeObjects=CHROMEPROFILECOMMAND_TIME_OBJECTS)
25757
+ if not FJQC.formatJSON:
25758
+ csvPF.WriteRowTitles(row)
25759
+ elif csvPF.CheckRowTitles(row):
25760
+ csvPF.WriteRowNoFilter({'name': profcmd['name'],
25761
+ 'JSON': json.dumps(cleanJSON(profcmd, timeObjects=CHROMEPROFILECOMMAND_TIME_OBJECTS),
25762
+ ensure_ascii=False, sort_keys=True)})
25763
+
25743
25764
  # gam create chromeprofilecommand <ChromeProfileNameEntity>
25744
25765
  # [clearcache [<Boolean>]] [clearcookies [<Boolean>]]
25745
- # [formatjson]
25766
+ # [csv [todrive <ToDriveAttribute>*] [formatjson [quotechar <Character>]]]
25746
25767
  def doCreateChromeProfileCommand():
25747
25768
  cm, parameters = _initChromeProfileNameParameters()
25748
25769
  body = {'commandType': 'clearBrowsingData', 'payload': {}}
25749
- FJQC = FormatJSONQuoteChar()
25770
+ csvPF = None
25771
+ FJQC = FormatJSONQuoteChar(None)
25750
25772
  while Cmd.ArgumentsRemaining():
25751
25773
  myarg = getArgument()
25752
25774
  if _getChromeProfileNameParameters(myarg, parameters):
@@ -25755,8 +25777,13 @@ def doCreateChromeProfileCommand():
25755
25777
  body['payload']['clearCache'] = getBoolean()
25756
25778
  elif myarg == 'clearcookies':
25757
25779
  body['payload']['clearCookies'] = getBoolean()
25780
+ elif myarg == 'csv':
25781
+ csvPF = CSVPrintFile(['name'], 'sortall')
25782
+ FJQC.SetCsvPF(csvPF)
25783
+ elif csvPF and myarg == 'todrive':
25784
+ csvPF.GetTodriveParameters()
25758
25785
  else:
25759
- FJQC.GetFormatJSON(myarg)
25786
+ FJQC.GetFormatJSONQuoteChar(myarg, True)
25760
25787
  _getChromeProfileNameEntityForCommand(cm, parameters)
25761
25788
  count = len(parameters['profileNameList'])
25762
25789
  i = 0
@@ -25766,11 +25793,16 @@ def doCreateChromeProfileCommand():
25766
25793
  profcmd = callGAPI(cm.customers().profiles().commands(), 'create',
25767
25794
  throwReasons=[GAPI.INVALID_ARGUMENT, GAPI.NOT_FOUND, GAPI.PERMISSION_DENIED],
25768
25795
  parent=profileName, body=body)
25769
- _showChromeProfileCommand(profcmd, FJQC)
25796
+ if csvPF is None:
25797
+ _showChromeProfileCommand(profcmd, FJQC, i, count)
25798
+ else:
25799
+ _printChromeProfileCommand(profcmd, csvPF, FJQC)
25770
25800
  except (GAPI.notFound) as e:
25771
25801
  entityActionFailedWarning([Ent.CHROME_PROFILE_COMMAND, profileName], str(e), i, count)
25772
25802
  except (GAPI.invalidArgument, GAPI.permissionDenied) as e:
25773
25803
  entityActionFailedExit([Ent.CHROME_PROFILE_COMMAND, profileName], str(e))
25804
+ if csvPF:
25805
+ csvPF.writeCSVfile('Chrome Profile Commands')
25774
25806
 
25775
25807
  # gam info chromeprofilecommand <ChromeProfileCommandName>
25776
25808
  # [formatjson]
@@ -25794,15 +25826,6 @@ def doInfoChromeProfileCommand():
25794
25826
  # gam print chromeprofilecommands <ChromeProfilNameEntity> [todrive <ToDriveAttribute>*]
25795
25827
  # [formatjson [quotechar <Character>]]
25796
25828
  def doPrintShowChromeProfileCommands():
25797
- def _printProfileCommand(profcmd):
25798
- row = flattenJSON(profcmd, timeObjects=CHROMEPROFILECOMMAND_TIME_OBJECTS)
25799
- if not FJQC.formatJSON:
25800
- csvPF.WriteRowTitles(row)
25801
- elif csvPF.CheckRowTitles(row):
25802
- csvPF.WriteRowNoFilter({'name': profcmd['name'],
25803
- 'JSON': json.dumps(cleanJSON(profcmd, timeObjects=CHROMEPROFILECOMMAND_TIME_OBJECTS),
25804
- ensure_ascii=False, sort_keys=True)})
25805
-
25806
25829
  csvPF = CSVPrintFile(['name']) if Act.csvFormat() else None
25807
25830
  FJQC = FormatJSONQuoteChar(csvPF)
25808
25831
  cm, parameters = _initChromeProfileNameParameters()
@@ -25815,32 +25838,50 @@ def doPrintShowChromeProfileCommands():
25815
25838
  else:
25816
25839
  FJQC.GetFormatJSONQuoteChar(myarg, True)
25817
25840
  _getChromeProfileNameEntityForCommand(cm, parameters)
25818
- count = len(parameters['profileNameList'])
25819
- i = 0
25820
- for profileName in parameters['profileNameList']:
25821
- i +=1
25822
- printGettingEntityItemForWhom(Ent.CHROME_PROFILE_COMMAND, profileName, i, count)
25823
- pageMessage = getPageMessage()
25824
- try:
25825
- profcmds = callGAPIpages(cm.customers().profiles().commands(), 'list', 'chromeBrowserProfileCommands',
25826
- pageMessage=pageMessage,
25827
- throwReasons=[GAPI.NOT_FOUND, GAPI.INVALID_ARGUMENT, GAPI.PERMISSION_DENIED],
25828
- parent=profileName, pageSize=100)
25829
- if not csvPF:
25830
- jcount = len(profcmds)
25831
- Ind.Increment()
25832
- j = 0
25833
- for profcmd in profcmds:
25834
- j += 1
25835
- _showChromeProfileCommand(profcmd, FJQC, j, jcount)
25836
- Ind.Decrement()
25837
- else:
25838
- for profcmd in profcmds:
25839
- _printProfileCommand(profcmd)
25840
- except (GAPI.notFound) as e:
25841
- entityActionFailedWarning([Ent.CHROME_PROFILE, profileName], str(e), i, count)
25842
- except (GAPI.invalidArgument, GAPI.permissionDenied) as e:
25843
- entityActionFailedExit([Ent.CHROME_PROFILE, profileName], str(e))
25841
+ if parameters['profileNameList']:
25842
+ count = len(parameters['profileNameList'])
25843
+ i = 0
25844
+ for profileName in parameters['profileNameList']:
25845
+ i +=1
25846
+ printGettingEntityItemForWhom(Ent.CHROME_PROFILE_COMMAND, profileName, i, count)
25847
+ pageMessage = getPageMessage()
25848
+ try:
25849
+ profcmds = callGAPIpages(cm.customers().profiles().commands(), 'list', 'chromeBrowserProfileCommands',
25850
+ pageMessage=pageMessage,
25851
+ throwReasons=[GAPI.NOT_FOUND, GAPI.INVALID_ARGUMENT, GAPI.PERMISSION_DENIED],
25852
+ parent=profileName, pageSize=100)
25853
+ if not csvPF:
25854
+ jcount = len(profcmds)
25855
+ Ind.Increment()
25856
+ j = 0
25857
+ for profcmd in profcmds:
25858
+ j += 1
25859
+ _showChromeProfileCommand(profcmd, FJQC, j, jcount)
25860
+ Ind.Decrement()
25861
+ else:
25862
+ for profcmd in profcmds:
25863
+ _printChromeProfileCommand(profcmd, csvPF, FJQC)
25864
+ except GAPI.notFound as e:
25865
+ entityActionFailedWarning([Ent.CHROME_PROFILE, profileName], str(e), i, count)
25866
+ except (GAPI.invalidArgument, GAPI.permissionDenied) as e:
25867
+ entityActionFailedExit([Ent.CHROME_PROFILE, profileName], str(e))
25868
+ elif parameters['commandNameList']:
25869
+ count = len(parameters['commandNameList'])
25870
+ i = 0
25871
+ for profileCommandName in parameters['commandNameList']:
25872
+ i +=1
25873
+ try:
25874
+ profcmd = callGAPI(cm.customers().profiles().commands(), 'get',
25875
+ throwReasons=[GAPI.INVALID_ARGUMENT, GAPI.NOT_FOUND, GAPI.PERMISSION_DENIED],
25876
+ name=profileCommandName)
25877
+ if not csvPF:
25878
+ _showChromeProfileCommand(profcmd, FJQC, i, count)
25879
+ else:
25880
+ _printChromeProfileCommand(profcmd, csvPF, FJQC)
25881
+ except GAPI.notFound as e:
25882
+ entityActionFailedWarning([Ent.CHROME_PROFILE_COMMAND, profileCommandName], str(e), i, count)
25883
+ except (GAPI.invalidArgument, GAPI.permissionDenied) as e:
25884
+ entityActionFailedExit([Ent.CHROME_PROFILE, profileCommandName], str(e))
25844
25885
  if csvPF:
25845
25886
  csvPF.writeCSVfile('Chrome Profile Commands')
25846
25887
 
@@ -76450,6 +76491,147 @@ def importTasklist(users):
76450
76491
  tasklist=tasklistId, parent=parent, body=task)
76451
76492
  parentIdMap[taskId] = result['id']
76452
76493
 
76494
+ TAGMANAGER_PARAMETERS = {
76495
+ Ent.TAGMANAGER_ACCOUNT: {'api': API.TAGMANAGER, 'respType': 'account', 'parentEntityType': None,
76496
+ 'name': 'name', 'idList': ['accountId']},
76497
+ Ent.TAGMANAGER_CONTAINER: {'api': API.TAGMANAGER, 'respType': 'container', 'parentEntityType': Ent.TAGMANAGER_ACCOUNT,
76498
+ 'name': 'name', 'idList': ['accountId', 'containerId']},
76499
+ Ent.TAGMANAGER_WORKSPACE: {'api': API.TAGMANAGER, 'respType': 'workspace', 'parentEntityType': Ent.TAGMANAGER_CONTAINER,
76500
+ 'name': 'name', 'idList': ['accountId', 'containerId', 'workspaceId']},
76501
+ Ent.TAGMANAGER_TAG: {'api': API.TAGMANAGER, 'respType': 'tag', 'parentEntityType': Ent.TAGMANAGER_WORKSPACE,
76502
+ 'name': 'name', 'idList': ['accountId', 'containerId', 'workspaceId', 'tagId']},
76503
+ Ent.TAGMANAGER_PERMISSION: {'api': API.TAGMANAGER_USERS, 'respType': 'userPermission', 'parentEntityType': Ent.TAGMANAGER_ACCOUNT,
76504
+ 'name': 'emailAddress', 'idList': ['accountId']},
76505
+ }
76506
+
76507
+ def printShowTagManagerObjects(users, entityType):
76508
+ csvPF = CSVPrintFile(['User']) if Act.csvFormat() else None
76509
+ FJQC = FormatJSONQuoteChar(csvPF)
76510
+ if entityType == Ent.TAGMANAGER_ACCOUNT:
76511
+ kwargs = {'includeGoogleTags': False}
76512
+ parentList = [None]
76513
+ else:
76514
+ kwargs = {'parent': None}
76515
+ if not checkArgumentPresent('select'):
76516
+ parentList = getString(Cmd.OB_TAGMANAGER_PATH_LIST).replace(',', ' ').split()
76517
+ else:
76518
+ parentList = getEntityList(Cmd.OB_TAGMANAGER_PATH_LIST)
76519
+ parameters = TAGMANAGER_PARAMETERS[entityType]
76520
+ if csvPF:
76521
+ csvPF.AddTitles([parameters['name'], 'path'])
76522
+ while Cmd.ArgumentsRemaining():
76523
+ myarg = getArgument()
76524
+ if csvPF and myarg == 'todrive':
76525
+ csvPF.GetTodriveParameters()
76526
+ elif entityType == Ent.TAGMANAGER_ACCOUNT and myarg == 'includegoogletags':
76527
+ kwargs['includeGoogleTags'] = getBoolean()
76528
+ else:
76529
+ FJQC.GetFormatJSONQuoteChar(myarg, True)
76530
+ i, count, users = getEntityArgument(users)
76531
+ for user in users:
76532
+ i += 1
76533
+ user, svc = buildGAPIServiceObject(parameters['api'], user, i, count)
76534
+ if not svc:
76535
+ continue
76536
+ if entityType == Ent.TAGMANAGER_ACCOUNT:
76537
+ svc = svc.accounts()
76538
+ elif entityType == Ent.TAGMANAGER_CONTAINER:
76539
+ svc = svc.accounts().containers()
76540
+ elif entityType == Ent.TAGMANAGER_WORKSPACE:
76541
+ svc = svc.accounts().containers().workspaces()
76542
+ elif entityType == Ent.TAGMANAGER_TAG:
76543
+ svc = svc.accounts().containers().workspaces().tags()
76544
+ else: #elif entityType == Ent.TAGMANAGER_PERMISSION:
76545
+ svc = svc.accounts().user_permissions()
76546
+ jcount = len(parentList)
76547
+ j = 0
76548
+ for parent in parentList:
76549
+ j += 1
76550
+ if entityType == Ent.TAGMANAGER_ACCOUNT:
76551
+ printGettingAllEntityItemsForWhom(entityType, user, i, count)
76552
+ else:
76553
+ kwargs['parent'] = parent
76554
+ qualifier = f' for {Ent.Singular(parameters["parentEntityType"])}: {parent}'
76555
+ printGettingAllEntityItemsForWhom(entityType, user, i, count, qualifier=qualifier)
76556
+ try:
76557
+ results = callGAPIpages(svc, 'list', parameters['respType'],
76558
+ pageMessage=getPageMessageForWhom(),
76559
+ throwReasons=GAPI.TAGMANAGER_THROW_REASONS,
76560
+ **kwargs)
76561
+ except (GAPI.badRequest, GAPI.invalid, GAPI.notFound) as e:
76562
+ entityActionFailedWarning([Ent.USER, user, entityType, kwargs['parent']], str(e), j, jcount)
76563
+ continue
76564
+ kcount = len(results)
76565
+ if not csvPF:
76566
+ if not FJQC.formatJSON:
76567
+ entityPerformActionNumItems([Ent.USER, user], kcount, entityType, j, jcount)
76568
+ Ind.Increment()
76569
+ k = 0
76570
+ for result in results:
76571
+ k += 1
76572
+ if not FJQC.formatJSON:
76573
+ printEntity([entityType, result['path']], k, kcount)
76574
+ Ind.Increment()
76575
+ printKeyValueList([parameters['name'], result.pop(parameters['name'])])
76576
+ for tmid in parameters['idList']:
76577
+ printKeyValueList([tmid, result.pop(tmid)])
76578
+ showJSON(None, result)
76579
+ Ind.Decrement()
76580
+ else:
76581
+ printLine(json.dumps(cleanJSON(result), ensure_ascii=False, sort_keys=True))
76582
+ Ind.Decrement()
76583
+ else:
76584
+ for result in results:
76585
+ baseRow = {'User': user}
76586
+ for tmid in parameters['idList']:
76587
+ baseRow[tmid] = result.pop(tmid)
76588
+ row = flattenJSON(result, flattened=baseRow)
76589
+ if not FJQC.formatJSON:
76590
+ csvPF.WriteRowTitles(row)
76591
+ elif csvPF.CheckRowTitles(row):
76592
+ row = {'User': user, parameters['name']: result[parameters['name']], 'path': result['path']}
76593
+ row['JSON'] = json.dumps(cleanJSON(result), ensure_ascii=False, sort_keys=True)
76594
+ csvPF.WriteRowNoFilter(row)
76595
+ if csvPF:
76596
+ csvPF.writeCSVfile(Ent.Plural(entityType))
76597
+
76598
+ # gam <UserTypeEntity> show tagmanageraccounts
76599
+ # [includegoogletags [<Boolean>]]
76600
+ # [formatjson]
76601
+ # gam <UserTypeEntity> print tagmanagerccounts [todrive <ToDriveAttribute>*]
76602
+ # [includegoogletags [<Boolean>]]
76603
+ # [formatjson [quotechar <Character>]]
76604
+ def printShowTagManagerAccounts(users):
76605
+ printShowTagManagerObjects(users, Ent.TAGMANAGER_ACCOUNT)
76606
+
76607
+ # gam <UserTypeEntity> show tagmanagercontainers <TagManagerAccountPathEntity>
76608
+ # [formatjson]
76609
+ # gam <UserTypeEntity> print tagmanagercontainers <TagManagerAccountPathEntity> [todrive <ToDriveAttribute>*]
76610
+ # [formatjson [quotechar <Character>]]
76611
+ def printShowTagManagerContainers(users):
76612
+ printShowTagManagerObjects(users, Ent.TAGMANAGER_CONTAINER)
76613
+
76614
+ # gam <UserTypeEntity> show tagmanagerworkspaces <TagManagerContainerPathEntity>
76615
+ # [formatjson]
76616
+ # gam <UserTypeEntity> print tagmanagerworkspaces <TagManagerContainerPathEntity>
76617
+ # [formatjson [quotechar <Character>]]
76618
+ def printShowTagManagerWorkspaces(users):
76619
+ printShowTagManagerObjects(users, Ent.TAGMANAGER_WORKSPACE)
76620
+
76621
+ # gam <UserTypeEntity> show tagmanagertags <TagManagerWorkspacePathEntity>
76622
+ # [formatjson]
76623
+ # gam <UserTypeEntity> print tagmanagertags <TagManagerWorkspacePathEntity> [todrive <ToDriveAttribute>*]
76624
+ # [formatjson [quotechar <Character>]]
76625
+ def printShowTagManagerTags(users):
76626
+ printShowTagManagerObjects(users, Ent.TAGMANAGER_TAG)
76627
+
76628
+ # gam <UserTypeEntity> show tagmanagerpermissions <TagManagerAccountPathEntity>
76629
+ # [formatjson]
76630
+ # gam <UserTypeEntity> print tagmanagerpermissions <TagManagerAccountPathEntity> [todrive <ToDriveAttribute>*]
76631
+ # [formatjson [quotechar <Character>]]
76632
+ def printShowTagManagerPermissions(users):
76633
+ printShowTagManagerObjects(users, Ent.TAGMANAGER_PERMISSION)
76634
+
76453
76635
  def getCRMOrgId():
76454
76636
  setTrueCustomerId()
76455
76637
  _, crm = buildGAPIServiceObject(API.CLOUDRESOURCEMANAGER, None)
@@ -78178,6 +78360,11 @@ USER_COMMANDS_WITH_OBJECTS = {
78178
78360
  Cmd.ARG_SITE: deprecatedUserSites,
78179
78361
  Cmd.ARG_SITEACL: deprecatedUserSites,
78180
78362
  Cmd.ARG_SITEACTIVITY: deprecatedUserSites,
78363
+ Cmd.ARG_TAGMANAGERACCOUNT: printShowTagManagerAccounts,
78364
+ Cmd.ARG_TAGMANAGERCONTAINER: printShowTagManagerContainers,
78365
+ Cmd.ARG_TAGMANAGERPERMISSION: printShowTagManagerPermissions,
78366
+ Cmd.ARG_TAGMANAGERTAG: printShowTagManagerTags,
78367
+ Cmd.ARG_TAGMANAGERWORKSPACE: printShowTagManagerWorkspaces,
78181
78368
  Cmd.ARG_TASK: printShowTasks,
78182
78369
  Cmd.ARG_TASKLIST: printShowTasklists,
78183
78370
  Cmd.ARG_THREAD: printShowThreads,
@@ -78285,6 +78472,11 @@ USER_COMMANDS_WITH_OBJECTS = {
78285
78472
  Cmd.ARG_SITE: deprecatedUserSites,
78286
78473
  Cmd.ARG_SITEACL: deprecatedUserSites,
78287
78474
  Cmd.ARG_SMIME: printShowSmimes,
78475
+ Cmd.ARG_TAGMANAGERACCOUNT: printShowTagManagerAccounts,
78476
+ Cmd.ARG_TAGMANAGERCONTAINER: printShowTagManagerContainers,
78477
+ Cmd.ARG_TAGMANAGERPERMISSION: printShowTagManagerPermissions,
78478
+ Cmd.ARG_TAGMANAGERTAG: printShowTagManagerTags,
78479
+ Cmd.ARG_TAGMANAGERWORKSPACE: printShowTagManagerWorkspaces,
78288
78480
  Cmd.ARG_TASK: printShowTasks,
78289
78481
  Cmd.ARG_TASKLIST: printShowTasklists,
78290
78482
  Cmd.ARG_THREAD: printShowThreads,
@@ -78524,6 +78716,11 @@ USER_COMMANDS_OBJ_ALIASES = {
78524
78716
  Cmd.ARG_SITES: Cmd.ARG_SITE,
78525
78717
  Cmd.ARG_SITEACLS: Cmd.ARG_SITEACL,
78526
78718
  Cmd.ARG_SMIMES: Cmd.ARG_SMIME,
78719
+ Cmd.ARG_TAGMANAGERACCOUNTS: Cmd.ARG_TAGMANAGERACCOUNT,
78720
+ Cmd.ARG_TAGMANAGERCONTAINERS: Cmd.ARG_TAGMANAGERCONTAINER,
78721
+ Cmd.ARG_TAGMANAGERPERMISSIONS: Cmd.ARG_TAGMANAGERPERMISSION,
78722
+ Cmd.ARG_TAGMANAGERTAGS: Cmd.ARG_TAGMANAGERTAG,
78723
+ Cmd.ARG_TAGMANAGERWORKSPACES: Cmd.ARG_TAGMANAGERWORKSPACE,
78527
78724
  Cmd.ARG_TASKS: Cmd.ARG_TASK,
78528
78725
  Cmd.ARG_TASKLISTS: Cmd.ARG_TASKLIST,
78529
78726
  Cmd.ARG_TEAMDRIVE: Cmd.ARG_SHAREDDRIVE,
@@ -94,6 +94,8 @@ SITEVERIFICATION = 'siteVerification'
94
94
  STORAGE = 'storage'
95
95
  STORAGEREAD = 'storageread'
96
96
  STORAGEWRITE = 'storagewrite'
97
+ TAGMANAGER = 'tagmanager'
98
+ TAGMANAGER_USERS = 'tagmanagerusers'
97
99
  TASKS = 'tasks'
98
100
  VAULT = 'vault'
99
101
  YOUTUBE = 'youtube'
@@ -199,6 +201,7 @@ PROJECT_APIS = [
199
201
  'sheets.googleapis.com',
200
202
  'siteverification.googleapis.com',
201
203
  'storage-api.googleapis.com',
204
+ 'tagmanager.googleapis.com',
202
205
  'tasks.googleapis.com',
203
206
  'vault.googleapis.com',
204
207
  'youtube.googleapis.com',
@@ -277,6 +280,8 @@ _INFO = {
277
280
  STORAGE: {'name': 'Cloud Storage API', 'version': 'v1', 'v2discovery': True},
278
281
  STORAGEREAD: {'name': 'Cloud Storage API - Read', 'version': 'v1', 'v2discovery': True, 'mappedAPI': STORAGE},
279
282
  STORAGEWRITE: {'name': 'Cloud Storage API - Write', 'version': 'v1', 'v2discovery': True, 'mappedAPI': STORAGE},
283
+ TAGMANAGER: {'name': 'Tag Manager API', 'version': 'v2', 'v2discovery': True},
284
+ TAGMANAGER_USERS: {'name': 'Tag Manager API - Users', 'version': 'v2', 'v2discovery': True, 'mappedAPI': TAGMANAGER},
280
285
  TASKS: {'name': 'Tasks API', 'version': 'v1', 'v2discovery': True},
281
286
  VAULT: {'name': 'Vault API', 'version': 'v1', 'v2discovery': True},
282
287
  YOUTUBE: {'name': 'Youtube API', 'version': 'v3', 'v2discovery': True},
@@ -696,6 +701,16 @@ _SVCACCT_SCOPES = [
696
701
  'api': SHEETS,
697
702
  'subscopes': READONLY,
698
703
  'scope': 'https://www.googleapis.com/auth/spreadsheets'},
704
+ {'name': 'Tag Manager API - read only',
705
+ 'api': TAGMANAGER,
706
+ 'subscopes': [],
707
+ 'offByDefault': True,
708
+ 'scope': 'https://www.googleapis.com/auth/tagmanager.readonly'},
709
+ {'name': 'Tag Manager API - Users',
710
+ 'api': TAGMANAGER_USERS,
711
+ 'subscopes': [],
712
+ 'offByDefault': True,
713
+ 'scope': 'https://www.googleapis.com/auth/tagmanager.manage.users'},
699
714
  {'name': 'Tasks API',
700
715
  'api': TASKS,
701
716
  'subscopes': READONLY,
@@ -782,6 +782,16 @@ class GamCLArgs():
782
782
  ARG_SUSPENDED = 'suspended'
783
783
  ARG_SVCACCT = 'svcacct'
784
784
  ARG_SVCACCTS = 'svcaccts'
785
+ ARG_TAGMANAGERACCOUNT = 'tagmanageraccount'
786
+ ARG_TAGMANAGERACCOUNTS = 'tagmanageraccounts'
787
+ ARG_TAGMANAGERCONTAINER = 'tagmanagercontainer'
788
+ ARG_TAGMANAGERCONTAINERS = 'tagmanagercontainers'
789
+ ARG_TAGMANAGERPERMISSION = 'tagmanagerpermission'
790
+ ARG_TAGMANAGERPERMISSIONS = 'tagmanagerpermissions'
791
+ ARG_TAGMANAGERTAG = 'tagmanagertag'
792
+ ARG_TAGMANAGERTAGS = 'tagmanagertags'
793
+ ARG_TAGMANAGERWORKSPACE = 'tagmanagerworkspace'
794
+ ARG_TAGMANAGERWORKSPACES = 'tagmanagerworkspaces'
785
795
  ARG_TASK = 'task'
786
796
  ARG_TASKS = 'tasks'
787
797
  ARG_TASKLIST = 'tasklist'
@@ -859,6 +869,8 @@ class GamCLArgs():
859
869
  OB_CHAT_THREAD = 'ChatThread'
860
870
  OB_CHROMEPROFILE_NAME = 'ChromeProfileName'
861
871
  OB_CHROMEPROFILE_NAME_LIST = 'ChromeProfileNameList'
872
+ OB_CHROMEPROFILE_COMMAND_NAME = 'ChromeProfileCommandName'
873
+ OB_CHROMEPROFILE_COMMAND_NAME_LIST = 'ChromeProfileNameCommandList'
862
874
  OB_CHROME_VERSION = 'ChromeVersion'
863
875
  OB_CIDR_NETMASK = 'CIDRnetmask'
864
876
  OB_CIGROUP_ALIAS_LIST = "CIGroupAliasList"
@@ -1037,6 +1049,7 @@ class GamCLArgs():
1037
1049
  OB_STRING_LIST = 'StringList'
1038
1050
  OB_STUDENT_ITEM = 'StudentItem'
1039
1051
  OB_TAG = 'Tag'
1052
+ OB_TAGMANAGER_PATH_LIST = 'TagManagerPathList'
1040
1053
  OB_TASK_ID = 'TaskID'
1041
1054
  OB_TASKLIST_ID = 'TaskListID'
1042
1055
  OB_TASKLIST_ID_ENTITY = 'TaskListIDEntity'