Compare commits

..

107 Commits

Author SHA1 Message Date
Ross Scroggs
f894e5ffd7 Fixed bug in gam print|show cigroups cimember <UserItem> 2025-07-21 15:54:39 -07:00
Ross Scroggs
5d1379e830 Merge branch 'main' of https://github.com/GAM-team/GAM 2025-07-21 14:07:07 -07:00
Ross Scroggs
aa1b373245 Handle additional error when unsuspending a user
ERROR: 412: adminCannotUnsuspend - Cannot restore a user suspended for abuse
2025-07-21 14:07:03 -07:00
Jay Lee
1bed2383ff remove deprecated and duplicate data requirements.txt
You can install deps with:

pip install /path/to/gam/folder/with/pyproject.toml/file/in/it
2025-07-21 20:49:24 +00:00
Jay Lee
332d6c0761 actions: install yubikey libs so they are in binary builds
Some checks failed
Build and test GAM / build (build, 1, Build Intel Ubuntu Jammy, ubuntu-22.04) (push) Has been cancelled
Build and test GAM / build (build, 10, Build Intel Windows, windows-2022) (push) Has been cancelled
Build and test GAM / build (build, 11, Build Arm Windows, windows-11-arm) (push) Has been cancelled
Build and test GAM / build (build, 2, Build Intel Ubuntu Noble, ubuntu-24.04) (push) Has been cancelled
Build and test GAM / build (build, 3, Build Arm Ubuntu Noble, ubuntu-24.04-arm) (push) Has been cancelled
Build and test GAM / build (build, 4, Build Arm Ubuntu Jammy, ubuntu-22.04-arm) (push) Has been cancelled
Build and test GAM / build (build, 5, Build Intel StaticX Legacy, ubuntu-22.04, yes) (push) Has been cancelled
Build and test GAM / build (build, 6, Build Arm StaticX Legacy, ubuntu-22.04-arm, yes) (push) Has been cancelled
Build and test GAM / build (build, 7, Build Intel MacOS, macos-13) (push) Has been cancelled
Build and test GAM / build (build, 8, Build Arm MacOS 14, macos-14) (push) Has been cancelled
Build and test GAM / build (build, 9, Build Arm MacOS 15, macos-15) (push) Has been cancelled
Build and test GAM / build (test, 12, Test Python 3.10, ubuntu-24.04, 3.10) (push) Has been cancelled
Build and test GAM / build (test, 13, Test Python 3.11, ubuntu-24.04, 3.11) (push) Has been cancelled
Build and test GAM / build (test, 14, Test Python 3.12, ubuntu-24.04, 3.12) (push) Has been cancelled
Build and test GAM / build (test, 15, Test Python 3.14-dev, ubuntu-24.04, 3.14-dev) (push) Has been cancelled
Build and test GAM / merge (push) Has been cancelled
Build and test GAM / publish (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Check for Google Root CA Updates / check-apis (push) Has been cancelled
Push wiki / pushwiki (push) Has been cancelled
2025-07-21 16:13:18 -04:00
Jay Lee
597bbe2db9 actions: fix pip install from pyproject.toml 2025-07-21 16:09:34 -04:00
Jay Lee
fcb50e1e93 point gha at pyporojects.toml, deprecate requirements.txt 2025-07-21 16:01:08 -04:00
Jay Lee
048d88c7a0 setup.cfg/py no longer necessary, pyproject.toml should do 2025-07-21 19:56:14 +00:00
Jay Lee
bd4208607b wiki: update pip install instructions 2025-07-21 15:53:51 -04:00
Ross Scroggs
7b510075e6 Update Users-Drive-Permissions.md 2025-07-21 09:07:32 -07:00
Jay Lee
882d7b5833 actions: disable pgo on win arm64 agqin
Some checks failed
Build and test GAM / build (build, 1, Build Intel Ubuntu Jammy, ubuntu-22.04) (push) Has been cancelled
Build and test GAM / build (build, 10, Build Intel Windows, windows-2022) (push) Has been cancelled
Build and test GAM / build (build, 11, Build Arm Windows, windows-11-arm) (push) Has been cancelled
Build and test GAM / build (build, 2, Build Intel Ubuntu Noble, ubuntu-24.04) (push) Has been cancelled
Build and test GAM / build (build, 3, Build Arm Ubuntu Noble, ubuntu-24.04-arm) (push) Has been cancelled
Build and test GAM / build (build, 4, Build Arm Ubuntu Jammy, ubuntu-22.04-arm) (push) Has been cancelled
Build and test GAM / build (build, 5, Build Intel StaticX Legacy, ubuntu-22.04, yes) (push) Has been cancelled
Build and test GAM / build (build, 6, Build Arm StaticX Legacy, ubuntu-22.04-arm, yes) (push) Has been cancelled
Build and test GAM / build (build, 7, Build Intel MacOS, macos-13) (push) Has been cancelled
Build and test GAM / build (build, 8, Build Arm MacOS 14, macos-14) (push) Has been cancelled
Build and test GAM / build (build, 9, Build Arm MacOS 15, macos-15) (push) Has been cancelled
Build and test GAM / build (test, 12, Test Python 3.10, ubuntu-24.04, 3.10) (push) Has been cancelled
Build and test GAM / build (test, 13, Test Python 3.11, ubuntu-24.04, 3.11) (push) Has been cancelled
Build and test GAM / build (test, 14, Test Python 3.12, ubuntu-24.04, 3.12) (push) Has been cancelled
Build and test GAM / build (test, 15, Test Python 3.14-dev, ubuntu-24.04, 3.14-dev) (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Check for Google Root CA Updates / check-apis (push) Has been cancelled
Build and test GAM / merge (push) Has been cancelled
Build and test GAM / publish (push) Has been cancelled
2025-07-19 13:58:25 -04:00
Jay Lee
d4f5495909 actions: try win arm64 pgo optimizations 2025-07-19 13:21:21 -04:00
Jay Lee
b132e789f7 actions: bring back one of the win arm64 workarounds 2025-07-19 12:24:48 -04:00
Jay Lee
701824d984 actions: remove some of the workaround for win arm64 no longer needed 2025-07-19 09:37:55 -04:00
Ross Scroggs
4c63de65a5 Another print|show cigroups fix
Some checks failed
Build and test GAM / build (build, 1, Build Intel Ubuntu Jammy, ubuntu-22.04) (push) Has been cancelled
Build and test GAM / build (build, 10, Build Intel Windows, windows-2022) (push) Has been cancelled
Build and test GAM / build (build, 11, Build Arm Windows, windows-11-arm) (push) Has been cancelled
Build and test GAM / build (build, 2, Build Intel Ubuntu Noble, ubuntu-24.04) (push) Has been cancelled
Build and test GAM / build (build, 3, Build Arm Ubuntu Noble, ubuntu-24.04-arm) (push) Has been cancelled
Build and test GAM / build (build, 4, Build Arm Ubuntu Jammy, ubuntu-22.04-arm) (push) Has been cancelled
Build and test GAM / build (build, 5, Build Intel StaticX Legacy, ubuntu-22.04, yes) (push) Has been cancelled
Build and test GAM / build (build, 6, Build Arm StaticX Legacy, ubuntu-22.04-arm, yes) (push) Has been cancelled
Build and test GAM / build (build, 7, Build Intel MacOS, macos-13) (push) Has been cancelled
Build and test GAM / build (build, 8, Build Arm MacOS 14, macos-14) (push) Has been cancelled
Build and test GAM / build (build, 9, Build Arm MacOS 15, macos-15) (push) Has been cancelled
Build and test GAM / build (test, 12, Test Python 3.10, ubuntu-24.04, 3.10) (push) Has been cancelled
Build and test GAM / build (test, 13, Test Python 3.11, ubuntu-24.04, 3.11) (push) Has been cancelled
Build and test GAM / build (test, 14, Test Python 3.12, ubuntu-24.04, 3.12) (push) Has been cancelled
Build and test GAM / build (test, 15, Test Python 3.14-dev, ubuntu-24.04, 3.14-dev) (push) Has been cancelled
Build and test GAM / merge (push) Has been cancelled
Build and test GAM / publish (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Check for Google Root CA Updates / check-apis (push) Has been cancelled
Push wiki / pushwiki (push) Has been cancelled
2025-07-18 15:29:24 -07:00
Ross Scroggs
d1d1040ec3 Fixed bug in gam print cigroup-members includederivedmembership that caused a trap. 2025-07-18 14:14:21 -07:00
Ross Scroggs
fe4268230e Fixed bug in gam print cigroup-members includederivedmembership that caused a trap. 2025-07-18 14:14:09 -07:00
Ross Scroggs
bda51867c8 Update Cloud Identity Groups docs 2025-07-18 13:17:40 -07:00
Ross Scroggs
a913c8f128 Update GamUpdates.md 2025-07-18 13:07:51 -07:00
Ross Scroggs
89ac556933 Fixed bug in gam print|show cigroups|cigroups-members cimember <UserItem> 2025-07-18 11:52:16 -07:00
Ross Scroggs
48c23c2f98 Fixed bug in gam print|show cigroups|cigroups-members cimember <UserItem>
Some checks failed
Build and test GAM / build (build, 1, Build Intel Ubuntu Jammy, ubuntu-22.04) (push) Has been cancelled
Build and test GAM / build (build, 10, Build Intel Windows, windows-2022) (push) Has been cancelled
Build and test GAM / build (build, 11, Build Arm Windows, windows-11-arm) (push) Has been cancelled
Build and test GAM / build (build, 2, Build Intel Ubuntu Noble, ubuntu-24.04) (push) Has been cancelled
Build and test GAM / build (build, 3, Build Arm Ubuntu Noble, ubuntu-24.04-arm) (push) Has been cancelled
Build and test GAM / build (build, 4, Build Arm Ubuntu Jammy, ubuntu-22.04-arm) (push) Has been cancelled
Build and test GAM / build (build, 5, Build Intel StaticX Legacy, ubuntu-22.04, yes) (push) Has been cancelled
Build and test GAM / build (build, 6, Build Arm StaticX Legacy, ubuntu-22.04-arm, yes) (push) Has been cancelled
Build and test GAM / build (build, 7, Build Intel MacOS, macos-13) (push) Has been cancelled
Build and test GAM / build (build, 8, Build Arm MacOS 14, macos-14) (push) Has been cancelled
Build and test GAM / build (build, 9, Build Arm MacOS 15, macos-15) (push) Has been cancelled
Build and test GAM / build (test, 12, Test Python 3.10, ubuntu-24.04, 3.10) (push) Has been cancelled
Build and test GAM / build (test, 13, Test Python 3.11, ubuntu-24.04, 3.11) (push) Has been cancelled
Build and test GAM / build (test, 14, Test Python 3.12, ubuntu-24.04, 3.12) (push) Has been cancelled
Build and test GAM / build (test, 15, Test Python 3.14-dev, ubuntu-24.04, 3.14-dev) (push) Has been cancelled
Build and test GAM / merge (push) Has been cancelled
Build and test GAM / publish (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Check for Google Root CA Updates / check-apis (push) Has been cancelled
Push wiki / pushwiki (push) Has been cancelled
2025-07-18 11:52:04 -07:00
Ross Scroggs
3f2a261a99 Update Cloud-Identity-Groups-Membership.md 2025-07-18 11:24:24 -07:00
Ross Scroggs
beb76c5879 pip yubikey doc updates 2025-07-18 11:17:15 -07:00
Ross Scroggs
bd22dc1b8b Update Cloud-Identity-Groups.md 2025-07-18 11:10:19 -07:00
Ross Scroggs
2258cd69a5 Update Chat-Bot.md 2025-07-18 10:57:09 -07:00
Jay Lee
a523f9c0f7 GAM 7.14.01 2025-07-18 17:04:47 +00:00
Jay Lee
ea41cf52de [no ci] no slash 2025-07-18 13:01:02 -04:00
Jay Lee
aec92f19ae [no ci] setup.cfg dynamic version value from __init__.py 2025-07-18 12:51:25 -04:00
Jay Lee
df99e6ea8e remove yubikey from hard dependencies. Fixes #1802 2025-07-18 12:09:05 -04:00
Ross Scroggs
d16166ffac Update Users-Tag-Manager.md
Some checks failed
Push wiki / pushwiki (push) Has been cancelled
2025-07-17 12:34:45 -07:00
Ross Scroggs
1bd75c31ae Update Users-Tag-Manager.md 2025-07-17 12:33:18 -07:00
Ross Scroggs
8830da9908 Update Users-Tag-Manager.md 2025-07-17 11:39:16 -07:00
Ross Scroggs
fdc6c34c91 Update Users-Tag-Manager.md
Some checks failed
Push wiki / pushwiki (push) Has been cancelled
Build and test GAM / build (build, 1, Build Intel Ubuntu Jammy, ubuntu-22.04) (push) Has been cancelled
Build and test GAM / build (build, 10, Build Intel Windows, windows-2022) (push) Has been cancelled
Build and test GAM / build (build, 11, Build Arm Windows, windows-11-arm) (push) Has been cancelled
Build and test GAM / build (build, 2, Build Intel Ubuntu Noble, ubuntu-24.04) (push) Has been cancelled
Build and test GAM / build (build, 3, Build Arm Ubuntu Noble, ubuntu-24.04-arm) (push) Has been cancelled
Build and test GAM / build (build, 4, Build Arm Ubuntu Jammy, ubuntu-22.04-arm) (push) Has been cancelled
Build and test GAM / build (build, 5, Build Intel StaticX Legacy, ubuntu-22.04, yes) (push) Has been cancelled
Build and test GAM / build (build, 6, Build Arm StaticX Legacy, ubuntu-22.04-arm, yes) (push) Has been cancelled
Build and test GAM / build (build, 7, Build Intel MacOS, macos-13) (push) Has been cancelled
Build and test GAM / build (build, 8, Build Arm MacOS 14, macos-14) (push) Has been cancelled
Build and test GAM / build (build, 9, Build Arm MacOS 15, macos-15) (push) Has been cancelled
Build and test GAM / build (test, 12, Test Python 3.10, ubuntu-24.04, 3.10) (push) Has been cancelled
Build and test GAM / build (test, 13, Test Python 3.11, ubuntu-24.04, 3.11) (push) Has been cancelled
Build and test GAM / build (test, 14, Test Python 3.12, ubuntu-24.04, 3.12) (push) Has been cancelled
Build and test GAM / build (test, 15, Test Python 3.14-dev, ubuntu-24.04, 3.14-dev) (push) Has been cancelled
Build and test GAM / merge (push) Has been cancelled
Build and test GAM / publish (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Check for Google Root CA Updates / check-apis (push) Has been cancelled
2025-07-17 11:00:14 -07:00
Ross Scroggs
c6be86946e Update Users-Tag-Manager.md 2025-07-17 10:58:17 -07:00
Ross Scroggs
920c9a344a Support for Tag Manager API #1801 2025-07-17 09:22:47 -07:00
Ross Scroggs
ec9f3b9e79 Update Users-Tag-Manager.md 2025-07-17 08:43:27 -07:00
Ross Scroggs
326e83a05d Support for Tag Manager API #1801 2025-07-17 08:43:09 -07:00
Ross Scroggs
61c2b06021 Update gam.cfg.md 2025-07-17 07:16:57 -07:00
Jonathan Sisk
60093404c1 Added line to check permissions after pulling in existing legacy GAM clients (#1800)
Some checks failed
Push wiki / pushwiki (push) Has been cancelled
2025-07-16 22:36:38 -04:00
Ross Scroggs
228d3bba95 Added commands to display Google Tag Manager accounts
Some checks failed
Push wiki / pushwiki (push) Has been cancelled
Build and test GAM / build (build, 1, Build Intel Ubuntu Jammy, ubuntu-22.04) (push) Has been cancelled
Build and test GAM / build (build, 10, Build Intel Windows, windows-2022) (push) Has been cancelled
Build and test GAM / build (build, 11, Build Arm Windows, windows-11-arm) (push) Has been cancelled
Build and test GAM / build (build, 2, Build Intel Ubuntu Noble, ubuntu-24.04) (push) Has been cancelled
Build and test GAM / build (build, 3, Build Arm Ubuntu Noble, ubuntu-24.04-arm) (push) Has been cancelled
Build and test GAM / build (build, 4, Build Arm Ubuntu Jammy, ubuntu-22.04-arm) (push) Has been cancelled
Build and test GAM / build (build, 5, Build Intel StaticX Legacy, ubuntu-22.04, yes) (push) Has been cancelled
Build and test GAM / build (build, 6, Build Arm StaticX Legacy, ubuntu-22.04-arm, yes) (push) Has been cancelled
Build and test GAM / build (build, 7, Build Intel MacOS, macos-13) (push) Has been cancelled
Build and test GAM / build (build, 8, Build Arm MacOS 14, macos-14) (push) Has been cancelled
Build and test GAM / build (build, 9, Build Arm MacOS 15, macos-15) (push) Has been cancelled
Build and test GAM / build (test, 12, Test Python 3.10, ubuntu-24.04, 3.10) (push) Has been cancelled
Build and test GAM / build (test, 13, Test Python 3.11, ubuntu-24.04, 3.11) (push) Has been cancelled
Build and test GAM / build (test, 14, Test Python 3.12, ubuntu-24.04, 3.12) (push) Has been cancelled
Build and test GAM / build (test, 15, Test Python 3.14-dev, ubuntu-24.04, 3.14-dev) (push) Has been cancelled
Build and test GAM / merge (push) Has been cancelled
Build and test GAM / publish (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Check for Google Root CA Updates / check-apis (push) Has been cancelled
2025-07-16 16:34:36 -07:00
Ross Scroggs
9f5dfc1a0a Added commands to display Google Tag Manager objects 2025-07-16 16:34:20 -07:00
Ross Scroggs
2b5c4561d1 Update _Sidebar.md
Some checks failed
Push wiki / pushwiki (push) Has been cancelled
Build and test GAM / build (build, 1, Build Intel Ubuntu Jammy, ubuntu-22.04) (push) Has been cancelled
Build and test GAM / build (build, 10, Build Intel Windows, windows-2022) (push) Has been cancelled
Build and test GAM / build (build, 11, Build Arm Windows, windows-11-arm) (push) Has been cancelled
Build and test GAM / build (build, 2, Build Intel Ubuntu Noble, ubuntu-24.04) (push) Has been cancelled
Build and test GAM / build (build, 3, Build Arm Ubuntu Noble, ubuntu-24.04-arm) (push) Has been cancelled
Build and test GAM / build (build, 4, Build Arm Ubuntu Jammy, ubuntu-22.04-arm) (push) Has been cancelled
Build and test GAM / build (build, 5, Build Intel StaticX Legacy, ubuntu-22.04, yes) (push) Has been cancelled
Build and test GAM / build (build, 6, Build Arm StaticX Legacy, ubuntu-22.04-arm, yes) (push) Has been cancelled
Build and test GAM / build (build, 7, Build Intel MacOS, macos-13) (push) Has been cancelled
Build and test GAM / build (build, 8, Build Arm MacOS 14, macos-14) (push) Has been cancelled
Build and test GAM / build (build, 9, Build Arm MacOS 15, macos-15) (push) Has been cancelled
Build and test GAM / build (test, 12, Test Python 3.10, ubuntu-24.04, 3.10) (push) Has been cancelled
Build and test GAM / build (test, 13, Test Python 3.11, ubuntu-24.04, 3.11) (push) Has been cancelled
Build and test GAM / build (test, 14, Test Python 3.12, ubuntu-24.04, 3.12) (push) Has been cancelled
Build and test GAM / build (test, 15, Test Python 3.14-dev, ubuntu-24.04, 3.14-dev) (push) Has been cancelled
Build and test GAM / merge (push) Has been cancelled
Build and test GAM / publish (push) Has been cancelled
Check for Google Root CA Updates / check-apis (push) Has been cancelled
2025-07-15 13:22:15 -07:00
Ross Scroggs
4bdce171af Update GAL documentation 2025-07-15 13:20:57 -07:00
Ross Scroggs
1f68c8db00 mproved create|print|show chromeprofilecommand
Some checks failed
Push wiki / pushwiki (push) Has been cancelled
Build and test GAM / build (build, 1, Build Intel Ubuntu Jammy, ubuntu-22.04) (push) Has been cancelled
Build and test GAM / build (build, 10, Build Intel Windows, windows-2022) (push) Has been cancelled
Build and test GAM / build (build, 11, Build Arm Windows, windows-11-arm) (push) Has been cancelled
Build and test GAM / build (build, 2, Build Intel Ubuntu Noble, ubuntu-24.04) (push) Has been cancelled
Build and test GAM / build (build, 3, Build Arm Ubuntu Noble, ubuntu-24.04-arm) (push) Has been cancelled
Build and test GAM / build (build, 4, Build Arm Ubuntu Jammy, ubuntu-22.04-arm) (push) Has been cancelled
Build and test GAM / build (build, 5, Build Intel StaticX Legacy, ubuntu-22.04, yes) (push) Has been cancelled
Build and test GAM / build (build, 6, Build Arm StaticX Legacy, ubuntu-22.04-arm, yes) (push) Has been cancelled
Build and test GAM / build (build, 7, Build Intel MacOS, macos-13) (push) Has been cancelled
Build and test GAM / build (build, 8, Build Arm MacOS 14, macos-14) (push) Has been cancelled
Build and test GAM / build (build, 9, Build Arm MacOS 15, macos-15) (push) Has been cancelled
Build and test GAM / build (test, 12, Test Python 3.10, ubuntu-24.04, 3.10) (push) Has been cancelled
Build and test GAM / build (test, 13, Test Python 3.11, ubuntu-24.04, 3.11) (push) Has been cancelled
Build and test GAM / build (test, 14, Test Python 3.12, ubuntu-24.04, 3.12) (push) Has been cancelled
Build and test GAM / build (test, 15, Test Python 3.14-dev, ubuntu-24.04, 3.14-dev) (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Check for Google Root CA Updates / check-apis (push) Has been cancelled
Build and test GAM / merge (push) Has been cancelled
Build and test GAM / publish (push) Has been cancelled
2025-07-14 16:38:56 -07:00
Ross Scroggs
963cbebba0 Improved create|print|show chromeprofilecommand 2025-07-14 15:46:48 -07:00
Ross Scroggs
c0edbfe596 Update Chrome-Profile-Management.md
Some checks failed
Build and test GAM / build (build, 1, Build Intel Ubuntu Jammy, ubuntu-22.04) (push) Has been cancelled
Build and test GAM / build (build, 10, Build Intel Windows, windows-2022) (push) Has been cancelled
Build and test GAM / build (build, 11, Build Arm Windows, windows-11-arm) (push) Has been cancelled
Build and test GAM / build (build, 2, Build Intel Ubuntu Noble, ubuntu-24.04) (push) Has been cancelled
Build and test GAM / build (build, 3, Build Arm Ubuntu Noble, ubuntu-24.04-arm) (push) Has been cancelled
Build and test GAM / build (build, 4, Build Arm Ubuntu Jammy, ubuntu-22.04-arm) (push) Has been cancelled
Build and test GAM / build (build, 5, Build Intel StaticX Legacy, ubuntu-22.04, yes) (push) Has been cancelled
Build and test GAM / build (build, 6, Build Arm StaticX Legacy, ubuntu-22.04-arm, yes) (push) Has been cancelled
Build and test GAM / build (build, 7, Build Intel MacOS, macos-13) (push) Has been cancelled
Build and test GAM / build (build, 8, Build Arm MacOS 14, macos-14) (push) Has been cancelled
Build and test GAM / build (build, 9, Build Arm MacOS 15, macos-15) (push) Has been cancelled
Build and test GAM / build (test, 12, Test Python 3.10, ubuntu-24.04, 3.10) (push) Has been cancelled
Build and test GAM / build (test, 13, Test Python 3.11, ubuntu-24.04, 3.11) (push) Has been cancelled
Build and test GAM / build (test, 14, Test Python 3.12, ubuntu-24.04, 3.12) (push) Has been cancelled
Build and test GAM / build (test, 15, Test Python 3.14-dev, ubuntu-24.04, 3.14-dev) (push) Has been cancelled
Build and test GAM / merge (push) Has been cancelled
Build and test GAM / publish (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Check for Google Root CA Updates / check-apis (push) Has been cancelled
Push wiki / pushwiki (push) Has been cancelled
2025-07-14 09:39:31 -07:00
Ross Scroggs
47617c2823 Updated gam create datatransfer to handle API change 2025-07-14 08:23:12 -07:00
Ross Scroggs
11e0f1c760 Updated gam create datatransfer to handle API change 2025-07-14 08:22:58 -07:00
Ross Scroggs
6c4b481eb1 Fixed bug in gam create chromeprofilecommand 2025-07-14 07:41:16 -07:00
Ross Scroggs
c0cbddc93d Fixed bug in gam create chromeprofilecommand 2025-07-14 07:41:05 -07:00
Ross Scroggs
b50d92404f Update _Sidebar.md
Some checks failed
Build and test GAM / build (build, 1, Build Intel Ubuntu Jammy, ubuntu-22.04) (push) Has been cancelled
Build and test GAM / build (build, 10, Build Intel Windows, windows-2022) (push) Has been cancelled
Build and test GAM / build (build, 11, Build Arm Windows, windows-11-arm) (push) Has been cancelled
Build and test GAM / build (build, 2, Build Intel Ubuntu Noble, ubuntu-24.04) (push) Has been cancelled
Build and test GAM / build (build, 3, Build Arm Ubuntu Noble, ubuntu-24.04-arm) (push) Has been cancelled
Build and test GAM / build (build, 4, Build Arm Ubuntu Jammy, ubuntu-22.04-arm) (push) Has been cancelled
Build and test GAM / build (build, 5, Build Intel StaticX Legacy, ubuntu-22.04, yes) (push) Has been cancelled
Build and test GAM / build (build, 6, Build Arm StaticX Legacy, ubuntu-22.04-arm, yes) (push) Has been cancelled
Build and test GAM / build (build, 7, Build Intel MacOS, macos-13) (push) Has been cancelled
Build and test GAM / build (build, 8, Build Arm MacOS 14, macos-14) (push) Has been cancelled
Build and test GAM / build (build, 9, Build Arm MacOS 15, macos-15) (push) Has been cancelled
Build and test GAM / build (test, 12, Test Python 3.10, ubuntu-24.04, 3.10) (push) Has been cancelled
Build and test GAM / build (test, 13, Test Python 3.11, ubuntu-24.04, 3.11) (push) Has been cancelled
Build and test GAM / build (test, 14, Test Python 3.12, ubuntu-24.04, 3.12) (push) Has been cancelled
Build and test GAM / build (test, 15, Test Python 3.14-dev, ubuntu-24.04, 3.14-dev) (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Check for Google Root CA Updates / check-apis (push) Has been cancelled
Push wiki / pushwiki (push) Has been cancelled
Build and test GAM / merge (push) Has been cancelled
Build and test GAM / publish (push) Has been cancelled
2025-07-12 21:46:44 -07:00
Ross Scroggs
19408f8f4c Enhanced gam create|print|show chromeprofilecommand 2025-07-12 20:59:47 -07:00
Ross Scroggs
0dd8e099c5 Enhanced gam create|print|show chromeprofilecommand 2025-07-12 20:59:36 -07:00
Ross Scroggs
5738cf5435 Added commands that send remote commands to Chrome browser profiles
Some checks failed
Push wiki / pushwiki (push) Has been cancelled
Build and test GAM / build (build, 1, Build Intel Ubuntu Jammy, ubuntu-22.04) (push) Has been cancelled
Build and test GAM / build (build, 10, Build Intel Windows, windows-2022) (push) Has been cancelled
Build and test GAM / build (build, 11, Build Arm Windows, windows-11-arm) (push) Has been cancelled
Build and test GAM / build (build, 2, Build Intel Ubuntu Noble, ubuntu-24.04) (push) Has been cancelled
Build and test GAM / build (build, 3, Build Arm Ubuntu Noble, ubuntu-24.04-arm) (push) Has been cancelled
Build and test GAM / build (build, 4, Build Arm Ubuntu Jammy, ubuntu-22.04-arm) (push) Has been cancelled
Build and test GAM / build (build, 5, Build Intel StaticX Legacy, ubuntu-22.04, yes) (push) Has been cancelled
Build and test GAM / build (build, 6, Build Arm StaticX Legacy, ubuntu-22.04-arm, yes) (push) Has been cancelled
Build and test GAM / build (build, 7, Build Intel MacOS, macos-13) (push) Has been cancelled
Build and test GAM / build (build, 8, Build Arm MacOS 14, macos-14) (push) Has been cancelled
Build and test GAM / build (build, 9, Build Arm MacOS 15, macos-15) (push) Has been cancelled
Build and test GAM / build (test, 12, Test Python 3.10, ubuntu-24.04, 3.10) (push) Has been cancelled
Build and test GAM / build (test, 13, Test Python 3.11, ubuntu-24.04, 3.11) (push) Has been cancelled
Build and test GAM / build (test, 14, Test Python 3.12, ubuntu-24.04, 3.12) (push) Has been cancelled
Build and test GAM / build (test, 15, Test Python 3.14-dev, ubuntu-24.04, 3.14-dev) (push) Has been cancelled
Build and test GAM / merge (push) Has been cancelled
Build and test GAM / publish (push) Has been cancelled
Check for Google Root CA Updates / check-apis (push) Has been cancelled
2025-07-11 16:58:00 -07:00
Ross Scroggs
0739bdc642 Added commands that send remote commands to Chrome browser profiles
Some checks failed
Push wiki / pushwiki (push) Has been cancelled
Build and test GAM / build (build, 1, Build Intel Ubuntu Jammy, ubuntu-22.04) (push) Has been cancelled
Build and test GAM / build (build, 10, Build Intel Windows, windows-2022) (push) Has been cancelled
Build and test GAM / build (build, 11, Build Arm Windows, windows-11-arm) (push) Has been cancelled
Build and test GAM / build (build, 2, Build Intel Ubuntu Noble, ubuntu-24.04) (push) Has been cancelled
Build and test GAM / build (build, 3, Build Arm Ubuntu Noble, ubuntu-24.04-arm) (push) Has been cancelled
Build and test GAM / build (build, 4, Build Arm Ubuntu Jammy, ubuntu-22.04-arm) (push) Has been cancelled
Build and test GAM / build (build, 5, Build Intel StaticX Legacy, ubuntu-22.04, yes) (push) Has been cancelled
Build and test GAM / build (build, 6, Build Arm StaticX Legacy, ubuntu-22.04-arm, yes) (push) Has been cancelled
Build and test GAM / build (build, 7, Build Intel MacOS, macos-13) (push) Has been cancelled
Build and test GAM / build (build, 8, Build Arm MacOS 14, macos-14) (push) Has been cancelled
Build and test GAM / build (build, 9, Build Arm MacOS 15, macos-15) (push) Has been cancelled
Build and test GAM / build (test, 12, Test Python 3.10, ubuntu-24.04, 3.10) (push) Has been cancelled
Build and test GAM / build (test, 13, Test Python 3.11, ubuntu-24.04, 3.11) (push) Has been cancelled
Build and test GAM / build (test, 14, Test Python 3.12, ubuntu-24.04, 3.12) (push) Has been cancelled
Build and test GAM / build (test, 15, Test Python 3.14-dev, ubuntu-24.04, 3.14-dev) (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Check for Google Root CA Updates / check-apis (push) Has been cancelled
Build and test GAM / merge (push) Has been cancelled
Build and test GAM / publish (push) Has been cancelled
2025-07-11 16:03:22 -07:00
Ross Scroggs
ddd1924c2c Update Chrome-Profile-Management.md 2025-07-11 15:40:37 -07:00
Ross Scroggs
a6fb1d7c0f Temp fix for setup.cfg
Some checks failed
Check for Google Root CA Updates / check-apis (push) Has been cancelled
Build and test GAM / build (build, 1, Build Intel Ubuntu Jammy, ubuntu-22.04) (push) Has been cancelled
Build and test GAM / build (build, 10, Build Intel Windows, windows-2022) (push) Has been cancelled
Build and test GAM / build (build, 11, Build Arm Windows, windows-11-arm) (push) Has been cancelled
Build and test GAM / build (build, 2, Build Intel Ubuntu Noble, ubuntu-24.04) (push) Has been cancelled
Build and test GAM / build (build, 3, Build Arm Ubuntu Noble, ubuntu-24.04-arm) (push) Has been cancelled
Build and test GAM / build (build, 4, Build Arm Ubuntu Jammy, ubuntu-22.04-arm) (push) Has been cancelled
Build and test GAM / build (build, 5, Build Intel StaticX Legacy, ubuntu-22.04, yes) (push) Has been cancelled
Build and test GAM / build (build, 6, Build Arm StaticX Legacy, ubuntu-22.04-arm, yes) (push) Has been cancelled
Build and test GAM / build (build, 7, Build Intel MacOS, macos-13) (push) Has been cancelled
Build and test GAM / build (build, 8, Build Arm MacOS 14, macos-14) (push) Has been cancelled
Build and test GAM / build (build, 9, Build Arm MacOS 15, macos-15) (push) Has been cancelled
Build and test GAM / build (test, 12, Test Python 3.10, ubuntu-24.04, 3.10) (push) Has been cancelled
Build and test GAM / build (test, 13, Test Python 3.11, ubuntu-24.04, 3.11) (push) Has been cancelled
Build and test GAM / build (test, 14, Test Python 3.12, ubuntu-24.04, 3.12) (push) Has been cancelled
Build and test GAM / build (test, 15, Test Python 3.14-dev, ubuntu-24.04, 3.14-dev) (push) Has been cancelled
Build and test GAM / merge (push) Has been cancelled
Build and test GAM / publish (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Push wiki / pushwiki (push) Has been cancelled
2025-07-10 14:03:29 -07:00
Ross Scroggs
6aeed76e70 Updated gam print users to handle serviceNotAvailable 2025-07-10 07:29:08 -07:00
Ross Scroggs
83f94c8122 Updated gam print users to handle serviceNotAvailable
Some checks failed
Build and test GAM / build (build, 1, Build Intel Ubuntu Jammy, ubuntu-22.04) (push) Has been cancelled
Build and test GAM / build (build, 10, Build Intel Windows, windows-2022) (push) Has been cancelled
Build and test GAM / build (build, 11, Build Arm Windows, windows-11-arm) (push) Has been cancelled
Build and test GAM / build (build, 2, Build Intel Ubuntu Noble, ubuntu-24.04) (push) Has been cancelled
Build and test GAM / build (build, 3, Build Arm Ubuntu Noble, ubuntu-24.04-arm) (push) Has been cancelled
Build and test GAM / build (build, 4, Build Arm Ubuntu Jammy, ubuntu-22.04-arm) (push) Has been cancelled
Build and test GAM / build (build, 5, Build Intel StaticX Legacy, ubuntu-22.04, yes) (push) Has been cancelled
Build and test GAM / build (build, 6, Build Arm StaticX Legacy, ubuntu-22.04-arm, yes) (push) Has been cancelled
Build and test GAM / build (build, 7, Build Intel MacOS, macos-13) (push) Has been cancelled
Build and test GAM / build (build, 8, Build Arm MacOS 14, macos-14) (push) Has been cancelled
Build and test GAM / build (build, 9, Build Arm MacOS 15, macos-15) (push) Has been cancelled
Build and test GAM / build (test, 12, Test Python 3.10, ubuntu-24.04, 3.10) (push) Has been cancelled
Build and test GAM / build (test, 13, Test Python 3.11, ubuntu-24.04, 3.11) (push) Has been cancelled
Build and test GAM / build (test, 14, Test Python 3.12, ubuntu-24.04, 3.12) (push) Has been cancelled
Build and test GAM / build (test, 15, Test Python 3.14-dev, ubuntu-24.04, 3.14-dev) (push) Has been cancelled
Build and test GAM / merge (push) Has been cancelled
Build and test GAM / publish (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Check for Google Root CA Updates / check-apis (push) Has been cancelled
2025-07-10 07:28:03 -07:00
Ross Scroggs
056f23c6cb Update Install-GAM-as-Python-Library.md
Some checks failed
Build and test GAM / build (build, 1, Build Intel Ubuntu Jammy, ubuntu-22.04) (push) Has been cancelled
Build and test GAM / build (build, 10, Build Intel Windows, windows-2022) (push) Has been cancelled
Build and test GAM / build (build, 11, Build Arm Windows, windows-11-arm) (push) Has been cancelled
Build and test GAM / build (build, 2, Build Intel Ubuntu Noble, ubuntu-24.04) (push) Has been cancelled
Build and test GAM / build (build, 3, Build Arm Ubuntu Noble, ubuntu-24.04-arm) (push) Has been cancelled
Build and test GAM / build (build, 4, Build Arm Ubuntu Jammy, ubuntu-22.04-arm) (push) Has been cancelled
Build and test GAM / build (build, 5, Build Intel StaticX Legacy, ubuntu-22.04, yes) (push) Has been cancelled
Build and test GAM / build (build, 6, Build Arm StaticX Legacy, ubuntu-22.04-arm, yes) (push) Has been cancelled
Build and test GAM / build (build, 7, Build Intel MacOS, macos-13) (push) Has been cancelled
Build and test GAM / build (build, 8, Build Arm MacOS 14, macos-14) (push) Has been cancelled
Build and test GAM / build (build, 9, Build Arm MacOS 15, macos-15) (push) Has been cancelled
Build and test GAM / build (test, 12, Test Python 3.10, ubuntu-24.04, 3.10) (push) Has been cancelled
Build and test GAM / build (test, 13, Test Python 3.11, ubuntu-24.04, 3.11) (push) Has been cancelled
Build and test GAM / build (test, 14, Test Python 3.12, ubuntu-24.04, 3.12) (push) Has been cancelled
Build and test GAM / build (test, 15, Test Python 3.14-dev, ubuntu-24.04, 3.14-dev) (push) Has been cancelled
Build and test GAM / merge (push) Has been cancelled
Build and test GAM / publish (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Check for Google Root CA Updates / check-apis (push) Has been cancelled
Push wiki / pushwiki (push) Has been cancelled
2025-07-09 20:14:58 -07:00
Ross Scroggs
7b1619f95d Link README.md for pip 2025-07-09 20:04:58 -07:00
Ross Scroggs
fe4ea3fe41 Update Resources.md
Some checks failed
Push wiki / pushwiki (push) Has been cancelled
Build and test GAM / build (build, 1, Build Intel Ubuntu Jammy, ubuntu-22.04) (push) Has been cancelled
Build and test GAM / build (build, 10, Build Intel Windows, windows-2022) (push) Has been cancelled
Build and test GAM / build (build, 11, Build Arm Windows, windows-11-arm) (push) Has been cancelled
Build and test GAM / build (build, 2, Build Intel Ubuntu Noble, ubuntu-24.04) (push) Has been cancelled
Build and test GAM / build (build, 3, Build Arm Ubuntu Noble, ubuntu-24.04-arm) (push) Has been cancelled
Build and test GAM / build (build, 4, Build Arm Ubuntu Jammy, ubuntu-22.04-arm) (push) Has been cancelled
Build and test GAM / build (build, 5, Build Intel StaticX Legacy, ubuntu-22.04, yes) (push) Has been cancelled
Build and test GAM / build (build, 6, Build Arm StaticX Legacy, ubuntu-22.04-arm, yes) (push) Has been cancelled
Build and test GAM / build (build, 7, Build Intel MacOS, macos-13) (push) Has been cancelled
Build and test GAM / build (build, 8, Build Arm MacOS 14, macos-14) (push) Has been cancelled
Build and test GAM / build (build, 9, Build Arm MacOS 15, macos-15) (push) Has been cancelled
Build and test GAM / build (test, 12, Test Python 3.10, ubuntu-24.04, 3.10) (push) Has been cancelled
Build and test GAM / build (test, 13, Test Python 3.11, ubuntu-24.04, 3.11) (push) Has been cancelled
Build and test GAM / build (test, 14, Test Python 3.12, ubuntu-24.04, 3.12) (push) Has been cancelled
Build and test GAM / build (test, 15, Test Python 3.14-dev, ubuntu-24.04, 3.14-dev) (push) Has been cancelled
Build and test GAM / merge (push) Has been cancelled
Build and test GAM / publish (push) Has been cancelled
Check for Google Root CA Updates / check-apis (push) Has been cancelled
2025-07-08 17:55:29 -07:00
Ross Scroggs
f5edd6bf81 Added support for plan free in gam create resoldsubscription.
Some checks failed
Push wiki / pushwiki (push) Has been cancelled
Build and test GAM / build (build, 1, Build Intel Ubuntu Jammy, ubuntu-22.04) (push) Has been cancelled
Build and test GAM / build (build, 10, Build Intel Windows, windows-2022) (push) Has been cancelled
Build and test GAM / build (build, 11, Build Arm Windows, windows-11-arm) (push) Has been cancelled
Build and test GAM / build (build, 2, Build Intel Ubuntu Noble, ubuntu-24.04) (push) Has been cancelled
Build and test GAM / build (build, 3, Build Arm Ubuntu Noble, ubuntu-24.04-arm) (push) Has been cancelled
Build and test GAM / build (build, 4, Build Arm Ubuntu Jammy, ubuntu-22.04-arm) (push) Has been cancelled
Build and test GAM / build (build, 5, Build Intel StaticX Legacy, ubuntu-22.04, yes) (push) Has been cancelled
Build and test GAM / build (build, 6, Build Arm StaticX Legacy, ubuntu-22.04-arm, yes) (push) Has been cancelled
Build and test GAM / build (build, 7, Build Intel MacOS, macos-13) (push) Has been cancelled
Build and test GAM / build (build, 8, Build Arm MacOS 14, macos-14) (push) Has been cancelled
Build and test GAM / build (build, 9, Build Arm MacOS 15, macos-15) (push) Has been cancelled
Build and test GAM / build (test, 12, Test Python 3.10, ubuntu-24.04, 3.10) (push) Has been cancelled
Build and test GAM / build (test, 13, Test Python 3.11, ubuntu-24.04, 3.11) (push) Has been cancelled
Build and test GAM / build (test, 14, Test Python 3.12, ubuntu-24.04, 3.12) (push) Has been cancelled
Build and test GAM / build (test, 15, Test Python 3.14-dev, ubuntu-24.04, 3.14-dev) (push) Has been cancelled
Build and test GAM / merge (push) Has been cancelled
Build and test GAM / publish (push) Has been cancelled
Check for Google Root CA Updates / check-apis (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
2025-07-08 08:56:27 -07:00
Ross Scroggs
7340557a8c Added support for plan free in gam create resoldsubscription. 2025-07-08 08:56:08 -07:00
Ross Scroggs
66ec9d0d4b Update Users.md
Some checks failed
Push wiki / pushwiki (push) Has been cancelled
2025-07-07 21:07:41 -07:00
Ross Scroggs
cc6ccd1338 Update shared drive error handling
Some checks failed
Build and test GAM / build (build, 1, Build Intel Ubuntu Jammy, ubuntu-22.04) (push) Has been cancelled
Build and test GAM / build (build, 10, Build Intel Windows, windows-2022) (push) Has been cancelled
Build and test GAM / build (build, 11, Build Arm Windows, windows-11-arm) (push) Has been cancelled
Build and test GAM / build (build, 2, Build Intel Ubuntu Noble, ubuntu-24.04) (push) Has been cancelled
Build and test GAM / build (build, 3, Build Arm Ubuntu Noble, ubuntu-24.04-arm) (push) Has been cancelled
Build and test GAM / build (build, 4, Build Arm Ubuntu Jammy, ubuntu-22.04-arm) (push) Has been cancelled
Build and test GAM / build (build, 5, Build Intel StaticX Legacy, ubuntu-22.04, yes) (push) Has been cancelled
Build and test GAM / build (build, 6, Build Arm StaticX Legacy, ubuntu-22.04-arm, yes) (push) Has been cancelled
Build and test GAM / build (build, 7, Build Intel MacOS, macos-13) (push) Has been cancelled
Build and test GAM / build (build, 8, Build Arm MacOS 14, macos-14) (push) Has been cancelled
Build and test GAM / build (build, 9, Build Arm MacOS 15, macos-15) (push) Has been cancelled
Build and test GAM / build (test, 12, Test Python 3.10, ubuntu-24.04, 3.10) (push) Has been cancelled
Build and test GAM / build (test, 13, Test Python 3.11, ubuntu-24.04, 3.11) (push) Has been cancelled
Build and test GAM / build (test, 14, Test Python 3.12, ubuntu-24.04, 3.12) (push) Has been cancelled
Build and test GAM / build (test, 15, Test Python 3.14-dev, ubuntu-24.04, 3.14-dev) (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Check for Google Root CA Updates / check-apis (push) Has been cancelled
Build and test GAM / merge (push) Has been cancelled
Build and test GAM / publish (push) Has been cancelled
2025-07-04 07:16:33 -07:00
Ross Scroggs
25c167ee0a Fix sendemail command in build
Some checks failed
Build and test GAM / build (build, 1, Build Intel Ubuntu Jammy, ubuntu-22.04) (push) Has been cancelled
Build and test GAM / build (build, 10, Build Intel Windows, windows-2022) (push) Has been cancelled
Build and test GAM / build (build, 11, Build Arm Windows, windows-11-arm) (push) Has been cancelled
Build and test GAM / build (build, 2, Build Intel Ubuntu Noble, ubuntu-24.04) (push) Has been cancelled
Build and test GAM / build (build, 3, Build Arm Ubuntu Noble, ubuntu-24.04-arm) (push) Has been cancelled
Build and test GAM / build (build, 4, Build Arm Ubuntu Jammy, ubuntu-22.04-arm) (push) Has been cancelled
Build and test GAM / build (build, 5, Build Intel StaticX Legacy, ubuntu-22.04, yes) (push) Has been cancelled
Build and test GAM / build (build, 6, Build Arm StaticX Legacy, ubuntu-22.04-arm, yes) (push) Has been cancelled
Build and test GAM / build (build, 7, Build Intel MacOS, macos-13) (push) Has been cancelled
Build and test GAM / build (build, 8, Build Arm MacOS 14, macos-14) (push) Has been cancelled
Build and test GAM / build (build, 9, Build Arm MacOS 15, macos-15) (push) Has been cancelled
Build and test GAM / build (test, 12, Test Python 3.10, ubuntu-24.04, 3.10) (push) Has been cancelled
Build and test GAM / build (test, 13, Test Python 3.11, ubuntu-24.04, 3.11) (push) Has been cancelled
Build and test GAM / build (test, 14, Test Python 3.12, ubuntu-24.04, 3.12) (push) Has been cancelled
Build and test GAM / build (test, 15, Test Python 3.14-dev, ubuntu-24.04, 3.14-dev) (push) Has been cancelled
Build and test GAM / merge (push) Has been cancelled
Build and test GAM / publish (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Check for Google Root CA Updates / check-apis (push) Has been cancelled
Push wiki / pushwiki (push) Has been cancelled
2025-07-03 20:10:41 -07:00
Ross Scroggs
f620850a58 Started updated handling of missing scopes messages in client access commands 2025-07-03 19:14:30 -07:00
Ross Scroggs
73ad3cc3e5 Started updated handling of missing scopes messages in client access commands 2025-07-03 19:14:16 -07:00
Ross Scroggs
b03083cb09 Updated gam info|show shareddrive 2025-07-03 10:04:47 -07:00
Ross Scroggs
6642e23e81 Updated gam info|show|udate shareddrive
Some checks failed
Build and test GAM / build (build, 1, Build Intel Ubuntu Jammy, ubuntu-22.04) (push) Has been cancelled
Build and test GAM / build (build, 10, Build Intel Windows, windows-2022) (push) Has been cancelled
Build and test GAM / build (build, 11, Build Arm Windows, windows-11-arm) (push) Has been cancelled
Build and test GAM / build (build, 2, Build Intel Ubuntu Noble, ubuntu-24.04) (push) Has been cancelled
Build and test GAM / build (build, 3, Build Arm Ubuntu Noble, ubuntu-24.04-arm) (push) Has been cancelled
Build and test GAM / build (build, 4, Build Arm Ubuntu Jammy, ubuntu-22.04-arm) (push) Has been cancelled
Build and test GAM / build (build, 5, Build Intel StaticX Legacy, ubuntu-22.04, yes) (push) Has been cancelled
Build and test GAM / build (build, 6, Build Arm StaticX Legacy, ubuntu-22.04-arm, yes) (push) Has been cancelled
Build and test GAM / build (build, 7, Build Intel MacOS, macos-13) (push) Has been cancelled
Build and test GAM / build (build, 8, Build Arm MacOS 14, macos-14) (push) Has been cancelled
Build and test GAM / build (build, 9, Build Arm MacOS 15, macos-15) (push) Has been cancelled
Build and test GAM / build (test, 12, Test Python 3.10, ubuntu-24.04, 3.10) (push) Has been cancelled
Build and test GAM / build (test, 13, Test Python 3.11, ubuntu-24.04, 3.11) (push) Has been cancelled
Build and test GAM / build (test, 14, Test Python 3.12, ubuntu-24.04, 3.12) (push) Has been cancelled
Build and test GAM / build (test, 15, Test Python 3.14-dev, ubuntu-24.04, 3.14-dev) (push) Has been cancelled
Build and test GAM / merge (push) Has been cancelled
Build and test GAM / publish (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Check for Google Root CA Updates / check-apis (push) Has been cancelled
Push wiki / pushwiki (push) Has been cancelled
2025-07-03 10:02:34 -07:00
Ross Scroggs
a237272440 Update GAM-Return-Codes.md 2025-07-02 23:32:09 -07:00
Ross Scroggs
d3ac277523 Added command gam check suspended <UserItem> that checks the suspension status of a user 2025-07-02 23:29:28 -07:00
Ross Scroggs
e21ff2bec2 Added command gam check suspended <UserItem>
Some checks failed
Build and test GAM / build (build, 1, Build Intel Ubuntu Jammy, ubuntu-22.04) (push) Has been cancelled
Build and test GAM / build (build, 10, Build Intel Windows, windows-2022) (push) Has been cancelled
Build and test GAM / build (build, 11, Build Arm Windows, windows-11-arm) (push) Has been cancelled
Build and test GAM / build (build, 2, Build Intel Ubuntu Noble, ubuntu-24.04) (push) Has been cancelled
Build and test GAM / build (build, 3, Build Arm Ubuntu Noble, ubuntu-24.04-arm) (push) Has been cancelled
Build and test GAM / build (build, 4, Build Arm Ubuntu Jammy, ubuntu-22.04-arm) (push) Has been cancelled
Build and test GAM / build (build, 5, Build Intel StaticX Legacy, ubuntu-22.04, yes) (push) Has been cancelled
Build and test GAM / build (build, 6, Build Arm StaticX Legacy, ubuntu-22.04-arm, yes) (push) Has been cancelled
Build and test GAM / build (build, 7, Build Intel MacOS, macos-13) (push) Has been cancelled
Build and test GAM / build (build, 8, Build Arm MacOS 14, macos-14) (push) Has been cancelled
Build and test GAM / build (build, 9, Build Arm MacOS 15, macos-15) (push) Has been cancelled
Build and test GAM / build (test, 12, Test Python 3.10, ubuntu-24.04, 3.10) (push) Has been cancelled
Build and test GAM / build (test, 13, Test Python 3.11, ubuntu-24.04, 3.11) (push) Has been cancelled
Build and test GAM / build (test, 14, Test Python 3.12, ubuntu-24.04, 3.12) (push) Has been cancelled
Build and test GAM / build (test, 15, Test Python 3.14-dev, ubuntu-24.04, 3.14-dev) (push) Has been cancelled
Build and test GAM / merge (push) Has been cancelled
Build and test GAM / publish (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Check for Google Root CA Updates / check-apis (push) Has been cancelled
Push wiki / pushwiki (push) Has been cancelled
2025-07-02 23:21:25 -07:00
Ross Scroggs
369df07748 gam info user testsimple fields suspended quick 2025-07-02 21:37:05 -07:00
Ross Scroggs
b218abaae7 Updated gam course <CourseID> create|update announcement 2025-07-02 21:35:43 -07:00
Ross Scroggs
967898fa86 Updates
Some checks failed
Push wiki / pushwiki (push) Has been cancelled
2025-07-02 14:23:05 -07:00
Ross Scroggs
80570f2fda Updates
Some checks failed
Push wiki / pushwiki (push) Has been cancelled
Build and test GAM / build (build, 1, Build Intel Ubuntu Jammy, ubuntu-22.04) (push) Has been cancelled
Build and test GAM / build (build, 10, Build Intel Windows, windows-2022) (push) Has been cancelled
Build and test GAM / build (build, 11, Build Arm Windows, windows-11-arm) (push) Has been cancelled
Build and test GAM / build (build, 2, Build Intel Ubuntu Noble, ubuntu-24.04) (push) Has been cancelled
Build and test GAM / build (build, 3, Build Arm Ubuntu Noble, ubuntu-24.04-arm) (push) Has been cancelled
Build and test GAM / build (build, 4, Build Arm Ubuntu Jammy, ubuntu-22.04-arm) (push) Has been cancelled
Build and test GAM / build (build, 5, Build Intel StaticX Legacy, ubuntu-22.04, yes) (push) Has been cancelled
Build and test GAM / build (build, 6, Build Arm StaticX Legacy, ubuntu-22.04-arm, yes) (push) Has been cancelled
Build and test GAM / build (build, 7, Build Intel MacOS, macos-13) (push) Has been cancelled
Build and test GAM / build (build, 8, Build Arm MacOS 14, macos-14) (push) Has been cancelled
Build and test GAM / build (build, 9, Build Arm MacOS 15, macos-15) (push) Has been cancelled
Build and test GAM / build (test, 12, Test Python 3.10, ubuntu-24.04, 3.10) (push) Has been cancelled
Build and test GAM / build (test, 13, Test Python 3.11, ubuntu-24.04, 3.11) (push) Has been cancelled
Build and test GAM / build (test, 14, Test Python 3.12, ubuntu-24.04, 3.12) (push) Has been cancelled
Build and test GAM / build (test, 15, Test Python 3.14-dev, ubuntu-24.04, 3.14-dev) (push) Has been cancelled
Build and test GAM / merge (push) Has been cancelled
Build and test GAM / publish (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Check for Google Root CA Updates / check-apis (push) Has been cancelled
2025-07-01 23:29:22 -07:00
Ross Scroggs
6437547e33 Added commands to manage classroom/course announcements. 2025-07-01 22:51:03 -07:00
Ross Scroggs
f87f000be2 Added commands to manage classroom/course announcements. 2025-07-01 22:45:22 -07:00
Jay Lee
08f6f86d10 actions: rebuild for OpenSSL 3.5.1
Some checks failed
Build and test GAM / build (build, 1, Build Intel Ubuntu Jammy, ubuntu-22.04) (push) Has been cancelled
Build and test GAM / build (build, 10, Build Intel Windows, windows-2022) (push) Has been cancelled
Build and test GAM / build (build, 11, Build Arm Windows, windows-11-arm) (push) Has been cancelled
Build and test GAM / build (build, 2, Build Intel Ubuntu Noble, ubuntu-24.04) (push) Has been cancelled
Build and test GAM / build (build, 3, Build Arm Ubuntu Noble, ubuntu-24.04-arm) (push) Has been cancelled
Build and test GAM / build (build, 4, Build Arm Ubuntu Jammy, ubuntu-22.04-arm) (push) Has been cancelled
Build and test GAM / build (build, 5, Build Intel StaticX Legacy, ubuntu-22.04, yes) (push) Has been cancelled
Build and test GAM / build (build, 6, Build Arm StaticX Legacy, ubuntu-22.04-arm, yes) (push) Has been cancelled
Build and test GAM / build (build, 7, Build Intel MacOS, macos-13) (push) Has been cancelled
Build and test GAM / build (build, 8, Build Arm MacOS 14, macos-14) (push) Has been cancelled
Build and test GAM / build (build, 9, Build Arm MacOS 15, macos-15) (push) Has been cancelled
Build and test GAM / build (test, 12, Test Python 3.10, ubuntu-24.04, 3.10) (push) Has been cancelled
Build and test GAM / build (test, 13, Test Python 3.11, ubuntu-24.04, 3.11) (push) Has been cancelled
Build and test GAM / build (test, 14, Test Python 3.12, ubuntu-24.04, 3.12) (push) Has been cancelled
Build and test GAM / build (test, 15, Test Python 3.14-dev, ubuntu-24.04, 3.14-dev) (push) Has been cancelled
Build and test GAM / merge (push) Has been cancelled
Build and test GAM / publish (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Check for Google Root CA Updates / check-apis (push) Has been cancelled
2025-07-01 08:27:04 -04:00
Ross Scroggs
e70bfca92a Added choices text and hyperlink to option `showwebviewlink
Some checks failed
Build and test GAM / build (build, 1, Build Intel Ubuntu Jammy, ubuntu-22.04) (push) Has been cancelled
Build and test GAM / build (build, 10, Build Intel Windows, windows-2022) (push) Has been cancelled
Build and test GAM / build (build, 11, Build Arm Windows, windows-11-arm) (push) Has been cancelled
Build and test GAM / build (build, 2, Build Intel Ubuntu Noble, ubuntu-24.04) (push) Has been cancelled
Build and test GAM / build (build, 3, Build Arm Ubuntu Noble, ubuntu-24.04-arm) (push) Has been cancelled
Build and test GAM / build (build, 4, Build Arm Ubuntu Jammy, ubuntu-22.04-arm) (push) Has been cancelled
Build and test GAM / build (build, 5, Build Intel StaticX Legacy, ubuntu-22.04, yes) (push) Has been cancelled
Build and test GAM / build (build, 6, Build Arm StaticX Legacy, ubuntu-22.04-arm, yes) (push) Has been cancelled
Build and test GAM / build (build, 7, Build Intel MacOS, macos-13) (push) Has been cancelled
Build and test GAM / build (build, 8, Build Arm MacOS 14, macos-14) (push) Has been cancelled
Build and test GAM / build (build, 9, Build Arm MacOS 15, macos-15) (push) Has been cancelled
Build and test GAM / build (test, 12, Test Python 3.10, ubuntu-24.04, 3.10) (push) Has been cancelled
Build and test GAM / build (test, 13, Test Python 3.11, ubuntu-24.04, 3.11) (push) Has been cancelled
Build and test GAM / build (test, 14, Test Python 3.12, ubuntu-24.04, 3.12) (push) Has been cancelled
Build and test GAM / build (test, 15, Test Python 3.14-dev, ubuntu-24.04, 3.14-dev) (push) Has been cancelled
Build and test GAM / merge (push) Has been cancelled
Build and test GAM / publish (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Check for Google Root CA Updates / check-apis (push) Has been cancelled
Push wiki / pushwiki (push) Has been cancelled
2025-06-30 13:06:05 -07:00
Ross Scroggs
2be5d40f44 Added choices text and hyperlink to option showwebviewlink 2025-06-30 12:11:32 -07:00
Ross Scroggs
170e188f1f Added choices text and hyperlink to option showwebviewlink 2025-06-30 12:11:05 -07:00
Ross Scroggs
60d6188769 Added option showwebviewlink to gam print|show shareddrives
Some checks failed
Build and test GAM / build (build, 1, Build Intel Ubuntu Jammy, ubuntu-22.04) (push) Has been cancelled
Build and test GAM / build (build, 10, Build Intel Windows, windows-2022) (push) Has been cancelled
Build and test GAM / build (build, 11, Build Arm Windows, windows-11-arm) (push) Has been cancelled
Build and test GAM / build (build, 2, Build Intel Ubuntu Noble, ubuntu-24.04) (push) Has been cancelled
Build and test GAM / build (build, 3, Build Arm Ubuntu Noble, ubuntu-24.04-arm) (push) Has been cancelled
Build and test GAM / build (build, 4, Build Arm Ubuntu Jammy, ubuntu-22.04-arm) (push) Has been cancelled
Build and test GAM / build (build, 5, Build Intel StaticX Legacy, ubuntu-22.04, yes) (push) Has been cancelled
Build and test GAM / build (build, 6, Build Arm StaticX Legacy, ubuntu-22.04-arm, yes) (push) Has been cancelled
Build and test GAM / build (build, 7, Build Intel MacOS, macos-13) (push) Has been cancelled
Build and test GAM / build (build, 8, Build Arm MacOS 14, macos-14) (push) Has been cancelled
Build and test GAM / build (build, 9, Build Arm MacOS 15, macos-15) (push) Has been cancelled
Build and test GAM / build (test, 12, Test Python 3.10, ubuntu-24.04, 3.10) (push) Has been cancelled
Build and test GAM / build (test, 13, Test Python 3.11, ubuntu-24.04, 3.11) (push) Has been cancelled
Build and test GAM / build (test, 14, Test Python 3.12, ubuntu-24.04, 3.12) (push) Has been cancelled
Build and test GAM / build (test, 15, Test Python 3.14-dev, ubuntu-24.04, 3.14-dev) (push) Has been cancelled
Build and test GAM / merge (push) Has been cancelled
Build and test GAM / publish (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Check for Google Root CA Updates / check-apis (push) Has been cancelled
Push wiki / pushwiki (push) Has been cancelled
2025-06-30 09:43:50 -07:00
Ross Scroggs
626eb1eadc Added option showwebviewlink to gam print|show shareddrives 2025-06-30 09:43:32 -07:00
Ross Scroggs
db40ada5d0 Update Cloud-Identity-Groups.md 2025-06-30 07:46:37 -07:00
Ross Scroggs
ba8c27339e Fixed labelids <LabelIdList> bug 2025-06-29 19:04:47 -07:00
Ross Scroggs
822488dce5 Fixed labelids <LabelIdList> bug
Some checks failed
Build and test GAM / build (build, 1, Build Intel Ubuntu Jammy, ubuntu-22.04) (push) Has been cancelled
Build and test GAM / build (build, 10, Build Intel Windows, windows-2022) (push) Has been cancelled
Build and test GAM / build (build, 11, Build Arm Windows, windows-11-arm) (push) Has been cancelled
Build and test GAM / build (build, 2, Build Intel Ubuntu Noble, ubuntu-24.04) (push) Has been cancelled
Build and test GAM / build (build, 3, Build Arm Ubuntu Noble, ubuntu-24.04-arm) (push) Has been cancelled
Build and test GAM / build (build, 4, Build Arm Ubuntu Jammy, ubuntu-22.04-arm) (push) Has been cancelled
Build and test GAM / build (build, 5, Build Intel StaticX Legacy, ubuntu-22.04, yes) (push) Has been cancelled
Build and test GAM / build (build, 6, Build Arm StaticX Legacy, ubuntu-22.04-arm, yes) (push) Has been cancelled
Build and test GAM / build (build, 7, Build Intel MacOS, macos-13) (push) Has been cancelled
Build and test GAM / build (build, 8, Build Arm MacOS 14, macos-14) (push) Has been cancelled
Build and test GAM / build (build, 9, Build Arm MacOS 15, macos-15) (push) Has been cancelled
Build and test GAM / build (test, 12, Test Python 3.10, ubuntu-24.04, 3.10) (push) Has been cancelled
Build and test GAM / build (test, 13, Test Python 3.11, ubuntu-24.04, 3.11) (push) Has been cancelled
Build and test GAM / build (test, 14, Test Python 3.12, ubuntu-24.04, 3.12) (push) Has been cancelled
Build and test GAM / build (test, 15, Test Python 3.14-dev, ubuntu-24.04, 3.14-dev) (push) Has been cancelled
Build and test GAM / merge (push) Has been cancelled
Build and test GAM / publish (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Check for Google Root CA Updates / check-apis (push) Has been cancelled
2025-06-29 19:04:21 -07:00
Ross Scroggs
bbd76ec23f Update Cloud-Identity-Policies.md
Some checks failed
Build and test GAM / build (build, 1, Build Intel Ubuntu Jammy, ubuntu-22.04) (push) Has been cancelled
Build and test GAM / build (build, 10, Build Intel Windows, windows-2022) (push) Has been cancelled
Build and test GAM / build (build, 11, Build Arm Windows, windows-11-arm) (push) Has been cancelled
Build and test GAM / build (build, 2, Build Intel Ubuntu Noble, ubuntu-24.04) (push) Has been cancelled
Build and test GAM / build (build, 3, Build Arm Ubuntu Noble, ubuntu-24.04-arm) (push) Has been cancelled
Build and test GAM / build (build, 4, Build Arm Ubuntu Jammy, ubuntu-22.04-arm) (push) Has been cancelled
Build and test GAM / build (build, 5, Build Intel StaticX Legacy, ubuntu-22.04, yes) (push) Has been cancelled
Build and test GAM / build (build, 6, Build Arm StaticX Legacy, ubuntu-22.04-arm, yes) (push) Has been cancelled
Build and test GAM / build (build, 7, Build Intel MacOS, macos-13) (push) Has been cancelled
Build and test GAM / build (build, 8, Build Arm MacOS 14, macos-14) (push) Has been cancelled
Build and test GAM / build (build, 9, Build Arm MacOS 15, macos-15) (push) Has been cancelled
Build and test GAM / build (test, 12, Test Python 3.10, ubuntu-24.04, 3.10) (push) Has been cancelled
Build and test GAM / build (test, 13, Test Python 3.11, ubuntu-24.04, 3.11) (push) Has been cancelled
Build and test GAM / build (test, 14, Test Python 3.12, ubuntu-24.04, 3.12) (push) Has been cancelled
Build and test GAM / build (test, 15, Test Python 3.14-dev, ubuntu-24.04, 3.14-dev) (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Check for Google Root CA Updates / check-apis (push) Has been cancelled
Push wiki / pushwiki (push) Has been cancelled
Build and test GAM / merge (push) Has been cancelled
Build and test GAM / publish (push) Has been cancelled
2025-06-27 07:29:10 -07:00
Ross Scroggs
e2a6f8badf Update Authorization.md 2025-06-27 06:57:25 -07:00
Jay Lee
2462aa7dcb [no ci] enable manual wiki push actions 2025-06-27 08:26:31 -04:00
Jay Lee
d7a0da6e52 [no ci] update Authorization wiki article with some corrections 2025-06-27 08:23:25 -04:00
Ross Scroggs
9922ed4994 Permissions fix, new license SKU
Some checks failed
Build and test GAM / build (build, 1, Build Intel Ubuntu Jammy, ubuntu-22.04) (push) Has been cancelled
Build and test GAM / build (build, 10, Build Intel Windows, windows-2022) (push) Has been cancelled
Build and test GAM / build (build, 11, Build Arm Windows, windows-11-arm) (push) Has been cancelled
Build and test GAM / build (build, 2, Build Intel Ubuntu Noble, ubuntu-24.04) (push) Has been cancelled
Build and test GAM / build (build, 3, Build Arm Ubuntu Noble, ubuntu-24.04-arm) (push) Has been cancelled
Build and test GAM / build (build, 4, Build Arm Ubuntu Jammy, ubuntu-22.04-arm) (push) Has been cancelled
Build and test GAM / build (build, 5, Build Intel StaticX Legacy, ubuntu-22.04, yes) (push) Has been cancelled
Build and test GAM / build (build, 6, Build Arm StaticX Legacy, ubuntu-22.04-arm, yes) (push) Has been cancelled
Build and test GAM / build (build, 7, Build Intel MacOS, macos-13) (push) Has been cancelled
Build and test GAM / build (build, 8, Build Arm MacOS 14, macos-14) (push) Has been cancelled
Build and test GAM / build (build, 9, Build Arm MacOS 15, macos-15) (push) Has been cancelled
Build and test GAM / build (test, 12, Test Python 3.10, ubuntu-24.04, 3.10) (push) Has been cancelled
Build and test GAM / build (test, 13, Test Python 3.11, ubuntu-24.04, 3.11) (push) Has been cancelled
Build and test GAM / build (test, 14, Test Python 3.12, ubuntu-24.04, 3.12) (push) Has been cancelled
Build and test GAM / build (test, 15, Test Python 3.14-dev, ubuntu-24.04, 3.14-dev) (push) Has been cancelled
Build and test GAM / merge (push) Has been cancelled
Build and test GAM / publish (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Check for Google Root CA Updates / check-apis (push) Has been cancelled
Push wiki / pushwiki (push) Has been cancelled
2025-06-26 14:16:12 -07:00
Ross Scroggs
3a0c52d8eb Permissions fix, new license SKU
Updated `gam <UserTypeEntity> copy|move drivefile` to hanndle additional instances of
the `cannotModifyInheritedPermission` error.

Added license SKU `Google AI Ultra for Business`
2025-06-26 14:15:15 -07:00
Ross Scroggs
f3e7c46561 Merge branch 'main' of https://github.com/GAM-team/GAM 2025-06-26 14:00:18 -07:00
Ross Scroggs
b42c916516 Updated gam <UserTypeEntity> copy|move drivefile
to hanndle additional instances of
the `cannotModifyInheritedPermission` error.
2025-06-26 14:00:15 -07:00
Jay Lee
4fd7172f7a Merge branch 'main' of https://github.com/GAM-team/GAM 2025-06-26 18:31:20 +00:00
Jay Lee
e670cf3e6a Add license for new Google AI Ultra SKU 2025-06-26 18:31:13 +00:00
Ross Scroggs
e305cc0789 Merge branch 'main' of https://github.com/GAM-team/GAM 2025-06-26 10:12:20 -07:00
Ross Scroggs
d7b9d43c63 Add clientstates to gam print devices 2025-06-26 10:12:08 -07:00
Jay Lee
75e3ae8144 actions: custom win-arm64 lxml wheel no longer needed 2025-06-26 13:03:07 -04:00
Jay Lee
130a483e4d [actions] test clientstates argument
Some checks failed
Build and test GAM / build (build, 1, Build Intel Ubuntu Jammy, ubuntu-22.04) (push) Has been cancelled
Build and test GAM / build (build, 10, Build Intel Windows, windows-2022) (push) Has been cancelled
Build and test GAM / build (build, 11, Build Arm Windows, windows-11-arm) (push) Has been cancelled
Build and test GAM / build (build, 2, Build Intel Ubuntu Noble, ubuntu-24.04) (push) Has been cancelled
Build and test GAM / build (build, 3, Build Arm Ubuntu Noble, ubuntu-24.04-arm) (push) Has been cancelled
Build and test GAM / build (build, 4, Build Arm Ubuntu Jammy, ubuntu-22.04-arm) (push) Has been cancelled
Build and test GAM / build (build, 5, Build Intel StaticX Legacy, ubuntu-22.04, yes) (push) Has been cancelled
Build and test GAM / build (build, 6, Build Arm StaticX Legacy, ubuntu-22.04-arm, yes) (push) Has been cancelled
Build and test GAM / build (build, 7, Build Intel MacOS, macos-13) (push) Has been cancelled
Build and test GAM / build (build, 8, Build Arm MacOS 14, macos-14) (push) Has been cancelled
Build and test GAM / build (build, 9, Build Arm MacOS 15, macos-15) (push) Has been cancelled
Build and test GAM / build (test, 12, Test Python 3.10, ubuntu-24.04, 3.10) (push) Has been cancelled
Build and test GAM / build (test, 13, Test Python 3.11, ubuntu-24.04, 3.11) (push) Has been cancelled
Build and test GAM / build (test, 14, Test Python 3.12, ubuntu-24.04, 3.12) (push) Has been cancelled
Build and test GAM / build (test, 15, Test Python 3.14-dev, ubuntu-24.04, 3.14-dev) (push) Has been cancelled
Build and test GAM / merge (push) Has been cancelled
Build and test GAM / publish (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Check for Google Root CA Updates / check-apis (push) Has been cancelled
Push wiki / pushwiki (push) Has been cancelled
2025-06-26 15:15:32 +00:00
Jay Lee
cbd04bcec4 gam print devices clientstates 2025-06-26 15:14:33 +00:00
Jay Lee
a51b245015 [no ci] wiki DASA article update 2025-06-26 09:58:54 -04:00
Ross Scroggs
64356a9736 Handle invalid photo data error
Some checks failed
Build and test GAM / build (build, 1, Build Intel Ubuntu Jammy, ubuntu-22.04) (push) Has been cancelled
Build and test GAM / build (build, 10, Build Intel Windows, windows-2022) (push) Has been cancelled
Build and test GAM / build (build, 11, Build Arm Windows, windows-11-arm) (push) Has been cancelled
Build and test GAM / build (build, 2, Build Intel Ubuntu Noble, ubuntu-24.04) (push) Has been cancelled
Build and test GAM / build (build, 3, Build Arm Ubuntu Noble, ubuntu-24.04-arm) (push) Has been cancelled
Build and test GAM / build (build, 4, Build Arm Ubuntu Jammy, ubuntu-22.04-arm) (push) Has been cancelled
Build and test GAM / build (build, 5, Build Intel StaticX Legacy, ubuntu-22.04, yes) (push) Has been cancelled
Build and test GAM / build (build, 6, Build Arm StaticX Legacy, ubuntu-22.04-arm, yes) (push) Has been cancelled
Build and test GAM / build (build, 7, Build Intel MacOS, macos-13) (push) Has been cancelled
Build and test GAM / build (build, 8, Build Arm MacOS 14, macos-14) (push) Has been cancelled
Build and test GAM / build (build, 9, Build Arm MacOS 15, macos-15) (push) Has been cancelled
Build and test GAM / build (test, 12, Test Python 3.10, ubuntu-24.04, 3.10) (push) Has been cancelled
Build and test GAM / build (test, 13, Test Python 3.11, ubuntu-24.04, 3.11) (push) Has been cancelled
Build and test GAM / build (test, 14, Test Python 3.12, ubuntu-24.04, 3.12) (push) Has been cancelled
Build and test GAM / build (test, 15, Test Python 3.14-dev, ubuntu-24.04, 3.14-dev) (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Check for Google Root CA Updates / check-apis (push) Has been cancelled
Push wiki / pushwiki (push) Has been cancelled
Build and test GAM / merge (push) Has been cancelled
Build and test GAM / publish (push) Has been cancelled
2025-06-24 18:01:18 -07:00
Ross Scroggs
c18375abb7 Google renamed an error: cannotModifyInheritedTeamDrivePermission became cannotModifyInheritedPermission 2025-06-24 15:40:08 -07:00
49 changed files with 2355 additions and 608 deletions

View File

@@ -126,7 +126,7 @@ jobs:
with: with:
path: | path: |
cache.tar.xz cache.tar.xz
key: gam-${{ matrix.jid }}-20250611 key: gam-${{ matrix.jid }}-20250701
- name: Untar Cache archive - name: Untar Cache archive
if: matrix.goal == 'build' && steps.cache-python-ssl.outputs.cache-hit == 'true' if: matrix.goal == 'build' && steps.cache-python-ssl.outputs.cache-hit == 'true'
@@ -292,10 +292,10 @@ jobs:
if: matrix.goal == 'build' && steps.cache-python-ssl.outputs.cache-hit != 'true' if: matrix.goal == 'build' && steps.cache-python-ssl.outputs.cache-hit != 'true'
run: | run: |
cd "${OPENSSL_SOURCE_PATH}" cd "${OPENSSL_SOURCE_PATH}"
if ([ "$RUNNER_OS" == "Windows" ] && [ "$RUNNER_ARCH" == "ARM64" ]); then #if ([ "$RUNNER_OS" == "Windows" ] && [ "$RUNNER_ARCH" == "ARM64" ]); then
# https://github.com/openssl/openssl/issues/26239 # https://github.com/openssl/openssl/issues/26239
export CFLAGS=-DNO_INTERLOCKEDOR64 export CFLAGS=-DNO_INTERLOCKEDOR64
fi #fi
# --libdir=lib is needed so Python can find OpenSSL libraries # --libdir=lib is needed so Python can find OpenSSL libraries
"${PERL}" ./Configure --libdir=lib --prefix="${OPENSSL_INSTALL_PATH}" $OPENSSL_CONFIG_OPTS "${PERL}" ./Configure --libdir=lib --prefix="${OPENSSL_INSTALL_PATH}" $OPENSSL_CONFIG_OPTS
@@ -457,16 +457,12 @@ jobs:
- name: Custom wheels for Win arm64 - name: Custom wheels for Win arm64
if: runner.os == 'Windows' && runner.arch == 'ARM64' if: runner.os == 'Windows' && runner.arch == 'ARM64'
run: | run: |
latest_lxml_whl=$(curl https://api.github.com/repos/GAM-team/lxml-wheel/releases/latest -s | jq -r .assets.[0].browser_download_url)
echo "Downloading ${latest_lxml_whl}..."
curl -O -L "$latest_lxml_whl"
"$PYTHON" -m pip install lxml*.whl
latest_crypt_whl=$(curl https://api.github.com/repos/jay0lee/cryptography/releases/latest -s | jq -r .assets.[0].browser_download_url) latest_crypt_whl=$(curl https://api.github.com/repos/jay0lee/cryptography/releases/latest -s | jq -r .assets.[0].browser_download_url)
echo "Downloading ${latest_crypt_whl}..." echo "Downloading ${latest_crypt_whl}..."
curl -O -L "$latest_crypt_whl" curl -O -L "$latest_crypt_whl"
"$PYTHON" -m pip install cryptography*.whl "$PYTHON" -m pip install cryptography*.whl
- uses: actions-rust-lang/setup-rust-toolchain@v1 #- uses: actions-rust-lang/setup-rust-toolchain@v1
# - name: Compile cryptography from source (no legacy) # - name: Compile cryptography from source (no legacy)
# if: runner.os != 'Windows' || runner.arch != 'ARM64' # if: runner.os != 'Windows' || runner.arch != 'ARM64'
@@ -477,8 +473,7 @@ jobs:
run: | run: |
echo "before anything..." echo "before anything..."
"$PYTHON" -m pip list "$PYTHON" -m pip list
"$PYTHON" -m pip install --upgrade -r requirements.txt "$PYTHON" -m pip install --upgrade ..[yubikey]
echo "after requirements..."
"$PYTHON" -m pip list "$PYTHON" -m pip list
#"$PYTHON" -m pip install --force-reinstall --no-deps --upgrade cryptography #"$PYTHON" -m pip install --force-reinstall --no-deps --upgrade cryptography
echo "after everything..." echo "after everything..."
@@ -810,7 +805,7 @@ jobs:
echo "Created shared drive ${driveid}" echo "Created shared drive ${driveid}"
$gam create user $newuser firstname GHA lastname $JID displayname "Github Actions ${JID}" password random recoveryphone 12125121110 recoveryemail jay0lee@gmail.com gha.jid $JID languages en+,en-GB- ou "${newou}" $gam create user $newuser firstname GHA lastname $JID displayname "Github Actions ${JID}" password random recoveryphone 12125121110 recoveryemail jay0lee@gmail.com gha.jid $JID languages en+,en-GB- ou "${newou}"
$gam user $newuser add license workspaceenterpriseplus $gam user $newuser add license workspaceenterpriseplus
$gam user $newuser update photo https://dummyimage.com/400x600/000/fff $gam user $newuser update photo https://dummyimage.com/98x98/000/fff.jpg
$gam user $newuser get photo $gam user $newuser get photo
$gam user $newuser delete photo $gam user $newuser delete photo
$gam create alias $newalias user $newuser $gam create alias $newalias user $newuser
@@ -857,7 +852,7 @@ jobs:
$gam user $newuser show labels > labels.txt $gam user $newuser show labels > labels.txt
$gam user $gam_user importemail subject "GHA import $newbase" message "This is a test import" labels IMPORTANT,UNREAD,INBOX,STARRED $gam user $gam_user importemail subject "GHA import $newbase" message "This is a test import" labels IMPORTANT,UNREAD,INBOX,STARRED
$gam user $gam_user insertemail subject "GHA insert $newbase" file gam.py labels INBOX,UNREAD # yep body is gam code $gam user $gam_user insertemail subject "GHA insert $newbase" file gam.py labels INBOX,UNREAD # yep body is gam code
$gam user $gam_user sendemail subject "GHA send $gam_user $newbase" file gam.py recipient admin@pdl.jaylee.us $gam user $gam_user sendemail recipient admin@pdl.jaylee.us subject "GHA send $gam_user $newbase" file gam.py
$gam user $gam_user draftemail subject "GHA draft $newbase" message "Draft message test" $gam user $gam_user draftemail subject "GHA draft $newbase" message "Draft message test"
$gam csvfile sample.csv:email waitformailbox retries 20 $gam csvfile sample.csv:email waitformailbox retries 20
$gam user $newuser delegate to "${newbase}-bulkuser-1" || if [ $? != 50 ]; then exit $?; fi # expect a 50 return code (delegation failed) $gam user $newuser delegate to "${newbase}-bulkuser-1" || if [ $? != 50 ]; then exit $?; fi # expect a 50 return code (delegation failed)
@@ -920,7 +915,7 @@ jobs:
$gam config enable_dasa true save $gam config enable_dasa true save
$gam print users query "gha.jid=$JID" | $gam csv - gam delete user ~primaryEmail || if [ $? != 50 ]; then exit $?; fi # expect a 50 return code (vault hold on user) $gam print users query "gha.jid=$JID" | $gam csv - gam delete user ~primaryEmail || if [ $? != 50 ]; then exit $?; fi # expect a 50 return code (vault hold on user)
$gam print mobile $gam print mobile
$gam print devices $gam print devices clientstates
$gam print browsers $gam print browsers
$gam print cros allfields orderby serialnumber $gam print cros allfields orderby serialnumber
$gam show crostelemetry storagepercentonly $gam show crostelemetry storagepercentonly

View File

@@ -5,6 +5,8 @@ on:
push: push:
paths: paths:
- 'wiki/**' - 'wiki/**'
workflow_dispatch:
jobs: jobs:
pushwiki: pushwiki:
runs-on: ubuntu-latest runs-on: ubuntu-latest

View File

@@ -7,7 +7,8 @@ authors = [
{ name="Jay Lee", email="jay0lee@gmail.com" }, { name="Jay Lee", email="jay0lee@gmail.com" },
{ name="Ross Scroggs", email="Ross.Scroggs@gmail.com" }, { name="Ross Scroggs", email="Ross.Scroggs@gmail.com" },
] ]
# # The following files should be edited to match: setup.cfg, requirements.txt # notice that yubikey-manager remains optional further down since it is less command and adds
#significant compile dependencies.
dependencies = [ dependencies = [
"chardet>=5.2.0", "chardet>=5.2.0",
"cryptography>=44.0.2", "cryptography>=44.0.2",
@@ -22,7 +23,6 @@ dependencies = [
"passlib>=1.7.4", "passlib>=1.7.4",
"pathvalidate>=3.2.3", "pathvalidate>=3.2.3",
"python-dateutil", "python-dateutil",
"yubikey-manager>=5.6.1",
] ]
description = "CLI tool to manage Google Workspace" description = "CLI tool to manage Google Workspace"
readme = "README.md" readme = "README.md"

View File

@@ -1,4 +1,4 @@
his document describes the GAM command line syntax in modified BNF, see https://en.wikipedia.org/wiki/Backus-Naur_Form This document describes the GAM command line syntax in modified BNF, see https://en.wikipedia.org/wiki/Backus-Naur_Form
Skip the History section and start reading at Introduction. Skip the History section and start reading at Introduction.
Items on the command line are space separated, when an actual space character is required, it will be indicated by <Space>. Items on the command line are space separated, when an actual space character is required, it will be indicated by <Space>.
@@ -279,6 +279,7 @@ If an item contains spaces, it should be surrounded by ".
geminiedu | 1010470004 | Gemini Education | geminiedu | 1010470004 | Gemini Education |
geminiedupremium| 1010470005 | Gemini Education Premium | geminiedupremium| 1010470005 | Gemini Education Premium |
geminient| duetai | 1010470001 | Gemini Enterprise | geminient| duetai | 1010470001 | Gemini Enterprise |
geminiultra | 1010470008 | Google AI Ultra for Business |
gsuitebasic | gafb | gafw | basic | Google-Apps-For-Business | gsuitebasic | gafb | gafw | basic | Google-Apps-For-Business |
gsuitebusiness | gau | gsb | unlimited | Google-Apps-Unlimited | gsuitebusiness | gau | gsb | unlimited | Google-Apps-Unlimited |
gsuitebusinessarchived | gsbau | businessarchived | 1010340002 | Google Workspace Business - Archived User | gsuitebusinessarchived | gsbau | businessarchived | 1010340002 | Google Workspace Business - Archived User |
@@ -380,12 +381,15 @@ If an item contains spaces, it should be surrounded by ".
domain:<DomainName>|domain|default domain:<DomainName>|domain|default
<CalendarItem> ::= <EmailAddress> <CalendarItem> ::= <EmailAddress>
<ChannelCustomerID> ::= <String> <ChannelCustomerID> ::= <String>
<ChatEmojiName> ::= :<String>: <ChatEmojiName> ::= :[0-9a-z_-]+:
<ChatEmoji> ::= emojiname <ChatEmojiName> | customemojis/<String> <ChatEmoji> ::= emojiname <ChatEmojiName> | customemojis/<String>
<ChatMember> ::= spaces/<String>/members/<String> <ChatMember> ::= spaces/<String>/members/<String>
<ChatMessage> ::= spaces/<String>/messages/<String> <ChatMessage> ::= spaces/<String>/messages/<String>
<ChatSpace> ::= spaces/<String> | space <String> | space spaces/<String> <ChatSpace> ::= spaces/<String> | space <String> | space spaces/<String>
<ChatThread> ::= spaces/<String>/threads/<String> <ChatThread> ::= spaces/<String>/threads/<String>
<ChromeProfilePermanentID> ::= <String>
<ChromeProfileName> ::= customers/<CustomerID>/profiles/<ChromeProfilePermanentID> | <ChromeProfilePermanentID>
<ChromeProfileCommandName> ::= <ChomeProfileName>/commands/<String>
<GIGroupAlias> ::= <EmailAddress> <GIGroupAlias> ::= <EmailAddress>
<GIGroupItem> ::= <EmailAddress>|<UniqueID>|groups/<String> <GIGroupItem> ::= <EmailAddress>|<UniqueID>|groups/<String>
<CIGroupMemberType> ::= cbcmbrowser|chromeosdevice|customer|group|other|serviceaccount|user <CIGroupMemberType> ::= cbcmbrowser|chromeosdevice|customer|group|other|serviceaccount|user
@@ -404,6 +408,11 @@ If an item contains spaces, it should be surrounded by ".
<ContactGroupItem> ::= <ContactGroupID>|<ContactGroupName> <ContactGroupItem> ::= <ContactGroupID>|<ContactGroupName>
<CorporaAttribute> ::= alldrives|allteamdrives|domain|onlyteamdrives|user <CorporaAttribute> ::= alldrives|allteamdrives|domain|onlyteamdrives|user
<CourseAlias> ::= <String> <CourseAlias> ::= <String>
<CourseAnnouncementContent> ::=
((text <String>)|
(textfile <FileName> [charset <Charset>])|
(gdoc <UserGoogleDoc>)|
(gcsdoc <StorageBucketObjectName>))
<CourseAnnouncementID> ::= <Number> <CourseAnnouncementID> ::= <Number>
<CourseAnnouncementState> ::= draft|published|deleted <CourseAnnouncementState> ::= draft|published|deleted
<CourseID> ::= <Number>|d:<CourseAlias> <CourseID> ::= <Number>|d:<CourseAlias>
@@ -613,6 +622,14 @@ If an item contains spaces, it should be surrounded by ".
gs://<StorageBucketName>/<StorageObjectName>| gs://<StorageBucketName>/<StorageObjectName>|
<StorageBucketName>/<StorageObjectName> <StorageBucketName>/<StorageObjectName>
<Tag> ::= <String> <Tag> ::= <String>
<TagManagerAccountID> ::= <String>
<TagManagerAccountPath> ::= accounts/<TagManagerAccountID>
<TagManagerContainerID> ::= <String>
<TagManagerContainerPath> ::= accounts/<TagManagerAccountID>/containers/<TagManagerContainerID>
<TagManagerWorkspaceID> ::= <String>
<TagManagerWorkspacePath> ::= accounts/<TagManagerAccountID>/containers/<TagManagerContainerID>/workspaces/<TagManagerWorkspaceID>
<TagManagerTagID> ::= <String>
<TagManagerTagPath> ::= accounts/<TagManagerAccountID>/containers/<TagManagerContainerID>/workspaces/<TagManagerWorkspaceID>/tags/<TagManagerTagID>
<TakeoutBucketName> ::= takeout-export-[a-f,0-9,-]* <TakeoutBucketName> ::= takeout-export-[a-f,0-9,-]*
<TaskID> ::= <String> <TaskID> ::= <String>
<TaskListID> ::= <String> <TaskListID> ::= <String>
@@ -675,9 +692,16 @@ If an item contains spaces, it should be surrounded by ".
<CalendarACLScopeList> ::= "<CalendarACLScope>(,<CalendarACLScope>)*" <CalendarACLScopeList> ::= "<CalendarACLScope>(,<CalendarACLScope>)*"
<CalendarList> ::= "<CalendarItem>(,<CalendarItem>)*" <CalendarList> ::= "<CalendarItem>(,<CalendarItem>)*"
<ChatSpaceList> ::= "<ChatSpace>(,<ChatSpace>)*" <ChatSpaceList> ::= "<ChatSpace>(,<ChatSpace>)*"
<ChromeProfileNameList> ::= "<ChromeProfileName>(,<ChromeProfileName>)*"
<ChromeProfileCommandNameList> ::= "<ChromeProfileCommandName>(,<ChromeProfileCommandName>)*"
<CIGroupAliasList> ::= "<CIGroupAlias>(,<CIGroupAlias>)*" <CIGroupAliasList> ::= "<CIGroupAlias>(,<CIGroupAlias>)*"
<CIGroupMemberTypeList> ::= "<CIGroupMemberType>(,<CIGroupMemberType>)*" <CIGroupMemberTypeList> ::= "<CIGroupMemberType>(,<CIGroupMemberType>)*"
<CIPolicyNameList> ::= "<CIPolicyName>(,<CIPolicyName>)*" <CIPolicyNameList> ::= "<CIPolicyName>(,<CIPolicyName>)*"
<ClassificationLabelIDList> ::= "<ClassificationLabelID>(,<ClassificationLabelID>)*"
<ClassificationLabelNameList> ::= "<ClassificationLabelName>(,<ClassificationLabelName>)*"
<ClassificationLabelPermissionNameList> ::= "<ClassificationLabelPermissionName>(,<ClassificationLabelPermissionName>)*"
<ClassificationLabelFieldIDList> ::= "<ClassificationLabelFieldID>(,<ClassificationLabelFieldID>)*"
<ClassificationLabelSelectionIDList> ::= "<ClassificationLabelSelectionID>(,<ClassificationLabelSelectionID>)*"
<ClassroomInvitationIDList> ::= "<ClassroomInvitationID>(,<ClassroomInvitationID>)*" <ClassroomInvitationIDList> ::= "<ClassroomInvitationID>(,<ClassroomInvitationID>)*"
<ContactGroupList> ::= "<ContactGroupItem>(,<ContactGroupItem>)*" <ContactGroupList> ::= "<ContactGroupItem>(,<ContactGroupItem>)*"
<ContactIDList> ::= "<ContactID>(,<ContactID>)*" <ContactIDList> ::= "<ContactID>(,<ContactID>)*"
@@ -755,6 +779,9 @@ If an item contains spaces, it should be surrounded by ".
<SharedDriveACLRoleList> ::= "<SharedDriveACLRole>(,<SharedDriveACLRole>)*" <SharedDriveACLRoleList> ::= "<SharedDriveACLRole>(,<SharedDriveACLRole>)*"
<SharedDriveIDList> ::= "<SharedDriveID>(,<SharedDriveID>)*" <SharedDriveIDList> ::= "<SharedDriveID>(,<SharedDriveID>)*"
<StringList> ::= "<String>(,<String>)*" <StringList> ::= "<String>(,<String>)*"
<TagManagerAccountPathList> ::= "<TagManagerAccountPath>(,<TagManagerAccountPath>)*"
<TagManagerContainerPathList> ::= "<TagManagerContainerPath>(,<TagManagerContainerPath>)*"
<TagManagerWorkspacePathList> ::= "<TagManagerWorkspacePath>(,<TagManagerWorkspacePath>)*"
<TasklistIDList> ::= "<TasklistID>(,<TasklistID>)*" <TasklistIDList> ::= "<TasklistID>(,<TasklistID>)*"
<TasklistTitleList> ::= "'<TasklistTitle>'(,'<TasklistTitle>')*" <TasklistTitleList> ::= "'<TasklistTitle>'(,'<TasklistTitle>')*"
<TasklistIDTaskIDList> ::= "<TasklistIDTaskID>(,<TasklistIDTaskID>)*" <TasklistIDTaskIDList> ::= "<TasklistIDTaskID>(,<TasklistIDTaskID>)*"
@@ -1009,6 +1036,11 @@ Specify a collection of items by directly specifying them; the item type is dete
<CalendarACLScopeList> | <FileSelector> | <CSVFileSelector> | <CSVkmdSelector> | <CSVDataSelector> <CalendarACLScopeList> | <FileSelector> | <CSVFileSelector> | <CSVkmdSelector> | <CSVDataSelector>
<CalendarEntity> ::= <CalendarEntity> ::=
<CalendarList> | <FileSelector> | <CSVFileSelector> | <CSVkmdSelector> | <CSVDataSelector> <CalendarList> | <FileSelector> | <CSVFileSelector> | <CSVkmdSelector> | <CSVDataSelector>
<ChromeProfileNameEntity> ::=
<ChromeProfileNameList> |
(select <FileSelector>|<CSVFileSelector>) |
(filter <String> (filtertime<String> <Time>)* [orderby <ChromeProfileOrderByFieldName> [ascending|descending]]) |
(commands <ChromeProfileCommandNameList>|<FileSelector>|<CSVFileSelector>)
<CIPolicyNameEntity> ::= <CIPolicyNameEntity> ::=
<CIPolicyNameList> | <FileSelector> | <CSVFileSelector> <CIPolicyNameList> | <FileSelector> | <CSVFileSelector>
<ClassificationLabelNameEntity> ::= <ClassificationLabelNameEntity> ::=
@@ -1211,6 +1243,15 @@ Specify a collection of items by directly specifying them; the item type is dete
<SiteACLScopeList> | <FileSelector> | <CSVFileSelector> | <CSVkmdSelector> | <CSVDataSelector> <SiteACLScopeList> | <FileSelector> | <CSVFileSelector> | <CSVkmdSelector> | <CSVDataSelector>
<SiteEntity> ::= <SiteEntity> ::=
<SiteList> | <FileSelector> | <CSVFileSelector> | <CSVkmdSelector> | <CSVDataSelector> <SiteList> | <FileSelector> | <CSVFileSelector> | <CSVkmdSelector> | <CSVDataSelector>
<TagManagerAccountPathEntity> ::=
<TagManagerAccountPathList> |
(select <FileSelector>|<CSVFileSelector>) |
<TagManagerContainerPathEntity> ::=
<TagManagerContainerPathList> |
(select <FileSelector>|<CSVFileSelector>) |
<TagManagerWorkspacePathEntity> ::=
<TagManagerWorkspacePathList> |
(select <FileSelector>|<CSVFileSelector>) |
<TasklistEntity> ::= <TasklistEntity> ::=
<TasklistIDList> | <TaskListTitleList> | <FileSelector> | <CSVFileSelector> <TasklistIDList> | <TaskListTitleList> | <FileSelector> | <CSVFileSelector>
<TasklistIDTaskIDEntity> ::= <TasklistIDTaskIDEntity> ::=
@@ -2209,6 +2250,17 @@ gam show chromeneedsattn
# Chrome Profile Management # Chrome Profile Management
<ChromeProfilePermanentID> ::= <String>
<ChromeProfileName> ::= customers/<CustomerID>/profiles/<ChromeProfilePermanentID> | <ChromeProfilePermanentID>
<ChromeProfileNameList> ::= "<ChromeProfileName>(,<ChromeProfileName>)*"
<ChromeProfileCommandName> ::= <ChomeProfileName>/commands/<String>
<ChromeProfileCommandNameList> ::= "<ChromeProfileCommandName>(,<ChromeProfileCommandName>)*"
<ChromeProfileNameEntity> ::=
<ChromeProfileNameList> |
(select <ChromeProfileNameList>|<FileSelector>|<CSVFileSelector>) |
(filter <String> (filtertime<String> <Time>)* [orderby <ChromeProfileOrderByFieldName> [ascending|descending]]) |
(commands <ChromeProfileCommandNameList>|<FileSelector>|<CSVFileSelector>)
<ChromeProfileFieldName> ::= <ChromeProfileFieldName> ::=
affiliationstate| affiliationstate|
annotatedlocation| annotatedlocation|
@@ -2259,15 +2311,27 @@ gam delete chromeprofile <ChromeProfileName>
gam info chromeprofile <ChromeProfileName> gam info chromeprofile <ChromeProfileName>
<ChromeProfileFieldName>* [fields <ChromeProfileFieldNameList>] <ChromeProfileFieldName>* [fields <ChromeProfileFieldNameList>]
gam show chromeprofiles gam show chromeprofiles
[filtertime.* <Time>] [filter <String>] [filter <String> (filtertime<String> <Time>)*]
[orderby <ChromeProfileOrderByFieldName> [ascending|descending]] [orderby <ChromeProfileOrderByFieldName> [ascending|descending]]
<ChromeProfileFieldName>* [fields <ChromeProfileFieldNameList>] <ChromeProfileFieldName>* [fields <ChromeProfileFieldNameList>]
[formatjson] [formatjson]
gam print chromeprofiles [todrive <ToDriveAttribute>*] gam print chromeprofiles [todrive <ToDriveAttribute>*]
[filtertime.* <Time>] [filter <String>] [filter <String> (filtertime<String> <Time>)*]
[orderby <ChromeProfileOrderByFieldName> [ascending|descending]] [orderby <ChromeProfileOrderByFieldName> [ascending|descending]]
<ChromeProfileFieldName>* [fields <ChromeProfileFieldNameList>] <ChromeProfileFieldName>* [fields <ChromeProfileFieldNameList>]
[[formatjson [quotechar <Character>]] [formatjson [quotechar <Character>]]
gam create chromeprofilecommand <ChromeProfileNameEntity>
[clearcache [<Boolean>]] [clearcookies [<Boolean>]]
[csv [todrive <ToDriveAttribute>*] [formatjson [quotechar <Character>]]]
gam info chromeprofilecommand <ChromeProfileCommandName>
[formatjson]
gam show chromeprofilecommands <ChromeProfileNameEntity>
[formatjson]
gam print chromeprofilecommands <ChromeProfileNameEntity> [todrive <ToDriveAttribute>*]
[formatjson [quotechar <Character>]]
# Chrome Versions Counts # Chrome Versions Counts
@@ -3119,8 +3183,21 @@ gam delete courses <CourseEntity> [archive|archived]
gam course <CourseID> create|add alias <CourseAlias> gam course <CourseID> create|add alias <CourseAlias>
gam course <CourseID> delete alias <CourseAlias> gam course <CourseID> delete alias <CourseAlias>
<CourseAnnouncementContent> ::=
((text <String>)|
(textfile <FileName> [charset <Charset>])|
(gdoc <UserGoogleDoc>)|
(gcsdoc <StorageBucketObjectName>))
gam course <CourseID> create announcement
<CourseAnnouncementContent> [scheduledtime <Time>] [state draft|published]
gam course <CourseID> remove announcement <CourseAnnouncementID>
gam course <CourseID> update announcement <CourseAnnouncementID>
[<CourseAnnouncementContent>] [scheduledtime <Time>] [state published]
gam course <CourseID> create|add topic <CourseTopic> gam course <CourseID> create|add topic <CourseTopic>
gam course <CourseID> delete topic <CourseTopicID> gam course <CourseID> delete topic <CourseTopicID>
gam course <CourseID> update topic <CourseTopicID> <CourseTopic>
gam course <CourseID> create|add teachers [makefirstteacherowner] <UserItem> gam course <CourseID> create|add teachers [makefirstteacherowner] <UserItem>
gam course <CourseID> create|add students <UserItem> gam course <CourseID> create|add students <UserItem>
@@ -3132,8 +3209,15 @@ gam course <CourseID> sync students [addonly|removeonly] <UserTypeEntity>
gam courses <CourseEntity> create|add alias <CourseAliasEntity> gam courses <CourseEntity> create|add alias <CourseAliasEntity>
gam courses <CourseEntity> delete alias <CourseAliasEntity> gam courses <CourseEntity> delete alias <CourseAliasEntity>
gam courses <CourseEntity> create announcement
<CourseAnnouncementContent>> [scheduledtime <Time>] [state draft|published]
gam courses <CourseEntity> remove announcement <CourseAnnouncementIDEntity>
gam courses <CourseEntity> update announcement <CourseAnnouncementIDEntity>
[<CourseAnnouncementContent>] [scheduledtime <Time>] [state published]
gam courses <CourseEntity> create|add topic <CourseTopicEntity> gam courses <CourseEntity> create|add topic <CourseTopicEntity>
gam courses <CourseEntity> delete topic <CourseTopicIDEntity> gam courses <CourseEntity> delete topic <CourseTopicIDEntity>
gam courses <CourseEntity> update topic <CourseTopicIDEntity> <CourseTopic>
gam courses <CourseEntity> create|add teachers [makefirstteacherowner] <UserTypeEntity> gam courses <CourseEntity> create|add teachers [makefirstteacherowner] <UserTypeEntity>
gam courses <CourseEntity> create|add students <UserTypeEntity> gam courses <CourseEntity> create|add students <UserTypeEntity>
@@ -3386,8 +3470,7 @@ gam print|show transferapps
<DataTransferService> ::= <DataTransferService> ::=
calendar| calendar|
currents| datastudio|lookerstudio|"looker studio"|
datastudio|lookerstudio|"google data studio"|
googledrive|gdrive|drive|"drive and docs" googledrive|gdrive|drive|"drive and docs"
<DataTransferServiceList> ::= "<DataTransferService>(,<DataTransferService>)*" <DataTransferServiceList> ::= "<DataTransferService>(,<DataTransferService>)*"
@@ -4124,6 +4207,7 @@ gam print devices [todrive <ToDriveAttribute>*]
[orderby <DeviceOrderByFieldName> [ascending|descending]] [orderby <DeviceOrderByFieldName> [ascending|descending]]
[all|company|personal|nocompanydevices|nopersonaldevices] [all|company|personal|nocompanydevices|nopersonaldevices]
[nodeviceusers|oneuserperrow] [nodeviceusers|oneuserperrow]
[clientstates]
[formatjson [quotechar <Character>]] [formatjson [quotechar <Character>]]
[showitemcountonly] [showitemcountonly]
@@ -4464,7 +4548,7 @@ gam report <ActivityApplicationName> [todrive <ToDriveAttribute>*]
[(user all|<UserItem>)|(orgunit|org|ou <OrgUnitPath> [showorgunit])|(select <UserTypeEntity>)] [(user all|<UserItem>)|(orgunit|org|ou <OrgUnitPath> [showorgunit])|(select <UserTypeEntity>)]
[([start <Time>] [end <Time>])|(range <Time> <Time>)| [([start <Time>] [end <Time>])|(range <Time> <Time>)|
yesterday|today|thismonth|(previousmonths <Integer>)] yesterday|today|thismonth|(previousmonths <Integer>)]
[filtertime.<String> <Time>] [filter|filters <String>] [filter <String> (filtertime<String> <Time>)*]
[event|events <EventNameList>] [ip <String>] [event|events <EventNameList>] [ip <String>]
[groupidfilter <String>] [groupidfilter <String>]
[maxactivities <Number>] [maxevents <Number>] [maxresults <Number>] [maxactivities <Number>] [maxevents <Number>] [maxresults <Number>]
@@ -4511,7 +4595,7 @@ gam report users|user [todrive <ToDriveAttribute>*]
[(date <Date>)|(range <Date> <Date>)| [(date <Date>)|(range <Date> <Date>)|
yesterday|today|thismonth|(previousmonths <Integer>)] yesterday|today|thismonth|(previousmonths <Integer>)]
[(nodatechange | limitdatechanges <Integer>) | (fulldatarequired all|<UserServiceNameList>)] [(nodatechange | limitdatechanges <Integer>) | (fulldatarequired all|<UserServiceNameList>)]
[filtertime.* <Time>] [filter|filters <String>] [filter <String> (filtertime<String> <Time>)*]
[(fields|parameters <String>)|(services <UserServiceNameList>)] [(fields|parameters <String>)|(services <UserServiceNameList>)]
[aggregatebydate|aggregatebyuser [Boolean]] [aggregatebydate|aggregatebyuser [Boolean]]
[maxresults <Number>] [maxresults <Number>]
@@ -4537,7 +4621,7 @@ gam update resoldcustomer <CustomerID> <ResoldCustomerAttribues>+
gam info resoldcustomer <CustomerID> [formatjson] gam info resoldcustomer <CustomerID> [formatjson]
gam create|add resoldsubscription <CustomerID> (sku <SKUID>) gam create|add resoldsubscription <CustomerID> (sku <SKUID>)
(plan annual_monthly_pay|annual_yearly_pay|flexible|trial) (seats <Number>) (plan annual_monthly_pay|annual_yearly_pay|flexible|trial|free) (seats <Number>)
[customer_auth_token <String>] [deal <String>] [purchaseorderid <String>] [customer_auth_token <String>] [deal <String>] [purchaseorderid <String>]
gam update resoldsubscription <CustomerID> <SKUID> gam update resoldsubscription <CustomerID> <SKUID>
activate|suspend|startpaidservice| activate|suspend|startpaidservice|
@@ -4630,10 +4714,10 @@ gam delete building <BuildingID>
gam info building <BuildingID> gam info building <BuildingID>
[formatjson] [formatjson]
gam show buildings gam show buildings
[allfields|<BuildingFildName>*|(fields <BuildingFieldNameList>)] [allfields|<BuildingFieldName>*|(fields <BuildingFieldNameList>)]
[formatjson] [formatjson]
gam print buildings [todrive <ToDriveAttribute>*] gam print buildings [todrive <ToDriveAttribute>*]
[allfields|<BuildingFildName>*|(fields <BuildingFieldNameList>)] [allfields|<BuildingFieldName>*|(fields <BuildingFieldNameList>)]
[delimiter <Character>] [formatjson [quotechar <Character>]] [delimiter <Character>] [formatjson [quotechar <Character>]]
gam create|add feature name <Name> gam create|add feature name <Name>
@@ -4776,6 +4860,8 @@ gam <UserTypeEntity> sendemail from <EmailAddress>
allowcontentmanagerstosharefolders| allowcontentmanagerstosharefolders|
copyrequireswriterpermission| copyrequireswriterpermission|
domainusersonly| domainusersonly|
downloadrestrictedforreaders|
downloadrestrictedforwriters|
drivemembersonly|teammembersonly| drivemembersonly|teammembersonly|
sharingfoldersrequiresorganizerpermission sharingfoldersrequiresorganizerpermission
@@ -4815,11 +4901,13 @@ gam print shareddrives [todrive <ToDriveAttribute>*]
[teamdriveadminquery|query <QueryTeamDrive>] [teamdriveadminquery|query <QueryTeamDrive>]
[matchname <REMatchPattern>] [orgunit|org|ou <OrgUnitPath>] [matchname <REMatchPattern>] [orgunit|org|ou <OrgUnitPath>]
[fields <SharedDriveFieldNameList>] [noorgunits [<Boolean>]] [fields <SharedDriveFieldNameList>] [noorgunits [<Boolean>]]
[showwebviewlink text|hyperlink]
[formatjson [quotechar <Character>]] [formatjson [quotechar <Character>]]
gam show shareddrives gam show shareddrives
[teamdriveadminquery|query <QueryTeamDrive>] [teamdriveadminquery|query <QueryTeamDrive>]
[matchname <REMatchPattern>] [orgunit|org|ou <OrgUnitPath>] [matchname <REMatchPattern>] [orgunit|org|ou <OrgUnitPath>]
[fields <SharedDriveFieldNameList>] [noorgunits [<Boolean>]] [fields <SharedDriveFieldNameList>] [noorgunits [<Boolean>]]
[showwebviewlink text|hyperlink]
[formatjson] [noorgunits [<Boolean>]] [formatjson] [noorgunits [<Boolean>]]
gam print shareddriveorganizers [todrive <ToDriveAttribute>*] gam print shareddriveorganizers [todrive <ToDriveAttribute>*]
@@ -4900,12 +4988,14 @@ gam <UserTypeEntity> print shareddrives [todrive <ToDriveAttribute>*]
[matchname <REMatchPattern>] [orgunit|org|ou <OrgUnitPath>] [matchname <REMatchPattern>] [orgunit|org|ou <OrgUnitPath>]
(role|roles <SharedDriveACLRoleList>)* (role|roles <SharedDriveACLRoleList>)*
[fields <SharedDriveFieldNameList>] [fields <SharedDriveFieldNameList>]
[showwebviewlink text|hyperlink]
[guiroles [<Boolean>]] [formatjson [quotechar <Character>]] [guiroles [<Boolean>]] [formatjson [quotechar <Character>]]
gam <UserTypeEntity> show shareddrives gam <UserTypeEntity> show shareddrives
[teamdriveadminquery|query <QueryTeamDrive>] [teamdriveadminquery|query <QueryTeamDrive>]
[matchname <REMatchPattern>] [orgunit|org|ou <OrgUnitPath>] [matchname <REMatchPattern>] [orgunit|org|ou <OrgUnitPath>]
(role|roles <SharedDriveACLRoleList>)* (role|roles <SharedDriveACLRoleList>)*
[fields <SharedDriveFieldNameList>] [fields <SharedDriveFieldNameList>]
[showwebviewlink text|hyperlink]
[guiroles [<Boolean>]] [formatjson] [guiroles [<Boolean>]] [formatjson]
<PermissionMatch> ::= <PermissionMatch> ::=
@@ -5608,6 +5698,7 @@ gam update user <UserItem> [ignorenullpassword] <UserAttribute>*
[logpassword <FileName>] [logpassword <FileName>]
gam delete user <UserItem> [noactionifalias] gam delete user <UserItem> [noactionifalias]
gam undelete user <UserItem> [ou|org|orgunit <OrgUnitPath>] gam undelete user <UserItem> [ou|org|orgunit <OrgUnitPath>]
gam check suspended <UserItem>
gam suspend user <UserItem> [noactionifalias] gam suspend user <UserItem> [noactionifalias]
gam unsuspend user <UserItem> [noactionifalias] gam unsuspend user <UserItem> [noactionifalias]
gam info user [<UserItem>] gam info user [<UserItem>]
@@ -6924,6 +7015,7 @@ gam <UserTypeEntity> collect orphans
capabilities.canchangecopyrequireswriterpermission| capabilities.canchangecopyrequireswriterpermission|
capabilities.canchangecopyrequireswriterpermissionrestriction| capabilities.canchangecopyrequireswriterpermissionrestriction|
capabilities.canchangedomainusersonlyrestriction| capabilities.canchangedomainusersonlyrestriction|
capabilities.canchangedownloadrestriction|
capabilities.canchangedrivebackground| capabilities.canchangedrivebackground|
capabilities.canchangedrivemembersonlyrestriction| capabilities.canchangedrivemembersonlyrestriction|
capabilities.canchangesecurityupdateenabled| capabilities.canchangesecurityupdateenabled|
@@ -7431,10 +7523,10 @@ gam <UserTypeEntity> show forms <DriveFileEntity>
gam <UserTypeEntity> print formresponses <DriveFileEntity> [todrive <ToDriveAttribute>*] gam <UserTypeEntity> print formresponses <DriveFileEntity> [todrive <ToDriveAttribute>*]
(addcsvdata <FieldName> <String>)* (addcsvdata <FieldName> <String>)*
[filtertime.* <Time>] [filter <String>] [filter <String> (filtertime<String> <Time>)*]
[countsonly|(formatjson [quotechar <Character>])] [countsonly|(formatjson [quotechar <Character>])]
gam <UserTypeEntity> show formresponses <DriveFileEntity> gam <UserTypeEntity> show formresponses <DriveFileEntity>
[filtertime.* <Time>] [filter <String>] [filter <String> (filtertime<String> <Time>)*]
[countsonly|formatjson] [countsonly|formatjson]
# Users - Gmail - Forwarding # Users - Gmail - Forwarding
@@ -8268,6 +8360,59 @@ gam <UserTypeEntity> profile share|shared|unshare|unshared
gam <UserTypeEntity> show profile gam <UserTypeEntity> show profile
# Users - Tag Manager
<TagManagerAccountID> ::= <String>
<TagManagerAccountPath> ::= accounts/<TagManagerAccountID>
<TagManagerAccountPathList> ::= "<TagManagerAccountPath>(,<TagManagerAccountPath>)*"
<TagManagerAccountPathEntity> ::=
<TagManagerAccountPathList> |
(select <FileSelector>|<CSVFileSelector>) |
<TagManagerContainerID> ::= <String>
<TagManagerContainerPath> ::= accounts/<TagManagerAccountID>/containers/<TagManagerContainerID>
<TagManagerContainerPathList> ::= "<TagManagerContainerPath>(,<TagManagerContainerPath>)*"
<TagManagerContainerPathEntity> ::=
<TagManagerContainerPathList> |
(select <FileSelector>|<CSVFileSelector>) |
<TagManagerWorkspaceID> ::= <String>
<TagManagerWorkspacePath> ::= accounts/<TagManagerAccountID>/containers/<TagManagerContainerID>/workspaces/<TagManagerWorkspaceID>
<TagManagerWorkspacePathList> ::= "<TagManagerWorkspacePath>(,<TagManagerWorkspacePath>)*"
<TagManagerWorkspacePathEntity> ::=
<TagManagerWorkspacePathList> |
(select <FileSelector>|<CSVFileSelector>) |
<TagManagerTagID> ::= <String>
<TagManagerTagPath> ::= accounts/<TagManagerAccountID>/containers/<TagManagerContainerID>/workspaces/<TagManagerWorkspaceID>/tags/<TagManagerTagID>
gam <UserTypeEntity> show tagmanageraccounts
[includegoogletags [<Boolean>]]
[formatjson]
gam <UserTypeEntity> print tagmanagerccounts [todrive <ToDriveAttribute>*]
[includegoogletags [<Boolean>]]
[formatjson [quotechar <Character>]]
gam <UserTypeEntity> show tagmanagercontainers <TagManagerAccountPathEntity>
[formatjson]
gam <UserTypeEntity> print tagmanagercontainers <TagManagerAccountPathEntity> [todrive <ToDriveAttribute>*]
[formatjson [quotechar <Character>]]
gam <UserTypeEntity> show tagmanagerworkspaces <TagManagerContainerPathEntity>
[formatjson]
gam <UserTypeEntity> print tagmanagerworkspaces <TagManagerContainerPathEntity> [todrive <ToDriveAttribute>*]
[formatjson [quotechar <Character>]]
gam <UserTypeEntity> show tagmanagertags <TagManagerWorkspacePathEntity>
[formatjson]
gam <UserTypeEntity> print tagmanagertags <TagManagerWorkspacePathEntity> [todrive <ToDriveAttribute>*]
[formatjson [quotechar <Character>]]
gam <UserTypeEntity> show tagmanagerpermissions <TagManagerAccountPathEntity>
[formatjson]
gam <UserTypeEntity> print tagmanagerpermissions <TagManagerAccountPathEntity> [todrive <ToDriveAttribute>*]
[formatjson [quotechar <Character>]]
# Users - Tasks # Users - Tasks
<TaskAttribute> ::= <TaskAttribute> ::=
@@ -8330,6 +8475,8 @@ gam <UserTypeEntity> print tasklists [todrive <ToDriveAttribute>*]
allowcontentmanagerstosharefolders| allowcontentmanagerstosharefolders|
copyrequireswriterpermission| copyrequireswriterpermission|
domainusersonly| domainusersonly|
downloadrestrictedforreaders|
downloadrestrictedforwriters|
drivemembersonly|teammembersonly| drivemembersonly|teammembersonly|
sharingfoldersrequiresorganizerpermission sharingfoldersrequiresorganizerpermission

View File

@@ -1,6 +1,172 @@
7.14.04
Fixed bug in `gam print|show cigroups cimember <UserItem>` that generated the following error:
```
ERROR: Cloud Identity Group: groups/-, Print Failed: Error(4013): Insufficient permissions to retrieve memberships.
```
Updated `gam <UserTypeEntity> update user suspended off` and `gam <UserTypeEntity> unsuspend users`
to handle the following error that occurs when trying to unsuspend a user that has been suspended for abuse.
```
ERROR: 412: adminCannotUnsuspend - Cannot restore a user suspended for abuse.
```
* See: https://support.google.com/a/answer/1110339
7.14.03
Fixed bug in `gam print cigroup-members includederivedmembership` that caused a trap.
7.14.02
Fixed bug in `gam print|show cigroups|cigroups-members cimember <UserItem>` that generated the following error:
```
Cloud Identity Group Print Failed: Request contains an invalid argument.
```
7.14.01
Don't install yubikey library via pip by default. To install with yubikey support use pip install gam7[yubikey]
7.14.00
Added commands to display Google Tag Manager accounts, containers, workspaces, tags and user permissions.
* See: https://github.com/GAM-team/GAM/wiki/Users-Tag-Manager
7.13.03
Added option `csv [todrive <ToDriveAttribute>*] [formatjson [quotechar <Character>]]]`
to `gam create chromeprofilecommand` so that command details are displayed in CSV format.
Added option `commands <ChromeProfileCommandNameList>|<FileSelector>|<CSVFileSelector>` to `<ChromeProfileNameEntity>`
so that `gam print|show chromeprofilecommands` can directly display the commands generated by
`gam create chromeprofilecommand` with the `csv` option.
7.13.02
Fixed bug in `gam create chromeprofilecommand` where `select|filter` were not recognized.
Updated `gam create datatransfer <OldOwnerID> datastudio <NewOwnerID>` that generated the following
error due to an unhandled API change.
```
ERROR: Invalid choice (google data studio): Expected <calendar|looker studio|drive and docs>
```
7.13.01
Enhanced `gam create|print|show chromeprofilecommand` to allow specification
of multiple Chrome browser profiles rather than just one.
```
<ChromeProfilePermanentID> ::= <String>
<ChromeProfileName> ::= customers/<CustomerID>/profiles/<ChromeProfilePermanentID> | <ChromeProfilePermanentID>
<ChromeProfileNameList> ::= "<ChromeProfileName>(,<ChromeProfileName>)*"
<ChromeProfileNameEntity> ::=
<ChromeProfileNameList> |
(select <FileSelector>|<CSVFileSelector>) |
(filter <String> (filtertime<String> <Time>)* [orderby <ChromeProfileOrderByFieldName> [ascending|descending]])
gam create|print_show chromeprofilecommand <ChromeProfileNameEntity>
```
7.13.00
Added commands that send remote commands to Chrome browser profiles and display the results;
at the moment, these commands can clear the browser cache and cookies.
* See: https://github.com/GAM-team/GAM/wiki/Chrome-Profile-Management#create-a-chrome-profile-command
7.12.02
Updated `gam print users` to handle the following error:
```
ERROR: 503: serviceNotAvailable - The service is currently unavailable
```
7.12.01
Added support for `plan free` in `gam create resoldsubscription`.
* The free plan is exclusive to the Cloud Identity SKU and does not incur any billing.
7.12.00
Started updated handling of missing scopes messages in client access commands;
this is a work in progress.
Updated `gam info|show shareddrive` to handle changes in the Drive API that caused traps.
Added `downloadrestrictedforreaders` and `downloadrestrictedforwriters` to
`<SharedDriveRestrictionsSubfieldName>` to support new Shared Drive restrictions.
Updated `gam course <CourseID> create|update announcement` to accept input from
a literal string, a file or a Google Doc.
```
<CourseAnnouncementContent> ::=
((text <String>)|
(textfile <FileName> [charset <Charset>])|
(gdoc <UserGoogleDoc>)|
(gcsdoc <StorageBucketObjectName>))
```
Added command `gam check suspended <UserItem>` that checks the suspension status of a user
and sets the return code to 0 if the user is not suspended or 26 if it is.
```
$ gam check suspended testok@domain.com
User: testok@domain.com, Account Suspended: False
$ echo $?
0
$ gam check suspended testsusp@domain.com
User: testsusp@domain.com, Account Suspended: True, Suspension Reason: ADMIN
$ echo $?
26
```
Updated `gam <UserTypeEntity> sendemail` to verify that one of `recipient|to|from`
immediately follows `sendemail`.
7.11.00
Added commands to manage classroom/course announcements.
* See: https://github.com/GAM-team/GAM/wiki/Classroom-Courses#manage-course-announcements
Upgraded to OpenSSL 3.5.1.
7.10.10
Added choices `text` and `hyperlink` to option `showwebviewlink` in `gam [<UserTypeEntity>] print|show shareddrives`.
* `showwebviewlink text` - Displays `https://drive.google.com/drive/folders/<SharedDriveID>`
* `showwebviewlink hyperlink` - Displays `=HYPERLINK("https://drive.google.com/drive/folders/<SharedDriveID>", "<SharedDriveName>")`
7.10.09
Added option `showwebviewlink` to `gam [<UserTypeEntity>] print|show shareddrives` that
displays the web view link for the Shared Drive: `https://drive.google.com/drive/folders/<SharedDriveID>`.
7.10.08
Fixed bug in commands that modify messages where the `labelids <LabelIdList>` option
could not be used unless one of these options was also specified: `query`, `matchlabel`, `ids`;
it can be now be used by itself.
7.10.07
Updated `gam <UserTypeEntity> copy|move drivefile` to hanndle additional instances of
the `cannotModifyInheritedPermission` error.
Added license SKU `Google AI Ultra for Business`
* ProductID - 101047
* SKUID - 1010470008 | geminiultra
7.10.06
Added option `clientstates` to `gam print devices` to include client states in device output.
7.10.05 7.10.05
Google renamed an error: cannotModifyInheritedTeamDrivePermission became cannotModifyInheritedPermission. Google renamed an error: `cannotModifyInheritedTeamDrivePermission` became `cannotModifyInheritedPermission`.
GAM will now handle the new error. GAM will now handle the new error.
7.10.04 7.10.04
@@ -12712,7 +12878,7 @@ gam <UserTypeEntity> update teamdrive <TeamDriveEntity> [adminaccess|asadmin] [n
Updated gam report users to support new orgUnitID argument in Reports API. Updated gam report users to support new orgUnitID argument in Reports API.
gam report users|user [todrive <ToDriveAttribute>*] [date <Date>] [nodatechange | (fulldatarequired all|<ReportsAppList>)] gam report users|user [todrive <ToDriveAttribute>*] [date <Date>] [nodatechange | (fulldatarequired all|<ReportsAppList>)]
[(user all|<UserItem>)|(orgunit|org|ou <OrgUnitPath>)|(select <UserTypeEntity>)] (filtertime.* <Time>)* [filter|filters <String>] [fields|parameters <String>] [(user all|<UserItem>)|(orgunit|org|ou <OrgUnitPath>)|(select <UserTypeEntity>)] (filtertime<String> <Time>)* [filter|filters <String>] [fields|parameters <String>]
[maxactivities <Number>] [maxresults <Number>] [maxactivities <Number>] [maxresults <Number>]
Select the users for whom information is desired. Select the users for whom information is desired.
@@ -13303,15 +13469,15 @@ gam print cros query "sync:#querytime1#.." querytime1 -30d
For example, to print information about CrOS devices synced between 45 days ago and 30 days ago: For example, to print information about CrOS devices synced between 45 days ago and 30 days ago:
gam print cros query "sync:#querytime1#..#querytime2#" querytime1 -45d querytime2 -30d gam print cros query "sync:#querytime1#..#querytime2#" querytime1 -45d querytime2 -30d
Added filtertime.* <Time> option to gam report to allow times, usually relative, to be substituted into the filter <String> option. Added filtertime<String> <Time> option to gam report to allow times, usually relative, to be substituted into the filter <String> option.
The filtertime.* value replaces the string #filtertime.*# in the filter <String>. The filtertime<String> value replaces the string #filtertime<String># in the filter <String>.
The characters following filtertime can be any combination of lowercase letters and numbers. The characters following filtertime can be any combination of lowercase letters and numbers.
gam report users|user [todrive <ToDriveAttribute>*] [date <Date>] [nodatechange | (fulldatarequired all|<ReportsAppList>)] gam report users|user [todrive <ToDriveAttribute>*] [date <Date>] [nodatechange | (fulldatarequired all|<ReportsAppList>)]
[(user all|<UserItem>)|(select <UserTypeEntity>)] (filtertime.* <Time>)* [filter|filters <String>] [fields|parameters <String>] [(user all|<UserItem>)|(select <UserTypeEntity>)] (filtertime<String> <Time>)* [filter|filters <String>] [fields|parameters <String>]
[maxactivities <Number>] [maxresults <Number>] [maxactivities <Number>] [maxresults <Number>]
gam report admin|calendar|calendars|drive|docs|doc|gplus|groups|group|logins|login|mobile|rules|tokens|token [todrive <ToDriveAttribute>*] [maxresults <Number>] [maxactivities <Number>] gam report admin|calendar|calendars|drive|docs|doc|gplus|groups|group|logins|login|mobile|rules|tokens|token [todrive <ToDriveAttribute>*] [maxresults <Number>] [maxactivities <Number>]
[([start <Time>] [end <Time>])|yesterday] [(user all|<UserItem>)|(select <UserTypeEntity>)] [([start <Time>] [end <Time>])|yesterday] [(user all|<UserItem>)|(select <UserTypeEntity>)]
[event <String>] (filtertime.* <Time>)* [filter|filters <String>] [ip <String>] [countsonly] [summary] [event <String>] (filtertime<String> <Time>)* [filter|filters <String>] [ip <String>] [countsonly] [summary]
For example, this command reports on the users that haven't logged in in the last 5 years. For example, this command reports on the users that haven't logged in in the last 5 years.
gam report users parameters accounts:last_login_time filters "accounts:last_login_time<#filtertime#" filtertime -5y gam report users parameters accounts:last_login_time filters "accounts:last_login_time<#filtertime#" filtertime -5y
@@ -13467,21 +13633,21 @@ Added units of years to <Date>, <DateTime> and <Time>; a year is 365 days. Added
never| never|
now|today now|today
Added filtertime <Time> option to gam report to allow times, usually relative, to be substituted into the filter <String> option. Added filtertime<String> <Time> option to gam report to allow times, usually relative, to be substituted into the filter <String> option.
If both filtertime and filter are specified, the filtertime value replaces the string #filtertime# in the filter <String>. If both filtertime<String> and filter are specified, the filtertime value replaces the string #filtertime<String># in the filter <String>.
gam report users|user [todrive <ToDriveAttribute>*] [date <Date>] [nodatechange | (fulldatarequired all|<ReportsAppList>)] gam report users|user [todrive <ToDriveAttribute>*] [date <Date>] [nodatechange | (fulldatarequired all|<ReportsAppList>)]
[(user all|<UserItem>)|(select <UserTypeEntity>)] [filtertime <Time>] [filter|filters <String>] [fields|parameters <String>] [(user all|<UserItem>)|(select <UserTypeEntity>)] [filtertime<String> <Time>] [filter|filters <String>] [fields|parameters <String>]
[maxactivities <Number>] [maxresults <Number>] [maxactivities <Number>] [maxresults <Number>]
gam report admin|calendar|calendars|drive|docs|doc|gplus|groups|group|logins|login|mobile|rules|tokens|token [todrive <ToDriveAttribute>*] [maxresults <Number>] [maxactivities <Number>] gam report admin|calendar|calendars|drive|docs|doc|gplus|groups|group|logins|login|mobile|rules|tokens|token [todrive <ToDriveAttribute>*] [maxresults <Number>] [maxactivities <Number>]
[([start <Time>] [end <Time>])|yesterday] [(user all|<UserItem>)|(select <UserTypeEntity>)] [([start <Time>] [end <Time>])|yesterday] [(user all|<UserItem>)|(select <UserTypeEntity>)]
[event <String>] [filtertime <Time>] [filter|filters <String>] [ip <String>] [countsonly] [summary] [event <String>] [filtertime<String> <Time>] [filter|filters <String>] [ip <String>] [countsonly] [summary]
For example, this command reports on the users that haven't logged in in the last 5 years. For example, this command reports on the users that haven't logged in in the last 5 years.
gam report users parameters accounts:last_login_time filters "accounts:last_login_time<#filtertime#" filtertime -5y gam report users parameters accounts:last_login_time filters "accounts:last_login_time<#filtertime5y#" filtertime5y -5y
For example, this command reports on the users that haven't ever logged in. For example, this command reports on the users that haven't ever logged in.
gam report users parameters accounts:last_login_time filters "accounts:last_login_time==#filtertime#" filtertime never gam report users parameters accounts:last_login_time filters "accounts:last_login_time==#filtertimeNever#" filtertimeNever never
4.60.14 4.60.14

1
src/README.md Symbolic link
View File

@@ -0,0 +1 @@
../README.md

File diff suppressed because it is too large Load Diff

View File

@@ -94,6 +94,8 @@ SITEVERIFICATION = 'siteVerification'
STORAGE = 'storage' STORAGE = 'storage'
STORAGEREAD = 'storageread' STORAGEREAD = 'storageread'
STORAGEWRITE = 'storagewrite' STORAGEWRITE = 'storagewrite'
TAGMANAGER = 'tagmanager'
TAGMANAGER_USERS = 'tagmanagerusers'
TASKS = 'tasks' TASKS = 'tasks'
VAULT = 'vault' VAULT = 'vault'
YOUTUBE = 'youtube' YOUTUBE = 'youtube'
@@ -199,6 +201,7 @@ PROJECT_APIS = [
'sheets.googleapis.com', 'sheets.googleapis.com',
'siteverification.googleapis.com', 'siteverification.googleapis.com',
'storage-api.googleapis.com', 'storage-api.googleapis.com',
'tagmanager.googleapis.com',
'tasks.googleapis.com', 'tasks.googleapis.com',
'vault.googleapis.com', 'vault.googleapis.com',
'youtube.googleapis.com', 'youtube.googleapis.com',
@@ -226,15 +229,15 @@ _INFO = {
CHROMEMANAGEMENT_TELEMETRY: {'name': 'Chrome Management API - Telemetry', 'version': 'v1', 'v2discovery': True, 'mappedAPI': CHROMEMANAGEMENT}, CHROMEMANAGEMENT_TELEMETRY: {'name': 'Chrome Management API - Telemetry', 'version': 'v1', 'v2discovery': True, 'mappedAPI': CHROMEMANAGEMENT},
CHROMEPOLICY: {'name': 'Chrome Policy API', 'version': 'v1', 'v2discovery': True}, CHROMEPOLICY: {'name': 'Chrome Policy API', 'version': 'v1', 'v2discovery': True},
CHROMEVERSIONHISTORY: {'name': 'Chrome Version History API', 'version': 'v1', 'v2discovery': True}, CHROMEVERSIONHISTORY: {'name': 'Chrome Version History API', 'version': 'v1', 'v2discovery': True},
CLOUDCHANNEL: {'name': 'Channel Channel API', 'version': 'v1', 'v2discovery': True}, CLOUDCHANNEL: {'name': 'Cloud Channel API', 'version': 'v1', 'v2discovery': True},
CLOUDIDENTITY_DEVICES: {'name': 'Cloud Identity Devices API', 'version': 'v1', 'v2discovery': True, 'mappedAPI': 'cloudidentity'}, CLOUDIDENTITY_DEVICES: {'name': 'Cloud Identity API - Devices', 'version': 'v1', 'v2discovery': True, 'mappedAPI': 'cloudidentity'},
CLOUDIDENTITY_GROUPS: {'name': 'Cloud Identity Groups API', 'version': 'v1', 'v2discovery': True, 'mappedAPI': 'cloudidentity'}, CLOUDIDENTITY_GROUPS: {'name': 'Cloud Identity API - Groups', 'version': 'v1', 'v2discovery': True, 'mappedAPI': 'cloudidentity'},
CLOUDIDENTITY_GROUPS_BETA: {'name': 'Cloud Identity Groups API', 'version': 'v1beta1', 'v2discovery': True, 'mappedAPI': 'cloudidentity'}, CLOUDIDENTITY_GROUPS_BETA: {'name': 'Cloud Identity API - Groups Beta', 'version': 'v1beta1', 'v2discovery': True, 'mappedAPI': 'cloudidentity'},
CLOUDIDENTITY_INBOUND_SSO: {'name': 'Cloud Identity Inbound SSO API', 'version': 'v1', 'v2discovery': True, 'mappedAPI': 'cloudidentity'}, CLOUDIDENTITY_INBOUND_SSO: {'name': 'Cloud Identity API - Inbound SSO Settings', 'version': 'v1', 'v2discovery': True, 'mappedAPI': 'cloudidentity'},
CLOUDIDENTITY_ORGUNITS: {'name': 'Cloud Identity OrgUnits API', 'version': 'v1', 'v2discovery': True, 'mappedAPI': 'cloudidentity'}, CLOUDIDENTITY_ORGUNITS: {'name': 'Cloud Identity API - OrgUnits', 'version': 'v1', 'v2discovery': True, 'mappedAPI': 'cloudidentity'},
CLOUDIDENTITY_ORGUNITS_BETA: {'name': 'Cloud Identity OrgUnits API', 'version': 'v1beta1', 'v2discovery': True, 'mappedAPI': 'cloudidentity'}, CLOUDIDENTITY_ORGUNITS_BETA: {'name': 'Cloud Identity API - OrgUnits Beta', 'version': 'v1beta1', 'v2discovery': True, 'mappedAPI': 'cloudidentity'},
CLOUDIDENTITY_POLICY: {'name': 'Cloud Identity Policy API', 'version': 'v1', 'v2discovery': True, 'mappedAPI': 'cloudidentity'}, CLOUDIDENTITY_POLICY: {'name': 'Cloud Identity API - Policy', 'version': 'v1', 'v2discovery': True, 'mappedAPI': 'cloudidentity'},
CLOUDIDENTITY_USERINVITATIONS: {'name': 'Cloud Identity User Invitations API', 'version': 'v1', 'v2discovery': True, 'mappedAPI': 'cloudidentity'}, CLOUDIDENTITY_USERINVITATIONS: {'name': 'Cloud Identity API - User Invitations', 'version': 'v1', 'v2discovery': True, 'mappedAPI': 'cloudidentity'},
CLOUDRESOURCEMANAGER: {'name': 'Cloud Resource Manager API v3', 'version': 'v3', 'v2discovery': True}, CLOUDRESOURCEMANAGER: {'name': 'Cloud Resource Manager API v3', 'version': 'v3', 'v2discovery': True},
CONTACTS: {'name': 'Contacts API', 'version': 'v3', 'v2discovery': False}, CONTACTS: {'name': 'Contacts API', 'version': 'v3', 'v2discovery': False},
CONTACTDELEGATION: {'name': 'Contact Delegation API', 'version': 'v1', 'v2discovery': True, 'localjson': True}, CONTACTDELEGATION: {'name': 'Contact Delegation API', 'version': 'v1', 'v2discovery': True, 'localjson': True},
@@ -258,13 +261,13 @@ _INFO = {
LICENSING: {'name': 'License Manager API', 'version': 'v1', 'v2discovery': True}, LICENSING: {'name': 'License Manager API', 'version': 'v1', 'v2discovery': True},
LOOKERSTUDIO: {'name': 'Looker Studio API', 'version': 'v1', 'v2discovery': True, 'localjson': True}, LOOKERSTUDIO: {'name': 'Looker Studio API', 'version': 'v1', 'v2discovery': True, 'localjson': True},
MEET: {'name': 'Meet API', 'version': 'v2', 'v2discovery': True}, MEET: {'name': 'Meet API', 'version': 'v2', 'v2discovery': True},
MEET_BETA: {'name': 'Meet API', 'version': 'v2beta', 'v2discovery': True, 'localjson': True, 'mappedAPI': MEET}, MEET_BETA: {'name': 'Meet API Beta', 'version': 'v2beta', 'v2discovery': True, 'localjson': True, 'mappedAPI': MEET},
OAUTH2: {'name': 'OAuth2 API', 'version': 'v2', 'v2discovery': False}, OAUTH2: {'name': 'OAuth2 API', 'version': 'v2', 'v2discovery': False},
ORGPOLICY: {'name': 'Organization Policy API', 'version': 'v2', 'v2discovery': True}, ORGPOLICY: {'name': 'Organization Policy API', 'version': 'v2', 'v2discovery': True},
PEOPLE: {'name': 'People API', 'version': 'v1', 'v2discovery': True}, PEOPLE: {'name': 'People API', 'version': 'v1', 'v2discovery': True},
PEOPLE_DIRECTORY: {'name': 'People Directory API', 'version': 'v1', 'v2discovery': True, 'mappedAPI': PEOPLE}, PEOPLE_DIRECTORY: {'name': 'People Directory API', 'version': 'v1', 'v2discovery': True, 'mappedAPI': PEOPLE},
PEOPLE_OTHERCONTACTS: {'name': 'People API - Other Contacts', 'version': 'v1', 'v2discovery': True, 'mappedAPI': PEOPLE}, PEOPLE_OTHERCONTACTS: {'name': 'People API - Other Contacts', 'version': 'v1', 'v2discovery': True, 'mappedAPI': PEOPLE},
PRINTERS: {'name': 'Directory API Printers', 'version': 'directory_v1', 'v2discovery': True, 'mappedAPI': 'admin'}, PRINTERS: {'name': 'Directory API - Printers', 'version': 'directory_v1', 'v2discovery': True, 'mappedAPI': 'admin'},
PUBSUB: {'name': 'Pub / Sub API', 'version': 'v1', 'v2discovery': True}, PUBSUB: {'name': 'Pub / Sub API', 'version': 'v1', 'v2discovery': True},
REPORTS: {'name': 'Reports API', 'version': 'reports_v1', 'v2discovery': True, 'mappedAPI': 'admin'}, REPORTS: {'name': 'Reports API', 'version': 'reports_v1', 'v2discovery': True, 'mappedAPI': 'admin'},
RESELLER: {'name': 'Reseller API', 'version': 'v1', 'v2discovery': True}, RESELLER: {'name': 'Reseller API', 'version': 'v1', 'v2discovery': True},
@@ -277,6 +280,8 @@ _INFO = {
STORAGE: {'name': 'Cloud Storage API', 'version': 'v1', 'v2discovery': True}, STORAGE: {'name': 'Cloud Storage API', 'version': 'v1', 'v2discovery': True},
STORAGEREAD: {'name': 'Cloud Storage API - Read', 'version': 'v1', 'v2discovery': True, 'mappedAPI': STORAGE}, STORAGEREAD: {'name': 'Cloud Storage API - Read', 'version': 'v1', 'v2discovery': True, 'mappedAPI': STORAGE},
STORAGEWRITE: {'name': 'Cloud Storage API - Write', 'version': 'v1', 'v2discovery': True, 'mappedAPI': STORAGE}, STORAGEWRITE: {'name': 'Cloud Storage API - Write', 'version': 'v1', 'v2discovery': True, 'mappedAPI': STORAGE},
TAGMANAGER: {'name': 'Tag Manager API - Accounts, Containers, Workspaces, Tags', 'version': 'v2', 'v2discovery': True},
TAGMANAGER_USERS: {'name': 'Tag Manager API - Users', 'version': 'v2', 'v2discovery': True, 'mappedAPI': TAGMANAGER},
TASKS: {'name': 'Tasks API', 'version': 'v1', 'v2discovery': True}, TASKS: {'name': 'Tasks API', 'version': 'v1', 'v2discovery': True},
VAULT: {'name': 'Vault API', 'version': 'v1', 'v2discovery': True}, VAULT: {'name': 'Vault API', 'version': 'v1', 'v2discovery': True},
YOUTUBE: {'name': 'Youtube API', 'version': 'v3', 'v2discovery': True}, YOUTUBE: {'name': 'Youtube API', 'version': 'v3', 'v2discovery': True},
@@ -362,29 +367,29 @@ _CLIENT_SCOPES = [
'subscopes': READONLY, 'subscopes': READONLY,
'offByDefault': True, 'offByDefault': True,
'scope': 'https://www.googleapis.com/auth/apps.order'}, 'scope': 'https://www.googleapis.com/auth/apps.order'},
{'name': 'Cloud Identity Groups API', {'name': 'Cloud Identity API - Groups',
'api': CLOUDIDENTITY_GROUPS, 'api': CLOUDIDENTITY_GROUPS,
'subscopes': READONLY, 'subscopes': READONLY,
'scope': 'https://www.googleapis.com/auth/cloud-identity.groups'}, 'scope': 'https://www.googleapis.com/auth/cloud-identity.groups'},
{'name': 'Cloud Identity Groups API Beta (Enables group locking/unlocking)', {'name': 'Cloud Identity API - Groups Beta (Enables group locking/unlocking)',
'api': CLOUDIDENTITY_GROUPS_BETA, 'api': CLOUDIDENTITY_GROUPS_BETA,
'subscopes': [], 'subscopes': [],
'scope': 'https://www.googleapis.com/auth/cloud-identity.groups'}, 'scope': 'https://www.googleapis.com/auth/cloud-identity.groups'},
{'name': 'Cloud Identity - Inbound SSO Settings', {'name': 'Cloud Identity API - Inbound SSO Settings',
'api': CLOUDIDENTITY_INBOUND_SSO, 'api': CLOUDIDENTITY_INBOUND_SSO,
'subscopes': READONLY, 'subscopes': READONLY,
'scope': 'https://www.googleapis.com/auth/cloud-identity.inboundsso'}, 'scope': 'https://www.googleapis.com/auth/cloud-identity.inboundsso'},
{'name': 'Cloud Identity OrgUnits API', {'name': 'Cloud Identity API - OrgUnits Beta',
'api': CLOUDIDENTITY_ORGUNITS_BETA, 'api': CLOUDIDENTITY_ORGUNITS_BETA,
'subscopes': READONLY, 'subscopes': READONLY,
'scope': 'https://www.googleapis.com/auth/cloud-identity.orgunits'}, 'scope': 'https://www.googleapis.com/auth/cloud-identity.orgunits'},
{'name': 'Cloud Identity - Policy', {'name': 'Cloud Identity API - Policy',
'api': CLOUDIDENTITY_POLICY, 'api': CLOUDIDENTITY_POLICY,
'subscopes': READONLY, 'subscopes': READONLY,
'roByDefault': True, 'roByDefault': True,
'scope': 'https://www.googleapis.com/auth/cloud-identity.policies' 'scope': 'https://www.googleapis.com/auth/cloud-identity.policies'
}, },
{'name': 'Cloud Identity User Invitations API', {'name': 'Cloud Identity API - User Invitations',
'api': CLOUDIDENTITY_USERINVITATIONS, 'api': CLOUDIDENTITY_USERINVITATIONS,
'subscopes': READONLY, 'subscopes': READONLY,
'scope': 'https://www.googleapis.com/auth/cloud-identity.userinvitations'}, 'scope': 'https://www.googleapis.com/auth/cloud-identity.userinvitations'},
@@ -696,6 +701,16 @@ _SVCACCT_SCOPES = [
'api': SHEETS, 'api': SHEETS,
'subscopes': READONLY, 'subscopes': READONLY,
'scope': 'https://www.googleapis.com/auth/spreadsheets'}, 'scope': 'https://www.googleapis.com/auth/spreadsheets'},
{'name': 'Tag Manager API - Accounts, Containers, Workspaces, Tags - read only',
'api': TAGMANAGER,
'subscopes': [],
'offByDefault': True,
'scope': 'https://www.googleapis.com/auth/tagmanager.readonly'},
{'name': 'Tag Manager API - Users',
'api': TAGMANAGER_USERS,
'subscopes': [],
'offByDefault': True,
'scope': 'https://www.googleapis.com/auth/tagmanager.manage.users'},
{'name': 'Tasks API', {'name': 'Tasks API',
'api': TASKS, 'api': TASKS,
'subscopes': READONLY, 'subscopes': READONLY,
@@ -833,3 +848,27 @@ def getSvcAcctScopesList(userServiceAccountAccessOnly, svcAcctSpecialScopes):
def hasLocalJSON(api): def hasLocalJSON(api):
return _INFO[api].get('localjson', False) return _INFO[api].get('localjson', False)
def findAPIforScope(scopesList):
def checkScopeMatch(scope, cscope):
if cscope['scope'] == scope:
requiredAPIs.append(cscope['name'])
return True
if cscope['subscopes'] == READONLY and cscope['scope']+'.readonly' == scope:
requiredAPIs.append(cscope['name']+' (supports readonly)')
return True
return False
requiredAPIs = []
for scope in scopesList:
for cscope in _CLIENT_SCOPES:
if checkScopeMatch(scope, cscope):
break
else:
for cscope in _SVCACCT_SCOPES:
if checkScopeMatch(scope, cscope):
break
if not requiredAPIs:
requiredAPIs = scopesList
return ' or '.join(requiredAPIs)

View File

@@ -485,6 +485,8 @@ class GamCLArgs():
ARG_CHROMEPOLICIES = 'chromepolicies' ARG_CHROMEPOLICIES = 'chromepolicies'
ARG_CHROMEPROFILE = 'chromeprofile' ARG_CHROMEPROFILE = 'chromeprofile'
ARG_CHROMEPROFILES = 'chromeprofiles' ARG_CHROMEPROFILES = 'chromeprofiles'
ARG_CHROMEPROFILECOMMAND = 'chromeprofilecommand'
ARG_CHROMEPROFILECOMMANDS = 'chromeprofilecommands'
ARG_CHROMESCHEMA = 'chromeschema' ARG_CHROMESCHEMA = 'chromeschema'
ARG_CHROMESCHEMAS = 'chromeschemas' ARG_CHROMESCHEMAS = 'chromeschemas'
ARG_CHROMESNVALIDITY = 'chromesnvalidity' ARG_CHROMESNVALIDITY = 'chromesnvalidity'
@@ -777,8 +779,19 @@ class GamCLArgs():
ARG_STORAGEBUCKETS = 'storagebuckets' ARG_STORAGEBUCKETS = 'storagebuckets'
ARG_STORAGEFILE = 'storagefile' ARG_STORAGEFILE = 'storagefile'
ARG_STORAGEFILES = 'storagefiles' ARG_STORAGEFILES = 'storagefiles'
ARG_SUSPENDED = 'suspended'
ARG_SVCACCT = 'svcacct' ARG_SVCACCT = 'svcacct'
ARG_SVCACCTS = 'svcaccts' ARG_SVCACCTS = 'svcaccts'
ARG_TAGMANAGERACCOUNT = 'tagmanageraccount'
ARG_TAGMANAGERACCOUNTS = 'tagmanageraccounts'
ARG_TAGMANAGERCONTAINER = 'tagmanagercontainer'
ARG_TAGMANAGERCONTAINERS = 'tagmanagercontainers'
ARG_TAGMANAGERPERMISSION = 'tagmanagerpermission'
ARG_TAGMANAGERPERMISSIONS = 'tagmanagerpermissions'
ARG_TAGMANAGERTAG = 'tagmanagertag'
ARG_TAGMANAGERTAGS = 'tagmanagertags'
ARG_TAGMANAGERWORKSPACE = 'tagmanagerworkspace'
ARG_TAGMANAGERWORKSPACES = 'tagmanagerworkspaces'
ARG_TASK = 'task' ARG_TASK = 'task'
ARG_TASKS = 'tasks' ARG_TASKS = 'tasks'
ARG_TASKLIST = 'tasklist' ARG_TASKLIST = 'tasklist'
@@ -854,7 +867,10 @@ class GamCLArgs():
OB_CHAT_SPACE = 'ChatSpace' OB_CHAT_SPACE = 'ChatSpace'
OB_CHAT_SPACE_LIST = 'ChatSpaceList' OB_CHAT_SPACE_LIST = 'ChatSpaceList'
OB_CHAT_THREAD = 'ChatThread' OB_CHAT_THREAD = 'ChatThread'
OB_CHROMEPROFILE_ID = 'ChromeProfileId' OB_CHROMEPROFILE_NAME = 'ChromeProfileName'
OB_CHROMEPROFILE_NAME_LIST = 'ChromeProfileNameList'
OB_CHROMEPROFILE_COMMAND_NAME = 'ChromeProfileCommandName'
OB_CHROMEPROFILE_COMMAND_NAME_LIST = 'ChromeProfileNameCommandList'
OB_CHROME_VERSION = 'ChromeVersion' OB_CHROME_VERSION = 'ChromeVersion'
OB_CIDR_NETMASK = 'CIDRnetmask' OB_CIDR_NETMASK = 'CIDRnetmask'
OB_CIGROUP_ALIAS_LIST = "CIGroupAliasList" OB_CIGROUP_ALIAS_LIST = "CIGroupAliasList"
@@ -875,8 +891,11 @@ class GamCLArgs():
OB_CONTACT_GROUP_ITEM = 'ContactGroupItem' OB_CONTACT_GROUP_ITEM = 'ContactGroupItem'
OB_COURSE_ALIAS = 'CourseAlias' OB_COURSE_ALIAS = 'CourseAlias'
OB_COURSE_ALIAS_ENTITY = 'CourseAliasEntity' OB_COURSE_ALIAS_ENTITY = 'CourseAliasEntity'
OB_COURSE_ANNOUNCEMENT_ID = "CourseAnnouncementID"
OB_COURSE_ANNOUNCEMENT_ID_ENTITY = "CourseAnnouncementIDEntity" OB_COURSE_ANNOUNCEMENT_ID_ENTITY = "CourseAnnouncementIDEntity"
OB_COURSE_ANNOUNCEMENT_STATE_LIST = "CourseAnnouncementStateList" OB_COURSE_ANNOUNCEMENT_STATE_LIST = "CourseAnnouncementStateList"
OB_COURSE_ANNOUNCEMENT_ADD_STATE_LIST = "CourseAnnouncementAddStateList"
OB_COURSE_ANNOUNCEMENT_UPDATE_STATE_LIST = "CourseAnnouncementUpdateStateList"
OB_COURSE_ENTITY = 'CourseEntity' OB_COURSE_ENTITY = 'CourseEntity'
OB_COURSE_ID = 'CourseID' OB_COURSE_ID = 'CourseID'
OB_COURSE_MATERIAL_ID_ENTITY = 'CourseMaterialIDEntity' OB_COURSE_MATERIAL_ID_ENTITY = 'CourseMaterialIDEntity'
@@ -1030,6 +1049,7 @@ class GamCLArgs():
OB_STRING_LIST = 'StringList' OB_STRING_LIST = 'StringList'
OB_STUDENT_ITEM = 'StudentItem' OB_STUDENT_ITEM = 'StudentItem'
OB_TAG = 'Tag' OB_TAG = 'Tag'
OB_TAGMANAGER_PATH_LIST = 'TagManagerPathList'
OB_TASK_ID = 'TaskID' OB_TASK_ID = 'TaskID'
OB_TASKLIST_ID = 'TaskListID' OB_TASKLIST_ID = 'TaskListID'
OB_TASKLIST_ID_ENTITY = 'TaskListIDEntity' OB_TASKLIST_ID_ENTITY = 'TaskListIDEntity'

View File

@@ -111,6 +111,7 @@ class GamEntity():
CHROME_POLICY_IMAGE = 'cpim' CHROME_POLICY_IMAGE = 'cpim'
CHROME_POLICY_SCHEMA = 'cpsc' CHROME_POLICY_SCHEMA = 'cpsc'
CHROME_PROFILE = 'cpro' CHROME_PROFILE = 'cpro'
CHROME_PROFILE_COMMAND = 'cpcm'
CHROME_RELEASE = 'crel' CHROME_RELEASE = 'crel'
CHROME_VERSION = 'cver' CHROME_VERSION = 'cver'
CLASSIFICATION_LABEL = 'dlab' CLASSIFICATION_LABEL = 'dlab'
@@ -357,6 +358,11 @@ class GamEntity():
SUBSCRIPTION = 'subs' SUBSCRIPTION = 'subs'
SVCACCT = 'svac' SVCACCT = 'svac'
SVCACCT_KEY = 'svky' SVCACCT_KEY = 'svky'
TAGMANAGER_ACCOUNT = 'tmac'
TAGMANAGER_CONTAINER = 'tmco'
TAGMANAGER_PERMISSION = 'tmpm'
TAGMANAGER_TAG = 'tmtg'
TAGMANAGER_WORKSPACE = 'tmws'
TARGET_USER = 'tgt ' TARGET_USER = 'tgt '
TASK = 'task' TASK = 'task'
TASKLIST = 'tali' TASKLIST = 'tali'
@@ -462,6 +468,7 @@ class GamEntity():
CHROME_POLICY_IMAGE: ['Chrome Policy Images', 'Chrome Policy Image'], CHROME_POLICY_IMAGE: ['Chrome Policy Images', 'Chrome Policy Image'],
CHROME_POLICY_SCHEMA: ['Chrome Policy Schemas', 'Chrome Policy Schema'], CHROME_POLICY_SCHEMA: ['Chrome Policy Schemas', 'Chrome Policy Schema'],
CHROME_PROFILE: ['Chrome Profiles', 'Chrome Profile'], CHROME_PROFILE: ['Chrome Profiles', 'Chrome Profile'],
CHROME_PROFILE_COMMAND: ['Chrome Profile Commands', 'Chrome Profile Command'],
CHROME_RELEASE: ['Chrome Releases', 'Chrome Release'], CHROME_RELEASE: ['Chrome Releases', 'Chrome Release'],
CHROME_VERSION: ['Chrome Versions', 'Chrome Version'], CHROME_VERSION: ['Chrome Versions', 'Chrome Version'],
CLASSIFICATION_LABEL: ['Classification Labels', 'Classification Label'], CLASSIFICATION_LABEL: ['Classification Labels', 'Classification Label'],
@@ -708,6 +715,11 @@ class GamEntity():
SUBSCRIPTION: ['Subscriptions', 'Subscription'], SUBSCRIPTION: ['Subscriptions', 'Subscription'],
SVCACCT: ['Service Accounts', 'Service Account'], SVCACCT: ['Service Accounts', 'Service Account'],
SVCACCT_KEY: ['Service Account Keys', 'Service Account Key'], SVCACCT_KEY: ['Service Account Keys', 'Service Account Key'],
TAGMANAGER_ACCOUNT: ['Tag Manager Accounts', 'Tag Manager Account'],
TAGMANAGER_CONTAINER: ['Tag Manager Containers', 'Tag Manager Container'],
TAGMANAGER_PERMISSION: ['Tag Manager Permissions', 'Tag Manager Permission'],
TAGMANAGER_TAG: ['Tag Manager Tags', 'Tag Manager Tag'],
TAGMANAGER_WORKSPACE: ['Tag Manager Workspaces', 'Tag Manager Workspace'],
TARGET_USER: ['Target Users', 'Target User'], TARGET_USER: ['Target Users', 'Target User'],
TASK: ['Tasks', 'Task'], TASK: ['Tasks', 'Task'],
TASKLIST: ['Tasklists', 'Tasklist'], TASKLIST: ['Tasklists', 'Tasklist'],

View File

@@ -23,6 +23,7 @@
ABORTED = 'aborted' ABORTED = 'aborted'
ABUSIVE_CONTENT_RESTRICTION = 'abusiveContentRestriction' ABUSIVE_CONTENT_RESTRICTION = 'abusiveContentRestriction'
ACCESS_NOT_CONFIGURED = 'accessNotConfigured' ACCESS_NOT_CONFIGURED = 'accessNotConfigured'
ADMIN_CANNOT_UNSUSPEND = 'adminCannotUnsuspend'
ALREADY_EXISTS = 'alreadyExists' ALREADY_EXISTS = 'alreadyExists'
APPLY_LABEL_FORBIDDEN = 'applyLabelForbidden' APPLY_LABEL_FORBIDDEN = 'applyLabelForbidden'
AUTH_ERROR = 'authError' AUTH_ERROR = 'authError'
@@ -134,6 +135,7 @@ OPERATION_NOT_SUPPORTED = 'operationNotSupported'
ORGANIZER_ON_NON_TEAMDRIVE_NOT_SUPPORTED = 'organizerOnNonTeamDriveNotSupported' ORGANIZER_ON_NON_TEAMDRIVE_NOT_SUPPORTED = 'organizerOnNonTeamDriveNotSupported'
ORGANIZER_ON_NON_TEAMDRIVE_ITEM_NOT_SUPPORTED = 'organizerOnNonTeamDriveItemNotSupported' ORGANIZER_ON_NON_TEAMDRIVE_ITEM_NOT_SUPPORTED = 'organizerOnNonTeamDriveItemNotSupported'
ORGUNIT_NOT_FOUND = 'orgunitNotFound' ORGUNIT_NOT_FOUND = 'orgunitNotFound'
OUTSIDE_DOMAIN_MEMBER_CANNOT_CHANGE_TEAMDRIVE_RESTRICTIONS = 'outsideDomainMemberCannotChangeTeamDriveRestrictions'
OWNER_ON_TEAMDRIVE_ITEM_NOT_SUPPORTED = 'ownerOnTeamDriveItemNotSupported' OWNER_ON_TEAMDRIVE_ITEM_NOT_SUPPORTED = 'ownerOnTeamDriveItemNotSupported'
OWNERSHIP_CHANGE_ACROSS_DOMAIN_NOT_PERMITTED = 'ownershipChangeAcrossDomainNotPermitted' OWNERSHIP_CHANGE_ACROSS_DOMAIN_NOT_PERMITTED = 'ownershipChangeAcrossDomainNotPermitted'
PARTICIPANT_IS_NEITHER_ORGANIZER_NOR_ATTENDEE = 'participantIsNeitherOrganizerNorAttendee' PARTICIPANT_IS_NEITHER_ORGANIZER_NOR_ATTENDEE = 'participantIsNeitherOrganizerNorAttendee'
@@ -229,6 +231,7 @@ DRIVE3_CREATE_ACL_THROW_REASONS = [BAD_REQUEST, INVALID, INVALID_SHARING_REQUEST
FILE_ORGANIZER_NOT_YET_ENABLED_FOR_THIS_TEAMDRIVE, FILE_ORGANIZER_NOT_YET_ENABLED_FOR_THIS_TEAMDRIVE,
FILE_ORGANIZER_ON_FOLDERS_IN_SHARED_DRIVE_ONLY, FILE_ORGANIZER_ON_FOLDERS_IN_SHARED_DRIVE_ONLY,
FILE_ORGANIZER_ON_NON_TEAMDRIVE_NOT_SUPPORTED, FILE_ORGANIZER_ON_NON_TEAMDRIVE_NOT_SUPPORTED,
CANNOT_MODIFY_INHERITED_PERMISSION,
TEAMDRIVES_FOLDER_SHARING_NOT_SUPPORTED, INVALID_LINK_VISIBILITY, ABUSIVE_CONTENT_RESTRICTION] TEAMDRIVES_FOLDER_SHARING_NOT_SUPPORTED, INVALID_LINK_VISIBILITY, ABUSIVE_CONTENT_RESTRICTION]
DRIVE3_GET_ACL_REASONS = DRIVE_USER_THROW_REASONS+[FILE_NOT_FOUND, FORBIDDEN, INTERNAL_ERROR, DRIVE3_GET_ACL_REASONS = DRIVE_USER_THROW_REASONS+[FILE_NOT_FOUND, FORBIDDEN, INTERNAL_ERROR,
INSUFFICIENT_ADMINISTRATOR_PRIVILEGES, INSUFFICIENT_FILE_PERMISSIONS, INSUFFICIENT_ADMINISTRATOR_PRIVILEGES, INSUFFICIENT_FILE_PERMISSIONS,
@@ -274,17 +277,18 @@ GROUP_SETTINGS_THROW_REASONS = [NOT_FOUND, GROUP_NOT_FOUND, DOMAIN_NOT_FOUND, DO
INVALID, INVALID_ARGUMENT, INVALID_PARAMETER, INVALID_ATTRIBUTE_VALUE, INVALID_INPUT, INVALID, INVALID_ARGUMENT, INVALID_PARAMETER, INVALID_ATTRIBUTE_VALUE, INVALID_INPUT,
SERVICE_LIMIT, SERVICE_NOT_AVAILABLE, AUTH_ERROR, REQUIRED] SERVICE_LIMIT, SERVICE_NOT_AVAILABLE, AUTH_ERROR, REQUIRED]
GROUP_SETTINGS_RETRY_REASONS = [INVALID, SERVICE_LIMIT, SERVICE_NOT_AVAILABLE] GROUP_SETTINGS_RETRY_REASONS = [INVALID, SERVICE_LIMIT, SERVICE_NOT_AVAILABLE]
GROUP_LIST_THROW_REASONS = [RESOURCE_NOT_FOUND, DOMAIN_NOT_FOUND, FORBIDDEN, BAD_REQUEST] GROUP_LIST_THROW_REASONS = [RESOURCE_NOT_FOUND, DOMAIN_NOT_FOUND, FORBIDDEN, BAD_REQUEST, PERMISSION_DENIED]
GROUP_LIST_USERKEY_THROW_REASONS = GROUP_LIST_THROW_REASONS+[INVALID_MEMBER, INVALID_INPUT] GROUP_LIST_USERKEY_THROW_REASONS = GROUP_LIST_THROW_REASONS+[INVALID_MEMBER, INVALID_INPUT]
KEEP_THROW_REASONS = [AUTH_ERROR, BAD_REQUEST, PERMISSION_DENIED, INVALID_ARGUMENT, NOT_FOUND] KEEP_THROW_REASONS = [AUTH_ERROR, BAD_REQUEST, PERMISSION_DENIED, INVALID_ARGUMENT, NOT_FOUND]
LOOKERSTUDIO_THROW_REASONS = [INVALID_ARGUMENT, SERVICE_NOT_AVAILABLE, BAD_REQUEST, NOT_FOUND, PERMISSION_DENIED, INTERNAL_ERROR] LOOKERSTUDIO_THROW_REASONS = [INVALID_ARGUMENT, SERVICE_NOT_AVAILABLE, BAD_REQUEST, NOT_FOUND, PERMISSION_DENIED, INTERNAL_ERROR]
MEMBERS_THROW_REASONS = [GROUP_NOT_FOUND, DOMAIN_NOT_FOUND, DOMAIN_CANNOT_USE_APIS, INVALID, FORBIDDEN, SERVICE_NOT_AVAILABLE] MEMBERS_THROW_REASONS = [GROUP_NOT_FOUND, DOMAIN_NOT_FOUND, DOMAIN_CANNOT_USE_APIS, INVALID, FORBIDDEN, SERVICE_NOT_AVAILABLE, PERMISSION_DENIED]
MEMBERS_RETRY_REASONS = [SYSTEM_ERROR, SERVICE_NOT_AVAILABLE] MEMBERS_RETRY_REASONS = [SYSTEM_ERROR, SERVICE_NOT_AVAILABLE]
ORGUNIT_GET_THROW_REASONS = [INVALID_ORGUNIT, ORGUNIT_NOT_FOUND, BACKEND_ERROR, BAD_REQUEST, INVALID_CUSTOMER_ID, LOGIN_REQUIRED] ORGUNIT_GET_THROW_REASONS = [INVALID_ORGUNIT, ORGUNIT_NOT_FOUND, BACKEND_ERROR, BAD_REQUEST, INVALID_CUSTOMER_ID, LOGIN_REQUIRED]
PEOPLE_ACCESS_THROW_REASONS = [SERVICE_NOT_AVAILABLE, FORBIDDEN, PERMISSION_DENIED, FAILED_PRECONDITION] PEOPLE_ACCESS_THROW_REASONS = [SERVICE_NOT_AVAILABLE, FORBIDDEN, PERMISSION_DENIED, FAILED_PRECONDITION]
RESELLER_THROW_REASONS = [BAD_REQUEST, RESOURCE_NOT_FOUND, FORBIDDEN, INVALID] RESELLER_THROW_REASONS = [BAD_REQUEST, RESOURCE_NOT_FOUND, FORBIDDEN, INVALID]
SHEETS_ACCESS_THROW_REASONS = DRIVE_USER_THROW_REASONS+[NOT_FOUND, PERMISSION_DENIED, FORBIDDEN, INTERNAL_ERROR, INSUFFICIENT_FILE_PERMISSIONS, SHEETS_ACCESS_THROW_REASONS = DRIVE_USER_THROW_REASONS+[NOT_FOUND, PERMISSION_DENIED, FORBIDDEN, INTERNAL_ERROR, INSUFFICIENT_FILE_PERMISSIONS,
BAD_REQUEST, INVALID, INVALID_ARGUMENT, FAILED_PRECONDITION] BAD_REQUEST, INVALID, INVALID_ARGUMENT, FAILED_PRECONDITION]
TAGMANAGER_THROW_REASONS = [BAD_REQUEST, PERMISSION_DENIED, INVALID, NOT_FOUND, ACCESS_NOT_CONFIGURED]
TASK_THROW_REASONS = [BAD_REQUEST, PERMISSION_DENIED, INVALID, NOT_FOUND, ACCESS_NOT_CONFIGURED] TASK_THROW_REASONS = [BAD_REQUEST, PERMISSION_DENIED, INVALID, NOT_FOUND, ACCESS_NOT_CONFIGURED]
TASKLIST_THROW_REASONS = [BAD_REQUEST, PERMISSION_DENIED, INVALID, NOT_FOUND, ACCESS_NOT_CONFIGURED] TASKLIST_THROW_REASONS = [BAD_REQUEST, PERMISSION_DENIED, INVALID, NOT_FOUND, ACCESS_NOT_CONFIGURED]
USER_GET_THROW_REASONS = [USER_NOT_FOUND, DOMAIN_NOT_FOUND, DOMAIN_CANNOT_USE_APIS, FORBIDDEN, BAD_REQUEST, SYSTEM_ERROR] USER_GET_THROW_REASONS = [USER_NOT_FOUND, DOMAIN_NOT_FOUND, DOMAIN_CANNOT_USE_APIS, FORBIDDEN, BAD_REQUEST, SYSTEM_ERROR]
@@ -365,6 +369,8 @@ class abusiveContentRestriction(Exception):
pass pass
class accessNotConfigured(Exception): class accessNotConfigured(Exception):
pass pass
class adminCannotUnsuspend(Exception):
pass
class alreadyExists(Exception): class alreadyExists(Exception):
pass pass
class applyLabelForbidden(Exception): class applyLabelForbidden(Exception):
@@ -577,6 +583,8 @@ class organizerOnNonTeamDriveItemNotSupported(Exception):
pass pass
class orgunitNotFound(Exception): class orgunitNotFound(Exception):
pass pass
class outsideDomainMemberCannotChangeTeamDriveRestrictions(Exception):
pass
class ownerOnTeamDriveItemNotSupported(Exception): class ownerOnTeamDriveItemNotSupported(Exception):
pass pass
class ownershipChangeAcrossDomainNotPermitted(Exception): class ownershipChangeAcrossDomainNotPermitted(Exception):
@@ -684,6 +692,7 @@ REASON_EXCEPTION_MAP = {
ABORTED: aborted, ABORTED: aborted,
ABUSIVE_CONTENT_RESTRICTION: abusiveContentRestriction, ABUSIVE_CONTENT_RESTRICTION: abusiveContentRestriction,
ACCESS_NOT_CONFIGURED: accessNotConfigured, ACCESS_NOT_CONFIGURED: accessNotConfigured,
ADMIN_CANNOT_UNSUSPEND: adminCannotUnsuspend,
ALREADY_EXISTS: alreadyExists, ALREADY_EXISTS: alreadyExists,
APPLY_LABEL_FORBIDDEN: applyLabelForbidden, APPLY_LABEL_FORBIDDEN: applyLabelForbidden,
AUTH_ERROR: authError, AUTH_ERROR: authError,
@@ -790,6 +799,7 @@ REASON_EXCEPTION_MAP = {
ORGANIZER_ON_NON_TEAMDRIVE_NOT_SUPPORTED: organizerOnNonTeamDriveNotSupported, ORGANIZER_ON_NON_TEAMDRIVE_NOT_SUPPORTED: organizerOnNonTeamDriveNotSupported,
ORGANIZER_ON_NON_TEAMDRIVE_ITEM_NOT_SUPPORTED: organizerOnNonTeamDriveItemNotSupported, ORGANIZER_ON_NON_TEAMDRIVE_ITEM_NOT_SUPPORTED: organizerOnNonTeamDriveItemNotSupported,
ORGUNIT_NOT_FOUND: orgunitNotFound, ORGUNIT_NOT_FOUND: orgunitNotFound,
OUTSIDE_DOMAIN_MEMBER_CANNOT_CHANGE_TEAMDRIVE_RESTRICTIONS: outsideDomainMemberCannotChangeTeamDriveRestrictions,
OWNER_ON_TEAMDRIVE_ITEM_NOT_SUPPORTED: ownerOnTeamDriveItemNotSupported, OWNER_ON_TEAMDRIVE_ITEM_NOT_SUPPORTED: ownerOnTeamDriveItemNotSupported,
OWNERSHIP_CHANGE_ACROSS_DOMAIN_NOT_PERMITTED: ownershipChangeAcrossDomainNotPermitted, OWNERSHIP_CHANGE_ACROSS_DOMAIN_NOT_PERMITTED: ownershipChangeAcrossDomainNotPermitted,
PARTICIPANT_IS_NEITHER_ORGANIZER_NOR_ATTENDEE: participantIsNeitherOrganizerNorAttendee, PARTICIPANT_IS_NEITHER_ORGANIZER_NOR_ATTENDEE: participantIsNeitherOrganizerNorAttendee,

View File

@@ -184,8 +184,8 @@ ALREADY_EXISTS_IN_TARGET_FOLDER = 'Already exists in {0}: {1}'
ALREADY_EXISTS_USE_MERGE_ARGUMENT = 'Already exists; use the "merge" argument to merge the labels' ALREADY_EXISTS_USE_MERGE_ARGUMENT = 'Already exists; use the "merge" argument to merge the labels'
API_ACCESS_DENIED = 'API access Denied' API_ACCESS_DENIED = 'API access Denied'
API_CALLS_RETRY_DATA = 'API calls retry data\n' API_CALLS_RETRY_DATA = 'API calls retry data\n'
API_CHECK_CLIENT_AUTHORIZATION = 'Please make sure the Client ID: {0} is authorized for the appropriate API or scopes:\n{1}\n\nRun: gam oauth create\n' API_CHECK_CLIENT_AUTHORIZATION = 'Please make sure the Client ID: {0} is authorized for the appropriate API or scopes: {1}\n\nRun: gam oauth create\n'
API_CHECK_SVCACCT_AUTHORIZATION = 'Please make sure the Service Account Client ID: {0} is authorized for the appropriate API or scopes:\n{1}\n\nRun: gam user {2} update serviceaccount\n' API_CHECK_SVCACCT_AUTHORIZATION = 'Please make sure the Service Account Client ID: {0} is authorized for the appropriate API or scopes: {1}\n\nRun: gam user {2} update serviceaccount\n'
API_ERROR_SETTINGS = 'API error, some settings not set' API_ERROR_SETTINGS = 'API error, some settings not set'
ARE_BOTH_REQUIRED = 'Arguments {0} and {1} are both required' ARE_BOTH_REQUIRED = 'Arguments {0} and {1} are both required'
ARE_MUTUALLY_EXCLUSIVE = 'Arguments {0} and {1} are mutually exclusive' ARE_MUTUALLY_EXCLUSIVE = 'Arguments {0} and {1} are mutually exclusive'
@@ -425,7 +425,7 @@ NO_LABELS_TO_PROCESS = 'No Labels to process'
NO_MESSAGES_WITH_LABEL = 'No Messages with Label' NO_MESSAGES_WITH_LABEL = 'No Messages with Label'
NO_PARENTS_TO_CONVERT_TO_SHORTCUTS = 'No parents to convert to shortcuts' NO_PARENTS_TO_CONVERT_TO_SHORTCUTS = 'No parents to convert to shortcuts'
NO_REPORT_AVAILABLE = 'No {0} report available.' NO_REPORT_AVAILABLE = 'No {0} report available.'
NO_SCOPES_FOR_API = 'There are no scopes authorized for the {0}' NO_SCOPES_FOR_API = 'There are no scopes authorized for the API(s): {0}'
NO_SERIAL_NUMBERS_SPECIFIED = 'No serial numbers specified' NO_SERIAL_NUMBERS_SPECIFIED = 'No serial numbers specified'
NO_SSO_PROFILE_MATCHES = 'No SSO profile matches display name {0}' NO_SSO_PROFILE_MATCHES = 'No SSO profile matches display name {0}'
NO_SSO_PROFILE_ASSIGNED = 'No SSO profile assigned to {0} {1}' NO_SSO_PROFILE_ASSIGNED = 'No SSO profile assigned to {0} {1}'

View File

@@ -107,6 +107,8 @@ _SKUS = {
'product': '101047', 'aliases': ['aisecurity'], 'displayName': 'AI Security'}, 'product': '101047', 'aliases': ['aisecurity'], 'displayName': 'AI Security'},
'1010470007': { '1010470007': {
'product': '101047', 'aliases': ['aimeetingsandmessaging'], 'displayName': 'AI Meetings and Messaging'}, 'product': '101047', 'aliases': ['aimeetingsandmessaging'], 'displayName': 'AI Meetings and Messaging'},
'1010470008': {
'product': '101047', 'aliases': ['geminiultra'], 'displayName': 'Google AI Ultra for Business'},
'1010490001': { '1010490001': {
'product': '101049', 'aliases': ['eeu'], 'displayName': 'Endpoint Education Upgrade'}, 'product': '101049', 'aliases': ['eeu'], 'displayName': 'Endpoint Education Upgrade'},
'1010500001': { '1010500001': {

View File

@@ -1,14 +0,0 @@
chardet>=5.2.0
cryptography>=44.0.2
distro; sys_platform=='linux'
filelock>=3.18.0
google-api-python-client>=2.167.0
google-auth-httplib2>=0.2.0
google-auth-oauthlib>=1.2.2
google-auth>=2.39.0
httplib2>=0.22.0
lxml>=5.4.0
passlib>=1.7.4
pathvalidate>=3.2.3
python-dateutil
yubikey-manager>=5.6.1

View File

@@ -1,55 +0,0 @@
[metadata]
name = GAM for Google Workspace
version = attr: gam.var.GAM_VERSION
description = Command line management for Google Workspaces
long_description = file: readme.md
long_description_content_type = text/markdown
url = https://github.com/GAM-team/GAM
author = GAM Team
author_email = google-apps-manager@googlegroups.com
license = Apache
license_files = LICENSE
keywords = google, oauth2, gsuite, google-apps, google-admin-sdk, google-drive, google-cloud, google-calendar, gam, google-api, oauth2-client, google-workspace
classifiers =
Programming Language :: Python :: 3
Programming Language :: Python :: 3 :: Only
Programming Language :: Python :: 3.9
Programming Language :: Python :: 3.10
Programming Language :: Python :: 3.11
Programming Language :: Python :: 3.12
Programming Language :: Python :: 3.13
License :: OSI Approved :: Apache License
[options]
packages = find:
python_requires = >= 3.9
# The following files should be edited to match: pyproject.toml, requirements.txt
install_requires =
chardet >= 5.2.0
cryptography >= 44.0.2
distro; sys_platform == 'linux'
filelock >= 3.18.0
google-api-python-client >= 2.167.0
google-auth-httplib2 >= 0.2.0
google-auth-oauthlib >= 1.2.2
google-auth >= 2.39.0
httplib2 >= 0.22.0
lxml >= 5.4.0
passlib >= 1.7.4
pathvalidate >= 3.2.3
python-dateutil
yubikey-manager >= 5.6.1
[options.package_data]
* = *.pem
# used during pip install .[test]
[options.extras_require]
test = pre-commit
[options.entry_points]
console_scripts =
gam = gam.__main__:main
[bdist_wheel]
universal = True

View File

@@ -1,3 +0,0 @@
from setuptools import setup
setup()

View File

@@ -5,7 +5,7 @@
- [Python Regular Expressions](Python-Regular-Expressions) - [Python Regular Expressions](Python-Regular-Expressions)
- [Definitions](#definitions) - [Definitions](#definitions)
- [Manage Projects](#manage-projects) - [Manage Projects](#manage-projects)
- [Authorize a super admin to create projects](#authorize-a-super-admin-to-create-projects) - [Authorize a user to create projects](#authorize-a-user-to-create-projects)
- [Authorize Service Account Key Uploads](#authorize-service-account-key-uploads) - [Authorize Service Account Key Uploads](#authorize-service-account-key-uploads)
- [Authorize GAM to create projects](#authorize-gam-to-create-projects) - [Authorize GAM to create projects](#authorize-gam-to-create-projects)
- [Create a new GCP project folder](#create-a-new-gcp-project-folder) - [Create a new GCP project folder](#create-a-new-gcp-project-folder)
@@ -74,11 +74,6 @@ Verify that all scopes are available:
* Select "ON for everyone" * Select "ON for everyone"
* Click "SAVE" * Click "SAVE"
Verify that internal apps are trusted.
* Access the admin console and go to Security -> Access and data control -> API Controls
* Check that "Trust internal, domain-owned apps" is present in the **Settings** section
* Click "SAVE"
If you run a Google Workspace Education SKU, verify that Classroom API is enabled if required. If you run a Google Workspace Education SKU, verify that Classroom API is enabled if required.
* Access the admin console and go to Apps -> Google Workspace - Classroom * Access the admin console and go to Apps -> Google Workspace - Classroom
* Expand "Data access" * Expand "Data access"
@@ -110,12 +105,13 @@ Verify whether the super admin you'll be using is in an OU where reauthenticatio
* Access the admin console and go to Security -> Overview * Access the admin console and go to Security -> Overview
* Scroll down and open Google Cloud session control section * Scroll down and open Google Cloud session control section
* Select the OU containing the super admin * Select the OU containing the super admin
* If Require reauthentication is selected and Exempt Trusted apps is not checked, you'll have to do `gam oauth create` at whatever frequency is specified * If Require reauthentication is selected, you'll need either:
* If that sounds unappealing, check Exempt Trusted apps * uncheck Google Cloud Storage and any other GCP APIs that you selected on `gam oauth create` (reauth is only necessary for GCP APIs)
* Click "OVERRIDE" * enable "Exempt Trusted apps"
* rerun `gam oauth create` at whatever frequency is specified
Additional steps may be required if errors are encountered. Additional steps may be required if errors are encountered.
* [Authorize a super admin to create projects](#authorize-a-super-admin-to-create-projects) * [Authorize a user to create projects](#authorize-a-user-to-create-projects)
* [Authorize Service Account Key Uploads](#authorize-service-account-key-uploads) * [Authorize Service Account Key Uploads](#authorize-service-account-key-uploads)
* [Authorize GAM to create projects](#authorize-gam-to-create-projects) * [Authorize GAM to create projects](#authorize-gam-to-create-projects)
@@ -169,8 +165,8 @@ For `print|show projects`, you can eliminate the password prompt and authenticat
gam print projects admin admin@domain.com gam print projects admin admin@domain.com
``` ```
## Authorize a super admin to create projects ## Authorize a user to create projects
If you try to create a project and get an error saying that the admin you specified is not authorized to create projects, If you try to create a project and get an error saying that the user you specified is not authorized to create projects,
perform these steps and then retry the create project command. perform these steps and then retry the create project command.
* Login as an existing super admin at console.cloud.google.com * Login as an existing super admin at console.cloud.google.com
@@ -184,13 +180,12 @@ perform these steps and then retry the create project command.
* Click in the Select a role box * Click in the Select a role box
* Type project creator in the Filter box * Type project creator in the Filter box
* Click Project Creator * Click Project Creator
* Click + Add Another Role
* Type orgpolicy.policyAdmin in the Filter box
* Click Organization Policy Administrator
* Click Save * Click Save
## Authorize Service Account Key Uploads ## Authorize Service Account Key Uploads
*IMPORTANT:* Google best practice is to NOT use service account keys. Rather than overriding Google's default policy please consider [running GAM on Google Compute Engine Securely](https://github.com/GAM-team/GAM/wiki/l-Running-GAM-on-Google-Compute-Engine-(GCE)-Securely) so that service account keys are not necessary.
If you try to create a project and get an error saying that Constraint `constraints/iam.disableServiceAccountKeyUpload violated for service account projects/gam-project-xxxxx`, If you try to create a project and get an error saying that Constraint `constraints/iam.disableServiceAccountKeyUpload violated for service account projects/gam-project-xxxxx`,
perform these steps and then you should be able to authorize and use your project. perform these steps and then you should be able to authorize and use your project.

View File

@@ -284,6 +284,9 @@
<ChatMessage> ::= spaces/<String>/messages/<String> <ChatMessage> ::= spaces/<String>/messages/<String>
<ChatSpace> ::= spaces/<String> | space <String> | space spaces/<String> <ChatSpace> ::= spaces/<String> | space <String> | space spaces/<String>
<ChatThread> ::= spaces/<String>/threads/<String> <ChatThread> ::= spaces/<String>/threads/<String>
<ChromeProfilePermanentID> ::= <String>
<ChromeProfileName> ::= customers/<CustomerID>/profiles/<ChromeProfilePermanentID> | <ChromeProfilePermanentID>
<ChromeProfileCommandName> ::= <ChomeProfileName>/commands/<String>
<GIGroupAlias> ::= <EmailAddress> <GIGroupAlias> ::= <EmailAddress>
<GIGroupItem> ::= <EmailAddress>|<UniqueID>|groups/<String> <GIGroupItem> ::= <EmailAddress>|<UniqueID>|groups/<String>
<CIGroupMemberType> ::= cbcmbrowser|chromeosdevice|customer|group|other|serviceaccount|user <CIGroupMemberType> ::= cbcmbrowser|chromeosdevice|customer|group|other|serviceaccount|user
@@ -302,6 +305,11 @@
<ContactGroupItem> ::= <ContactGroupID>|<ContactGroupName> <ContactGroupItem> ::= <ContactGroupID>|<ContactGroupName>
<CorporaAttribute> ::= alldrives|allteamdrives|domain|onlyteamdrives|user <CorporaAttribute> ::= alldrives|allteamdrives|domain|onlyteamdrives|user
<CourseAlias> ::= <String> <CourseAlias> ::= <String>
<CourseAnnouncementContent> ::=
((text <String>)|
(textfile <FileName> [charset <Charset>])|
(gdoc <UserGoogleDoc>)|
(gcsdoc <StorageBucketObjectName>))
<CourseAnnouncementID> ::= <Number> <CourseAnnouncementID> ::= <Number>
<CourseAnnouncementState> ::= draft|published|deleted <CourseAnnouncementState> ::= draft|published|deleted
<CourseID> ::= <Number>|d:<CourseAlias> <CourseID> ::= <Number>|d:<CourseAlias>
@@ -511,6 +519,14 @@
gs://<StorageBucketName>/<StorageObjectName>| gs://<StorageBucketName>/<StorageObjectName>|
<StorageBucketName>/<StorageObjectName> <StorageBucketName>/<StorageObjectName>
<Tag> ::= <String> <Tag> ::= <String>
<TagManagerAccountID> ::= <String>
<TagManagerAccountPath> ::= accounts/<TagManagerAccountID>
<TagManagerContainerID> ::= <String>
<TagManagerContainerPath> ::= accounts/<TagManagerAccountID>/containers/<TagManagerContainerID>
<TagManagerWorkspaceID> ::= <String>
<TagManagerWorkspacePath> ::= accounts/<TagManagerAccountID>/containers/<TagManagerContainerID>/workspaces/<TagManagerWorkspaceID>
<TagManagerTagID> ::= <String>
<TagManagerTagPath> ::= accounts/<TagManagerAccountID>/containers/<TagManagerContainerID>/workspaces/<TagManagerWorkspaceID>/tags/<TagManagerTagID>
<TakeoutBucketName> ::= takeout-export-[a-f,0-9,-]* <TakeoutBucketName> ::= takeout-export-[a-f,0-9,-]*
<TaskID> ::= <String> <TaskID> ::= <String>
<TaskListID> ::= <String> <TaskListID> ::= <String>

View File

@@ -40,6 +40,7 @@ GAM is capable of acting as a Chat Bot and sending messages to Chat Rooms or dir
Even if you're not going to use GAM as a Chat Bot, you have to configure a Chat Bot as it is required by the Chat API in [Users - Chat](Users-Chat). Even if you're not going to use GAM as a Chat Bot, you have to configure a Chat Bot as it is required by the Chat API in [Users - Chat](Users-Chat).
* Run the command `gam setup chat`; it will point you to a URL to configure your Chat Bot. * Run the command `gam setup chat`; it will point you to a URL to configure your Chat Bot.
* Uncheck "Build this Chat app as a Workspace add-on."
* Enter an App name and Description of your choosing. * Enter an App name and Description of your choosing.
* For the Avatar URL you can use `https://dummyimage.com/384x256/4d4d4d/0011ff.png&text=+GAM` or a public URL to an image of your own choosing. * For the Avatar URL you can use `https://dummyimage.com/384x256/4d4d4d/0011ff.png&text=+GAM` or a public URL to an image of your own choosing.
* In Functionality, uncheck both "Receive 1:1 messages" and "Join spaces and group conversations" * In Functionality, uncheck both "Receive 1:1 messages" and "Join spaces and group conversations"

View File

@@ -2,9 +2,12 @@
- [API documentation](#api-documentation) - [API documentation](#api-documentation)
- [Introduction](#introduction) - [Introduction](#introduction)
- [Definitions](#definitions) - [Definitions](#definitions)
- [Delete Chrome profiles](#delete-chrome-profiles) - [Delete Chrome Profiles](#delete-chrome-profiles)
- [Display Chrome profiles](#display-chrome-profiles) - [Display Chrome Profiles](#display-chrome-profiles)
- [Profile Query Searchable Fields](#profile-query-searchable-fields) - [Profile Query Searchable Fields](#profile-query-searchable-fields)
- [Collections of Chrome Profile names for commands](#collections-of-chrome-profile-names-for-commands)
- [Create a Chrome Profile command](#create-a-chrome-profile-command)
- [Display Chrome Profile commands](#display-chrome-profile-commands)
## Introduction ## Introduction
These features were added in version 7.01.00. These features were added in version 7.01.00.
@@ -21,13 +24,24 @@ Follow instructions at: Turn on managed profile reporting
## API documentation ## API documentation
* [Chrome Management API - Profiles](https://developers.google.com/chrome/management/reference/rest/v1/customers.profiles) * [Chrome Management API - Profiles](https://developers.google.com/chrome/management/reference/rest/v1/customers.profiles)
* [Chrome Management API - Profile Commands](https://developers.google.com/chrome/management/reference/rest/v1/customers.profiles.commands)
* [Turn on Chrome Browser and Profile Reporting](https://support.google.com/chrome/a/answer/9301421) * [Turn on Chrome Browser and Profile Reporting](https://support.google.com/chrome/a/answer/9301421)
## Definitions ## Definitions
* [`<FileSelector> | <CSVFileSelector>`](Collections-of-Items)
``` ```
<CustomerID> ::= <String> <CustomerID> ::= <String>
<ChromeProfilePermanentID> ::= <String> <ChromeProfilePermanentID> ::= <String>
<ChromeProfileName> ::= customers/<CustomerID>/profiles/<ChromeProfilePermanentID> <ChromeProfileName> ::= customers/<CustomerID>/profiles/<ChromeProfilePermanentID> | <ChromeProfilePermanentID>
<ChromeProfileNameList> ::= "<ChromeProfileName>(,<ChromeProfileName>)*"
<ChromeProfileCommandName> ::= <ChomeProfileName>/commands/<String>
<ChromeProfileCommandNameList> ::= "<ChromeProfileCommandName>(,<ChromeProfileCommandName>)*"
<ChromeProfileNameEntity> ::=
<ChromeProfileNameList> |
(select <FileSelector>|<CSVFileSelector>) |
(filter <String> (filtertime<String> <Time>)* [orderby <ChromeProfileOrderByFieldName> [ascending|descending]]) |
(commands <ChromeProfileCommandNameList>|<FileSelector>|<CSVFileSelector>)
<ChromeProfileFieldName> ::= <ChromeProfileFieldName> ::=
affiliationstate| affiliationstate|
@@ -89,11 +103,11 @@ Select the fields to be displayed:
* `<ChromeProfileFieldName>* [fields <ChromeProfileFieldNameList>]` - Display a selected list of fields * `<ChromeProfileFieldName>* [fields <ChromeProfileFieldNameList>]` - Display a selected list of fields
By default, Gam displays the information as an indented list of keys and values: By default, Gam displays the information as an indented list of keys and values:
- `formatjson` - Display the fields in JSON format. * `formatjson` - Display the fields in JSON format.
``` ```
gam show chromeprofiles gam show chromeprofiles
[filtertime.* <Time>] [filter <String>] [filter <String> (filtertime<String> <Time>)*]
[orderby <ChromeProfileOrderByFieldName> [ascending|descending]] [orderby <ChromeProfileOrderByFieldName> [ascending|descending]]
<ChromeProfileFieldName>* [fields <ChromeProfileFieldNameList>] <ChromeProfileFieldName>* [fields <ChromeProfileFieldNameList>]
[formatjson] [formatjson]
@@ -106,18 +120,18 @@ Select the fields to be displayed:
* `<ChromeProfileFieldName>* [fields <ChromeProfileFieldNameList>]` - Display a selected list of fields * `<ChromeProfileFieldName>* [fields <ChromeProfileFieldNameList>]` - Display a selected list of fields
Use the `filtertime<String> <Time>` option to allow times, usually relative, to be substituted into the `filter <String>` option. Use the `filtertime<String> <Time>` option to allow times, usually relative, to be substituted into the `filter <String>` option.
The `filtertime<String> <Time>` value replaces the string `#fiktertime<String>#` in the `filter <String>`. The `filtertime<String> <Time>` value replaces the string `#filtertime<String>#` in the `filter <String>`.
The characters following `filtertime` can be any combination of lowercase letters and numbers. The characters following `filtertime` can be any combination of lowercase letters and numbers.
By default, Gam displays the information as an indented list of keys and values: By default, Gam displays the information as an indented list of keys and values:
- `formatjson` - Display the fields in JSON format. * `formatjson` - Display the fields in JSON format.
``` ```
gam print chromeprofiles [todrive <ToDriveAttribute>*] gam print chromeprofiles [todrive <ToDriveAttribute>*]
[filtertime.* <Time>] [filter <String>] [filter <String> (filtertime<String> <Time>)*]
[orderby <ChromeProfileOrderByFieldName> [ascending|descending]] [orderby <ChromeProfileOrderByFieldName> [ascending|descending]]
<ChromeProfileFieldName>* [fields <ChromeProfileFieldNameList>] <ChromeProfileFieldName>* [fields <ChromeProfileFieldNameList>]
[[formatjson [quotechar <Character>]] [formatjson [quotechar <Character>]]
``` ```
Use these options to select Chrome profiles; if none are chosen, all Chrome profiles in the account are selected: Use these options to select Chrome profiles; if none are chosen, all Chrome profiles in the account are selected:
@@ -193,3 +207,110 @@ Print information about Chrome profiles on Windows.
``` ```
gam print chromeprofiles filter "osPlatformType=WINDOWS" gam print chromeprofiles filter "osPlatformType=WINDOWS"
``` ```
## Collections of Chrome Profile names for commands
```
<ChromeProfileNameEntity> ::=
<ChromeProfileNameList> |
(select <ChromeProfileNameList>|<FileSelector>|<CSVFileSelector>) |
(filter <String> (filtertime<String> <Time>)* [orderby <ChromeProfileOrderByFieldName> [ascending|descending]]) |
(commands <ChromeProfileCommandNameList>|<FileSelector>|<CSVFileSelector>)
```
* `<ChromeProfileNameList>` - A list of Chrome profile names
* `select <ChromeProfileNameList>` - A list of Chrome profile names
* `select <FileSelector>|<CSVFileSelector>` - A flat or CSV file containing Chrome profile names
* `filter <String> (filtertime<String> <Time>)*` - A filter to select Chrome profiles
* `commands <ChromeProfileCommandNameList>` - A list of Chrome profile command names
* `commands <FileSelector>|<CSVFileSelector>` - A flat or CSV file containing Chrome profile command names
Use the `filtertime<String> <Time>` option to allow times, usually relative, to be substituted into the `filter <String>` option.
The `filtertime<String> <Time>` value replaces the string `#filtertime<String>#` in the `filter <String>`.
The characters following `filtertime` can be any combination of lowercase letters and numbers.
## Create a Chrome Profile command
Clear a Chrome Browser profile cache and/or cookies.
```
gam create chromeprofilecommand <ChromeProfileNameEntity>
[clearcache [<Boolean>]] [clearcookies [<Boolean>]]
[csv [todrive <ToDriveAttribute>*] [formatjson [quotechar <Character>]]]
```
By default, when a Chrome profile command is created, GAM outputs details of the command as indented keywords and values.
* `formatjson` - Display the details in JSON format.
* `csv [todrive <ToDriveAttribute>*] [formatjson [quotechar <Character>]]` - Output the details in CSV format.
## Display Chrome Profile commands
Display the status of a specific Chrome Browser profile command.
```
gam info chromeprofilecommand <ChromeProfileCommandName>
[formatjson]
```
By default, Gam displays the information as an indented list of keys and values:
* `formatjson` - Display the fields in JSON format.
Display the status of selected Chrome Browser profile commands.
```
gam show chromeprofilecommands <ChromeProfileNameEntity>
[formatjson]
```
By default, Gam displays the information as an indented list of keys and values:
* `formatjson` - Display the fields in JSON format.
```
gam print chromeprofilecommands <ChromeProfileNameEntity> [todrive <ToDriveAttribute>*]
[formatjson [quotechar <Character>]]
```
By default, Gam displays the information as columns of fields; the following option causes the output to be in JSON format:
* `formatjson` - Display the fields in JSON format.
By default, when writing CSV files, Gam uses a quote character of double quote `"`. The quote character is used to enclose columns that contain
the quote character itself, the column delimiter (comma by default) and new-line characters. Any quote characters within the column are doubled.
When using the `formatjson` option, double quotes are used extensively in the data resulting in hard to read/process output.
The `quotechar <Character>` option allows you to choose an alternate quote character, single quote for instance, that makes for readable/processable output.
`quotechar` defaults to `gam.cfg/csv_output_quote_char`. When uploading CSV files to Google, double quote `"` should be used.
### Examples
For Windows PowerShell, replace `\"` with ``` `" ```.
Clear cache and cookies for two specific Chrome profiles:
```
gam create chromeprofilecommand 4c6c0a9f-de78-4285-be86-713fca8cffff,aa03151c-7c1d-41fe-b793-5753e167ffff clearcache clearcookies
```
Display the command status for those Chrome profiles:
```
gam show chromeprofilecommand 4c6c0a9f-de78-4285-be86-713fca8cffff,aa03151c-7c1d-41fe-b793-5753e167ffff
gam print chromeprofilecommand 4c6c0a9f-de78-4285-be86-713fca8cffff,aa03151c-7c1d-41fe-b793-5753e167ffff
```
Clear cache and cookies for Chrome profiles in a CSV file named `ChromeProfiles.csv` with a column `name`:
```
gam create chromeprofilecommand select csvfile ChromeProfiles.csv:name clearcache clearcookies
```
Display the command status for those Chrome profiles:
```
gam show chromeprofilecommand select csvfile ChromeProfiles.csv:name
gam print chromeprofilecommand select csvfile ChromeProfiles.csv:name
```
Clear cache and cookies for Chrome profiles with last activity more that 60 days ago:
```
gam create chromeprofilecommand filter "lastActivityTime < \"#filtertime1#\"" filtertime1 -60d clearcache clearcookies
```
Display the command status for those Chrome profiles:
```
gam show chromeprofilecommand filter "lastActivityTime < \"#filtertime1#\"" filtertime1 -60d
gam print chromeprofilecommand filter "lastActivityTime < \"#filtertime1#\"" filtertime1 -60d
```
Clear cache and cookies for Chrome profiles with last activity more that 60 days ago:
```
gam redirect csv ./ChromeProfileCmds.csv create chromeprofilecommand filter "lastActivityTime < \"#filtertime1#\"" filtertime1 -60d clearcache clearcookies csv
```
Display the command status for those Chrome profile commands
```
gam show chromeprofilecommand commands ChromeProfileCmds.csv:name
gam print chromeprofilecommand commands ChromeProfileCmds.csv:name
```

View File

@@ -8,6 +8,7 @@
- [Create and update courses](#create-and-update-courses) - [Create and update courses](#create-and-update-courses)
- [Delete courses](#delete-courses) - [Delete courses](#delete-courses)
- [Manage course aliases](#manage-course-aliases) - [Manage course aliases](#manage-course-aliases)
- [Manage course announcements](#manage-course-announcements)
- [Manage course topics](#manage-course-topics) - [Manage course topics](#manage-course-topics)
- [Display courses](#display-courses) - [Display courses](#display-courses)
- [Display course counts](#display-course-counts) - [Display course counts](#display-course-counts)
@@ -55,6 +56,11 @@ gam user user@domain.com check|update serviceaccount
<CourseAliasEntity> ::= <CourseAliasEntity> ::=
<CourseAliasList>|<FileSelector>|<CSVFileSelector>|<CSVkmdSelector>|<CSVDataSelector> <CourseAliasList>|<FileSelector>|<CSVFileSelector>|<CSVkmdSelector>|<CSVDataSelector>
See: https://github.com/GAM-team/GAM/wiki/Collections-of-Items See: https://github.com/GAM-team/GAM/wiki/Collections-of-Items
<CourseAnnouncementContent> ::=
((text <String>)|
(textfile <FileName> [charset <Charset>])|
(gdoc <UserGoogleDoc>)|
(gcsdoc <StorageBucketObjectName>))
<CourseAnnouncementID> ::= <Number> <CourseAnnouncementID> ::= <Number>
<CourseAnnouncementIDList> ::= "<CourseAnnouncementID>(,<CourseAnnouncementID>)*" <CourseAnnouncementIDList> ::= "<CourseAnnouncementID>(,<CourseAnnouncementID>)*"
<CourseAnnouncementIDEntity> ::= <CourseAnnouncementIDEntity> ::=
@@ -389,17 +395,40 @@ These commands can process multiple courses.
gam courses <CourseEntity> add alias <CourseAliasEntity> gam courses <CourseEntity> add alias <CourseAliasEntity>
gam courses <CourseEntity> delete alias <CourseAliasEntity> gam courses <CourseEntity> delete alias <CourseAliasEntity>
``` ```
## Manage course announcements
These commands can process a single course.
```
gam course <CourseID> add announcement
<CourseAnnouncementContent> [scheduledtime <Time>] [state draft|published]
gam course <CourseID> delete announcement <CourseAnnouncementID>
gam course <CourseID> update announcement <CourseAnnouncementID>
[<CourseAnnouncementContent>] [scheduledtime <Time>] [state published]
```
These commands can process multiple courses.
```
gam courses <CourseEntity> add announcement
<CourseAnnouncementContent> [scheduledtime <Time>] [state draft|published]
gam courses <CourseEntity> delete announcement <CourseAnnouncementIDEntity>
gam courses <CourseEntity> update announcement <CourseAnnouncementIDEntity>
[<CourseAnnouncementContent>] [scheduledtime <Time>] [state published]
```
## Manage course topics ## Manage course topics
These commands can process a single course. These commands can process a single course.
``` ```
gam course <CourseID> add topic <CourseTopic> gam course <CourseID> add topic <CourseTopic>
gam course <CourseID> delete topic <CourseTopicID> gam course <CourseID> delete topic <CourseTopicID>
gam course <CourseID> update topic <CourseTopicID> <CourseTopic>
``` ```
These commands can process multiple courses. These commands can process multiple courses.
``` ```
gam courses <CourseEntity> add topic <CourseTopicEntity> gam courses <CourseEntity> add topic <CourseTopicEntity>
gam courses <CourseEntity> delete topic <CourseTopicIDEntity> gam courses <CourseEntity> delete topic <CourseTopicIDEntity>
gam courses <CourseEntity> update topic <CourseTopicIDEntity> <CourseTopic>
``` ```
## Display courses ## Display courses
``` ```
gam info course <CourseID> [owneremail] [alias|aliases] [show all|students|teachers] [countsonly] gam info course <CourseID> [owneremail] [alias|aliases] [show all|students|teachers] [countsonly]

View File

@@ -211,6 +211,7 @@ gam print devices [todrive <ToDriveAttribute>*]
[orderby <DeviceOrderByFieldName> [ascending|descending]] [orderby <DeviceOrderByFieldName> [ascending|descending]]
[all|company|personal|nocompanydevices|nopersonaldevices] [all|company|personal|nocompanydevices|nopersonaldevices]
[nodeviceusers|oneuserperrow] [nodeviceusers|oneuserperrow]
[clientstates]
[formatjson [quotechar <Character>]] [formatjson [quotechar <Character>]]
``` ```
By default, all devices are displayed; use the query options to limit the display. By default, all devices are displayed; use the query options to limit the display.

View File

@@ -1,6 +1,5 @@
# Cloud Identity Groups - Membership # Cloud Identity Groups - Membership
- [API documentation](#api-documentation) - [API documentation](#api-documentation)
- [Query documentation](#query-documentation)
- [Python Regular Expressions](Python-Regular-Expressions) Match function - [Python Regular Expressions](Python-Regular-Expressions) Match function
- [Definitions](#definitions) - [Definitions](#definitions)
- [Notes](#Notes) - [Notes](#Notes)
@@ -22,10 +21,6 @@
* [Cloud Identity Groups](https://gsuiteupdates.googleblog.com/2020/08/new-api-cloud-identity-groups-google.html) * [Cloud Identity Groups](https://gsuiteupdates.googleblog.com/2020/08/new-api-cloud-identity-groups-google.html)
* [Security Groups](https://gsuiteupdates.googleblog.com/2020/09/security-groups-beta.html) * [Security Groups](https://gsuiteupdates.googleblog.com/2020/09/security-groups-beta.html)
## Query documentation
* [Cloud Identity Groups API - Search Dynamic Groups](https://cloud.google.com/identity/docs/reference/rest/v1/groups#dynamicgroupquery)
* [Member Restrictions](https://cloud.google.com/identity/docs/reference/rest/v1/SecuritySettings#MemberRestriction)
## Notes ## Notes
In the Admin Directory API a group has the following characteristics: In the Admin Directory API a group has the following characteristics:
@@ -45,7 +40,7 @@ Dynamic Groups require Cloud Identity Premium accounts.
* https://cloud.google.com/identity/docs/how-to/create-dynamic-groups * https://cloud.google.com/identity/docs/how-to/create-dynamic-groups
The `cimember <UserItem>` option of `gam print|show cigroup-members` requires a Google Workspace Enterprise Standard, Enterprise Plus, and Enterprise for Education; The `cimember <UserItem>` option of `gam print|show cigroup-members` requires a Google Workspace Enterprise Standard, Enterprise Plus, and Enterprise for Education;
and Cloud Identity Premium accounts. Unfortunately, even if you have the required account, the API call that supports the query doesn't work. and Cloud Identity Premium accounts.
* https://cloud.google.com/identity/docs/reference/rest/v1/groups.memberships/searchTransitiveGroups * https://cloud.google.com/identity/docs/reference/rest/v1/groups.memberships/searchTransitiveGroups

View File

@@ -19,8 +19,10 @@
* [Security Groups](https://gsuiteupdates.googleblog.com/2020/09/security-groups-beta.html) * [Security Groups](https://gsuiteupdates.googleblog.com/2020/09/security-groups-beta.html)
## Query documentation ## Query documentation
* [Cloud Identity Groups API - Search Dynamic Groups](https://cloud.google.com/identity/docs/reference/rest/v1/groups#dynamicgroupquery) * [Cloud Identity Groups API - Search](https://cloud.google.com/identity/docs/reference/rest/v1/groups/search)
* [Member REstrictions](https://cloud.google.com/identity/docs/reference/rest/v1/SecuritySettings#MemberRestriction) * [Cloud Identity Groups API - Dynamic Group Query](https://cloud.google.com/identity/docs/reference/rest/v1/groups#dynamicgroupquery)
* [Dynamic Groups Member Attributes](https://cloud.google.com/identity/docs/how-to/dynamic-groups-attributes)
* [Member Restrictions](https://cloud.google.com/identity/docs/reference/rest/v1/SecuritySettings#MemberRestriction)
## Notes ## Notes
@@ -50,7 +52,7 @@ Dynamic Groups require Cloud Identity Premium accounts.
* https://cloud.google.com/identity/docs/how-to/create-dynamic-groups * https://cloud.google.com/identity/docs/how-to/create-dynamic-groups
The `cimember <UserItem>` option of `gam print cigroups` requires a Google Workspace Enterprise Standard, Enterprise Plus, and Enterprise for Education; The `cimember <UserItem>` option of `gam print cigroups` requires a Google Workspace Enterprise Standard, Enterprise Plus, and Enterprise for Education;
and Cloud Identity Premium accounts. Unfortunately, even if you have the required account, the API call that supports the query doesn't work. and Cloud Identity Premium accounts.
* https://cloud.google.com/identity/docs/reference/rest/v1/groups.memberships/searchTransitiveGroups * https://cloud.google.com/identity/docs/reference/rest/v1/groups.memberships/searchTransitiveGroups

View File

@@ -12,14 +12,28 @@
## Notes ## Notes
To use these commands you must update your client access authentication. To use these commands you must update your client access authentication.
You'll enter 19R to turn on the Cloud Identity Policy scope; then continue You'll enter 20r to turn on the Cloud Identity Policy scope; then continue
with authentication. with authentication.
``` ```
gam oauth delete gam oauth delete
gam oauth create gam oauth create
... ...
[R] 19) Cloud Identity - Policy [R] 20) Cloud Identity - Policy (supports readonly)
``` ```
You must enable access to policies in the GCP cloud console.
* Login at console.cloud.google.com
* In the upper left click the three lines to the left of Google Cloud and select IAM & Admin
* Under IAM & Admin select IAM
* Click in the box to the right of Google Cloud
* Click the three dots at the right and select IAM/Permissions
* Now you should be at "Permissions for organization ..."
* Click on Grant Access
* Enter the GAM project creator address in Principals
* Click in the Select a role box
* Type orgpolicy.policyAdmin in the Filter box
* Click Organization Policy Administrator
* Click Save
## Definitions ## Definitions
``` ```

View File

@@ -144,6 +144,11 @@ Data fields identified in a `csvkmd` argument.
<CalendarACLScopeList> | <FileSelector> | <CSVFileSelector> | <CSVkmdSelector> | <CSVDataSelector> <CalendarACLScopeList> | <FileSelector> | <CSVFileSelector> | <CSVkmdSelector> | <CSVDataSelector>
<CalendarEntity> ::= <CalendarEntity> ::=
<CalendarList> | <FileSelector> | <CSVFileSelector> | <CSVkmdSelector> | <CSVDataSelector> <CalendarList> | <FileSelector> | <CSVFileSelector> | <CSVkmdSelector> | <CSVDataSelector>
<ChromeProfileNameEntity> ::=
<ChromeProfileNameList> |
(select <FileSelector>|<CSVFileSelector>) |
(filter <String> (filtertime<String> <Time>)* [orderby <ChromeProfileOrderByFieldName> [ascending|descending]]) |
(commands <ChromeProfileCommandNameList>|<FileSelector>|<CSVFileSelector>)
<CIPolicyNameEntity> ::= <CIPolicyNameEntity> ::=
<CIPolicyNameList> | <FileSelector> | <CSVFileSelector> <CIPolicyNameList> | <FileSelector> | <CSVFileSelector>
<ClassificationLabelNameEntity> ::= <ClassificationLabelNameEntity> ::=
@@ -206,6 +211,7 @@ Data fields identified in a `csvkmd` argument.
all_shortcuts | all_shortcuts |
all_3p_shortcuts | all_3p_shortcuts |
all_items | all_items |
my_commentable_items |
my_docs | my_docs |
my_files | my_files |
my_folders | my_folders |
@@ -231,6 +237,7 @@ Data fields identified in a `csvkmd` argument.
others_3p_shortcuts | others_3p_shortcuts |
others_items | others_items |
writable_files writable_files
<DriveFileEntityShortcut> ::= <DriveFileEntityShortcut> ::=
alldrives | alldrives |
mydrive_any | mydrive_any |
@@ -246,6 +253,7 @@ Data fields identified in a `csvkmd` argument.
sharedwithme_all | sharedwithme_all |
sharedwithme_mydrive | sharedwithme_mydrive |
sharedwithme_notmydrive sharedwithme_notmydrive
<DriveFileEntity> ::= <DriveFileEntity> ::=
<DriveFileIDEntity> | <DriveFileIDEntity> |
<DriveFileNameEntity> | <DriveFileNameEntity> |
@@ -343,6 +351,15 @@ Data fields identified in a `csvkmd` argument.
<SiteACLScopeList> | <FileSelector> | <CSVFileSelector> | <CSVkmdSelector> | <CSVDataSelector> <SiteACLScopeList> | <FileSelector> | <CSVFileSelector> | <CSVkmdSelector> | <CSVDataSelector>
<SiteEntity> ::= <SiteEntity> ::=
<SiteList> | <FileSelector> | <CSVFileSelector> | <CSVkmdSelector> | <CSVDataSelector> <SiteList> | <FileSelector> | <CSVFileSelector> | <CSVkmdSelector> | <CSVDataSelector>
<TagManagerAccountPathEntity> ::=
<TagManagerAccountPathList> |
(select <FileSelector>|<CSVFileSelector>) |
<TagManagerContainerPathEntity> ::=
<TagManagerContainerPathList> |
(select <FileSelector>|<CSVFileSelector>) |
<TagManagerWorkspacePathEntity> ::=
<TagManagerWorkspacePathList> |
(select <FileSelector>|<CSVFileSelector>) |
<TasklistEntity> ::= <TasklistEntity> ::=
<TasklistIDList> | <TaskListTitleList> | <FileSelector> | <CSVFileSelector> <TasklistIDList> | <TaskListTitleList> | <FileSelector> | <CSVFileSelector>
<TasklistIDTaskIDEntity> ::= <TasklistIDTaskIDEntity> ::=

View File

@@ -308,12 +308,3 @@ the quote character itself, the column delimiter (comma by default) and new-line
When using the `formatjson` option, double quotes are used extensively in the data resulting in hard to read/process output. When using the `formatjson` option, double quotes are used extensively in the data resulting in hard to read/process output.
The `quotechar <Character>` option allows you to choose an alternate quote character, single quote for instance, that makes for readable/processable output. The `quotechar <Character>` option allows you to choose an alternate quote character, single quote for instance, that makes for readable/processable output.
`quotechar` defaults to `gam.cfg/csv_output_quote_char`. When uploading CSV files to Google, double quote `"` should be used. `quotechar` defaults to `gam.cfg/csv_output_quote_char`. When uploading CSV files to Google, double quote `"` should be used.
## Display global address list
As of mid-October 2024, Google deprecated the API that retrieved the Global Address List.
These commands are a work-around.
```
gam config csv_output_row_filter "includeInGlobalAddressList:boolean:true" redirect csv ./UserGAL.csv print users fields name,gal
gam config csv_output_row_filter "includeInGlobalAddressList:boolean:true" batch_size 25 redirect csv ./GroupGAL.csv print groups fields name,gal
```

View File

@@ -33,6 +33,7 @@ ENTITY_IS_A_GROUP_RC = 22
ENTITY_IS_A_GROUP_ALIAS_RC = 23 ENTITY_IS_A_GROUP_ALIAS_RC = 23
ENTITY_IS_AN_UNMANAGED_ACCOUNT_RC = 24 ENTITY_IS_AN_UNMANAGED_ACCOUNT_RC = 24
ORGUNIT_NOT_EMPTY_RC = 25 ORGUNIT_NOT_EMPTY_RC = 25
USER_SUSPENDED_RC = 26
CHECK_USER_GROUPS_ERROR_RC = 29 CHECK_USER_GROUPS_ERROR_RC = 29
ORPHANS_COLLECTED_RC = 30 ORPHANS_COLLECTED_RC = 30
# Warnings/Errors # Warnings/Errors

View File

@@ -10,6 +10,163 @@ Add the `-s` option to the end of the above commands to suppress creating the `g
See [Downloads-Installs-GAM7](https://github.com/GAM-team/GAM/wiki/Downloads-Installs) for Windows or other options, including manual installation See [Downloads-Installs-GAM7](https://github.com/GAM-team/GAM/wiki/Downloads-Installs) for Windows or other options, including manual installation
### 7.14.03
Fixed bug in `gam print cigroup-members includederivedmembership` that caused a trap.
### 7.14.02
Fixed bug in `gam print|show cigroups|cigroups-members cimember <UserItem>` that generated the following error:
```
Cloud Identity Group Print Failed: Request contains an invalid argument.
```
### 7.14.01
Don't install yubikey library via pip by default. To install with yubikey support use pip install gam7[yubikey]
### 7.14.00
Added commands to display Google Tag Manager accounts, containers, workspaces, tags and user permissions.
* See: https://github.com/GAM-team/GAM/wiki/Users-Tag-Manager
### 7.13.03
Added option `csv [todrive <ToDriveAttribute>*] [formatjson [quotechar <Character>]]]`
to `gam create chromeprofilecommand` so that command details are displayed in CSV format.
Added option `commands <ChromeProfileCommandNameList>|<FileSelector>|<CSVFileSelector>` to `<ChromeProfileNameEntity>`
so that `gam print|show chromeprofilecommands` can directly display the commands generated by
`gam create chromeprofilecommand` with the `csv` option.
### 7.13.02
Fixed bug in `gam create chromeprofilecommand` where `select|filter` were not recognized.
Updated `gam create datatransfer <OldOwnerID> datastudio <NewOwnerID>` that generated the following
error due to an unhandled API change.
```
ERROR: Invalid choice (google data studio): Expected <calendar|looker studio|drive and docs>
```
### 7.13.01
Enhanced `gam create|print|show chromeprofilecommand` to allow specification
of multiple Chrome browser profiles rather than just one.
```
<ChromeProfilePermanentID> ::= <String>
<ChromeProfileName> ::= customers/<CustomerID>/profiles/<ChromeProfilePermanentID> | <ChromeProfilePermanentID>
<ChromeProfileNameList> ::= "<ChromeProfileName>(,<ChromeProfileName>)*"
<ChromeProfileNameEntity> ::=
<ChromeProfileNameEntity> ::=
<ChromeProfileNameList> |
(select <FileSelector>|<CSVFileSelector>) |
(filter <String> (filtertime<String> <Time>)* [orderby <ChromeProfileOrderByFieldName> [ascending|descending]])
gam create|print_show chromeprofilecommand <ChromeProfileNameEntity>
```
### 7.13.00
Added commands that send remote commands to Chrome browser profiles and display the results;
at the moment, these commands can clear the browser cache and cookies.
* See: https://github.com/GAM-team/GAM/wiki/Chrome-Profile-Management#create-a-chrome-profile-command
### 7.12.02
Updated `gam print users` to handle the following error:
```
ERROR: 503: serviceNotAvailable - The service is currently unavailable
```
### 7.12.01
Added support for `plan free` in `gam create resoldsubscription`.
* The free plan is exclusive to the Cloud Identity SKU and does not incur any billing.
### 7.12.00
Started updated handling of missing scopes messages in client access commands;
this is a work in progress.
Updated `gam info|show shareddrive` to handle changes in the Drive API that caused traps.
Added `downloadrestrictedforreaders` and `downloadrestrictedforwriters` to
`<SharedDriveRestrictionsSubfieldName>` to support new Shared Drive restrictions.
Updated `gam course <CourseID> create|update announcement` to accept input from
a literal string, a file or a Google Doc.
```
<CourseAnnouncementContent> ::=
((text <String>)|
(textfile <FileName> [charset <Charset>])|
(gdoc <UserGoogleDoc>)|
(gcsdoc <StorageBucketObjectName>))
```
Added command `gam check suspended <UserItem>` that checks the suspension status of a user
and sets the return code to 0 if the user is not suspended or 26 if it is.
```
$ gam check suspended testok@domain.com
User: testok@domain.com, Account Suspended: False
$ echo $?
0
$ gam check suspended testsusp@domain.com
User: testsusp@domain.com, Account Suspended: True, Suspension Reason: ADMIN
$ echo $?
26
```
Updated `gam <UserTypeEntity> sendemail` to verify that one of `recipient|to|from`
immediately follows `sendemail`.
### 7.11.00
Added commands to manage classroom/course announcements.
* See: https://github.com/GAM-team/GAM/wiki/Classroom-Courses#manage-course-announcements
Upgraded to OpenSSL 3.5.1.
### 7.10.10
Added choices `text` and `hyperlink` to option `showwebviewlink` in `gam [<UserTypeEntity>] print|show shareddrives`.
* `showwebviewlink text` - Displays `https://drive.google.com/drive/folders/<SharedDriveID>`
* `showwebviewlink hyperlink` - Displays `=HYPERLINK("https://drive.google.com/drive/folders/<SharedDriveID>", "<SharedDriveName>")`
### 7.10.09
Added option `showwebviewlink` to `gam [<UserTypeEntity>] print|show shareddrives` that
displays the web view link for the Shared Drive: `https://drive.google.com/drive/folders/<SharedDriveID>`.
### 7.10.08
Fixed bug in commands that modify messages where the `labelids <LabelIdList>` option
could not be used unless one of these options was also specified: `query`, `matchlabel`, `ids`;
it can be now be used by itself.
### 7.10.07
Updated `gam <UserTypeEntity> copy|move drivefile` to hanndle additional instances of
the `cannotModifyInheritedPermission` error.
Added license SKU `Google AI Ultra for Business`
* ProductID - 101047
* SKUID - 1010470008 | geminiultra
### 7.10.06
Added option `clientstates` to `gam print devices` to include client states in device output.
### 7.10.05
Google renamed an error: `cannotModifyInheritedTeamDrivePermission` became `cannotModifyInheritedPermission`.
GAM will now handle the new error.
### 7.10.04 ### 7.10.04
Updated `gam report <ActivityApplicationName>` to accept accept application names as defined Updated `gam report <ActivityApplicationName>` to accept accept application names as defined

View File

@@ -0,0 +1,17 @@
# Global Address List
As of mid-October 2024, Google deprecated the API that retrieved the Global Address List.
These commands are a work-around.
Display users/groups in GAL.
```
gam config csv_output_row_filter "includeInGlobalAddressList:boolean:true" redirect csv ./UserGAL.csv print users fields name,gal
gam config csv_output_row_filter "includeInGlobalAddressList:boolean:true" batch_size 25 redirect csv ./GroupGAL.csv print groups fields name,gal
```
Display users/groups not in GAL.
```
gam config csv_output_row_filter "includeInGlobalAddressList:boolean:false" redirect csv ./UserNotGAL.csv print users fields name,gal
gam config csv_output_row_filter "includeInGlobalAddressList:boolean:false" batch_size 25 redirect csv ./GroupNotGAL.csv print groups fields name,gal
```

View File

@@ -13,8 +13,7 @@
``` ```
<DataTransferService> ::= <DataTransferService> ::=
calendar| calendar|
currents| datastudio|lookerstudio|"looker studio"|
datastudio|lookerstudio|"google data studio"|
drive|gdrive|googledrive|"drive and docs" drive|gdrive|googledrive|"drive and docs"
<DataTransferServiceList> ::= "<DataTransferService>(,<DataTransferService>)*" <DataTransferServiceList> ::= "<DataTransferService>(,<DataTransferService>)*"
@@ -38,7 +37,7 @@ gam create|add datatransfer|transfer <OldOwnerID> <DataTransferServiceList> <New
(<ParameterKey> <ParameterValue>)* (<ParameterKey> <ParameterValue>)*
[wait <Integer> <Integer>] [wait <Integer> <Integer>]
``` ```
For`datastudio` and `drive`, there are options to control the privacy level of the files to be transferred. For`lookerstudio` and `drive`, there are options to control the privacy level of the files to be transferred.
* `private` or `privacy_level private` - Transfer files that are not shared with anyone * `private` or `privacy_level private` - Transfer files that are not shared with anyone
* `shared` or `privacy_level shared` - Transfer files shared with at least one other user; this is the **default** * `shared` or `privacy_level shared` - Transfer files shared with at least one other user; this is the **default**
* `all` or `privacy_level private,shared` - Transfer all files * `all` or `privacy_level private,shared` - Transfer all files

View File

@@ -251,7 +251,7 @@ writes the credentials into the file oauth2.txt.
admin@server:/Users/admin$ rm -f /Users/admin/GAMConfig/oauth2.txt admin@server:/Users/admin$ rm -f /Users/admin/GAMConfig/oauth2.txt
admin@server:/Users/admin$ gam version admin@server:/Users/admin$ gam version
WARNING: Config File: /Users/admin/GAMConfig/gam.cfg, Section: DEFAULT, Item: oauth2_txt, Value: /Users/admin/GAMConfig/oauth2.txt, Not Found WARNING: Config File: /Users/admin/GAMConfig/gam.cfg, Section: DEFAULT, Item: oauth2_txt, Value: /Users/admin/GAMConfig/oauth2.txt, Not Found
GAM 7.10.04 - https://github.com/GAM-team/GAM - pyinstaller GAM 7.14.03 - https://github.com/GAM-team/GAM - pyinstaller
GAM Team <google-apps-manager@googlegroups.com> GAM Team <google-apps-manager@googlegroups.com>
Python 3.13.5 64-bit final Python 3.13.5 64-bit final
MacOS Sequoia 15.5 x86_64 MacOS Sequoia 15.5 x86_64
@@ -989,7 +989,7 @@ writes the credentials into the file oauth2.txt.
C:\>del C:\GAMConfig\oauth2.txt C:\>del C:\GAMConfig\oauth2.txt
C:\>gam version C:\>gam version
WARNING: Config File: C:\GAMConfig\gam.cfg, Section: DEFAULT, Item: oauth2_txt, Value: C:\GAMConfig\oauth2.txt, Not Found WARNING: Config File: C:\GAMConfig\gam.cfg, Section: DEFAULT, Item: oauth2_txt, Value: C:\GAMConfig\oauth2.txt, Not Found
GAM 7.10.04 - https://github.com/GAM-team/GAM - pythonsource GAM 7.14.03 - https://github.com/GAM-team/GAM - pythonsource
GAM Team <google-apps-manager@googlegroups.com> GAM Team <google-apps-manager@googlegroups.com>
Python 3.13.5 64-bit final Python 3.13.5 64-bit final
Windows-10-10.0.17134 AMD64 Windows-10-10.0.17134 AMD64

View File

@@ -1,20 +1,14 @@
# Install GAM as Python Library # Install GAM as Python Library
Thanks to Jay Lee for showing me how to do this.
On Windows, you need to install Git to use the pip command.
* See: https://pythoninoffice.com/python-pip-install-from-github/
Scroll down to Install Git
You can install GAM as a Python library with pip. You can install GAM as a Python library with pip.
``` ```
pip install git+https://github.com/GAM-team/GAM.git#subdirectory=src pip install gam7
``` ```
Or as a PEP 508 Requirement Specifier, e.g. in requirements.txt file: Or as a PEP 508 Requirement Specifier, e.g. in requirements.txt file:
``` ```
advanced-gam-for-google-workspace @ git+https://github.com/GAM-team/GAM.git#subdirectory=src gam7
``` ```
Or a pyproject.toml file: Or a pyproject.toml file:
@@ -23,13 +17,13 @@ Or a pyproject.toml file:
name = "your-project" name = "your-project"
# ... # ...
dependencies = [ dependencies = [
"advanced-gam-for-google-workspace @ git+https://github.com/GAM-team/GAM.git#subdirectory=src" "gam7"
] ]
``` ```
Target a specific revision or tag: Target a specific version:
``` ```
advanced-gam-for-google-workspace @ git+https://github.com/GAM-team/GAM.git@v6.76.01#subdirectory=src gam7==/7.13.3
``` ```
## Using the library ## Using the library

View File

@@ -62,6 +62,7 @@
| Gemini Education | 1010470004 | geminiedu | | Gemini Education | 1010470004 | geminiedu |
| Gemini Education Premium | 1010470005 | geminiedupremium | | Gemini Education Premium | 1010470005 | geminiedupremium |
| Gemini Enterprise | 1010470001 | geminient | duetai | | Gemini Enterprise | 1010470001 | geminient | duetai |
| Google AI Ultra for Business | 1010470008 | geminiultra |
| Google Apps Message Security | Google-Apps-For-Postini | postini | | Google Apps Message Security | Google-Apps-For-Postini | postini |
| Google Chrome Device Management | Google-Chrome-Device-Management | cdm | | Google Chrome Device Management | Google-Chrome-Device-Management | cdm |
| Google Drive Storage 16TB | Google-Drive-storage-16TB | 16tb | | Google Drive Storage 16TB | Google-Drive-storage-16TB | 16tb |

View File

@@ -11,6 +11,8 @@
<CalendarACLScopeList> ::= "<CalendarACLScope>(,<CalendarACLScope>)*" <CalendarACLScopeList> ::= "<CalendarACLScope>(,<CalendarACLScope>)*"
<CalendarList> ::= "<CalendarItem>(,<CalendarItem>)*" <CalendarList> ::= "<CalendarItem>(,<CalendarItem>)*"
<ChatSpaceList> ::= "<ChatSpace>(,<ChatSpace>)*" <ChatSpaceList> ::= "<ChatSpace>(,<ChatSpace>)*"
<ChromeProfileNameList> ::= "<ChromeProfileName>(,<ChromeProfileName>)*"
<ChromeProfileCommandNameList> ::= "<ChromeProfileCommandName>(,<ChromeProfileCommandName>)*"
<CIGroupAliasList> ::= "<CIGroupAlias>(,<CIGroupAlias>)*" <CIGroupAliasList> ::= "<CIGroupAlias>(,<CIGroupAlias>)*"
<CIGroupMemberTypeList> ::= "<CIGroupMemberType>(,<CIGroupMemberType>)*" <CIGroupMemberTypeList> ::= "<CIGroupMemberType>(,<CIGroupMemberType>)*"
<CIPolicyNameList> ::= "<CIPolicyName>(,<CIPolicyName>)*" <CIPolicyNameList> ::= "<CIPolicyName>(,<CIPolicyName>)*"
@@ -96,6 +98,9 @@
<SharedDriveACLRoleList> ::= "<SharedDriveACLRole>(,<SharedDriveACLRole>)*" <SharedDriveACLRoleList> ::= "<SharedDriveACLRole>(,<SharedDriveACLRole>)*"
<SharedDriveIDList> ::= "<SharedDriveID>(,<SharedDriveID>)*" <SharedDriveIDList> ::= "<SharedDriveID>(,<SharedDriveID>)*"
<StringList> ::= "<String>(,<String>)*" <StringList> ::= "<String>(,<String>)*"
<TagManagerAccountPathList> ::= "<TagManagerAccountPath>(,<TagManagerAccountPath>)*"
<TagManagerContainerPathList> ::= "<TagManagerContainerPath>(,<TagManagerContainerPath>)*"
<TagManagerWorkspacePathList> ::= "<TagManagerWorkspacePath>(,<TagManagerWorkspacePath>)*"
<TasklistIDList> ::= "<TasklistID>(,<TasklistID>)*" <TasklistIDList> ::= "<TasklistID>(,<TasklistID>)*"
<TasklistTitleList> ::= "'<TasklistTitle>'(,'<TasklistTitle>')*" <TasklistTitleList> ::= "'<TasklistTitle>'(,'<TasklistTitle>')*"
<TasklistIDTaskIDList> ::= "<TasklistIDTaskID>(,<TasklistIDTaskID>)*" <TasklistIDTaskIDList> ::= "<TasklistIDTaskID>(,<TasklistIDTaskID>)*"

View File

@@ -68,7 +68,7 @@ gam report <ActivityApplicationName> [todrive <ToDriveAttribute>*]
[(user all|<UserItem>)|(orgunit|org|ou <OrgUnitPath> [showorgunit])|(select <UserTypeEntity>)] [(user all|<UserItem>)|(orgunit|org|ou <OrgUnitPath> [showorgunit])|(select <UserTypeEntity>)]
[([start <Time>] [end <Time>])|(range <Time> <Time>)| [([start <Time>] [end <Time>])|(range <Time> <Time>)|
yesterday|today|thismonth|(previousmonths <Integer>)] yesterday|today|thismonth|(previousmonths <Integer>)]
[filtertime<String> <Time>] [filter|filters <String>] [filter <String> (filtertime<String> <Time>)*]
[event|events <EventNameList>] [ip <String>] [event|events <EventNameList>] [ip <String>]
[groupidfilter <String>] [groupidfilter <String>]
[maxactivities <Number>] [maxevents <Number>] [maxresults <Number>] [maxactivities <Number>] [maxevents <Number>] [maxresults <Number>]
@@ -363,7 +363,7 @@ gam report users|user [todrive <ToDriveAttribute>*]
[(date <Date>)|(range <Date> <Date>)| [(date <Date>)|(range <Date> <Date>)|
yesterday|today|thismonth|(previousmonths <Integer>)] yesterday|today|thismonth|(previousmonths <Integer>)]
[(nodatechange | limitdatechanges <Integer>) | (fulldatarequired all|<UserServiceNameList>)] [(nodatechange | limitdatechanges <Integer>) | (fulldatarequired all|<UserServiceNameList>)]
[filtertime<String> <Time>] [filter|filters <String>] [filter <String> (filtertime<String> <Time>)*]
[(fields|parameters <String>)|(services <UserServiceNameList>)] [(fields|parameters <String>)|(services <UserServiceNameList>)]
[aggregatebydate|aggregatebyuser [Boolean]] [aggregatebydate|aggregatebyuser [Boolean]]
[maxresults <Number>] [maxresults <Number>]
@@ -413,7 +413,7 @@ where you can specify a relative date without having to change the script.
For example, filter for last logins more that 60 days ago. For example, filter for last logins more that 60 days ago.
``` ```
filtertime60d -60d filters "accounts:last_login_time<#filtertime60d#" filters "accounts:last_login_time<#filtertime60d#" filtertime60d -60d
``` ```
Select the fields/parameters to display. Select the fields/parameters to display.

View File

@@ -135,7 +135,7 @@ By default, Gam displays the information as an indented list of keys and values.
## Manage Resold Subscriptions ## Manage Resold Subscriptions
``` ```
gam create resoldsubscription <CustomerID> (sku <SKUID>) gam create resoldsubscription <CustomerID> (sku <SKUID>)
(plan annual_monthly_pay|annual_yearly_pay|flexible|trial) (plan annual_monthly_pay|annual_yearly_pay|flexible|trial|free)
(seats <Number>) (seats <Number>)
[customer_auth_token <String>] [deal <String>] [purchaseorderid <String>] [customer_auth_token <String>] [deal <String>] [purchaseorderid <String>]
gam update resoldsubscription <CustomerID> <SKUID> gam update resoldsubscription <CustomerID> <SKUID>

View File

@@ -390,14 +390,14 @@ gam delete building <BuildingID>
gam info building <BuildingID> gam info building <BuildingID>
[formatjson] [formatjson]
gam show buildings gam show buildings
[allfields|<BuildingFildName>*|(fields <BuildingFieldNameList>)] [allfields|<BuildingFieldName>*|(fields <BuildingFieldNameList>)]
[formatjson] [formatjson]
``` ```
By default, Gam displays the information as an indented list of keys and values. By default, Gam displays the information as an indented list of keys and values.
* `formatjson` - Display the fields in JSON format. * `formatjson` - Display the fields in JSON format.
``` ```
gam print buildings [todrive <ToDriveAttribute>*] gam print buildings [todrive <ToDriveAttribute>*]
[allfields|<BuildingFildName>*|(fields <BuildingFieldNameList>)] [allfields|<BuildingFieldName>*|(fields <BuildingFieldNameList>)]
[delimiter <Character>] [formatjson [quotechar <Character>]] [delimiter <Character>] [formatjson [quotechar <Character>]]
``` ```
By default, Gam displays the information as columns of fields; the following option causes the output to be in JSON format, By default, Gam displays the information as columns of fields; the following option causes the output to be in JSON format,

View File

@@ -45,6 +45,8 @@
* [Shared Drives Search](https://developers.google.com/drive/api/guides/search-shareddrives) * [Shared Drives Search](https://developers.google.com/drive/api/guides/search-shareddrives)
## Definitions ## Definitions
* [`<FileSelector> | <CSVFileSelector>`](Collections-of-Items)
``` ```
<ColorHex> ::= "#<Hex><Hex><Hex><Hex><Hex><Hex>" <ColorHex> ::= "#<Hex><Hex><Hex><Hex><Hex><Hex>"
<ColorNameGoogle> ::= <ColorNameGoogle> ::=
@@ -180,6 +182,7 @@
createdtime| createdtime|
id| id|
name| name|
restrictions|
themeid themeid
<SharedDriveFieldNameList> ::= "<SharedDriveFieldName>(,<SharedDriveFieldName>)*" <SharedDriveFieldNameList> ::= "<SharedDriveFieldName>(,<SharedDriveFieldName>)*"
@@ -200,6 +203,8 @@
allowcontentmanagerstosharefolders| allowcontentmanagerstosharefolders|
copyrequireswriterpermission| copyrequireswriterpermission|
domainusersonly| domainusersonly|
downloadrestrictedforreaders|
downloadrestrictedforwriters|
drivemembersonly|teammembersonly| drivemembersonly|teammembersonly|
sharingfoldersrequiresorganizerpermission sharingfoldersrequiresorganizerpermission
@@ -372,26 +377,38 @@ By default, Gam displays the information as an indented list of keys and values.
gam [<UserTypeEntity>] show shareddrives gam [<UserTypeEntity>] show shareddrives
[adminaccess|asadmin] [teamdriveadminquery|query <QueryTeamDrive>] [adminaccess|asadmin] [teamdriveadminquery|query <QueryTeamDrive>]
[matchname <REMatchPattern>] [orgunit|org|ou <OrgUnitPath>] [matchname <REMatchPattern>] [orgunit|org|ou <OrgUnitPath>]
[fields <SharedDriveFieldNameList>] [formatjson] [fields <SharedDriveFieldNameList>]
[showwebviewlink text|hyperlink]
[formatjson]
``` ```
By default, all Shared Drives are displayed; use the following options to select a subset of Shared Drives: By default, all Shared Drives are displayed; use the following options to select a subset of Shared Drives:
* `teamdriveadminquery|query <QueryTeamDrive>` - Use a query to select Shared Drives * `teamdriveadminquery|query <QueryTeamDrive>` - Use a query to select Shared Drives
* `matchname <REMatchPattern>` - Retrieve Shared Drives with names that match a pattern. * `matchname <REMatchPattern>` - Retrieve Shared Drives with names that match a pattern.
* `orgunit|org|ou <OrgUnitPath>` - Only Shared Drives in the specified Org Unit are selected * `orgunit|org|ou <OrgUnitPath>` - Only Shared Drives in the specified Org Unit are selected
Use option `showwebviewlink` to display the web view link for the Shared Drive.
* `showwebviewlink text` - Displays `https://drive.google.com/drive/folders/<SharedDriveID>`
* `showwebviewlink hyperlink` - Dsiplays `=HYPERLINK("https://drive.google.com/drive/folders/<SharedDriveID>", "<SharedDriveName>")`
By default, Gam displays the information as an indented list of keys and values. By default, Gam displays the information as an indented list of keys and values.
* `formatjson` - Display the fields in JSON format. * `formatjson` - Display the fields in JSON format.
``` ```
gam [<UserTypeEntity>] print shareddrives [todrive <ToDriveAttribute>*] gam [<UserTypeEntity>] print shareddrives [todrive <ToDriveAttribute>*]
[adminaccess|asadmin] [teamdriveadminquery|query <QueryTeamDrive>] [adminaccess|asadmin] [teamdriveadminquery|query <QueryTeamDrive>]
[matchname <REMatchPattern>] [orgunit|org|ou <OrgUnitPath>] [matchname <REMatchPattern>] [orgunit|org|ou <OrgUnitPath>]
[fields <SharedDriveFieldNameList>] [formatjson [quotechar <Character>]] [fields <SharedDriveFieldNameList>]
[showwebviewlink text|hyperlink]
[formatjson [quotechar <Character>]]
``` ```
By default, all Shared Drives are displayed; use the following options to select a subset of Shared Drives: By default, all Shared Drives are displayed; use the following options to select a subset of Shared Drives:
* `teamdriveadminquery|query <QueryTeamDrive>` - Use a query to select Shared Drives * `teamdriveadminquery|query <QueryTeamDrive>` - Use a query to select Shared Drives
* `matchname <REMatchPattern>` - Retrieve Shared Drives with names that match a pattern. * `matchname <REMatchPattern>` - Retrieve Shared Drives with names that match a pattern.
* `orgunit|org|ou <OrgUnitPath>` - Only Shared Drives in the specified Org Unit are selected * `orgunit|org|ou <OrgUnitPath>` - Only Shared Drives in the specified Org Unit are selected
Use option `showwebviewlink` to display the web view link for the Shared Drive.
* `showwebviewlink text` - Displays `https://drive.google.com/drive/folders/<SharedDriveID>`
* `showwebviewlink hyperlink` - Dsiplays `=HYPERLINK("https://drive.google.com/drive/folders/<SharedDriveID>", "<SharedDriveName>")`
By default, Gam displays the information as columns of fields; the following option causes the output to be in JSON format, By default, Gam displays the information as columns of fields; the following option causes the output to be in JSON format,
* `formatjson` - Display the fields in JSON format. * `formatjson` - Display the fields in JSON format.

View File

@@ -1723,9 +1723,9 @@ User,Owner,id,name,ownedByMe,trashed,explicitlyTrashed,directFileCount,directFil
user@domain.com,user@domain.com,012YenC8f12ALUk9PVA,My Drive,,False,False,100,138212,24,167,189598,79,-1,My Drive user@domain.com,user@domain.com,012YenC8f12ALUk9PVA,My Drive,,False,False,100,138212,24,167,189598,79,-1,My Drive
user@domain.com,user@domain.com,Trash,Trash,,True,True,0,0,1,3,3072,9,-1,Trash user@domain.com,user@domain.com,Trash,Trash,,True,True,0,0,1,3,3072,9,-1,Trash
$ gam redirect csv ./MyDriveUsage.csv user user@domain.com print diskusage shareddriveid 0AL5LiIe4dqxZUk9PVA show summaryandtrash $ gam redirect csv ./SharedDriveUsage.csv user user@domain.com print diskusage shareddriveid 0AL5LiIe4dqxZUk9PVA show summaryandtrash
User: user@domain.com, Print 1 Drive Disk Usage User: user@domain.com, Print 1 Drive Disk Usage
$ more MyDriveUsage.csv $ more SharedDriveUsage.csv
User,id,name,trashed,explicitlyTrashed,directFileCount,directFileSize,directFolderCount,totalFileCount,totalFileSize,totalFolderCount,depth,path User,id,name,trashed,explicitlyTrashed,directFileCount,directFileSize,directFolderCount,totalFileCount,totalFileSize,totalFolderCount,depth,path
user@domain.com,0125LiIe4dqxZUk9PVA,TS Shared Drive 1,False,False,16,6144,7,42,73799,25,-1,SharedDrives/TS Shared Drive 1 user@domain.com,0125LiIe4dqxZUk9PVA,TS Shared Drive 1,False,False,16,6144,7,42,73799,25,-1,SharedDrives/TS Shared Drive 1
user@domain.com,Trash,Trash,True,True,1,1024,0,1,1024,0,-1,Trash user@domain.com,Trash,Trash,True,True,1,1024,0,1,1024,0,-1,Trash

View File

@@ -214,6 +214,12 @@ The option `updatesheetprotectedranges` only applies to items in `<DriveFileEnti
* ACLs with role reader or commenter will be removed from existing protected ranges * ACLs with role reader or commenter will be removed from existing protected ranges
* ACLs with role writer or higher will be added to existing protected ranges * ACLs with role writer or higher will be added to existing protected ranges
`
`enforceexpansiveaccess` defaults to the value of `gam.cfg/enforce_expansive_access` that controls
the ability to update inherited ACLs.
* False - Inherited ACLs can be updated
* True = Inherited ACLs can not be updated
By default, the file ID is displayed in the output; to see the file name, use the `showtitles` By default, the file ID is displayed in the output; to see the file name, use the `showtitles`
option; this requires an additional API call per file. option; this requires an additional API call per file.
@@ -234,6 +240,11 @@ The option `updatesheetprotectedranges` only applies to items in `<DriveFileEnti
* Sheet Protected Ranges are updated to reflect the deleted ACL; additional API calls are required. * Sheet Protected Ranges are updated to reflect the deleted ACL; additional API calls are required.
* ACLs with any role will be removed from existing protected ranges * ACLs with any role will be removed from existing protected ranges
`enforceexpansiveaccess` defaults to the value of `gam.cfg/enforce_expansive_access` that controls
the ability to delete delete inherited ACLs.
* False - Inherited ACLs can be deleted
* True = Inherited ACLs can not be deleted
By default, the file ID is displayed in the output; to see the file name, use the `showtitles` By default, the file ID is displayed in the output; to see the file name, use the `showtitles`
option; this requires an additional API call per file. option; this requires an additional API call per file.
@@ -266,6 +277,11 @@ gam <UserTypeEntity> delete permissions <DriveFileEntity> <DriveFilePermissionID
<PermissionMatch>* [<PermissionMatchAction>] <PermissionMatch>* [<PermissionMatchAction>]
[enforceexpansiveaccess [<Boolean>]] [enforceexpansiveaccess [<Boolean>]]
``` ```
`enforceexpansiveaccess` defaults to the value of `gam.cfg/enforce_expansive_access` that controls
the ability to delete delete inherited ACLs.
* False - Inherited ACLs can be deleted
* True = Inherited ACLs can not be deleted
When deleting permissions from JSON data, permissions with role `owner` true are never processed. When deleting permissions from JSON data, permissions with role `owner` true are never processed.
## Display file permissions/sharing ## Display file permissions/sharing

View File

@@ -290,7 +290,7 @@ Select forms with `<DriveFileEntity>`:
* `my_forms` - Display responses for all forms owned by the user * `my_forms` - Display responses for all forms owned by the user
``` ```
gam <UserTypeEntity> show formresponses <DriveFileEntity> gam <UserTypeEntity> show formresponses <DriveFileEntity>
[filtertime.* <Time>] [filter <String>] [filter <String> (filtertime<String> <Time>)*]
[countsonly|formatjson] [countsonly|formatjson]
``` ```
By default, GAM displays form response details, use the `countsonly` option to get the number of responses but no response details. By default, GAM displays form response details, use the `countsonly` option to get the number of responses but no response details.
@@ -302,11 +302,12 @@ By default, GAM displays all form responses, you can filter by response time:
For example, to get the form responses submitted since the beginning of the year: For example, to get the form responses submitted since the beginning of the year:
* `filter timestamp >= 2022-01-01T00:00:00Z` * `filter timestamp >= 2022-01-01T00:00:00Z`
Use the `filtertime.* <Time>` option to allow times, usually relative, to be substituted into the `filter <String>` option. Use the `filtertime<String <Time>` option to allow times, usually relative, to be substituted into the `filter <String>` option.
The `filtertime<String> <Time>` value replaces the string `#filtertime<String>#` in any filters..
The characters following `filtertime` can be any combination of lowercase letters and numbers. The characters following `filtertime` can be any combination of lowercase letters and numbers.
For example, to get the responses subnitted in the last four hours: For example, to get the responses submitted in the last four hours:
* `filtertime4h -4h filter "timestamp >= #filtertime4h#` * `filter "timestamp >= #filtertime4h#" filtertime4h -4h`
By default, Gam displays the information as an indented list of keys and values. By default, Gam displays the information as an indented list of keys and values.
* `formatjson` - Display the form response in JSON format * `formatjson` - Display the form response in JSON format
@@ -314,7 +315,7 @@ By default, Gam displays the information as an indented list of keys and values.
``` ```
gam <UserTypeEntity> print formresponses <DriveFileEntity> [todrive <ToDriveAttribute>*] gam <UserTypeEntity> print formresponses <DriveFileEntity> [todrive <ToDriveAttribute>*]
(addcsvdata <FieldName> <String>)* (addcsvdata <FieldName> <String>)*
[filtertime.* <Time>] [filter <String>] [filter <String> (filtertime<String> <Time>)*]
[countsonly|(formatjson [quotechar <Character>])] [countsonly|(formatjson [quotechar <Character>])]
``` ```
By default, GAM displays form response details, use the `countsonly` option to get the number of responses but no response details. By default, GAM displays form response details, use the `countsonly` option to get the number of responses but no response details.
@@ -328,11 +329,12 @@ By default, GAM displays all form responses, you can filter by response time:
For example, to get the form responses submitted since the beginning of the year: For example, to get the form responses submitted since the beginning of the year:
* `filter timestamp >= 2022-01-01T00:00:00Z` * `filter timestamp >= 2022-01-01T00:00:00Z`
Use the `filtertime.* <Time>` option to allow times, usually relative, to be substituted into the `filter <String>` option. Use the `filtertime<String> <Time>` option to allow times, usually relative, to be substituted into the `filter <String>` option.
The `filtertime<String> <Time>` value replaces the string `#filtertime<String>#` in any filters..
The characters following `filtertime` can be any combination of lowercase letters and numbers. The characters following `filtertime` can be any combination of lowercase letters and numbers.
For example, to get the responses subnitted in the last four hours: For example, to get the responses subnitted in the last four hours:
* `filtertime4h -4h filter "timestamp >= #filtertime4h#` * `filter "timestamp >= #filtertime4h#" filtertime4h -4h`
By default, when writing CSV files, Gam uses a quote character of double quote `"`. The quote character is used to enclose columns that contain By default, when writing CSV files, Gam uses a quote character of double quote `"`. The quote character is used to enclose columns that contain
the quote character itself, the column delimiter (comma by default) and new-line characters. Any quote characters within the column are doubled. the quote character itself, the column delimiter (comma by default) and new-line characters. Any quote characters within the column are doubled.

View File

@@ -158,6 +158,7 @@
createdtime| createdtime|
id| id|
name| name|
restrictions|
themeid themeid
<SharedDriveFieldNameList> ::= "<SharedDriveFieldName>(,<SharedDriveFieldName>)*" <SharedDriveFieldNameList> ::= "<SharedDriveFieldName>(,<SharedDriveFieldName>)*"
@@ -180,6 +181,8 @@
allowcontentmanagerstosharefolders| allowcontentmanagerstosharefolders|
copyrequireswriterpermission| copyrequireswriterpermission|
domainusersonly| domainusersonly|
downloadrestrictedforreaders|
downloadrestrictedforwriters|
drivemembersonly|teammembersonly| drivemembersonly|teammembersonly|
sharingfoldersrequiresorganizerpermission sharingfoldersrequiresorganizerpermission
@@ -318,23 +321,34 @@ gam <UserTypeEntity> show shareddriveinfo <SharedDriveEntity>
gam <UserTypeEntity> show shareddrives gam <UserTypeEntity> show shareddrives
[matchname <REMatchPattern>] (role|roles <SharedDriveACLRoleList>)* [matchname <REMatchPattern>] (role|roles <SharedDriveACLRoleList>)*
[fields <SharedDriveFieldNameList>] [fields <SharedDriveFieldNameList>]
[showwebviewlink text|hyperlink]
[guiroles [<Boolean>] [formatjson] [guiroles [<Boolean>] [formatjson]
``` ```
By default, Gam displays all Teams Drives accessible by the user. By default, Gam displays all Teams Drives accessible by the user.
* `matchname <REMatchPattern>` - Display Shared Drives with names that match a pattern. * `matchname <REMatchPattern>` - Display Shared Drives with names that match a pattern.
* `(role|roles <SharedDriveACLRoleList>)*` - Display Shared Drives where the user has one of the specified roles. * `(role|roles <SharedDriveACLRoleList>)*` - Display Shared Drives where the user has one of the specified roles.
Use option `showwebviewlink` to display the web view link for the Shared Drive.
* `showwebviewlink text` - Displays `https://drive.google.com/drive/folders/<SharedDriveID>`
* `showwebviewlink hyperlink` - Dsiplays `=HYPERLINK("https://drive.google.com/drive/folders/<SharedDriveID>", "<SharedDriveName>")`
By default, Gam displays the information as an indented list of keys and values. By default, Gam displays the information as an indented list of keys and values.
* `formatjson` - Display the fields in JSON format. * `formatjson` - Display the fields in JSON format.
``` ```
gam <UserTypeEntity> print shareddrives [todrive <ToDriveAttribute>*] gam <UserTypeEntity> print shareddrives [todrive <ToDriveAttribute>*]
[matchname <REMatchPattern>] (role|roles <SharedDriveACLRoleList>)* [matchname <REMatchPattern>] (role|roles <SharedDriveACLRoleList>)*
[fields <SharedDriveFieldNameList>] [formatjson [quotechar <Character>]] [fields <SharedDriveFieldNameList>]
[showwebviewlink text|hyperlink]
[guiroles [<Boolean>]] [formatjson [quotechar <Character>]]
``` ```
By default, Gam displays all Teams Drives accessible by the user. By default, Gam displays all Teams Drives accessible by the user.
* `matchname <REMatchPattern>` - Display Shared Drives with names that match a pattern. * `matchname <REMatchPattern>` - Display Shared Drives with names that match a pattern.
* `(role|roles <SharedDriveACLRoleList>)*` - Display Shared Drives where the user has one of the specified roles. * `(role|roles <SharedDriveACLRoleList>)*` - Display Shared Drives where the user has one of the specified roles.
Use option `showwebviewlink` to display the web view link for the Shared Drive.
* `showwebviewlink text` - Displays `https://drive.google.com/drive/folders/<SharedDriveID>`
* `showwebviewlink hyperlink` - Dsiplays `=HYPERLINK("https://drive.google.com/drive/folders/<SharedDriveID>", "<SharedDriveName>")`
The Google Drive API does not list roles for Shared Drives so GAM generates a role from the capabilities: The Google Drive API does not list roles for Shared Drives so GAM generates a role from the capabilities:
* `commenter - canComment: True, canEdit: False` * `commenter - canComment: True, canEdit: False`
* `reader - canComment: False, canEdit: False` * `reader - canComment: False, canEdit: False`

213
wiki/Users-Tag-Manager.md Normal file
View File

@@ -0,0 +1,213 @@
# Users - Tag Manager
- [API documentation](#api-documentation)
- [Notes](#notes)
- [Definitions](#definitions)
- [Display Tag Manager Accounts](#display-tag-manager-accounts)
- [Display Tag Manager Containers](#display-tag-manager-containers)
- [Display Tag Manager Workspaces](#display-tag-manager-workspaces)
- [Display Tag Manager Tags](#display-tag-manager-tags)
- [Display Tag Manager User Permissions](#display-tag-manager-user-permissions)
- [Examples](#examples)
## API documentation
* [Tag Manager API](https://developers.google.com/tag-manager/reference/rest)
## Notes
To use these commands you must add the 'Tag Manager API' to your project and update your service account authorization.
```
gam update project
gam user user@domain.com update serviceaccount
[*] 41) Tag Manager API - Accounts, Containers, Workspaces, Tags - read only
[*] 42) Tag Manager API - Users
```
## Definitions
* [`<UserTypeEntity>`](Collections-of-Users)
* [`<FileSelector> | <CSVFileSelector>`](Collections-of-Items)
```
<TagManagerAccountID> ::= <String>
<TagManagerAccountPath> ::= accounts/<TagManagerAccountID>
<TagManagerAccountPathList> ::= "<TagManagerAccountPath>(,<TagManagerAccountPath>)*"
<TagManagerAccountPathEntity> ::=
<TagManagerAccountPathList> |
(select <FileSelector>|<CSVFileSelector>) |
<TagManagerContainerID> ::= <String>
<TagManagerContainerPath> ::= accounts/<TagManagerAccountID>/containers/<TagManagerContainerID>
<TagManagerContainerPathList> ::= "<TagManagerContainerPath>(,<TagManagerContainerPath>)*"
<TagManagerContainerPathEntity> ::=
<TagManagerContainerPathList> |
(select <FileSelector>|<CSVFileSelector>) |
<TagManagerWorkspaceID> ::= <String>
<TagManagerWorkspacePath> ::= accounts/<TagManagerAccountID>/containers/<TagManagerContainerID>/workspaces/<TagManagerWorkspaceID>
<TagManagerWorkspacePathList> ::= "<TagManagerWorkspacePath>(,<TagManagerWorkspacePath>)*"
<TagManagerWorkspacePathEntity> ::=
<TagManagerWorkspacePathList> |
(select <FileSelector>|<CSVFileSelector>) |
<TagManagerTagID> ::= <String>
<TagManagerTagPath> ::= accounts/<TagManagerAccountID>/containers/<TagManagerContainerID>/workspaces/<TagManagerWorkspaceID>/tags/<TagManagerTagID>
```
## Display Tag Manager Accounts
```
gam <UserTypeEntity> show tagmanageraccounts
[includegoogletags [<Boolean>]]
[formatjson]
```
By default, Gam displays the accounts as an indented list of keys and values.
* `formatjson` - Display the account in JSON format
```
gam <UserTypeEntity> print tagmanagerccounts [todrive <ToDriveAttribute>*]
[includegoogletags [<Boolean>]]
[formatjson [quotechar <Character>]]
```
By default, Gam displays the accounts as columns of fields; the following option causes the output to be in JSON format,
* `formatjson` - Display the fields in JSON format.
By default, when writing CSV files, Gam uses a quote character of double quote `"`. The quote character is used to enclose columns that contain
the quote character itself, the column delimiter (comma by default) and new-line characters. Any quote characters within the column are doubled.
When using the `formatjson` option, double quotes are used extensively in the data resulting in hard to read/process output.
The `quotechar <Character>` option allows you to choose an alternate quote character, single quote for instance, that makes for readable/processable output.
`quotechar` defaults to `gam.cfg/csv_output_quote_char`. When uploading CSV files to Google, double quote `"` should be used.
## Display Tag Manager Containers
```
gam <UserTypeEntity> show tagmanagercontainers <TagManagerAccountPathEntity>
[formatjson]
```
By default, Gam displays the containers as an indented list of keys and values.
* `formatjson` - Display the container in JSON format
```
gam <UserTypeEntity> print tagmanagercontainers <TagManagerAccountPathEntity> [todrive <ToDriveAttribute>*]
[formatjson [quotechar <Character>]]
```
By default, Gam displays the containers as columns of fields; the following option causes the output to be in JSON format,
* `formatjson` - Display the fields in JSON format.
By default, when writing CSV files, Gam uses a quote character of double quote `"`. The quote character is used to enclose columns that contain
the quote character itself, the column delimiter (comma by default) and new-line characters. Any quote characters within the column are doubled.
When using the `formatjson` option, double quotes are used extensively in the data resulting in hard to read/process output.
The `quotechar <Character>` option allows you to choose an alternate quote character, single quote for instance, that makes for readable/processable output.
`quotechar` defaults to `gam.cfg/csv_output_quote_char`. When uploading CSV files to Google, double quote `"` should be used.
## Display Tag Manager Workspaces
```
gam <UserTypeEntity> show tagmanagerworkspaces <TagManagerContainerPathEntity>
[formatjson]
```
By default, Gam displays the workspaces as an indented list of keys and values.
* `formatjson` - Display the workspace in JSON format
```
gam <UserTypeEntity> print tagmanagerworkspaces <TagManagerContainerPathEntity> [todrive <ToDriveAttribute>*]
[formatjson [quotechar <Character>]]
```
By default, Gam displays the workspaces as columns of fields; the following option causes the output to be in JSON format,
* `formatjson` - Display the fields in JSON format.
By default, when writing CSV files, Gam uses a quote character of double quote `"`. The quote character is used to enclose columns that contain
the quote character itself, the column delimiter (comma by default) and new-line characters. Any quote characters within the column are doubled.
When using the `formatjson` option, double quotes are used extensively in the data resulting in hard to read/process output.
The `quotechar <Character>` option allows you to choose an alternate quote character, single quote for instance, that makes for readable/processable output.
`quotechar` defaults to `gam.cfg/csv_output_quote_char`. When uploading CSV files to Google, double quote `"` should be used.
## Display Tag Manager Tags
```
gam <UserTypeEntity> show tagmanagertags <TagManagerWorkspacePathEntity>
[formatjson]
```
By default, Gam displays the tags as an indented list of keys and values.
* `formatjson` - Display the tag in JSON format
```
gam <UserTypeEntity> print tagmanagertags <TagManagerWorkspacePathEntity> [todrive <ToDriveAttribute>*]
[formatjson [quotechar <Character>]]
```
By default, Gam displays the tags as columns of fields; the following option causes the output to be in JSON format,
* `formatjson` - Display the fields in JSON format.
By default, when writing CSV files, Gam uses a quote character of double quote `"`. The quote character is used to enclose columns that contain
the quote character itself, the column delimiter (comma by default) and new-line characters. Any quote characters within the column are doubled.
When using the `formatjson` option, double quotes are used extensively in the data resulting in hard to read/process output.
The `quotechar <Character>` option allows you to choose an alternate quote character, single quote for instance, that makes for readable/processable output.
`quotechar` defaults to `gam.cfg/csv_output_quote_char`. When uploading CSV files to Google, double quote `"` should be used.
## Display Tag Manager User Permissions
```
gam <UserTypeEntity> show tagmanagerpermissions <TagManagerAccountPathEntity>
[formatjson]
```
By default, Gam displays the permissions as an indented list of keys and values.
* `formatjson` - Display the permission in JSON format
```
gam <UserTypeEntity> print tagmanagerpermissions <TagManagerAccountPathEntity> [todrive <ToDriveAttribute>*]
[formatjson [quotechar <Character>]]
```
By default, Gam displays the permissions as columns of fields; the following option causes the output to be in JSON format,
* `formatjson` - Display the fields in JSON format.
By default, when writing CSV files, Gam uses a quote character of double quote `"`. The quote character is used to enclose columns that contain
the quote character itself, the column delimiter (comma by default) and new-line characters. Any quote characters within the column are doubled.
When using the `formatjson` option, double quotes are used extensively in the data resulting in hard to read/process output.
The `quotechar <Character>` option allows you to choose an alternate quote character, single quote for instance, that makes for readable/processable output.
`quotechar` defaults to `gam.cfg/csv_output_quote_char`. When uploading CSV files to Google, double quote `"` should be used.
### Examples
Single user - Get CSV data.
```
$ gam redirect csv ./tmaccounts.csv user taguser@domain.com print tagmanageraccounts
$ gam redirect csv ./tmcontainers.csv user taguser@domain.com print tagmanagercontainers select csvfile tmaccounts.csv:path
$ gam redirect csv ./tmworkspaces.csv user taguser@domain.com print tagmanagerworkspaces select csvfile tmcontainers.csv:path
$ gam redirect csv ./tmtags.csv user taguser@domain.com print tagmanagertags select csvfile tmworkspaces.csv:path
$ gam redirect csv ./tmpermissions.csv user taguser@domain.com print tagmanagerpermissions select csvfile tmaccounts.csv:path
```
Single user - Get indented keys and values data from CSV data.
```
$ gam redirect stdout ./tmaccounts.txt user taguser@domain.com show tagmanageraccounts
$ gam redirect stdout ./tmcontainers.txt user taguser@domain.com show tagmanagercontainers select csvfile tmaccounts.csv:path
$ gam redirect stdout ./tmworkspaces.txt user taguser@domain.com show tagmanagerworkspaces select csvfile tmcontainers.csv:path
$ gam redirect stdout ./tmtags.txt user taguser@domain.com show tagmanagertags select csvfile tmworkspaces.csv:path
$ gam redirect stdout ./tmpermissions.txt user taguser@domain.com show tagmanagerpermissions select csvfile tmaccounts.csv:path
```
Multiple users - Get CSV data.
```
$ gam redirect csv ./tmaccounts.csv multiprocess redirect stderr - multiprocess csv Users.csv gam user "~User" print tagmanageraccounts
$ gam redirect csv ./tmcontainers.csv multiprocess redirect stderr - multiprocess csv tmaccounts.csv gam user "~User" print tagmanagercontainers "~path"
$ gam redirect csv ./tmworkspaces.csv multiprocess redirect stderr - multiprocess csv tmcontainers.csv gam user "~User" print tagmanagerworkspaces "~path"
$ gam redirect csv ./tmtags.csv multiprocess redirect stderr - multiprocess csv tmworkspaces.csv gam user "~User" print tagmanagertags "~path"
$ gam redirect csv ./tmpermissions.csv multiprocess redirect stderr - multiprocess csv tmaccounts.csv gam user "~User" print tagmanagerpermissions "~path"
```
Multiple users - Get indented keys and values data from CSV data.
```
$ gam redirect stdout ./tmaccounts.txt multiprocess redirect stderr - multiprocess csv Users.csv gam user "~User" show tagmanageraccounts
$ gam redirect stdout ./tmcontainers.txt multiprocess redirect stderr - multiprocess csv tmaccounts.csv gam user "~User" show tagmanagercontainers "~path"
$ gam redirect stdout ./tmworkspaces.txt multiprocess redirect stderr - multiprocess csv tmcontainers.csv gam user "~User" show tagmanagerworkspaces "~path"
$ gam redirect stdout ./tmtags.txt multiprocess redirect stderr - multiprocess csv tmworkspaces.csv gam user "~User" show tagmanagertags "~path"
$ gam redirect stdout ./tmpermissions.txt multiprocess redirect stderr - multiprocess csv tmaccounts.csv gam user "~User" show tagmanagerpermissions "~path"
```

View File

@@ -21,6 +21,7 @@
- [Update a user's attributes with JSON data](#update-a-users-attributes-with-json-data) - [Update a user's attributes with JSON data](#update-a-users-attributes-with-json-data)
- [Update a user's OU based on group membership](#update-a-users-ou-based-on-group-membership) - [Update a user's OU based on group membership](#update-a-users-ou-based-on-group-membership)
- [Do not update a user's OU if currently in a special purpose OU](#do-not-update-a-users-ou-if-currently-in-a-special-purpose-ou) - [Do not update a user's OU if currently in a special purpose OU](#do-not-update-a-users-ou-if-currently-in-a-special-purpose-ou)
- [Check a user's suspension status](#check-a-users-suspension-status)
- [Delete or suspend users](#delete-or-suspend-users) - [Delete or suspend users](#delete-or-suspend-users)
- [Undelete or unsuspend users](#undelete-or-unsuspend-users) - [Undelete or unsuspend users](#undelete-or-unsuspend-users)
- [Display information about users](#display-information-about-users) - [Display information about users](#display-information-about-users)
@@ -38,7 +39,7 @@
- [Print user counts by OrgUnit](#print-user-counts-by-orgunit) - [Print user counts by OrgUnit](#print-user-counts-by-orgunit)
- [Print user list](#print-user-list) - [Print user list](#print-user-list)
- [Display user counts](#display-user-counts) - [Display user counts](#display-user-counts)
- [Verify domain membership]($verify-domain-membership) - [Verify domain membership](#verify-domain-membership)
## API documentation ## API documentation
* [Directory API - Users](https://developers.google.com/admin-sdk/directory/reference/rest/v1/users) * [Directory API - Users](https://developers.google.com/admin-sdk/directory/reference/rest/v1/users)
@@ -339,7 +340,7 @@ Here is how that data is represented in GAM:
Locations: Locations:
type: desk type: desk
area: desk area: desk
buildingId: Building-ID buildingId: Building id
buildingName: Building name buildingName: Building name
floorName: Floor name floorName: Floor name
floorSection: Floor section floorSection: Floor section
@@ -359,13 +360,15 @@ External IDs:
``` ```
These options will set those values: These options will set those values:
``` ```
location type desk area desk buildingid Building-ID floorname "Floor name" floorsection "Floor section" endlocation location type desk area desk buildingid "id:Building id" floorname "Floor name" floorsection "Floor section" endlocation
organization customtype "" description "Type of employee" costcenter "Cost center" department "Department" title "Job Title" primary organization customtype "" description "Type of employee" costcenter "Cost center" department "Department" title "Job Title" primary
relation manager manageremail@domain.com relation manager manageremail@domain.com
externalid organization "Employee ID" externalid organization "Employee ID"
``` ```
When setting `location buildingid <String>` Google expects a validated building ID, you can use a non-validated When setting `location buildingid id:<String>` Google expects a validated building ID, you can use a non-validated
building ID by specifying `nv:` at the beginning of `<String>`; e.g., `nv:Building X` sets the building ID to `Building X`. building ID by specifying `nv:` at the beginning of `<String>`; e.g., `nv:Building X` sets the building ID to `Building X`.
You can also use `buildingid <String>`, i.e., no `'id:` or `nv:` prefix, `<String>` is then interpreted as a building name
and GAM validates it to get the building id that is required by the API.
## Passwords ## Passwords
To set a user's password, you specify a `<Password>` string and a hash method that specifies how to interpret the string To set a user's password, you specify a `<Password>` string and a hash method that specifies how to interpret the string
@@ -896,6 +899,25 @@ gam csv SISdata.csv gam update user "~primaryEmail" suspended off firstname "~Fi
ou "~OU" immutableous "'/Students/Lower School/Restricted,'/Students/Middle School/Restricted'" ou "~OU" immutableous "'/Students/Lower School/Restricted,'/Students/Middle School/Restricted'"
``` ```
## Check a user's suspension status
This command checks the suspension status of a single user
and sets the return code to 0 if the user is not suspended or 26 if it is.
```
gam check suspended <UserItem>
```
Example.
```
$ gam check suspended testok@domain.com
User: testok@domain.com, Account Suspended: False
$ echo $?
0
$ gam check suspended testsusp@domain.com
User: testsusp@domain.com, Account Suspended: True, Suspension Reason: ADMIN
$ echo $?
26
```
## Delete or suspend users ## Delete or suspend users
These commands operate on a single user. These commands operate on a single user.
``` ```

View File

@@ -1,19 +1,12 @@
# Using GAM7 with a delegated admin service account # Using GAM7 with a delegated admin service account
- [Thanks](#thanks)
- [Introduction](#introduction) - [Introduction](#introduction)
- [Advantages](#advantages) - [Advantages](#advantages)
- [Disadvantages](#disadvantages) - [Disadvantages](#disadvantages)
- [Setup Steps](#setup-steps) - [Setup Steps](#setup-steps)
## Thanks
Thanks to Jay Lee for the original version of this document.
## Introduction ## Introduction
Delegated admin service accounts (DASA) are regular [GCP service accounts](https://cloud.google.com/iam/docs/service-accounts#what_are_service_accounts) that are granted a Workspace [delegated admin role](https://support.google.com/a/answer/33325). Service accounts have an email address like `gam-project-xuw-sp1-c4b@gam-project-xuw-sp1-c4b.iam.gserviceaccount.com` and are not part of a Workspace or Cloud Identity domain even if they are owned by a project in the domains organization. Service accounts cannot login to Google web services interactively, they are only able to call Google APIs. Delegated admin service accounts (DASA) are regular [GCP service accounts](https://cloud.google.com/iam/docs/service-accounts#what_are_service_accounts) that are granted a Workspace [delegated admin role](https://support.google.com/a/answer/33325). Service accounts have an email address like `gam-project-xuw-sp1-c4b@gam-project-xuw-sp1-c4b.iam.gserviceaccount.com` and are not part of a Workspace or Cloud Identity domain even if they are owned by a project in the domains organization. Service accounts cannot login to Google web services interactively, they are only able to call Google APIs.
GAM7 version 6.50.00 or higher is required.
## Advantages ## Advantages
* DASA accounts dont require a Workspace or Cloud Identity license. * DASA accounts dont require a Workspace or Cloud Identity license.
* DASA accounts dont have a password login that can be phished or captured, they use [RSA private keys](https://en.wikipedia.org/wiki/RSA_(cryptosystem)) to sign authentication requests which makes them very secure. You should however [rotate the key](https://jaylee.us/qwm) on a regular basis and keep it safe and secured! * DASA accounts dont have a password login that can be phished or captured, they use [RSA private keys](https://en.wikipedia.org/wiki/RSA_(cryptosystem)) to sign authentication requests which makes them very secure. You should however [rotate the key](https://jaylee.us/qwm) on a regular basis and keep it safe and secured!

View File

@@ -1,9 +1,10 @@
k
# Version and Help # Version and Help
Print the current version of Gam with details Print the current version of Gam with details
``` ```
gam version gam version
GAM 7.10.04 - https://github.com/GAM-team/GAM - pyinstaller GAM 7.14.03 - https://github.com/GAM-team/GAM - pyinstaller
GAM Team <google-apps-manager@googlegroups.com> GAM Team <google-apps-manager@googlegroups.com>
Python 3.13.5 64-bit final Python 3.13.5 64-bit final
MacOS Sequoia 15.5 x86_64 MacOS Sequoia 15.5 x86_64
@@ -15,7 +16,7 @@ Time: 2023-06-02T21:10:00-07:00
Print the current version of Gam with details and time offset information Print the current version of Gam with details and time offset information
``` ```
gam version timeoffset gam version timeoffset
GAM 7.10.04 - https://github.com/GAM-team/GAM - pyinstaller GAM 7.14.03 - https://github.com/GAM-team/GAM - pyinstaller
GAM Team <google-apps-manager@googlegroups.com> GAM Team <google-apps-manager@googlegroups.com>
Python 3.13.5 64-bit final Python 3.13.5 64-bit final
MacOS Sequoia 15.5 x86_64 MacOS Sequoia 15.5 x86_64
@@ -27,7 +28,7 @@ Your system time differs from www.googleapis.com by less than 1 second
Print the current version of Gam with extended details and SSL information Print the current version of Gam with extended details and SSL information
``` ```
gam version extended gam version extended
GAM 7.10.04 - https://github.com/GAM-team/GAM - pyinstaller GAM 7.14.03 - https://github.com/GAM-team/GAM - pyinstaller
GAM Team <google-apps-manager@googlegroups.com> GAM Team <google-apps-manager@googlegroups.com>
Python 3.13.5 64-bit final Python 3.13.5 64-bit final
MacOS Sequoia 15.5 x86_64 MacOS Sequoia 15.5 x86_64
@@ -64,7 +65,7 @@ MacOS High Sierra 10.13.6 x86_64
Path: /Users/Admin/bin/gam7 Path: /Users/Admin/bin/gam7
Version Check: Version Check:
Current: 5.35.08 Current: 5.35.08
Latest: 7.10.04 Latest: 7.14.03
echo $? echo $?
1 1
``` ```
@@ -72,7 +73,7 @@ echo $?
Print the current version number without details Print the current version number without details
``` ```
gam version simple gam version simple
7.10.04 7.14.03
``` ```
In Linux/MacOS you can do: In Linux/MacOS you can do:
``` ```
@@ -82,7 +83,7 @@ echo $VER
Print the current version of Gam and address of this Wiki Print the current version of Gam and address of this Wiki
``` ```
gam help gam help
GAM 7.10.04 - https://github.com/GAM-team/GAM GAM 7.14.03 - https://github.com/GAM-team/GAM
GAM Team <google-apps-manager@googlegroups.com> GAM Team <google-apps-manager@googlegroups.com>
Python 3.13.5 64-bit final Python 3.13.5 64-bit final
MacOS Sequoia 15.5 x86_64 MacOS Sequoia 15.5 x86_64

View File

@@ -1,4 +1,4 @@
oUpdate History Update History
* [GAM Updates](GamUpdates) * [GAM Updates](GamUpdates)
Installation Installation
@@ -97,6 +97,7 @@ Client Access
* [Domain Shared Contacts](Domain-SharedContacts) * [Domain Shared Contacts](Domain-SharedContacts)
* [Email Audit Monitor](Email-Audit-Monitor) * [Email Audit Monitor](Email-Audit-Monitor)
* [Find File Owner](Find-File-Owner) * [Find File Owner](Find-File-Owner)
* [Global Address List](Global-Address-List)
* [Google Data Transfers](Google-Data-Transfers) * [Google Data Transfers](Google-Data-Transfers)
* [Groups](Groups) * [Groups](Groups)
* [Groups - Membership](Groups-Membership) * [Groups - Membership](Groups-Membership)
@@ -170,6 +171,7 @@ Service Account Access
* [Users - Profile Photo](Users-Profile-Photo) * [Users - Profile Photo](Users-Profile-Photo)
* [Users - Shared Drives](Users-Shared-Drives) * [Users - Shared Drives](Users-Shared-Drives)
* [Users - Spreadsheets](Users-Spreadsheets) * [Users - Spreadsheets](Users-Spreadsheets)
* [Users - Tag Manager](Users-Tag-Manager)
* [Users - Tasks](Users-Tasks) * [Users - Tasks](Users-Tasks)
* [Users - YouTube](Users-YouTube) * [Users - YouTube](Users-YouTube)

View File

@@ -994,6 +994,7 @@ gam update project
gam oauth create gam oauth create
gam info domain gam info domain
gam config customer_id <CustomerID> save gam config customer_id <CustomerID> save
gam user user@xxx.com update serviceaccount
``` ```
### New clients ### New clients
@@ -1015,7 +1016,7 @@ gam create project
gam oauth create gam oauth create
gam info domain gam info domain
gam config customer_id <CustomerID> save gam config customer_id <CustomerID> save
gam user user@foo.com check serviceaccount gam user user@foo.com update serviceaccount
``` ```
To get information about a client, select a section. To get information about a client, select a section.