diff --git a/wiki/GamUpdates.md b/wiki/GamUpdates.md index 9918e73c..ab5cc05e 100644 --- a/wiki/GamUpdates.md +++ b/wiki/GamUpdates.md @@ -10,6 +10,16 @@ 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 +### 7.34.03 + +Updated to Python 3.14.3 + +Updated Cryptography to 46.0.5 + +Updated `gam course create student|teacher ` error message when +`` is not in a trusted domain to remove suggestion about creating an invitation. + + ### 7.34.02 Updated GAM to prevent errors like the following: diff --git a/wiki/How-to-Install-GAM7.md b/wiki/How-to-Install-GAM7.md index b05da792..f1d7ac13 100644 --- a/wiki/How-to-Install-GAM7.md +++ b/wiki/How-to-Install-GAM7.md @@ -9,30 +9,30 @@ and all necessary authentications. ## Linux and MacOS and Google Cloud Shell -In these examples, your Google Super admin is shown as admin@domain.com; replace with the +In these examples, your Google Super admin is shown as gamteam@domain.com; replace with the actual email adddress. -In these examples, the user home folder is shown as /Users/admin; adjust according to your +In these examples, the user home folder is shown as /Users/gamteam; adjust according to your specific situation; e.g., /home/administrator. -This example assumes that GAM7 has been installed in /Users/admin/bin/gam7. +This example assumes that GAM7 has been installed in /Users/gamteam/bin/gam7. If you've installed GAM7 in another directory, substitute that value in the directions. ### Set a configuration directory -The default GAM configuration directory is /Users/admin/.gam; for more flexibility you +The default GAM configuration directory is /Users/gamteam/.gam; for more flexibility you probably want to select a non-hidden location. This example assumes that the GAM -configuration directory will be /Users/admin/GAMConfig; If you've chosen another directory, +configuration directory will be /Users/gamteam/GAMConfig; If you've chosen another directory, substitute that value in the directions. Make the directory: ``` -admin@server:/Users/admin$ mkdir -p /Users/admin/GAMConfig +gamteam@server:/Users/gamteam$ mkdir -p /Users/gamteam/GAMConfig ``` Add the following line: ``` -export GAMCFGDIR="/Users/admin/GAMConfig" +export GAMCFGDIR="/Users/gamteam/GAMConfig" ``` to one of these files based on your shell: ``` @@ -44,34 +44,34 @@ to one of these files based on your shell: Issue the following command replacing `` with the name of the file you edited: ``` -admin@server:/Users/admin$ source +gamteam@server:/Users/gamteam$ source ``` You need to make sure the GAM configuration directory actually exists. Test that like this: ``` -admin@server:/Users/admin$ ls -l $GAMCFGDIR +gamteam@server:/Users/gamteam$ ls -l $GAMCFGDIR ``` ### Set a working directory You should establish a GAM working directory; you will store your GAM related data in this folder and execute GAM commands from this folder. You should not use -/Users/admin/bin/gam7 or /Users/admin/GAMConfig for this purpose. -This example assumes that the GAM working directory will be /Users/admin/GAMWork; If you've chosen +/Users/gamteam/bin/gam7 or /Users/gamteam/GAMConfig for this purpose. +This example assumes that the GAM working directory will be /Users/gamteam/GAMWork; If you've chosen another directory, substitute that value in the directions. Make the directory: ``` -admin@server:/Users/admin$ mkdir -p /Users/admin/GAMWork +gamteam@server:/Users/gamteam$ mkdir -p /Users/gamteam/GAMWork ``` ### Set an alias -You should set an alias to point to /Users/admin/bin/gam7/gam so you can operate from the /Users/admin/GAMWork directory. +You should set an alias to point to /Users/gamteam/bin/gam7/gam so you can operate from the /Users/gamteam/GAMWork directory. Aliases aren't available in scripts, so you may want to set a symlink instead, see below. Add the following line: ``` -alias gam="/Users/admin/bin/gam7/gam" +alias gam="/Users/gamteam/bin/gam7/gam" ``` to one of these files based on your shell: ``` @@ -84,48 +84,48 @@ to one of these files based on your shell: Issue the following command replacing `` with the name of the file you edited: ``` -admin@server:/Users/admin$ source +gamteam@server:/Users/gamteam$ source ``` ### Set a symlink Set a symlink in `/usr/local/bin` (or some other location on $PATH) to point to GAM. ``` -admin@server:/Users/admin$ ln -s "/Users/admin/bin/gam7/gam" /usr/local/bin/gam +gamteam@server:/Users/gamteam$ ln -s "/Users/gamteam/bin/gam7/gam" /usr/local/bin/gam ``` ### Initialize GAM7; this should be the first GAM7 command executed. ``` -admin@server:/Users/admin$ gam config drive_dir /Users/admin/GAMWork verify -Created: /Users/admin/GAMConfig -Created: /Users/admin/GAMConfig/gamcache -Config File: /Users/admin/GAMConfig/gam.cfg, Initialized +gamteam@server:/Users/gamteam$ gam config drive_dir /Users/gamteam/GAMWork verify +Created: /Users/gamteam/GAMConfig +Created: /Users/gamteam/GAMConfig/gamcache +Config File: /Users/gamteam/GAMConfig/gam.cfg, Initialized Section: DEFAULT ... - cache_dir = /Users/admin/GAMConfig/gamcache + cache_dir = /Users/gamteam/GAMConfig/gamcache ... - config_dir = /Users/admin/GAMConfig + config_dir = /Users/gamteam/GAMConfig ... - drive_dir = /Users/admin/GAMWork + drive_dir = /Users/gamteam/GAMWork ... -admin@server:/Users/admin$ +gamteam@server:/Users/gamteam$ ``` ### Verify initialization, this was a successful installation. ``` -admin@server:/Users/admin$ ls -l $GAMCFGDIR +gamteam@server:/Users/gamteam$ ls -l $GAMCFGDIR total 48 -rw-r-----+ 1 admin staff 1069 Mar 3 09:23 gam.cfg drwxr-x---+ 2 admin staff 68 Mar 3 09:23 gamcache -rw-rw-rw-+ 1 admin staff 0 Mar 3 09:23 oauth2.txt.lock -admin@server:/Users/admin$ +gamteam@server:/Users/gamteam$ ``` ### Create your project with local browser ``` -admin@server:/Users/admin$ gam create project -WARNING: Config File: /Users/admin/GAMConfig/gam.cfg, Item: client_secrets_json, Value: /Users/admin/GAMConfig/client_secrets.json, Not Found -WARNING: Config File: /Users/admin/GAMConfig/gam.cfg, Item: oauth2service_json, Value: /Users/admin/GAMConfig/oauth2service.json, Not Found +gamteam@server:/Users/gamteam$ gam create project +WARNING: Config File: /Users/gamteam/GAMConfig/gam.cfg, Item: client_secrets_json, Value: /Users/gamteam/GAMConfig/client_secrets.json, Not Found +WARNING: Config File: /Users/gamteam/GAMConfig/gam.cfg, Item: oauth2service_json, Value: /Users/gamteam/GAMConfig/oauth2service.json, Not Found -Enter your Google Workspace admin or GCP project manager email address authorized to manage project(s) admin@domain.com +Enter your Google Workspace admin or GCP project manager email address authorized to manage project(s) gamteam@domain.com Your browser has been opened to visit: @@ -167,7 +167,7 @@ Project: gam-project-abc-def-ghi, Service Account: gam-project-abc-def-ghi@gam-p Project: gam-project-abc-def-ghi, Service Account: gam-project-abc-def-ghi@gam-project-abc-def-ghi.iam.gserviceaccount.com, Extracting public certificate Project: gam-project-abc-def-ghi, Service Account: gam-project-abc-def-ghi@gam-project-abc-def-ghi.iam.gserviceaccount.com, Done generating private key and public certificate Project: gam-project-abc-def-ghi, Service Account: gam-project-abc-def-ghi@gam-project-abc-def-ghi.iam.gserviceaccount.com, Service Account Key: SVCACCTKEY, Uploaded -Service Account OAuth2 File: /Users/admin/GAMConfig/oauth2service.json, Service Account Key: SVCACCTKEY, Updated +Service Account OAuth2 File: /Users/gamteam/GAMConfig/oauth2service.json, Service Account Key: SVCACCTKEY, Updated Project: gam-project-abc-def-ghi, Service Account: gam-project-abc-def-ghi@gam-project-abc-def-ghi.iam.gserviceaccount.com, Has rights to rotate own private key Please go to: @@ -185,16 +185,16 @@ Enter your Client Secret: CLIENTSECRET 6. Go back to your browser and click OK to close the "OAuth client" popup if it's still open. That's it! Your GAM Project is created and ready to use. -admin@server:/Users/admin$ +gamteam@server:/Users/gamteam$ ``` ### Create your project without local browser (Google Cloud Shell for instance) ``` -admin@server:/Users/admin$ gam config no_browser true save -admin@server:/Users/admin$ gam create project -WARNING: Config File: /Users/admin/GAMConfig/gam.cfg, Item: client_secrets_json, Value: /Users/admin/GAMConfig/client_secrets.json, Not Found -WARNING: Config File: /Users/admin/GAMConfig/gam.cfg, Item: oauth2service_json, Value: /Users/admin/GAMConfig/oauth2service.json, Not Found +gamteam@server:/Users/gamteam$ gam config no_browser true save +gamteam@server:/Users/gamteam$ gam create project +WARNING: Config File: /Users/gamteam/GAMConfig/gam.cfg, Item: client_secrets_json, Value: /Users/gamteam/GAMConfig/client_secrets.json, Not Found +WARNING: Config File: /Users/gamteam/GAMConfig/gam.cfg, Item: oauth2service_json, Value: /Users/gamteam/GAMConfig/oauth2service.json, Not Found -Enter your Google Workspace admin or GCP project manager email address authorized to manage project(s) admin@domain.com +Enter your Google Workspace admin or GCP project manager email address authorized to manage project(s) gamteam@domain.com Go to the following link in a browser on other computer: @@ -235,7 +235,7 @@ Project: gam-project-abc-def-ghi, Service Account: gam-project-abc-def-ghi@gam-p Project: gam-project-abc-def-ghi, Service Account: gam-project-abc-def-ghi@gam-project-abc-def-ghi.iam.gserviceaccount.com, Extracting public certificate Project: gam-project-abc-def-ghi, Service Account: gam-project-abc-def-ghi@gam-project-abc-def-ghi.iam.gserviceaccount.com, Done generating private key and public certificate Project: gam-project-abc-def-ghi, Service Account: gam-project-abc-def-ghi@gam-project-abc-def-ghi.iam.gserviceaccount.com, Service Account Key: SVCACCTKEY, Uploaded -Service Account OAuth2 File: /Users/admin/GAMConfig/oauth2service.json, Service Account Key: SVCACCTKEY, Updated +Service Account OAuth2 File: /Users/gamteam/GAMConfig/oauth2service.json, Service Account Key: SVCACCTKEY, Updated Project: gam-project-abc-def-ghi, Service Account: gam-project-abc-def-ghi@gam-project-abc-def-ghi.iam.gserviceaccount.com, Has rights to rotate own private key Please go to: @@ -253,7 +253,7 @@ Enter your Client Secret: CLIENTSECRET 6. Go back to your browser and click OK to close the "OAuth client" popup if it's still open. That's it! Your GAM Project is created and ready to use. -admin@server:/Users/admin$ +gamteam@server:/Users/gamteam$ ``` ### Enable GAM7 client access @@ -261,7 +261,7 @@ You select a list of scopes, GAM uses a browser to get final authorization from writes the credentials into the file oauth2.txt. ``` -admin@server:/Users/admin$ gam oauth create +gamteam@server:/Users/gamteam$ gam oauth create [*] 0) Calendar API (supports readonly) [*] 1) Chrome Browser Cloud Management API (supports readonly) @@ -328,7 +328,7 @@ Continue to authorization by entering a 'c' Please enter 0-50[a|r] or s|u|e|c: c -Enter your Google Workspace admin email address? admin@domain.com +Enter your Google Workspace admin email address? gamteam@domain.com Go to the following link in a browser on this computer or on another computer: @@ -340,16 +340,16 @@ click the Allow button, paste "Unable to connect" URL from other computer (only Enter verification code or paste "Unable to connect" URL from other computer (only URL data up to &scope required): The authentication flow has completed. -Client OAuth2 File: /Users/admin/GAMConfig/oauth2.txt, Created +Client OAuth2 File: /Users/gamteam/GAMConfig/oauth2.txt, Created -admin@server:/Users/admin$ +gamteam@server:/Users/gamteam$ ``` If clicking on the link in the instructions does not work (i.e. you get a 404 or 400 error message, instead of something about 'unable to connect') the URL in the link is too long. Most likely, you have selected all scopes. Try again with fewer scopes until it works. (there is no harm in repeatedly trying) ### Enable GAM7 service account access. ``` -admin@server:/Users/admin$ gam user admin@domain.com update serviceaccount +gamteam@server:/Users/gamteam$ gam user gamteam@domain.com update serviceaccount [*] 0) AlertCenter API [*] 1) Analytics API - read only [*] 2) Analytics Admin API - read only @@ -413,7 +413,7 @@ Service Account Private Key Authentication Authentication PASS Service Account Private Key age; Google recommends rotating keys on a routine basis Service Account Private Key age: 1 day WARN -Domain-wide Delegation authentication:, User: admin@domain.com, Scopes: 38 +Domain-wide Delegation authentication:, User: gamteam@domain.com, Scopes: 38 https://mail.google.com/ FAIL (1/38) https://sites.google.com/feeds FAIL (2/38) https://www.googleapis.com/auth/analytics.readonly FAIL (3/38) @@ -464,7 +464,7 @@ Click AUTHORIZE When the box closes you're done After authorizing it may take some time for this test to pass so wait a few moments and then try this command again. -admin@server:/Users/admin$ +gamteam@server:/Users/gamteam$ ``` The link shown in the error message should take you directly to the authorization screen. If not, make sure that you are logged in as a domain admin, then re-enter the link. @@ -474,14 +474,14 @@ If not, make sure that you are logged in as a domain admin, then re-enter the li Wait a moment and then perform the following command; it it still fails, wait a bit longer, it can sometimes take serveral minutes for the authorization to complete. ``` -admin@server:/Users/admin$ gam user admin@domain.com check serviceaccount +gamteam@server:/Users/gamteam$ gam user gamteam@domain.com check serviceaccount System time status Your system time differs from admin.googleapis.com by less than 1 second PASS Service Account Private Key Authentication Authentication PASS Service Account Private Key age; Google recommends rotating keys on a routine basis Service Account Private Key age: 1 day WARN -Domain-wide Delegation authentication:, User: admin@domain.com, Scopes: 38 +Domain-wide Delegation authentication:, User: gamteam@domain.com, Scopes: 38 https://mail.google.com/ PASS (1/38) https://sites.google.com/feeds PASS (2/38) https://www.googleapis.com/auth/analytics.readonly PASS (3/38) @@ -524,14 +524,14 @@ All scopes PASSED! Service Account Client name: SVCACCTID is fully authorized. -admin@server:/Users/admin$ +gamteam@server:/Users/gamteam$ ``` ### Update gam.cfg with some basic values * `customer_id` - Having this data keeps Gam from having to make extra API calls * `domain` - This allows you to omit the domain portion of email addresses * `timezone local` - Gam will convert all UTC times to your local timezone ``` -admin@server:/Users/admin$ gam info domain +gamteam@server:/Users/gamteam$ gam info domain Customer ID: C01234567 Primary Domain: domain.com Customer Creation Time: 2007-06-06T15:47:55.444Z @@ -539,8 +539,8 @@ Primary Domain Verified: True Default Language: en ... -admin@server:/Users/admin$ gam config customer_id C01234567 domain domain.com timezone local save verify -Config File: /Users/admin/GAMConfig/gam.cfg, Saved +gamteam@server:/Users/gamteam$ gam config customer_id C01234567 domain domain.com timezone local save verify +Config File: /Users/gamteam/GAMConfig/gam.cfg, Saved Section: DEFAULT ... customer_id = C01234567 @@ -550,12 +550,12 @@ Section: DEFAULT timezone = local ... -admin@server:/Users/admin$ +gamteam@server:/Users/gamteam$ ``` ## Windows -In these examples, your Google Super admin is shown as admin@domain.com; replace with the +In these examples, your Google Super admin is shown as gamteam@domain.com; replace with the actual email adddress. This example assumes that GAM7 has been installed in C:\GAM7; if you've installed @@ -645,7 +645,7 @@ C:\>gam create project WARNING: Config File: C:\GAMConfig\gam.cfg, Item: client_secrets_json, Value: C:\GAMConfig\client_secrets.json, Not Found WARNING: Config File: C:\GAMConfig\gam.cfg, Item: oauth2service_json, Value: C:\GAMConfig\oauth2service.json, Not Found -Enter your Google Workspace admin or GCP project manager email address authorized to manage project(s) admin@domain.com +Enter your Google Workspace admin or GCP project manager email address authorized to manage project(s) gamteam@domain.com Your browser has been opened to visit: @@ -714,7 +714,7 @@ C:\>gam create project WARNING: Config File: C:\GAMConfig\gam.cfg, Item: client_secrets_json, Value: C:\GAMConfig\client_secrets.json, Not Found WARNING: Config File: C:\GAMConfig\gam.cfg, Item: oauth2service_json, Value: C:\GAMConfig\oauth2service.json, Not Found -Enter your Google Workspace admin or GCP project manager email address authorized to manage project(s) admin@domain.com +Enter your Google Workspace admin or GCP project manager email address authorized to manage project(s) gamteam@domain.com Go to the following link in a browser on other computer: @@ -848,7 +848,7 @@ Continue to authorization by entering a 'c' Please enter 0-50[a|r] or s|u|e|c: c -Enter your Google Workspace admin email address? admin@domain.com +Enter your Google Workspace admin email address? gamteam@domain.com Go to the following link in a browser on this computer or on another computer: @@ -866,7 +866,7 @@ C:\> ``` ### Enable GAM7 service account access. ``` -C:\>gam user admin@domain.com update serviceaccount +C:\>gam user gamteam@domain.com update serviceaccount [*] 0) AlertCenter API [*] 1) Analytics API - read only [*] 2) Analytics Admin API - read only @@ -930,7 +930,7 @@ Service Account Private Key Authentication Authentication PASS Service Account Private Key age; Google recommends rotating keys on a routine basis Service Account Private Key age: 1 day WARN -Domain-wide Delegation authentication:, User: admin@domain.com, Scopes: 38 +Domain-wide Delegation authentication:, User: gamteam@domain.com, Scopes: 38 https://mail.google.com/ FAIL (1/38) https://sites.google.com/feeds FAIL (2/38) https://www.googleapis.com/auth/analytics.readonly FAIL (3/38) @@ -991,14 +991,14 @@ If not, make sure that you are logged in as a domain admin, then re-enter the li Wait a moment and then perform the following command; it it still fails, wait a bit longer, it can sometimes take serveral minutes for the authorization to complete. ``` -C:\>gam user admin@domain.com check serviceaccount +C:\>gam user gamteam@domain.com check serviceaccount System time status Your system time differs from admin.googleapis.com by less than 1 second PASS Service Account Private Key Authentication Authentication PASS Service Account Private Key age; Google recommends rotating keys on a routine basis Service Account Private Key age: 1 day WARN -Domain-wide Delegation authentication:, User: admin@domain.com, Scopes: 38 +Domain-wide Delegation authentication:, User: gamteam@domain.com, Scopes: 38 https://mail.google.com/ PASS (1/38) https://sites.google.com/feeds PASS (2/38) https://www.googleapis.com/auth/analytics.readonly PASS (3/38) diff --git a/wiki/How-to-Upgrade-Legacy-GAM-to-GAM7.md b/wiki/How-to-Upgrade-Legacy-GAM-to-GAM7.md index bf2eb276..3edbcf0f 100644 --- a/wiki/How-to-Upgrade-Legacy-GAM-to-GAM7.md +++ b/wiki/How-to-Upgrade-Legacy-GAM-to-GAM7.md @@ -10,30 +10,30 @@ and all necessary authentications. ## Linux and MacOS and Google Cloud Shell -In these examples, your Google Super admin is shown as admin@domain.com; replace with the +In these examples, your Google Super admin is shown as gamteam@domain.com; replace with the actual email adddress. -In these examples, the user home folder is shown as /Users/admin; adjust according to your +In these examples, the user home folder is shown as /Users/gamteam; adjust according to your specific situation; e.g., /home/administrator. -This example assumes that GAM7 has been installed in /Users/admin/bin/gam7. +This example assumes that GAM7 has been installed in /Users/gamteam/bin/gam7. If you've installed GAM7 in another directory, substitute that value in the directions. ### Set a configuration directory -The default GAM configuration directory is /Users/admin/.gam; for more flexibility you +The default GAM configuration directory is /Users/gamteam/.gam; for more flexibility you probably want to select a non-hidden location. This example assumes that the GAM -configuration directory will be /Users/admin/GAMConfig; If you've chosen another directory, +configuration directory will be /Users/gamteam/GAMConfig; If you've chosen another directory, substitute that value in the directions. Make the directory: ``` -admin@server:/Users/admin$ mkdir -p /Users/admin/GAMConfig +gamteam@server:/Users/gamteam$ mkdir -p /Users/gamteam/GAMConfig ``` Add the following line: ``` -export GAMCFGDIR="/Users/admin/GAMConfig" +export GAMCFGDIR="/Users/gamteam/GAMConfig" ``` to one of these files based on your shell: ``` @@ -45,34 +45,34 @@ to one of these files based on your shell: Issue the following command replacing `` with the name of the file you edited: ``` -admin@server:/Users/admin$ source +gamteam@server:/Users/gamteam$ source ``` You need to make sure the GAM configuration directory actually exists. Test that like this: ``` -admin@server:/Users/admin$ ls -l $GAMCFGDIR +gamteam@server:/Users/gamteam$ ls -l $GAMCFGDIR ``` ### Set a working directory You should establish a GAM working directory; you will store your GAM related data in this folder and execute GAM commands from this folder. You should not use -/Users/admin/bin/gam7 or /Users/admin/GAMConfig for this purpose. -This example assumes that the GAM working directory will be /Users/admin/GAMWork; If you've chosen +/Users/gamteam/bin/gam7 or /Users/gamteam/GAMConfig for this purpose. +This example assumes that the GAM working directory will be /Users/gamteam/GAMWork; If you've chosen another directory, substitute that value in the directions. Make the directory: ``` -admin@server:/Users/admin$ mkdir -p /Users/admin/GAMWork +gamteam@server:/Users/gamteam$ mkdir -p /Users/gamteam/GAMWork ``` ### Set an alias -You should set an alias to point to /Users/admin/bin/gam7/gam so you can operate from the /Users/admin/GAMWork directory. +You should set an alias to point to /Users/gamteam/bin/gam7/gam so you can operate from the /Users/gamteam/GAMWork directory. Aliases aren't available in scripts, so you may want to set a symlink instead, see below. Add the following line: ``` -alias gam="/Users/admin/bin/gam7/gam" +alias gam="/Users/gamteam/bin/gam7/gam" ``` to one of these files based on your shell: ``` @@ -85,62 +85,62 @@ to one of these files based on your shell: If you already have an alias for legacy GAM but are no longer going to run it, delete these lines: ``` -function gam() { "/Users/admin/bin/gam/gam" "$@" ; }" -alias gam="/Users/admin/bin/gam/gam" +function gam() { "/Users/gamteam/bin/gam/gam" "$@" ; }" +alias gam="/Users/gamteam/bin/gam/gam" ``` If you already have an alias for legacy GAM and want to run it and GAM7, give your old alias a different name: ``` -function gamstd() { "/Users/admin/bin/gam/gam" "$@" ; }" -alias gamstd="/Users/admin/bin/gam/gam" +function gamstd() { "/Users/gamteam/bin/gam/gam" "$@" ; }" +alias gamstd="/Users/gamteam/bin/gam/gam" ``` Issue the following command replacing `` with the name of the file you edited: ``` -admin@server:/Users/admin$ source +gamteam@server:/Users/gamteam$ source ``` ### Set a symlink Set a symlink in `/usr/local/bin` (or some other location on $PATH) to point to GAM. ``` -admin@server:/Users/admin$ ln -s "/Users/admin/bin/gam7/gam" /usr/local/bin/gam +gamteam@server:/Users/gamteam$ ln -s "/Users/gamteam/bin/gam7/gam" /usr/local/bin/gam ``` -Set environment variable OLDGAMPATH to point to the existing Gam directory; /Users/admin/bin/gam will be used in this example. +Set environment variable OLDGAMPATH to point to the existing Gam directory; /Users/gamteam/bin/gam will be used in this example. If your existing Gam is in another directory, substitute that value in the directions. ``` -admin@server:/Users/admin$ export OLDGAMPATH=/Users/admin/bin/gam +gamteam@server:/Users/gamteam$ export OLDGAMPATH=/Users/gamteam/bin/gam ``` Verify that OLDGAMPATH points to the correct location. ``` -admin@server:/Users/admin$ ls -l $OLDGAMPATH/*.json --rw-r-----@ 1 admin staff 553 Feb 26 10:39 /Users/admin/bin/gam/client_secrets.json --rw-r-----@ 1 admin staff 2377 Feb 26 10:39 /Users/admin/bin/gam/oauth2service.json -admin@server:/Users/admin$ +gamteam@server:/Users/gamteam$ ls -l $OLDGAMPATH/*.json +-rw-r-----@ 1 admin staff 553 Feb 26 10:39 /Users/gamteam/bin/gam/client_secrets.json +-rw-r-----@ 1 admin staff 2377 Feb 26 10:39 /Users/gamteam/bin/gam/oauth2service.json +gamteam@server:/Users/gamteam$ ``` ### Initialize GAM7; this should be the first GAM7 command executed. ``` -admin@server:/Users/admin$ gam config drive_dir /Users/admin/GAMWork verify -Created: /Users/admin/GAMConfig -Created: /Users/admin/GAMConfig/gamcache -Copied: /Users/admin/bin/gam/oauth2service.json, To: /Users/admin/GAMConfig/oauth2service.json -Copied: /Users/admin/bin/gam/oauth2.txt, To: /Users/admin/GAMConfig/oauth2.txt -Copied: /Users/admin/bin/gam/client_secrets.json, To: /Users/admin/GAMConfig/client_secrets.json -Config File: /Users/admin/GAMConfig/gam.cfg, Initialized +gamteam@server:/Users/gamteam$ gam config drive_dir /Users/gamteam/GAMWork verify +Created: /Users/gamteam/GAMConfig +Created: /Users/gamteam/GAMConfig/gamcache +Copied: /Users/gamteam/bin/gam/oauth2service.json, To: /Users/gamteam/GAMConfig/oauth2service.json +Copied: /Users/gamteam/bin/gam/oauth2.txt, To: /Users/gamteam/GAMConfig/oauth2.txt +Copied: /Users/gamteam/bin/gam/client_secrets.json, To: /Users/gamteam/GAMConfig/client_secrets.json +Config File: /Users/gamteam/GAMConfig/gam.cfg, Initialized Section: DEFAULT ... - cache_dir = /Users/admin/GAMConfig/gamcache + cache_dir = /Users/gamteam/GAMConfig/gamcache ... - config_dir = /Users/admin/GAMConfig + config_dir = /Users/gamteam/GAMConfig ... - drive_dir = /Users/admin/GAMWork + drive_dir = /Users/gamteam/GAMWork ... -admin@server:/Users/admin$ +gamteam@server:/Users/gamteam$ ``` ### Verify initialization, this was a successful installation. ``` -admin@server:/Users/admin$ ls -l $GAMCFGDIR +gamteam@server:/Users/gamteam$ ls -l $GAMCFGDIR total 48 -rw-r-----+ 1 admin staff 553 Mar 3 09:23 client_secrets.json -rw-r-----+ 1 admin staff 1069 Mar 3 09:23 gam.cfg @@ -149,21 +149,21 @@ drwxr-x---+ 2 admin staff 68 Mar 3 09:23 gamcache -rw-r-----+ 1 admin staff 5104 Mar 3 09:23 oauth2.txt -rw-rw-rw-+ 1 admin staff 0 Mar 3 09:23 oauth2.txt.lock -rw-r-----+ 1 admin staff 2377 Mar 3 09:23 oauth2service.json -admin@server:/Users/admin$ +gamteam@server:/Users/gamteam$ ``` If the verification looks like this, then you'll have to copy client_secrets.json and oauth2service.json manually. ``` -admin@server:/Users/admin$ ls -l $GAMCFGDIR +gamteam@server:/Users/gamteam$ ls -l $GAMCFGDIR total 40 -rw-r-----+ 1 admin admin 1427 Nov 1 11:38 gam.cfg drwxr-x---+ 16 admin admin 544 Nov 2 07:25 gamcache -rw-r--r--+ 1 admin admin 10 Nov 2 15:31 lastupdatecheck.txt -rw-rw-rw-+ 1 admin admin 0 Sep 19 17:28 oauth2.txt.lock -admin@server:/Users/admin$ cp -p $OLDGAMPATH/client_secrets.json $GAMCFGDIR/ -admin@server:/Users/admin$ cp -p $OLDGAMPATH/oauth2service.json $GAMCFGDIR/ -admin@server:/Users/admin$ cp -p $OLDGAMPATH/oauth2.txt $GAMCFGDIR/ -admin@server:/Users/admin$ ls -l $GAMCFGDIR +gamteam@server:/Users/gamteam$ cp -p $OLDGAMPATH/client_secrets.json $GAMCFGDIR/ +gamteam@server:/Users/gamteam$ cp -p $OLDGAMPATH/oauth2service.json $GAMCFGDIR/ +gamteam@server:/Users/gamteam$ cp -p $OLDGAMPATH/oauth2.txt $GAMCFGDIR/ +gamteam@server:/Users/gamteam$ ls -l $GAMCFGDIR total 40 -rw-r-----+ 1 admin staff 553 Mar 3 09:23 client_secrets.json -rw-r-----+ 1 admin staff 1069 Mar 3 09:23 gam.cfg @@ -175,9 +175,9 @@ drwxr-x---+ 2 admin staff 68 Mar 3 09:23 gamcache ``` ### Update your project with local browser to include the additional APIs that GAM7 uses. ``` -admin@server:/Users/admin$ gam update project +gamteam@server:/Users/gamteam$ gam update project -Enter your Google Workspace admin or GCP project manager email address authorized to manage project(s) gam-project-abc-123-xyz? admin@domain.com +Enter your Google Workspace admin or GCP project manager email address authorized to manage project(s) gam-project-abc-123-xyz? gamteam@domain.com Your browser has been opened to visit: @@ -205,14 +205,14 @@ Enable 3 APIs API: groupsmigration.googleapis.com, Enabled (2/3) API: sheets.googleapis.com, Enabled (3/3) -admin@server:/Users/admin$ +gamteam@server:/Users/gamteam$ ``` ### Update your project without local browser (Google Cloud Shell for instance) to include the additional APIs that GAM7 uses ``` -admin@server:/Users/admin$ gam config no_browser true save -admin@server:/Users/admin$ gam update project +gamteam@server:/Users/gamteam$ gam config no_browser true save +gamteam@server:/Users/gamteam$ gam update project -Enter your Google Workspace admin or GCP project manager email address authorized to manage project(s) gam-project-abc-123-xyz? admin@domain.com +Enter your Google Workspace admin or GCP project manager email address authorized to manage project(s) gam-project-abc-123-xyz? gamteam@domain.com Go to the following link in a browser on other computer: @@ -239,7 +239,7 @@ Enable 3 APIs API: groupsmigration.googleapis.com, Enabled (2/3) API: sheets.googleapis.com, Enabled (3/3) -admin@server:/Users/admin$ +gamteam@server:/Users/gamteam$ ``` ### Enable GAM7 client access @@ -249,17 +249,17 @@ You select a list of scopes, GAM uses a browser to get final authorization from writes the credentials into the file oauth2.txt. ``` -admin@server:/Users/admin$ rm -f /Users/admin/GAMConfig/oauth2.txt -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 -GAM 7.34.02 - https://github.com/GAM-team/GAM - pyinstaller +gamteam@server:/Users/gamteam$ rm -f /Users/gamteam/GAMConfig/oauth2.txt +gamteam@server:/Users/gamteam$ gam version +WARNING: Config File: /Users/gamteam/GAMConfig/gam.cfg, Section: DEFAULT, Item: oauth2_txt, Value: /Users/gamteam/GAMConfig/oauth2.txt, Not Found +GAM 7.34.03 - https://github.com/GAM-team/GAM - pyinstaller GAM Team -Python 3.14.2 64-bit final -macOS Tahoe 26.2 x86_64 -Path: /Users/admin/bin/gam7 -Config File: /Users/admin/GAMConfig/gam.cfg, Section: DEFAULT, customer_id: my_customer, domain: domain.com +Python 3.14.3 64-bit final +macOS Tahoe 26.3 arm64 +Path: /Users/gamteam/bin/gam7 +Config File: /Users/gamteam/GAMConfig/gam.cfg, Section: DEFAULT, customer_id: my_customer, domain: domain.com -admin@server:/Users/admin$ gam oauth create +gamteam@server:/Users/gamteam$ gam oauth create [*] 0) Calendar API (supports readonly) [*] 1) Chrome Browser Cloud Management API (supports readonly) @@ -326,7 +326,7 @@ Continue to authorization by entering a 'c' Please enter 0-50[a|r] or s|u|e|c: c -Enter your Google Workspace admin email address? admin@domain.com +Enter your Google Workspace admin email address? gamteam@domain.com Go to the following link in a browser on this computer or on another computer: @@ -338,13 +338,13 @@ click the Allow button, paste "Unable to connect" URL from other computer (only Enter verification code or paste "Unable to connect" URL from other computer (only URL data up to &scope required): The authentication flow has completed. -Client OAuth2 File: /Users/admin/GAMConfig/oauth2.txt, Created +Client OAuth2 File: /Users/gamteam/GAMConfig/oauth2.txt, Created -admin@server:/Users/admin$ +gamteam@server:/Users/gamteam$ ``` ### Enable GAM7 service account access. ``` -admin@server:/Users/admin$ gam user admin@domain.com update serviceaccount +gamteam@server:/Users/gamteam$ gam user gamteam@domain.com update serviceaccount [*] 0) AlertCenter API [*] 1) Analytics API - read only [*] 2) Analytics Admin API - read only @@ -408,7 +408,7 @@ Service Account Private Key Authentication Authentication PASS Service Account Private Key age; Google recommends rotating keys on a routine basis Service Account Private Key age: 1 day WARN -Domain-wide Delegation authentication:, User: admin@domain.com, Scopes: 38 +Domain-wide Delegation authentication:, User: gamteam@domain.com, Scopes: 38 https://mail.google.com/ PASS (1/38) https://sites.google.com/feeds FAIL (2/38) https://www.googleapis.com/auth/analytics.readonly FAIL (3/38) @@ -459,7 +459,7 @@ Click AUTHORIZE When the box closes you're done After authorizing it may take some time for this test to pass so wait a few moments and then try this command again. -admin@server:/Users/admin$ +gamteam@server:/Users/gamteam$ ``` The link shown in the error message should take you directly to the authorization screen. If not, make sure that you are logged in as a domain admin, then re-enter the link. @@ -469,7 +469,7 @@ If not, make sure that you are logged in as a domain admin, then re-enter the li Wait a moment and then perform the following command; it it still fails, wait a bit longer, it can sometimes take serveral minutes for the authorization to complete. ``` -admin@server:/Users/admin$ gam user admin@domain.com check serviceaccount +gamteam@server:/Users/gamteam$ gam user gamteam@domain.com check serviceaccount System time status Your system time differs from admin.googleapis.com by less than 1 second PASS @@ -477,7 +477,7 @@ Service Account Private Key Authentication Authentication PASS Service Account Private Key age; Google recommends rotating keys on a routine basis Service Account Private Key age: 1 day WARN -Domain-wide Delegation authentication:, User: admin@domain.com, Scopes: 38 +Domain-wide Delegation authentication:, User: gamteam@domain.com, Scopes: 38 https://mail.google.com/ PASS (1/38) https://sites.google.com/feeds PASS (2/38) https://www.googleapis.com/auth/analytics.readonly PASS (3/38) @@ -519,14 +519,14 @@ Domain-wide Delegation authentication:, User: admin@domain.com, Scopes: 38 All scopes PASSED! Service Account Client name: SVCACCTID is fully authorized. -admin@server:/Users/admin$ +gamteam@server:/Users/gamteam$ ``` ### Update gam.cfg with some basic values * `customer_id` - Having this data keeps Gam from having to make extra API calls * `domain` - This allows you to omit the domain portion of email addresses * `timezone local` - Gam will convert all UTC times to your local timezone ``` -admin@server:/Users/admin$ gam info domain +gamteam@server:/Users/gamteam$ gam info domain Customer ID: C01234567 Primary Domain: domain.com Customer Creation Time: 2007-06-06T15:47:55.444Z @@ -534,8 +534,8 @@ Primary Domain Verified: True Default Language: en ... -admin@server:/Users/admin$ gam config customer_id C01234567 domain domain.com timezone local save verify -Config File: /Users/admin/GAMConfig/gam.cfg, Saved +gamteam@server:/Users/gamteam$ gam config customer_id C01234567 domain domain.com timezone local save verify +Config File: /Users/gamteam/GAMConfig/gam.cfg, Saved Section: DEFAULT activity_max_results = 100 admin_email = '' @@ -546,18 +546,18 @@ Section: DEFAULT bail_on_internal_error_tries = 2 batch_size = 50 cacerts_pem = '' - cache_dir = /Users/admin/GAMConfig/gamcache + cache_dir = /Users/gamteam/GAMConfig/gamcache cache_discovery_only = true channel_customer_id = '' charset = utf-8 chat_max_results = 100 classroom_max_results = 0 - client_secrets_json = client_secrets.json ; /Users/admin/GAMConfig/client_secrets.json + client_secrets_json = client_secrets.json ; /Users/gamteam/GAMConfig/client_secrets.json clock_skew_in_seconds = 10 cmdlog = '' cmdlog_max_backups = 5 cmdlog_max_kilo_bytes = 1000 - config_dir = /Users/admin/GAMConfig + config_dir = /Users/gamteam/GAMConfig contact_max_results = 100 csv_input_column_delimiter = , csv_input_no_escape_char = true @@ -594,7 +594,7 @@ Section: DEFAULT developer_preview_apis = '' device_max_results = 200 domain = domain.com - drive_dir = /Users/admin/GAMWork + drive_dir = /Users/gamteam/GAMWork drive_max_results = 1000 email_batch_size = 50 enable_dasa = false @@ -622,8 +622,8 @@ Section: DEFAULT no_verify_ssl = false num_tbatch_threads = 2 num_threads = 5 - oauth2_txt = oauth2.txt ; /Users/admin/GAMConfig/oauth2.txt - oauth2service_json = oauth2service.json ; /Users/admin/GAMConfig/oauth2service.json + oauth2_txt = oauth2.txt ; /Users/gamteam/GAMConfig/oauth2.txt + oauth2service_json = oauth2service.json ; /Users/gamteam/GAMConfig/oauth2service.json output_dateformat = '' output_timeformat = '' people_max_results = 100 @@ -674,12 +674,12 @@ Section: DEFAULT user_max_results = 500 user_service_account_access_only = false -admin@server:/Users/admin$ +gamteam@server:/Users/gamteam$ ``` ## Windows -In these examples, your Google Super admin is shown as admin@domain.com; replace with the +In these examples, your Google Super admin is shown as gamteam@domain.com; replace with the actual email adddress. This example assumes that GAM7 has been installed in C:\GAM7; if you've installed @@ -965,7 +965,7 @@ C:\>dir %GAMCFGDIR% ``` C:\>gam update project -Enter your Google Workspace admin or GCP project manager email address authorized to manage project(s) gam-project-abc-123-xyz? admin@domain.com +Enter your Google Workspace admin or GCP project manager email address authorized to manage project(s) gam-project-abc-123-xyz? gamteam@domain.com Your browser has been opened to visit: @@ -997,7 +997,7 @@ C:\> C:\>gam config no_browser true save C:\>gam update project -Enter your Google Workspace admin or GCP project manager email address authorized to manage project(s) gam-project-abc-123-xyz? admin@domain.com +Enter your Google Workspace admin or GCP project manager email address authorized to manage project(s) gam-project-abc-123-xyz? gamteam@domain.com Go to the following link in a browser on other computer: @@ -1036,9 +1036,9 @@ writes the credentials into the file oauth2.txt. C:\>del C:\GAMConfig\oauth2.txt C:\>gam version WARNING: Config File: C:\GAMConfig\gam.cfg, Section: DEFAULT, Item: oauth2_txt, Value: C:\GAMConfig\oauth2.txt, Not Found -GAM 7.34.02 - https://github.com/GAM-team/GAM - pythonsource +GAM 7.34.03 - https://github.com/GAM-team/GAM - pythonsource GAM Team -Python 3.14.2 64-bit final +Python 3.14.3 64-bit final Windows 11 10.0.26200 AMD64 Path: C:\GAM7 Config File: C:\GAMConfig\gam.cfg, Section: DEFAULT, customer_id: my_customer, domain: domain.com @@ -1110,7 +1110,7 @@ Continue to authorization by entering a 'c' Please enter 0-50[a|r] or s|u|e|c: c -Enter your Google Workspace admin email address? admin@domain.com +Enter your Google Workspace admin email address? gamteam@domain.com Go to the following link in a browser on this computer or on another computer: @@ -1129,7 +1129,7 @@ C:\> ### Enable GAM7 service account access. ``` -C:\>gam user admin@domain.com update serviceaccount +C:\>gam user gamteam@domain.com update serviceaccount [*] 0) AlertCenter API [*] 1) Analytics API - read only [*] 2) Analytics Admin API - read only @@ -1193,7 +1193,7 @@ Service Account Private Key Authentication Authentication PASS Service Account Private Key age; Google recommends rotating keys on a routine basis Service Account Private Key age: 1 day WARN -Domain-wide Delegation authentication:, User: admin@domain.com, Scopes: 38 +Domain-wide Delegation authentication:, User: gamteam@domain.com, Scopes: 38 https://mail.google.com/ PASS (1/38) https://sites.google.com/feeds FAIL (2/38) https://www.googleapis.com/auth/analytics.readonly FAIL (3/38) @@ -1254,14 +1254,14 @@ If not, make sure that you are logged in as a domain admin, then re-enter the li Wait a moment and then perform the following command; it it still fails, wait a bit longer, it can sometimes take serveral minutes for the authorization to complete. ``` -C:\>gam user admin@domain.com check serviceaccount +C:\>gam user gamteam@domain.com check serviceaccount System time status Your system time differs from admin.googleapis.com by less than 1 second PASS Service Account Private Key Authentication Authentication PASS Service Account Private Key age; Google recommends rotating keys on a routine basis Service Account Private Key age: 1 day WARN -Domain-wide Delegation authentication:, User: admin@domain.com, Scopes: 38 +Domain-wide Delegation authentication:, User: gamteam@domain.com, Scopes: 38 https://mail.google.com/ PASS (1/38) https://sites.google.com/feeds PASS (2/38) https://www.googleapis.com/auth/analytics.readonly PASS (3/38) diff --git a/wiki/Version-and-Help.md b/wiki/Version-and-Help.md index 83226ac1..f706b063 100644 --- a/wiki/Version-and-Help.md +++ b/wiki/Version-and-Help.md @@ -3,23 +3,23 @@ Print the current version of Gam with details ``` gam version -GAM 7.34.02 - https://github.com/GAM-team/GAM - pyinstaller +GAM 7.34.03 - https://github.com/GAM-team/GAM - pyinstaller GAM Team -Python 3.14.2 64-bit final -macOS Tahoe 26.2 x86_64 -Path: /Users/Admin/bin/gam7 -Config File: /Users/admin/GAMConfig/gam.cfg, Section: DEFAULT, customer_id: my_customer, domain: domain.com -Time: 2025-12-23T13:57:00-08:00 +Python 3.14.3 64-bit final +macOS Tahoe 26.3 arm64 +Path: /Users/gamteam/bin/gam7 +Config File: /Users/gamteam/GamConfig/gam.cfg, Section: DEFAULT, customer_id: my_customer, domain: domain.com +Time: 2026-02-15T07:51:00-08:00 ``` Print the current version of Gam with details and time offset information ``` gam version timeoffset -GAM 7.34.02 - https://github.com/GAM-team/GAM - pyinstaller +GAM 7.34.03 - https://github.com/GAM-team/GAM - pyinstaller GAM Team -Python 3.14.2 64-bit final -macOS Tahoe 26.2 x86_64 -Path: /Users/Admin/bin/gam7 +Python 3.14.3 64-bit final +macOS Tahoe 26.3 arm64 +Path: /Users/gamteam/bin/gam7 Config File: /Users/admin/GAMConfig/gam.cfg, Section: DEFAULT, customer_id: my_customer, domain: domain.com Your system time differs from www.googleapis.com by less than 1 second ``` @@ -27,29 +27,29 @@ 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 ``` gam version extended -GAM 7.34.02 - https://github.com/GAM-team/GAM - pyinstaller +GAM 7.34.03 - https://github.com/GAM-team/GAM - pyinstaller GAM Team -Python 3.14.2 64-bit final -macOS Tahoe 26.2 x86_64 -Path: /Users/Admin/bin/gam7 -Config File: /Users/admin/GAMConfig/gam.cfg, Section: DEFAULT, customer_id: my_customer, domain: domain.com -Time: 2025-12-23T13:57:00-08:00 +Python 3.14.3 64-bit final +macOS Tahoe 26.3 arm64 +Path: /Users/gamteam/bin/gam7 +Config File: /Users/gamteam/GamConfig/gam.cfg, Section: DEFAULT, customer_id: my_customer, domain: domain.com +Time: 2026-02-15T07:51:00-08:00 Your system time differs from admin.googleapis.com by less than 1 second OpenSSL 3.6.1 27 Jan 2026 -arrow 1.3.0 +arrow 1.4.0 chardet 5.2.0 -cryptography 46.0.1 -filelock 3.19.1 -google-api-python-client 2.182.0 -google-auth-httplib2 0.2.0 -google-auth-oauthlib 1.2.2 -google-auth 2.40.3 -lxml 6.0.1 -httplib2 0.31.0 +cryptography 46.0.5 +filelock 3.21.2 +google-api-python-client 2.190.0 +google-auth-httplib2 0.3.0 +google-auth-oauthlib 1.2.4 +google-auth 2.48.0 +lxml 6.0.2 +httplib2 0.31.2 passlib 1.7.4 pathvalidate 3.3.1 -pyscard 2.3.0 -yubikey-manager 5.8.0 +pyscard 2.3.1 +yubikey-manager 5.9.0 admin.googleapis.com connects using TLSv1.3 TLS_AES_256_GCM_SHA384 ``` @@ -65,10 +65,10 @@ google-api-python-client 2.77.0 httplib2 0.16.0 oauth2client 4.1.3 MacOS High Sierra 10.13.6 x86_64 -Path: /Users/Admin/bin/gam7 +Path: /Users/gamteam/bin/gam7 Version Check: Current: 5.35.08 - Latest: 7.34.02 + Latest: 7.34.03 echo $? 1 ``` @@ -76,7 +76,7 @@ echo $? Print the current version number without details ``` gam version simple -7.34.02 +7.34.03 ``` In Linux/MacOS you can do: ``` @@ -86,13 +86,13 @@ echo $VER Print the current version of Gam and address of this Wiki ``` gam help -GAM 7.34.02 - https://github.com/GAM-team/GAM +GAM 7.34.03 - https://github.com/GAM-team/GAM GAM Team -Python 3.14.2 64-bit final -macOS Tahoe 26.2 x86_64 -Path: /Users/Admin/bin/gam7 -Config File: /Users/admin/GAMConfig/gam.cfg, Section: DEFAULT, customer_id: my_customer, domain: domain.com -Time: 2025-12-23T13:57:00-08:00 -Help: Syntax in file /Users/Admin/bin/gam7/GamCommands.txt +Python 3.14.3 64-bit final +macOS Tahoe 26.3 arm64 +Path: /Users/gamteam/bin/gam7 +Config File: /Users/gamteam/GamConfig/gam.cfg, Section: DEFAULT, customer_id: my_customer, domain: domain.com +Time: 2026-02-15T07:51:00-08:00 +Help: Syntax in file /Users/gamteam/bin/gam7/GamCommands.txt Help: Documentation is at https://github.com/GAM-team/GAM/wiki ```