gam7 7.5.8__tar.gz → 7.5.11__tar.gz

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

Potentially problematic release.


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

Files changed (108) hide show
  1. {gam7-7.5.8 → gam7-7.5.11}/PKG-INFO +1 -1
  2. {gam7-7.5.8 → gam7-7.5.11}/src/GamCommands.txt +4 -0
  3. {gam7-7.5.8 → gam7-7.5.11}/src/GamUpdate.txt +22 -0
  4. {gam7-7.5.8 → gam7-7.5.11}/src/gam/__init__.py +15 -5
  5. {gam7-7.5.8 → gam7-7.5.11}/src/gam/gamlib/glskus.py +8 -0
  6. {gam7-7.5.8 → gam7-7.5.11}/src/gam/googleapiclient/version.py +1 -1
  7. {gam7-7.5.8 → gam7-7.5.11}/.github/ISSUE_TEMPLATE/aa-question.md +0 -0
  8. {gam7-7.5.8 → gam7-7.5.11}/.github/ISSUE_TEMPLATE/za-bug-report.md +0 -0
  9. {gam7-7.5.8 → gam7-7.5.11}/.github/ISSUE_TEMPLATE/zz-feature-request.md +0 -0
  10. {gam7-7.5.8 → gam7-7.5.11}/.github/ISSUE_TEMPLATE.txt +0 -0
  11. {gam7-7.5.8 → gam7-7.5.11}/.github/actions/creds.tar.xz.gpg +0 -0
  12. {gam7-7.5.8 → gam7-7.5.11}/.github/actions/decrypt.sh +0 -0
  13. {gam7-7.5.8 → gam7-7.5.11}/.github/actions/entitlements.plist +0 -0
  14. {gam7-7.5.8 → gam7-7.5.11}/.github/actions/package_exclusions.txt +0 -0
  15. {gam7-7.5.8 → gam7-7.5.11}/.github/stale.yml +0 -0
  16. {gam7-7.5.8 → gam7-7.5.11}/.github/workflows/build.yml +0 -0
  17. {gam7-7.5.8 → gam7-7.5.11}/.github/workflows/codeql-analysis.yml +0 -0
  18. {gam7-7.5.8 → gam7-7.5.11}/.github/workflows/get-cacerts.yml +0 -0
  19. {gam7-7.5.8 → gam7-7.5.11}/.github/workflows/pypi.yml +0 -0
  20. {gam7-7.5.8 → gam7-7.5.11}/.pre-commit-config.yaml +0 -0
  21. {gam7-7.5.8 → gam7-7.5.11}/LICENSE +0 -0
  22. {gam7-7.5.8 → gam7-7.5.11}/README.md +0 -0
  23. {gam7-7.5.8 → gam7-7.5.11}/pyproject.toml +0 -0
  24. {gam7-7.5.8 → gam7-7.5.11}/src/.gitignore +0 -0
  25. {gam7-7.5.8 → gam7-7.5.11}/src/LICENSE +0 -0
  26. {gam7-7.5.8 → gam7-7.5.11}/src/cacerts.pem +0 -0
  27. {gam7-7.5.8 → gam7-7.5.11}/src/callgam.py +0 -0
  28. {gam7-7.5.8 → gam7-7.5.11}/src/gam/__main__.py +0 -0
  29. {gam7-7.5.8 → gam7-7.5.11}/src/gam/atom/__init__.py +0 -0
  30. {gam7-7.5.8 → gam7-7.5.11}/src/gam/atom/auth.py +0 -0
  31. {gam7-7.5.8 → gam7-7.5.11}/src/gam/atom/client.py +0 -0
  32. {gam7-7.5.8 → gam7-7.5.11}/src/gam/atom/core.py +0 -0
  33. {gam7-7.5.8 → gam7-7.5.11}/src/gam/atom/data.py +0 -0
  34. {gam7-7.5.8 → gam7-7.5.11}/src/gam/atom/http.py +0 -0
  35. {gam7-7.5.8 → gam7-7.5.11}/src/gam/atom/http_core.py +0 -0
  36. {gam7-7.5.8 → gam7-7.5.11}/src/gam/atom/http_interface.py +0 -0
  37. {gam7-7.5.8 → gam7-7.5.11}/src/gam/atom/mock_http.py +0 -0
  38. {gam7-7.5.8 → gam7-7.5.11}/src/gam/atom/mock_http_core.py +0 -0
  39. {gam7-7.5.8 → gam7-7.5.11}/src/gam/atom/mock_service.py +0 -0
  40. {gam7-7.5.8 → gam7-7.5.11}/src/gam/atom/service.py +0 -0
  41. {gam7-7.5.8 → gam7-7.5.11}/src/gam/atom/token_store.py +0 -0
  42. {gam7-7.5.8 → gam7-7.5.11}/src/gam/atom/url.py +0 -0
  43. {gam7-7.5.8 → gam7-7.5.11}/src/gam/cacerts.pem +0 -0
  44. {gam7-7.5.8 → gam7-7.5.11}/src/gam/cbcm-v1.1beta1.json +0 -0
  45. {gam7-7.5.8 → gam7-7.5.11}/src/gam/contactdelegation-v1.json +0 -0
  46. {gam7-7.5.8 → gam7-7.5.11}/src/gam/datastudio-v1.json +0 -0
  47. {gam7-7.5.8 → gam7-7.5.11}/src/gam/gamlib/__init__.py +0 -0
  48. {gam7-7.5.8 → gam7-7.5.11}/src/gam/gamlib/glaction.py +0 -0
  49. {gam7-7.5.8 → gam7-7.5.11}/src/gam/gamlib/glapi.py +0 -0
  50. {gam7-7.5.8 → gam7-7.5.11}/src/gam/gamlib/glcfg.py +0 -0
  51. {gam7-7.5.8 → gam7-7.5.11}/src/gam/gamlib/glclargs.py +0 -0
  52. {gam7-7.5.8 → gam7-7.5.11}/src/gam/gamlib/glentity.py +0 -0
  53. {gam7-7.5.8 → gam7-7.5.11}/src/gam/gamlib/glgapi.py +0 -0
  54. {gam7-7.5.8 → gam7-7.5.11}/src/gam/gamlib/glgdata.py +0 -0
  55. {gam7-7.5.8 → gam7-7.5.11}/src/gam/gamlib/glglobals.py +0 -0
  56. {gam7-7.5.8 → gam7-7.5.11}/src/gam/gamlib/glindent.py +0 -0
  57. {gam7-7.5.8 → gam7-7.5.11}/src/gam/gamlib/glmsgs.py +0 -0
  58. {gam7-7.5.8 → gam7-7.5.11}/src/gam/gamlib/gluprop.py +0 -0
  59. {gam7-7.5.8 → gam7-7.5.11}/src/gam/gamlib/glverlibs.py +0 -0
  60. {gam7-7.5.8 → gam7-7.5.11}/src/gam/gamlib/yubikey.py +0 -0
  61. {gam7-7.5.8 → gam7-7.5.11}/src/gam/gdata/__init__.py +0 -0
  62. {gam7-7.5.8 → gam7-7.5.11}/src/gam/gdata/alt/__init__.py +0 -0
  63. {gam7-7.5.8 → gam7-7.5.11}/src/gam/gdata/alt/app_engine.py +0 -0
  64. {gam7-7.5.8 → gam7-7.5.11}/src/gam/gdata/alt/appengine.py +0 -0
  65. {gam7-7.5.8 → gam7-7.5.11}/src/gam/gdata/apps/__init__.py +0 -0
  66. {gam7-7.5.8 → gam7-7.5.11}/src/gam/gdata/apps/audit/__init__.py +0 -0
  67. {gam7-7.5.8 → gam7-7.5.11}/src/gam/gdata/apps/audit/service.py +0 -0
  68. {gam7-7.5.8 → gam7-7.5.11}/src/gam/gdata/apps/contacts/__init__.py +0 -0
  69. {gam7-7.5.8 → gam7-7.5.11}/src/gam/gdata/apps/contacts/service.py +0 -0
  70. {gam7-7.5.8 → gam7-7.5.11}/src/gam/gdata/apps/service.py +0 -0
  71. {gam7-7.5.8 → gam7-7.5.11}/src/gam/gdata/service.py +0 -0
  72. {gam7-7.5.8 → gam7-7.5.11}/src/gam/gdata/urlfetch.py +0 -0
  73. {gam7-7.5.8 → gam7-7.5.11}/src/gam/googleapiclient/__init__.py +0 -0
  74. {gam7-7.5.8 → gam7-7.5.11}/src/gam/googleapiclient/_auth.py +0 -0
  75. {gam7-7.5.8 → gam7-7.5.11}/src/gam/googleapiclient/_helpers.py +0 -0
  76. {gam7-7.5.8 → gam7-7.5.11}/src/gam/googleapiclient/channel.py +0 -0
  77. {gam7-7.5.8 → gam7-7.5.11}/src/gam/googleapiclient/discovery.py +0 -0
  78. {gam7-7.5.8 → gam7-7.5.11}/src/gam/googleapiclient/discovery_cache/__init__.py +0 -0
  79. {gam7-7.5.8 → gam7-7.5.11}/src/gam/googleapiclient/discovery_cache/appengine_memcache.py +0 -0
  80. {gam7-7.5.8 → gam7-7.5.11}/src/gam/googleapiclient/discovery_cache/base.py +0 -0
  81. {gam7-7.5.8 → gam7-7.5.11}/src/gam/googleapiclient/discovery_cache/file_cache.py +0 -0
  82. {gam7-7.5.8 → gam7-7.5.11}/src/gam/googleapiclient/errors.py +0 -0
  83. {gam7-7.5.8 → gam7-7.5.11}/src/gam/googleapiclient/http.py +0 -0
  84. {gam7-7.5.8 → gam7-7.5.11}/src/gam/googleapiclient/mimeparse.py +0 -0
  85. {gam7-7.5.8 → gam7-7.5.11}/src/gam/googleapiclient/model.py +0 -0
  86. {gam7-7.5.8 → gam7-7.5.11}/src/gam/googleapiclient/schema.py +0 -0
  87. {gam7-7.5.8 → gam7-7.5.11}/src/gam/iso8601/__init__.py +0 -0
  88. {gam7-7.5.8 → gam7-7.5.11}/src/gam/iso8601/iso8601.py +0 -0
  89. {gam7-7.5.8 → gam7-7.5.11}/src/gam/meet-v2beta.json +0 -0
  90. {gam7-7.5.8 → gam7-7.5.11}/src/gam/serviceaccountlookup-v1.json +0 -0
  91. {gam7-7.5.8 → gam7-7.5.11}/src/gam/six.py +0 -0
  92. {gam7-7.5.8 → gam7-7.5.11}/src/gam-install.sh +0 -0
  93. {gam7-7.5.8 → gam7-7.5.11}/src/gam-setup.bat +0 -0
  94. {gam7-7.5.8 → gam7-7.5.11}/src/gam.exe.manifest +0 -0
  95. {gam7-7.5.8 → gam7-7.5.11}/src/gam.py +0 -0
  96. {gam7-7.5.8 → gam7-7.5.11}/src/gam.spec +0 -0
  97. {gam7-7.5.8 → gam7-7.5.11}/src/gam.wxs +0 -0
  98. {gam7-7.5.8 → gam7-7.5.11}/src/license.rtf +0 -0
  99. {gam7-7.5.8 → gam7-7.5.11}/src/project-apis.txt +0 -0
  100. {gam7-7.5.8 → gam7-7.5.11}/src/requirements-dev.txt +0 -0
  101. {gam7-7.5.8 → gam7-7.5.11}/src/requirements.txt +0 -0
  102. {gam7-7.5.8 → gam7-7.5.11}/src/setup.cfg +0 -0
  103. {gam7-7.5.8 → gam7-7.5.11}/src/setup.py +0 -0
  104. {gam7-7.5.8 → gam7-7.5.11}/src/tools/a_atleast_b.py +0 -0
  105. {gam7-7.5.8 → gam7-7.5.11}/src/tools/gen-wix-xml-filelist.py +0 -0
  106. {gam7-7.5.8 → gam7-7.5.11}/src/tools/mkGamRef.py +0 -0
  107. {gam7-7.5.8 → gam7-7.5.11}/src/tools/openssl.props +0 -0
  108. {gam7-7.5.8 → gam7-7.5.11}/src/version_info.txt.in +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: gam7
3
- Version: 7.5.8
3
+ Version: 7.5.11
4
4
  Summary: CLI tool to manage Google Workspace
5
5
  Project-URL: Homepage, https://github.com/GAM-team/GAM
6
6
  Project-URL: Issues, https://github.com/GAM-team/GAM/issues
@@ -281,11 +281,15 @@ If an item contains spaces, it should be surrounded by ".
281
281
  gsuitebasic | gafb | gafw | basic | Google-Apps-For-Business |
282
282
  gsuitebusiness | gau | gsb | unlimited | Google-Apps-Unlimited |
283
283
  gsuitebusinessarchived | gsbau | businessarchived | 1010340002 | Google Workspace Business - Archived User |
284
+ gsuiteedu | gafe | gsuiteeducation | Google-Apps-For-Education |
284
285
  gsuiteenterprisearchived | gseau | enterprisearchived | 1010340001 | Google Workspace Enterprise Plus - Archived User |
285
286
  gsuiteenterpriseeducation | gsefe | e4e | 1010310002 | Google Workspace for Education Plus - Legacy |
286
287
  gsuiteenterpriseeducationstudent | gsefes | e4es | 1010310003 | Google Workspace for Education Plus - Legacy (Student) |
287
288
  gsuitegov | gafg | gsuitegovernment | Google-Apps-For-Government |
288
289
  gsuitelite | gal | gsl | lite | Google-Apps-Lite |
290
+ gwef | workspaceeducationfundamentals | 1010070001 | Google Workspace for Education Fundamentals |
291
+ gwefau | gwefarchived | workspaceeducationfundamentalsarchived | 1010340007 | Google Workspace for Education Fundamentals - Archived User |
292
+ gwegmo | workspaceeducationgmailonly | 1010070004 | Google Workspace for Education Gmail Only |
289
293
  gwep | workspaceeducationplus | 1010310008 | Google Workspace for Education Plus |
290
294
  gwepstaff | workspaceeducationplusstaff | 1010310009 | Google Workspace for Education Plus (Staff) |
291
295
  gwepstudent | workspaceeducationplusstudent | 1010310010 | Google Workspace for Education Plus (Extra Student)|
@@ -1,3 +1,25 @@
1
+ 7.05.11
2
+
3
+ Added the following License SKUs:
4
+ ```
5
+ ProductId SKUId Display Name
6
+ Google-Apps 1010070001 Google Workspace for Education Fundamentals
7
+ Google-Apps 1010070004 Google Workspace for Education Gmail Only
8
+ 101034 1010340007 Google Workspace for Education Fundamentals - Archived User
9
+ ```
10
+
11
+ 7.05.10
12
+
13
+ Updated various chat space commands to handle the following error:
14
+ ```
15
+ ERROR: 503: serviceNotAvailable - The service is currently unavailable
16
+ ```
17
+
18
+ 7.05.09
19
+
20
+ Fixed bug in `gam calendars <CalendarEntity> print events matchfield attendeesstatus required accepted resource_calendar@resource.calendar.google.com`
21
+ that caused a trap.
22
+
1
23
  7.05.08
2
24
 
3
25
  Added error message to `gam report` commands to indicate forbidden access;
@@ -25,7 +25,7 @@ https://github.com/GAM-team/GAM/wiki
25
25
  """
26
26
 
27
27
  __author__ = 'GAM Team <google-apps-manager@googlegroups.com>'
28
- __version__ = '7.05.08'
28
+ __version__ = '7.05.11'
29
29
  __license__ = 'Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0)'
30
30
 
31
31
  #pylint: disable=wrong-import-position
@@ -909,6 +909,8 @@ def getBoolean(defaultValue=True):
909
909
  Cmd.Advance()
910
910
  return False
911
911
  if defaultValue is not None:
912
+ if not Cmd.Current().strip(): # If current argument is empty, skip over it
913
+ Cmd.Advance()
912
914
  return defaultValue
913
915
  invalidChoiceExit(boolean, TRUE_FALSE, False)
914
916
  if defaultValue is not None:
@@ -1482,6 +1484,8 @@ def getInteger(minVal=None, maxVal=None, default=None):
1482
1484
  return number
1483
1485
  except ValueError:
1484
1486
  if default is not None:
1487
+ if not Cmd.Current().strip(): # If current argument is empty, skip over it
1488
+ Cmd.Advance()
1485
1489
  return default
1486
1490
  invalidArgumentExit(integerLimits(minVal, maxVal))
1487
1491
  elif default is not None:
@@ -11842,7 +11846,7 @@ def doCreateProject():
11842
11846
  # Try to set policy on project to allow Service Account Key Upload
11843
11847
  # orgp = getAPIService(API.ORGPOLICY, httpObj)
11844
11848
  # projectParent = f"projects/{projectInfo['projectId']}"
11845
- # policyName = f'{projectParent}/policies/iam.disableServiceAccountKeyUpload'
11849
+ # policyName = f'{projectParent}/policies/iam.managed.disableServiceAccountKeyUpload'
11846
11850
  # try:
11847
11851
  # result = callGAPI(orgp.projects().policies(), 'get',
11848
11852
  # throwReasons=[GAPI.NOT_FOUND, GAPI.FAILED_PRECONDITION, GAPI.PERMISSION_DENIED],
@@ -12646,7 +12650,7 @@ def doProcessSvcAcctKeys(mode=None, iam=None, projectId=None, clientEmail=None,
12646
12650
  return False
12647
12651
  except GAPI.failedPrecondition as e:
12648
12652
  entityActionFailedWarning([Ent.PROJECT, projectId, Ent.SVCACCT, clientEmail], str(e))
12649
- if 'iam.disableServiceAccountKeyUpload' not in str(e):
12653
+ if 'iam.disableServiceAccountKeyUpload' not in str(e) and 'iam.managed.disableServiceAccountKeyUpload' not in str(e):
12650
12654
  return False
12651
12655
  if retry == maxRetries or mode != 'upload':
12652
12656
  sys.stdout.write(Msg.ENABLE_SERVICE_ACCOUNT_PRIVATE_KEY_UPLOAD.format(projectId))
@@ -26380,6 +26384,7 @@ def printShowChatSpaces(users):
26380
26384
  bailOnInternalError=True,
26381
26385
  throwReasons=[GAPI.NOT_FOUND, GAPI.INVALID_ARGUMENT, GAPI.INTERNAL_ERROR,
26382
26386
  GAPI.PERMISSION_DENIED, GAPI.FAILED_PRECONDITION],
26387
+ retryReasons=GAPI.SERVICE_NOT_AVAILABLE_RETRY_REASONS,
26383
26388
  fields=fields, pageSize=CHAT_PAGE_SIZE, **kwargsCS)
26384
26389
  except (GAPI.notFound, GAPI.invalidArgument, GAPI.internalError, GAPI.permissionDenied) as e:
26385
26390
  exitIfChatNotConfigured(chat, kvList, str(e), i, count)
@@ -26798,6 +26803,7 @@ def syncChatMembers(users):
26798
26803
  members = callGAPIpages(chat.spaces().members(), 'list', 'memberships',
26799
26804
  pageMessage=_getChatPageMessage(Ent.CHAT_MEMBER, user, i, count, qfilter),
26800
26805
  throwReasons=[GAPI.NOT_FOUND, GAPI.INVALID_ARGUMENT, GAPI.PERMISSION_DENIED, GAPI.FAILED_PRECONDITION],
26806
+ retryReasons=GAPI.SERVICE_NOT_AVAILABLE_RETRY_REASONS,
26801
26807
  parent=parent, showGroups=groupsSpecified, pageSize=CHAT_PAGE_SIZE, **kwargs, **kwargsUAA)
26802
26808
  for member in members:
26803
26809
  if 'member' in member:
@@ -26995,6 +27001,7 @@ def printShowChatMembers(users):
26995
27001
  bailOnInternalError=True,
26996
27002
  throwReasons=[GAPI.NOT_FOUND, GAPI.INVALID_ARGUMENT, GAPI.INTERNAL_ERROR,
26997
27003
  GAPI.PERMISSION_DENIED, GAPI.FAILED_PRECONDITION],
27004
+ retryReasons=GAPI.SERVICE_NOT_AVAILABLE_RETRY_REASONS,
26998
27005
  fields="nextPageToken,spaces(name,displayName,spaceType,membershipCount)", pageSize=CHAT_PAGE_SIZE,
26999
27006
  **kwargsCS)
27000
27007
  for space in spaces:
@@ -27011,6 +27018,7 @@ def printShowChatMembers(users):
27011
27018
  bailOnInternalError=True,
27012
27019
  throwReasons=[GAPI.NOT_FOUND, GAPI.INVALID_ARGUMENT, GAPI.INTERNAL_ERROR,
27013
27020
  GAPI.PERMISSION_DENIED, GAPI.FAILED_PRECONDITION],
27021
+ retryReasons=GAPI.SERVICE_NOT_AVAILABLE_RETRY_REASONS,
27014
27022
  fields="nextPageToken,spaces(name,displayName,spaceType,membershipCount)", pageSize=CHAT_PAGE_SIZE,
27015
27023
  **kwargsCS)
27016
27024
  for space in spaces:
@@ -27355,6 +27363,7 @@ def printShowChatMessages(users):
27355
27363
  messages = callGAPIpages(chat.spaces().messages(), 'list', 'messages',
27356
27364
  pageMessage=_getChatPageMessage(Ent.CHAT_MESSAGE, user, i, count, qfilter),
27357
27365
  throwReasons=[GAPI.NOT_FOUND, GAPI.INVALID_ARGUMENT, GAPI.PERMISSION_DENIED],
27366
+ retryReasons=GAPI.SERVICE_NOT_AVAILABLE_RETRY_REASONS,
27358
27367
  pageSize=CHAT_PAGE_SIZE, parent=parentName, filter=pfilter, showDeleted=showDeleted,
27359
27368
  fields=fields)
27360
27369
  for message in messages:
@@ -27472,6 +27481,7 @@ def printShowChatEvents(users):
27472
27481
  events = callGAPIpages(chat.spaces().spaceEvents(), 'list', 'spaceEvents',
27473
27482
  pageMessage=_getChatPageMessage(Ent.CHAT_EVENT, user, i, count, qfilter),
27474
27483
  throwReasons=[GAPI.NOT_FOUND, GAPI.INVALID_ARGUMENT, GAPI.PERMISSION_DENIED],
27484
+ retryReasons=GAPI.SERVICE_NOT_AVAILABLE_RETRY_REASONS,
27475
27485
  pageSize=CHAT_PAGE_SIZE, parent=parentName, filter=pfilter)
27476
27486
  except (GAPI.notFound, GAPI.invalidArgument, GAPI.permissionDenied) as e:
27477
27487
  exitIfChatNotConfigured(chat, kvList, str(e), i, count)
@@ -38688,7 +38698,7 @@ def _getEventMatchFields(calendarEventEntity, fieldsList):
38688
38698
  else:
38689
38699
  fieldsList.append('attendees/email')
38690
38700
  if match[0][1] == 'status':
38691
- fieldsList.extend('attendees/optional', 'attendees/responseStatus')
38701
+ fieldsList.extend(['attendees/optional', 'attendees/responseStatus'])
38692
38702
 
38693
38703
  def _eventMatches(event, match):
38694
38704
  if match[0][0] != 'attendees':
@@ -43027,7 +43037,7 @@ def getUserAttributes(cd, updateCmd, noUid=False):
43027
43037
  if value:
43028
43038
  entry[argument] = value
43029
43039
  else:
43030
- entry[argument] = getInteger(minVal=0, maxVal=100000)
43040
+ entry[argument] = getInteger(minVal=0, maxVal=100000, default=0)
43031
43041
  elif primaryNotPrimary(argument, entry):
43032
43042
  break
43033
43043
  else:
@@ -47,6 +47,10 @@ _SKUS = {
47
47
  'product': '101001', 'aliases': ['identity', 'cloudidentity'], 'displayName': 'Cloud Identity'},
48
48
  '1010050001': {
49
49
  'product': '101005', 'aliases': ['identitypremium', 'cloudidentitypremium'], 'displayName': 'Cloud Identity Premium'},
50
+ '1010070001': {
51
+ 'product': 'Google-Apps', 'aliases': ['gwef', 'workspaceeducationfundamentals'], 'displayName': 'Google Workspace for Education Fundamentals'},
52
+ '1010070004': {
53
+ 'product': 'Google-Apps', 'aliases': ['gwegmo', 'workspaceeducationgmailonly'], 'displayName': 'Google Workspace for Education Gmail Only'},
50
54
  '1010310002': {
51
55
  'product': '101031', 'aliases': ['gsefe', 'e4e', 'gsuiteenterpriseeducation'], 'displayName': 'Google Workspace for Education Plus - Legacy'},
52
56
  '1010310003': {
@@ -111,6 +115,8 @@ _SKUS = {
111
115
  'product': 'Google-Apps', 'aliases': ['standard', 'free'], 'displayName': 'G Suite Legacy'},
112
116
  'Google-Apps-For-Business': {
113
117
  'product': 'Google-Apps', 'aliases': ['gafb', 'gafw', 'basic', 'gsuitebasic'], 'displayName': 'G Suite Basic'},
118
+ 'Google-Apps-For-Education': {
119
+ 'product': 'Google-Apps', 'aliases': ['gafe', 'gsuiteeducation', 'gsuiteedu'], 'displayName': 'Google Workspace for Education - Fundamentals'},
114
120
  'Google-Apps-For-Government': {
115
121
  'product': 'Google-Apps', 'aliases': ['gafg', 'gsuitegovernment', 'gsuitegov'], 'displayName': 'Google Workspace Government'},
116
122
  'Google-Apps-For-Postini': {
@@ -148,6 +154,8 @@ _SKUS = {
148
154
  'product': '101034', 'aliases': ['wsbizstarterarchived', 'workspacebusinessstarterarchived'], 'displayName': 'Google Workspace Business Starter - Archived User'},
149
155
  '1010340006': {
150
156
  'product': '101034', 'aliases': ['wsbizstanarchived', 'workspacebusinessstanarchived'], 'displayName': 'Google Workspace Business Standard - Archived User'},
157
+ '1010340007': {
158
+ 'product': '101034', 'aliases': ['gwefau', 'gwefarchived', 'workspaceeducationfundamentalsarchived'], 'displayName': 'Google Workspace for Education Fundamentals - Archived User'},
151
159
  '1010060001': {
152
160
  'product': '101006', 'aliases': ['gsuiteessentials', 'essentials',
153
161
  'd4e', 'driveenterprise', 'drive4enterprise',
@@ -12,4 +12,4 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
 
15
- __version__ = "2.156.0"
15
+ __version__ = "2.164.0"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes