diff --git a/docs/GamUpdates.md b/docs/GamUpdates.md index ce86122e..5dcb2280 100644 --- a/docs/GamUpdates.md +++ b/docs/GamUpdates.md @@ -11,6 +11,24 @@ Add the `-s` option to the end of the above commands to suppress creating the `g See [Downloads](https://github.com/taers232c/GAMADV-XTD3/wiki/Downloads) for Windows or other options, including manual installation +### 6.67.05 + +Updated the following commands: +``` +gam create|delete|update delegate +gam forward +gam create|delete forwardingaddresses +gam create|delete sendas +``` +to handle this error: +``` +ERROR: 403: permissionDenied - Insufficient Permission +``` +when the following serice account scope is not enabled: +``` +[ ] 28) Gmail API - Sharing Settings (Delegates, Forwarding, SendAs) - write +``` + ### 6.67.04 Updated user attribute `replace ` to allow `field:photourl` which allows diff --git a/docs/How-to-Upgrade-from-Standard-GAM.md b/docs/How-to-Upgrade-from-Standard-GAM.md index 01f29676..9012c3b0 100644 --- a/docs/How-to-Upgrade-from-Standard-GAM.md +++ b/docs/How-to-Upgrade-from-Standard-GAM.md @@ -334,7 +334,7 @@ writes the credentials into the file oauth2.txt. admin@server:/Users/admin/bin/gamadv-xtd3$ rm -f /Users/admin/GAMConfig/oauth2.txt admin@server:/Users/admin/bin/gamadv-xtd3$ ./gam version WARNING: Config File: /Users/admin/GAMConfig/gam.cfg, Section: DEFAULT, Item: oauth2_txt, Value: /Users/admin/GAMConfig/oauth2.txt, Not Found -GAMADV-XTD3 6.67.04 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource +GAMADV-XTD3 6.67.05 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource Ross Scroggs Python 3.10.8 64-bit final MacOS High Sierra 10.13.6 x86_64 @@ -1002,7 +1002,7 @@ writes the credentials into the file oauth2.txt. C:\GAMADV-XTD3>del C:\GAMConfig\oauth2.txt C:\GAMADV-XTD3>gam version WARNING: Config File: C:\GAMConfig\gam.cfg, Section: DEFAULT, Item: oauth2_txt, Value: C:\GAMConfig\oauth2.txt, Not Found -GAMADV-XTD3 6.67.04 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource +GAMADV-XTD3 6.67.05 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource Ross Scroggs Python 3.12.0 64-bit final Windows-10-10.0.17134 AMD64 diff --git a/docs/Version-and-Help.md b/docs/Version-and-Help.md index 2c0817a4..9adbdc20 100644 --- a/docs/Version-and-Help.md +++ b/docs/Version-and-Help.md @@ -4,7 +4,7 @@ Print the current version of Gam with details ``` gam version -GAMADV-XTD3 6.67.04 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource +GAMADV-XTD3 6.67.05 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource Ross Scroggs Python 3.12.0 64-bit final MacOS Monterey 12.7 x86_64 @@ -16,7 +16,7 @@ Time: 2023-06-02T21:10:00-07:00 Print the current version of Gam with details and time offset information ``` gam version timeoffset -GAMADV-XTD3 6.67.04 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource +GAMADV-XTD3 6.67.05 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource Ross Scroggs Python 3.12.0 64-bit final MacOS Monterey 12.7 x86_64 @@ -28,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 ``` gam version extended -GAMADV-XTD3 6.67.04 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource +GAMADV-XTD3 6.67.05 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource Ross Scroggs Python 3.12.0 64-bit final MacOS Monterey 12.7 x86_64 @@ -65,7 +65,7 @@ MacOS High Sierra 10.13.6 x86_64 Path: /Users/Admin/bin/gamadv-xtd3 Version Check: Current: 5.35.08 - Latest: 6.67.04 + Latest: 6.67.05 echo $? 1 ``` @@ -73,7 +73,7 @@ echo $? Print the current version number without details ``` gam version simple -6.67.04 +6.67.05 ``` In Linux/MacOS you can do: ``` @@ -83,7 +83,7 @@ echo $VER Print the current version of Gam and address of this Wiki ``` gam help -GAM 6.67.04 - https://github.com/taers232c/GAMADV-XTD3 +GAM 6.67.05 - https://github.com/taers232c/GAMADV-XTD3 Ross Scroggs Python 3.12.0 64-bit final MacOS Monterey 12.7 x86_64 diff --git a/src/GamUpdate.txt b/src/GamUpdate.txt index ddefd173..dfd7c79e 100644 --- a/src/GamUpdate.txt +++ b/src/GamUpdate.txt @@ -2,6 +2,24 @@ Merged GAM-Team version +6.67.05 + +Updated the following commands: +``` +gam create|delete|update delegate +gam forward +gam create|delete forwardingaddresses +gam create|delete sendas +``` +to handle this error: +``` +ERROR: 403: permissionDenied - Insufficient Permission +``` +when the following serice account scope is not enabled: +``` +[ ] 28) Gmail API - Sharing Settings (Delegates, Forwarding, SendAs) - write +``` + 6.67.04 Updated user attribute `replace ` to allow `field:photourl` which allows diff --git a/src/gam/__init__.py b/src/gam/__init__.py index 8df07585..0149e56c 100755 --- a/src/gam/__init__.py +++ b/src/gam/__init__.py @@ -68130,10 +68130,10 @@ def setForward(users): continue try: result = callGAPI(gmail.users().settings(), 'updateAutoForwarding', - throwReasons=GAPI.GMAIL_THROW_REASONS+[GAPI.FAILED_PRECONDITION, GAPI.INVALID], + throwReasons=GAPI.GMAIL_THROW_REASONS+[GAPI.INVALID, GAPI.FAILED_PRECONDITION, GAPI.PERMISSION_DENIED], userId='me', body=body) _showForward(user, i, count, result) - except (GAPI.failedPrecondition, GAPI.invalid) as e: + except (GAPI.invalid, GAPI.failedPrecondition, GAPI.permissionDenied) as e: if enable: entityActionFailedWarning([Ent.USER, user, Ent.FORWARDING_ADDRESS, body['emailAddress']], str(e), i, count) else: @@ -68205,13 +68205,13 @@ def _processForwardingAddress(user, i, count, emailAddress, j, jcount, gmail, fu try: result = callGAPI(gmail.users().settings().forwardingAddresses(), function, throwReasons=GAPI.GMAIL_THROW_REASONS+[GAPI.NOT_FOUND, GAPI.ALREADY_EXISTS, GAPI.DUPLICATE, - GAPI.INVALID_ARGUMENT, GAPI.FAILED_PRECONDITION], + GAPI.INVALID_ARGUMENT, GAPI.FAILED_PRECONDITION, GAPI.PERMISSION_DENIED], userId='me', **kwargs) if function == 'get': _showForwardingAddress(j, count, result) else: entityActionPerformed([Ent.USER, user, Ent.FORWARDING_ADDRESS, emailAddress], j, jcount) - except (GAPI.notFound, GAPI.alreadyExists, GAPI.duplicate, GAPI.invalidArgument, GAPI.failedPrecondition) as e: + except (GAPI.notFound, GAPI.alreadyExists, GAPI.duplicate, GAPI.invalidArgument, GAPI.failedPrecondition, GAPI.permissionDenied) as e: entityActionFailedWarning([Ent.USER, user, Ent.FORWARDING_ADDRESS, emailAddress], str(e), j, jcount) except (GAPI.serviceNotAvailable, GAPI.badRequest): entityServiceNotApplicableWarning(Ent.USER, user, i, count) @@ -68548,14 +68548,14 @@ def _processSendAs(user, i, count, entityType, emailAddress, j, jcount, gmail, f result = callGAPI(gmail.users().settings().sendAs(), function, throwReasons=GAPI.GMAIL_THROW_REASONS+[GAPI.NOT_FOUND, GAPI.ALREADY_EXISTS, GAPI.DUPLICATE, GAPI.CANNOT_DELETE_PRIMARY_SENDAS, GAPI.INVALID_ARGUMENT, - GAPI.FAILED_PRECONDITION], + GAPI.FAILED_PRECONDITION, GAPI.PERMISSION_DENIED], userId='me', **kwargs) if function == 'get': _showSendAs(result, j, jcount, sigReplyFormat, verifyOnly) else: entityActionPerformed([Ent.USER, user, entityType, emailAddress], j, jcount) except (GAPI.notFound, GAPI.alreadyExists, GAPI.duplicate, - GAPI.cannotDeletePrimarySendAs, GAPI.invalidArgument, GAPI.failedPrecondition) as e: + GAPI.cannotDeletePrimarySendAs, GAPI.invalidArgument, GAPI.failedPrecondition, GAPI.permissionDenied) as e: entityActionFailedWarning([Ent.USER, user, entityType, emailAddress], str(e), j, jcount) except (GAPI.serviceNotAvailable, GAPI.badRequest): entityServiceNotApplicableWarning(Ent.USER, user, i, count)