gam7 7.27.4__py3-none-any.whl → 7.28.0__py3-none-any.whl
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.
- gam/__init__.py +63 -19
- gam/gamlib/glapi.py +0 -6
- {gam7-7.27.4.dist-info → gam7-7.28.0.dist-info}/METADATA +1 -1
- {gam7-7.27.4.dist-info → gam7-7.28.0.dist-info}/RECORD +7 -7
- {gam7-7.27.4.dist-info → gam7-7.28.0.dist-info}/WHEEL +0 -0
- {gam7-7.27.4.dist-info → gam7-7.28.0.dist-info}/entry_points.txt +0 -0
- {gam7-7.27.4.dist-info → gam7-7.28.0.dist-info}/licenses/LICENSE +0 -0
gam/__init__.py
CHANGED
|
@@ -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.
|
|
28
|
+
__version__ = '7.28.00'
|
|
29
29
|
__license__ = 'Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0)'
|
|
30
30
|
|
|
31
31
|
#pylint: disable=wrong-import-position
|
|
@@ -13411,12 +13411,14 @@ REPORTS_PARAMETERS_SIMPLE_TYPES = ['intValue', 'boolValue', 'datetimeValue', 'st
|
|
|
13411
13411
|
# [skipdates <Date>[:<Date>](,<Date>[:<Date>])*] [skipdaysofweek <DayOfWeek>(,<DayOfWeek>)*]
|
|
13412
13412
|
# [fields|parameters <String>)]
|
|
13413
13413
|
# [convertmbtogb]
|
|
13414
|
+
# (addcsvdata <FieldName> <String>)*
|
|
13414
13415
|
# gam report usage customer [todrive <ToDriveAttribute>*]
|
|
13415
13416
|
# [([start|startdate <Date>] [end|enddate <Date>])|(range <Date> <Date>)|
|
|
13416
13417
|
# thismonth|(previousmonths <Integer>)]
|
|
13417
13418
|
# [skipdates <Date>[:<Date>](,<Date>[:<Date>])*] [skipdaysofweek <DayOfWeek>(,<DayOfWeek>)*]
|
|
13418
13419
|
# [fields|parameters <String>)]
|
|
13419
13420
|
# [convertmbtogb]
|
|
13421
|
+
# (addcsvdata <FieldName> <String>)*
|
|
13420
13422
|
def doReportUsage():
|
|
13421
13423
|
def usageEntitySelectors():
|
|
13422
13424
|
selectorChoices = Cmd.USER_ENTITY_SELECTORS+Cmd.USER_CSVDATA_ENTITY_SELECTORS
|
|
@@ -13468,6 +13470,7 @@ def doReportUsage():
|
|
|
13468
13470
|
startEndTime = StartEndTime('startdate', 'enddate', 'date')
|
|
13469
13471
|
skipDayNumbers = []
|
|
13470
13472
|
skipDates = set()
|
|
13473
|
+
addCSVData = {}
|
|
13471
13474
|
while Cmd.ArgumentsRemaining():
|
|
13472
13475
|
myarg = getArgument()
|
|
13473
13476
|
if csvPF and myarg == 'todrive':
|
|
@@ -13522,6 +13525,9 @@ def doReportUsage():
|
|
|
13522
13525
|
select = True
|
|
13523
13526
|
elif myarg == 'convertmbtogb':
|
|
13524
13527
|
convertMbToGb = True
|
|
13528
|
+
elif myarg == 'addcsvdata':
|
|
13529
|
+
k = getString(Cmd.OB_STRING)
|
|
13530
|
+
addCSVData[k] = getString(Cmd.OB_STRING, minLen=0)
|
|
13525
13531
|
else:
|
|
13526
13532
|
unknownArgumentExit()
|
|
13527
13533
|
if startEndTime.endDateTime is None:
|
|
@@ -13555,6 +13561,8 @@ def doReportUsage():
|
|
|
13555
13561
|
titles.append('orgUnitPath')
|
|
13556
13562
|
else:
|
|
13557
13563
|
pageMessage = None
|
|
13564
|
+
if addCSVData:
|
|
13565
|
+
titles.extend(sorted(addCSVData.keys()))
|
|
13558
13566
|
csvPF.SetTitles(titles)
|
|
13559
13567
|
csvPF.SetSortAllTitles()
|
|
13560
13568
|
parameters = ','.join(parameters) if parameters else None
|
|
@@ -13589,6 +13597,8 @@ def doReportUsage():
|
|
|
13589
13597
|
row['orgUnitPath'] = userOrgUnits.get(row['user'], UNKNOWN)
|
|
13590
13598
|
else:
|
|
13591
13599
|
row['user'] = UNKNOWN
|
|
13600
|
+
if addCSVData:
|
|
13601
|
+
row.update(addCSVData)
|
|
13592
13602
|
for item in entity.get('parameters', []):
|
|
13593
13603
|
if 'name' not in item:
|
|
13594
13604
|
continue
|
|
@@ -13720,12 +13730,14 @@ REPORT_ACTIVITIES_TIME_OBJECTS = {'time'}
|
|
|
13720
13730
|
# [aggregatebydate|aggregatebyuser [Boolean]]
|
|
13721
13731
|
# [maxresults <Number>]
|
|
13722
13732
|
# [convertmbtogb]
|
|
13733
|
+
# (addcsvdata <FieldName> <String>)*
|
|
13723
13734
|
# gam report customers|customer|domain [todrive <ToDriveAttribute>*]
|
|
13724
13735
|
# [(date <Date>)|(range <Date> <Date>)|
|
|
13725
13736
|
# yesterday|today|thismonth|(previousmonths <Integer>)]
|
|
13726
13737
|
# [nodatechange | (fulldatarequired all|<CustomerServiceNameList>)]
|
|
13727
13738
|
# [(fields|parameters <String>)|(services <CustomerServiceNameList>)] [noauthorizedapps]
|
|
13728
13739
|
# [convertmbtogb]
|
|
13740
|
+
# (addcsvdata <FieldName> <String>)*
|
|
13729
13741
|
def doReport():
|
|
13730
13742
|
def processUserUsage(usage, lastDate):
|
|
13731
13743
|
if not usage:
|
|
@@ -13743,6 +13755,8 @@ def doReport():
|
|
|
13743
13755
|
row['orgUnitPath'] = userOrgUnits.get(row['email'], UNKNOWN)
|
|
13744
13756
|
else:
|
|
13745
13757
|
row['email'] = UNKNOWN
|
|
13758
|
+
if addCSVData:
|
|
13759
|
+
row.update(addCSVData)
|
|
13746
13760
|
for item in user_report.get('parameters', []):
|
|
13747
13761
|
if 'name' not in item:
|
|
13748
13762
|
continue
|
|
@@ -13834,6 +13848,8 @@ def doReport():
|
|
|
13834
13848
|
return (False, lastDate)
|
|
13835
13849
|
lastDate = usage[0]['date']
|
|
13836
13850
|
row = {'date': lastDate}
|
|
13851
|
+
if addCSVData:
|
|
13852
|
+
row.update(addCSVData)
|
|
13837
13853
|
for item in usage[0].get('parameters', []):
|
|
13838
13854
|
if 'name' not in item:
|
|
13839
13855
|
continue
|
|
@@ -13908,12 +13924,16 @@ def doReport():
|
|
|
13908
13924
|
continue
|
|
13909
13925
|
for ptype in REPORTS_PARAMETERS_SIMPLE_TYPES:
|
|
13910
13926
|
if ptype in item:
|
|
13927
|
+
row = {'date': lastDate}
|
|
13928
|
+
if addCSVData:
|
|
13929
|
+
row.update(addCSVData)
|
|
13911
13930
|
if ptype != 'datetimeValue':
|
|
13912
13931
|
if convertMbToGb and name.endswith('_in_mb'):
|
|
13913
13932
|
name = convertReportMBtoGB(name, item)
|
|
13914
|
-
|
|
13933
|
+
row.update({'name': name, 'value': item[ptype]})
|
|
13915
13934
|
else:
|
|
13916
|
-
|
|
13935
|
+
row.update({'name': name, 'value': formatLocalTime(item[ptype])})
|
|
13936
|
+
csvPF.WriteRow(row)
|
|
13917
13937
|
break
|
|
13918
13938
|
else:
|
|
13919
13939
|
if 'msgValue' in item:
|
|
@@ -13922,6 +13942,8 @@ def doReport():
|
|
|
13922
13942
|
continue
|
|
13923
13943
|
for subitem in item['msgValue']:
|
|
13924
13944
|
app = {'date': lastDate}
|
|
13945
|
+
if addCSVData:
|
|
13946
|
+
app.update(addCSVData)
|
|
13925
13947
|
for an_item in subitem:
|
|
13926
13948
|
if an_item == 'client_name':
|
|
13927
13949
|
app['name'] = f'App: {escapeCRsNLs(subitem[an_item])}'
|
|
@@ -13934,7 +13956,11 @@ def doReport():
|
|
|
13934
13956
|
values = []
|
|
13935
13957
|
for subitem in item['msgValue']:
|
|
13936
13958
|
values.append(f'{subitem["version_number"]}:{subitem["num_devices"]}')
|
|
13937
|
-
|
|
13959
|
+
row = {'date': lastDate}
|
|
13960
|
+
if addCSVData:
|
|
13961
|
+
row.update(addCSVData)
|
|
13962
|
+
row.update({'name': name, 'value': ' '.join(sorted(values, reverse=True))})
|
|
13963
|
+
csvPF.WriteRow(row)
|
|
13938
13964
|
else:
|
|
13939
13965
|
values = []
|
|
13940
13966
|
for subitem in item['msgValue']:
|
|
@@ -13949,7 +13975,11 @@ def doReport():
|
|
|
13949
13975
|
values.append(f'{myvalue}:{mycount}')
|
|
13950
13976
|
else:
|
|
13951
13977
|
continue
|
|
13952
|
-
|
|
13978
|
+
row = {'date': lastDate}
|
|
13979
|
+
if addCSVData:
|
|
13980
|
+
row.update(addCSVData)
|
|
13981
|
+
row.update({'name': name, 'value': ' '.join(sorted(values, reverse=True))})
|
|
13982
|
+
csvPF.WriteRow(row)
|
|
13953
13983
|
csvPF.SortRowsTwoTitles('date', 'name', False)
|
|
13954
13984
|
if authorizedApps:
|
|
13955
13985
|
csvPF.AddTitle('client_id')
|
|
@@ -14099,7 +14129,7 @@ def doReport():
|
|
|
14099
14129
|
eventRowFilter = True
|
|
14100
14130
|
elif activityReports and myarg == 'groupidfilter':
|
|
14101
14131
|
groupIdFilter = getString(Cmd.OB_STRING)
|
|
14102
|
-
elif
|
|
14132
|
+
elif myarg == 'addcsvdata':
|
|
14103
14133
|
k = getString(Cmd.OB_STRING)
|
|
14104
14134
|
addCSVData[k] = getString(Cmd.OB_STRING, minLen=0)
|
|
14105
14135
|
elif activityReports and myarg == 'shownoactivities':
|
|
@@ -14164,6 +14194,8 @@ def doReport():
|
|
|
14164
14194
|
titles = ['email'] if not showOrgUnit else ['email', 'orgUnitPath']
|
|
14165
14195
|
else:
|
|
14166
14196
|
titles = ['email', 'date'] if not showOrgUnit else ['email', 'orgUnitPath', 'date']
|
|
14197
|
+
if addCSVData:
|
|
14198
|
+
titles.extend(sorted(addCSVData.keys()))
|
|
14167
14199
|
csvPF.SetTitles(titles)
|
|
14168
14200
|
csvPF.SetSortAllTitles()
|
|
14169
14201
|
i = 0
|
|
@@ -14250,6 +14282,8 @@ def doReport():
|
|
|
14250
14282
|
if aggregateByDate:
|
|
14251
14283
|
for usageDate, events in eventCounts.items():
|
|
14252
14284
|
row = {'date': usageDate}
|
|
14285
|
+
if addCSVData:
|
|
14286
|
+
row.update(addCSVData)
|
|
14253
14287
|
for event, count in events.items():
|
|
14254
14288
|
if convertMbToGb and event.endswith('_in_gb'):
|
|
14255
14289
|
count = f'{count/1024:.2f}'
|
|
@@ -14262,6 +14296,8 @@ def doReport():
|
|
|
14262
14296
|
row = {'email': email}
|
|
14263
14297
|
if showOrgUnit:
|
|
14264
14298
|
row['orgUnitPath'] = userOrgUnits.get(email, UNKNOWN)
|
|
14299
|
+
if addCSVData:
|
|
14300
|
+
row.update(addCSVData)
|
|
14265
14301
|
for event, count in events.items():
|
|
14266
14302
|
if convertMbToGb and event.endswith('_in_gb'):
|
|
14267
14303
|
count = f'{count/1024:.2f}'
|
|
@@ -14276,6 +14312,8 @@ def doReport():
|
|
|
14276
14312
|
if startEndTime.startDateTime is None:
|
|
14277
14313
|
startEndTime.startDateTime = startEndTime.endDateTime = todaysDate()
|
|
14278
14314
|
csvPF.SetTitles('date')
|
|
14315
|
+
if addCSVData:
|
|
14316
|
+
csvPF.AddTitles(sorted(addCSVData.keys()))
|
|
14279
14317
|
if not userCustomerRange or (startEndTime.startDateTime == startEndTime.endDateTime):
|
|
14280
14318
|
csvPF.AddTitles(['name', 'value'])
|
|
14281
14319
|
authorizedApps = []
|
|
@@ -24227,6 +24265,7 @@ CROS_LIST_FIELDS_CHOICE_MAP = {
|
|
|
24227
24265
|
|
|
24228
24266
|
CROS_TIME_OBJECTS = {
|
|
24229
24267
|
'createTime',
|
|
24268
|
+
'extendedSupportStart',
|
|
24230
24269
|
'firstEnrollmentTime',
|
|
24231
24270
|
'lastDeprovisionTimestamp',
|
|
24232
24271
|
'lastEnrollmentTime',
|
|
@@ -35921,7 +35960,7 @@ def doPrintShowGroupTree():
|
|
|
35921
35960
|
# gam create cigroup <EmailAddress>
|
|
35922
35961
|
# [copyfrom <GroupItem>] <GroupAttribute>
|
|
35923
35962
|
# [makeowner] [alias|aliases <CIGroupAliasList>]
|
|
35924
|
-
# [security|makesecuritygroup]
|
|
35963
|
+
# [security|makesecuritygroup] [locked]
|
|
35925
35964
|
# [dynamic <QueryDynamicGroup>]
|
|
35926
35965
|
def doCreateCIGroup():
|
|
35927
35966
|
doCreateGroup(ciGroupsAPI=True)
|
|
@@ -36105,7 +36144,6 @@ def doUpdateCIGroups():
|
|
|
36105
36144
|
|
|
36106
36145
|
cd = buildGAPIObject(API.DIRECTORY)
|
|
36107
36146
|
ci = buildGAPIObject(API.CLOUDIDENTITY_GROUPS)
|
|
36108
|
-
cib = None
|
|
36109
36147
|
entityType = Ent.CLOUD_IDENTITY_GROUP
|
|
36110
36148
|
csvPF = None
|
|
36111
36149
|
getBeforeUpdate = preview = False
|
|
@@ -36214,7 +36252,6 @@ def doUpdateCIGroups():
|
|
|
36214
36252
|
_, name, _ = convertGroupEmailToCloudID(ci, group, i, count)
|
|
36215
36253
|
if not name:
|
|
36216
36254
|
continue
|
|
36217
|
-
cipl = ci
|
|
36218
36255
|
twoUpdates = False
|
|
36219
36256
|
if 'labels' in ci_body or lockGroup is not None:
|
|
36220
36257
|
try:
|
|
@@ -36243,20 +36280,16 @@ def doUpdateCIGroups():
|
|
|
36243
36280
|
else:
|
|
36244
36281
|
if CIGROUP_LOCKED_LABEL in ci_body['labels']:
|
|
36245
36282
|
ci_body['labels'].pop(CIGROUP_LOCKED_LABEL)
|
|
36246
|
-
if CIGROUP_LOCKED_LABEL in ci_body['labels']:
|
|
36247
|
-
if cib is None:
|
|
36248
|
-
cib = buildGAPIObject(API.CLOUDIDENTITY_GROUPS_BETA)
|
|
36249
|
-
cipl = cib
|
|
36250
36283
|
if ci_body:
|
|
36251
36284
|
try:
|
|
36252
36285
|
if twoUpdates:
|
|
36253
36286
|
ci_body['labels'].pop(CIGROUP_LOCKED_LABEL)
|
|
36254
|
-
callGAPI(
|
|
36287
|
+
callGAPI(ci.groups(), 'patch',
|
|
36255
36288
|
throwReasons=GAPI.CIGROUP_UPDATE_THROW_REASONS,
|
|
36256
36289
|
retryReasons=GAPI.CIGROUP_RETRY_REASONS,
|
|
36257
36290
|
name=name, body=ci_body, updateMask=','.join(list(ci_body.keys())))
|
|
36258
36291
|
ci_body['labels'][CIGROUP_LOCKED_LABEL] = ''
|
|
36259
|
-
callGAPI(
|
|
36292
|
+
callGAPI(ci.groups(), 'patch',
|
|
36260
36293
|
throwReasons=GAPI.CIGROUP_UPDATE_THROW_REASONS,
|
|
36261
36294
|
retryReasons=GAPI.CIGROUP_RETRY_REASONS,
|
|
36262
36295
|
name=name, body=ci_body, updateMask=','.join(list(ci_body.keys())))
|
|
@@ -37240,20 +37273,17 @@ def doPrintCIGroups():
|
|
|
37240
37273
|
else:
|
|
37241
37274
|
getFullFieldsList = list(CIGROUP_FULL_FIELDS)
|
|
37242
37275
|
getFullFields = ','.join(getFullFieldsList)#
|
|
37243
|
-
cipl = ci
|
|
37244
37276
|
if query:
|
|
37245
37277
|
method = 'search'
|
|
37246
37278
|
if 'parent' not in query:
|
|
37247
37279
|
query += f" && parent == '{parent}'"
|
|
37248
37280
|
kwargs = {'query': query}
|
|
37249
|
-
if CIGROUP_LOCKED_LABEL in query:
|
|
37250
|
-
cipl = buildGAPIObject(API.CLOUDIDENTITY_GROUPS_BETA)
|
|
37251
37281
|
else:
|
|
37252
37282
|
method = 'list'
|
|
37253
37283
|
kwargs = {'parent': parent}
|
|
37254
37284
|
printGettingAllAccountEntities(Ent.CLOUD_IDENTITY_GROUP, query)
|
|
37255
37285
|
try:
|
|
37256
|
-
entityList = callGAPIpages(
|
|
37286
|
+
entityList = callGAPIpages(ci.groups(), method, 'groups',
|
|
37257
37287
|
pageMessage=getPageMessage(showFirstLastItems=True), messageAttribute=['groupKey', 'id'],
|
|
37258
37288
|
throwReasons=GAPI.CIGROUP_LIST_THROW_REASONS, retryReasons=GAPI.CIGROUP_RETRY_REASONS,
|
|
37259
37289
|
view='FULL', fields=fieldsnp, pageSize=pageSize, **kwargs)
|
|
@@ -49166,6 +49196,7 @@ def _getCoursesInfo(croom, courseSelectionParameters, courseShowProperties, getO
|
|
|
49166
49196
|
# [show none|all|students|teachers] [countsonly]
|
|
49167
49197
|
# [fields <CourseFieldNameList>] [skipfields <CourseFieldNameList>]
|
|
49168
49198
|
# [timefilter creationtime|updatetime] [start|starttime <Date>|<Time>] [end|endtime <Date>|<Time>]
|
|
49199
|
+
# (addcsvdata <FieldName> <String>)*
|
|
49169
49200
|
# [showitemcountonly] [formatjson [quotechar <Character>]]
|
|
49170
49201
|
def doPrintCourses():
|
|
49171
49202
|
def _saveParticipants(course, participants, role, rtitles):
|
|
@@ -49209,6 +49240,7 @@ def doPrintCourses():
|
|
|
49209
49240
|
delimiter = GC.Values[GC.CSV_OUTPUT_FIELD_DELIMITER]
|
|
49210
49241
|
showItemCountOnly = False
|
|
49211
49242
|
useOwnerAccess = GC.Values[GC.USE_COURSE_OWNER_ACCESS]
|
|
49243
|
+
addCSVData = {}
|
|
49212
49244
|
while Cmd.ArgumentsRemaining():
|
|
49213
49245
|
myarg = getArgument()
|
|
49214
49246
|
if myarg == 'todrive':
|
|
@@ -49223,6 +49255,9 @@ def doPrintCourses():
|
|
|
49223
49255
|
pass
|
|
49224
49256
|
elif myarg == 'showitemcountonly':
|
|
49225
49257
|
showItemCountOnly = True
|
|
49258
|
+
elif myarg == 'addcsvdata':
|
|
49259
|
+
k = getString(Cmd.OB_STRING)
|
|
49260
|
+
addCSVData[k] = getString(Cmd.OB_STRING, minLen=0)
|
|
49226
49261
|
else:
|
|
49227
49262
|
FJQC.GetFormatJSONQuoteChar(myarg, True)
|
|
49228
49263
|
applyCourseItemFilter = _setApplyCourseItemFilter(courseItemFilter, None)
|
|
@@ -49234,6 +49269,11 @@ def doPrintCourses():
|
|
|
49234
49269
|
if showItemCountOnly:
|
|
49235
49270
|
writeStdout('0\n')
|
|
49236
49271
|
return
|
|
49272
|
+
if addCSVData:
|
|
49273
|
+
csvPF.AddTitles(sorted(addCSVData.keys()))
|
|
49274
|
+
if FJQC.formatJSON:
|
|
49275
|
+
csvPF.AddJSONTitles(sorted(addCSVData.keys()))
|
|
49276
|
+
csvPF.MoveJSONTitlesToEnd(['JSON'])
|
|
49237
49277
|
if courseShowProperties['aliases']:
|
|
49238
49278
|
if FJQC.formatJSON:
|
|
49239
49279
|
csvPF.AddJSONTitles('JSON-aliases')
|
|
@@ -49291,11 +49331,15 @@ def doPrintCourses():
|
|
|
49291
49331
|
if courseShowProperties['members'] != 'teachers':
|
|
49292
49332
|
_saveParticipants(course, students, 'students', stitles)
|
|
49293
49333
|
row = flattenJSON(course, timeObjects=COURSE_TIME_OBJECTS, noLenObjects=COURSE_NOLEN_OBJECTS)
|
|
49334
|
+
if addCSVData:
|
|
49335
|
+
row.update(addCSVData)
|
|
49294
49336
|
if not FJQC.formatJSON:
|
|
49295
49337
|
csvPF.WriteRowTitles(row)
|
|
49296
49338
|
elif csvPF.CheckRowTitles(row):
|
|
49297
49339
|
row = {'id': courseId, 'JSON': json.dumps(cleanJSON(course, timeObjects=COURSE_TIME_OBJECTS),
|
|
49298
49340
|
ensure_ascii=False, sort_keys=True)}
|
|
49341
|
+
if addCSVData:
|
|
49342
|
+
row.update(addCSVData)
|
|
49299
49343
|
if courseShowProperties['aliases']:
|
|
49300
49344
|
row['JSON-aliases'] = json.dumps(list(aliases))
|
|
49301
49345
|
if courseShowProperties['members'] != 'none':
|
gam/gamlib/glapi.py
CHANGED
|
@@ -46,7 +46,6 @@ CLASSROOM = 'classroom'
|
|
|
46
46
|
CLOUDCHANNEL = 'cloudchannel'
|
|
47
47
|
CLOUDIDENTITY_DEVICES = 'cloudidentitydevices'
|
|
48
48
|
CLOUDIDENTITY_GROUPS = 'cloudidentitygroups'
|
|
49
|
-
CLOUDIDENTITY_GROUPS_BETA = 'cloudidentitygroupsbeta'
|
|
50
49
|
CLOUDIDENTITY_INBOUND_SSO = 'cloudidentityinboundsso'
|
|
51
50
|
CLOUDIDENTITY_ORGUNITS = 'cloudidentityorgunits'
|
|
52
51
|
CLOUDIDENTITY_ORGUNITS_BETA = 'cloudidentityorgunitsbeta'
|
|
@@ -242,7 +241,6 @@ _INFO = {
|
|
|
242
241
|
CLOUDCHANNEL: {'name': 'Cloud Channel API', 'version': 'v1', 'v2discovery': True},
|
|
243
242
|
CLOUDIDENTITY_DEVICES: {'name': 'Cloud Identity API - Devices', 'version': 'v1', 'v2discovery': True, 'mappedAPI': 'cloudidentity'},
|
|
244
243
|
CLOUDIDENTITY_GROUPS: {'name': 'Cloud Identity API - Groups', 'version': 'v1', 'v2discovery': True, 'mappedAPI': 'cloudidentity'},
|
|
245
|
-
CLOUDIDENTITY_GROUPS_BETA: {'name': 'Cloud Identity API - Groups Beta', 'version': 'v1beta1', 'v2discovery': True, 'mappedAPI': 'cloudidentity'},
|
|
246
244
|
CLOUDIDENTITY_INBOUND_SSO: {'name': 'Cloud Identity API - Inbound SSO Settings', 'version': 'v1', 'v2discovery': True, 'mappedAPI': 'cloudidentity'},
|
|
247
245
|
CLOUDIDENTITY_ORGUNITS: {'name': 'Cloud Identity API - OrgUnits', 'version': 'v1', 'v2discovery': True, 'mappedAPI': 'cloudidentity'},
|
|
248
246
|
CLOUDIDENTITY_ORGUNITS_BETA: {'name': 'Cloud Identity API - OrgUnits Beta', 'version': 'v1beta1', 'v2discovery': True, 'mappedAPI': 'cloudidentity'},
|
|
@@ -387,10 +385,6 @@ _CLIENT_SCOPES = [
|
|
|
387
385
|
'api': CLOUDIDENTITY_GROUPS,
|
|
388
386
|
'subscopes': READONLY,
|
|
389
387
|
'scope': 'https://www.googleapis.com/auth/cloud-identity.groups'},
|
|
390
|
-
{'name': 'Cloud Identity API - Groups Beta (Enables group locking/unlocking)',
|
|
391
|
-
'api': CLOUDIDENTITY_GROUPS_BETA,
|
|
392
|
-
'subscopes': [],
|
|
393
|
-
'scope': 'https://www.googleapis.com/auth/cloud-identity.groups'},
|
|
394
388
|
{'name': 'Cloud Identity API - Inbound SSO Settings',
|
|
395
389
|
'api': CLOUDIDENTITY_INBOUND_SSO,
|
|
396
390
|
'subscopes': READONLY,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
gam/__init__.py,sha256=
|
|
1
|
+
gam/__init__.py,sha256=Pvf8RhfAqdaC0TBrQ2wCZfBCcJdcCgMPHcMNyULxFPE,3630867
|
|
2
2
|
gam/__main__.py,sha256=VwEYS7a9vYQPbT6iLduMOoVUJ6p4R-HZgerZQmM1NpE,1307
|
|
3
3
|
gam/cacerts.pem,sha256=DUsVo2XlFYwfkhe3gnxa-Km4Z4noz74hSApXwTT-nQE,44344
|
|
4
4
|
gam/cbcm-v1.1beta1.json,sha256=xO5XloCQQULmPbFBx5bckdqmbLFQ7sJ2TImhE1ysDIY,19439
|
|
@@ -22,7 +22,7 @@ gam/atom/token_store.py,sha256=7E6Ecvxa86WCvl1pJAhv78jg9OxQv8pMtIUcPhZCq04,3803
|
|
|
22
22
|
gam/atom/url.py,sha256=pxO1TlORxyKQTQ1bkBE1unFzjnv9c8LjJkm-UEORShY,4276
|
|
23
23
|
gam/gamlib/__init__.py,sha256=z5mF-y0j8pm-YNFBaiuxB4M_GAUPG-cXWwrhYwrVReM,679
|
|
24
24
|
gam/gamlib/glaction.py,sha256=1Il_HrChVnPkzZwiZs5au4mFQVtq4K1Z42uIuR6qdnI,9419
|
|
25
|
-
gam/gamlib/glapi.py,sha256=
|
|
25
|
+
gam/gamlib/glapi.py,sha256=t2ivDXJg4kH0SbdUJNdJH7IZG0uGEUz9gFuU3ri8CpQ,36638
|
|
26
26
|
gam/gamlib/glcfg.py,sha256=do_FR9m9m7Bmh2SgjLPk2pysU-wPHt7PlqPPjX90tpw,28684
|
|
27
27
|
gam/gamlib/glclargs.py,sha256=LlTtwJJHqU48l7SQT4bcZCWlw3Y46g42Bn1ACGW8gIk,53307
|
|
28
28
|
gam/gamlib/glentity.py,sha256=KWFomkoNE6lLE83zVqVIlJ2rkzfLkhEasW1M0TWGieA,35373
|
|
@@ -47,8 +47,8 @@ gam/gdata/apps/audit/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrK
|
|
|
47
47
|
gam/gdata/apps/audit/service.py,sha256=Z1eueThcNeVUMWP1DRWc_DGHrJCiJI8W_xj6L-cqu-Q,9658
|
|
48
48
|
gam/gdata/apps/contacts/__init__.py,sha256=Um6zgIkiahZns7yAEuC3pxHSMD8iciZ_EoynSLoYPfU,30463
|
|
49
49
|
gam/gdata/apps/contacts/service.py,sha256=5lNb-Ii1Gyek6ePFji3kyoYtCBc8CuJTwagx2BL2o14,15684
|
|
50
|
-
gam7-7.
|
|
51
|
-
gam7-7.
|
|
52
|
-
gam7-7.
|
|
53
|
-
gam7-7.
|
|
54
|
-
gam7-7.
|
|
50
|
+
gam7-7.28.0.dist-info/METADATA,sha256=6__1Zip1BIpmCYvLD2z3bY6ZEm8geD8qeTv_f_32StM,3093
|
|
51
|
+
gam7-7.28.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
52
|
+
gam7-7.28.0.dist-info/entry_points.txt,sha256=HVUM5J7dA8YwvJfG30jiLefR19ExMs387TWugWd9sf4,42
|
|
53
|
+
gam7-7.28.0.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
54
|
+
gam7-7.28.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|