gam7 7.22.5__py3-none-any.whl → 7.22.7__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 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.22.05'
28
+ __version__ = '7.22.07'
29
29
  __license__ = 'Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0)'
30
30
 
31
31
  #pylint: disable=wrong-import-position
@@ -41716,6 +41716,7 @@ VAULT_SEARCH_METHODS_MAP = {
41716
41716
  'accounts': 'ACCOUNT',
41717
41717
  'chatspace': 'ROOM',
41718
41718
  'chatspaces': 'ROOM',
41719
+ 'documentids': 'DRIVE_DOCUMENT',
41719
41720
  'entireorg': 'ENTIRE_ORG',
41720
41721
  'everyone': 'ENTIRE_ORG',
41721
41722
  'org': 'ORG_UNIT',
@@ -41813,11 +41814,13 @@ VAULT_QUERY_ARGS = [
41813
41814
  # drive
41814
41815
  'driveclientsideencryption', 'driveversiondate', 'includeshareddrives', 'includeteamdrives', 'shareddrivesoption',
41815
41816
  # hangoutsChat
41816
- 'includerooms',
41817
+ 'includerooms',
41817
41818
  # mail
41818
41819
  'mailclientsideencryption', 'excludedrafts',
41819
41820
  # voice
41820
41821
  'covereddata',
41822
+ # all
41823
+ 'json',
41821
41824
  ] + list(VAULT_SEARCH_METHODS_MAP.keys())
41822
41825
 
41823
41826
  def _buildVaultQuery(myarg, query, corpusArgumentMap):
@@ -41831,12 +41834,14 @@ def _buildVaultQuery(myarg, query, corpusArgumentMap):
41831
41834
  query['dataScope'] = 'ALL_DATA'
41832
41835
  if myarg == 'corpus':
41833
41836
  query['corpus'] = getChoice(corpusArgumentMap, mapChoice=True)
41837
+ elif myarg == 'scope':
41838
+ query['dataScope'] = getChoice(VAULT_EXPORT_DATASCOPE_MAP, mapChoice=True)
41834
41839
  elif myarg in VAULT_SEARCH_METHODS_MAP:
41835
- if query.get('searchMethod'):
41840
+ if query.get('method'):
41836
41841
  Cmd.Backup()
41837
41842
  usageErrorExit(Msg.MULTIPLE_SEARCH_METHODS_SPECIFIED.format(formatChoiceList(VAULT_SEARCH_METHODS_MAP)))
41838
41843
  searchMethod = VAULT_SEARCH_METHODS_MAP[myarg]
41839
- query['searchMethod'] = searchMethod
41844
+ query['method'] = searchMethod
41840
41845
  if searchMethod == 'ACCOUNT':
41841
41846
  query['accountInfo'] = {'emails': getNormalizedEmailAddressEntity()}
41842
41847
  elif searchMethod == 'ORG_UNIT':
@@ -41851,8 +41856,8 @@ def _buildVaultQuery(myarg, query, corpusArgumentMap):
41851
41856
  query['hangoutsChatInfo'] = {'roomId': roomIds}
41852
41857
  elif searchMethod == 'SITES_URL':
41853
41858
  query['sitesUrlInfo'] = {'urls': _getQueryList(Cmd.OB_URL_LIST)}
41854
- elif myarg == 'scope':
41855
- query['dataScope'] = getChoice(VAULT_EXPORT_DATASCOPE_MAP, mapChoice=True)
41859
+ elif searchMethod == 'DRIVE_DOCUMENT':
41860
+ query['driveDocumentInfo'] = {'documentIds': {'ids': _getQueryList(Cmd.OB_DRIVE_FILE_ID_LIST)}}
41856
41861
  elif myarg == 'terms':
41857
41862
  query['terms'] = getString(Cmd.OB_STRING)
41858
41863
  elif myarg in {'start', 'starttime'}:
@@ -41898,11 +41903,19 @@ def _buildVaultQuery(myarg, query, corpusArgumentMap):
41898
41903
  elif myarg == 'covereddata':
41899
41904
  query.setdefault('voiceOptions', {'coveredData': []})
41900
41905
  query['voiceOptions']['coveredData'].append(getChoice(VAULT_VOICE_COVERED_DATA_MAP, mapChoice=True))
41906
+ # all
41907
+ elif myarg == 'json':
41908
+ jsonData = getJSON([])
41909
+ if 'query' in jsonData:
41910
+ query.update(jsonData['query'])
41911
+ else:
41912
+ query.update(jsonData)
41913
+
41901
41914
 
41902
41915
  def _validateVaultQuery(body, corpusArgumentMap):
41903
41916
  if 'corpus' not in body['query']:
41904
41917
  missingArgumentExit(f'corpus {formatChoiceList(corpusArgumentMap)}')
41905
- if 'searchMethod' not in body['query']:
41918
+ if 'method' not in body['query']:
41906
41919
  missingArgumentExit(formatChoiceList(VAULT_SEARCH_METHODS_MAP))
41907
41920
  if 'exportOptions' in body:
41908
41921
  for corpus, options in VAULT_CORPUS_OPTIONS_MAP.items():
@@ -41919,18 +41932,20 @@ def _validateVaultQuery(body, corpusArgumentMap):
41919
41932
  # [region any|europe|us] [showdetails|returnidonly]
41920
41933
  # gam create vaultexport|export matter <MatterItem> [name <String>]
41921
41934
  # corpus calendar|drive|gemini|groups|hangouts_chat|mail|voice
41922
- # (accounts <EmailAddressEntity>) | (orgunit|org|ou <OrgUnitPath>) | everyone
41935
+ # [scope all_data|held_data|unprocessed_data]
41936
+ # (accounts <EmailAddressEntity>) | (orgunit|org|ou <OrgUnitPath>) | everyone|entireorg
41937
+ # (documentids (<DriveFileIDList>|(select <FileSelector>|<CSVFileSelector>))) |
41923
41938
  # (shareddrives|teamdrives (<SharedDriveIDList>|(select <FileSelector>|<CSVFileSelector>))) |
41924
- # (rooms (<ChatSpaceList>|(select <FileSelector>|<CSVFileSelector>))) |
41925
- # (sitesurl (<URLList>||(select <FileSelector>|<CSVFileSelector>)))
41926
- # [scope <all_data|held_data|unprocessed_data>]
41927
- # [terms <String>] [start|starttime <Date>|<Time>] [end|endtime <Date>|<Time>] [timezone <TimeZone>]
41928
- # [locationquery <StringList>] [peoplequery <StringList>] [minuswords <StringList>]
41929
- # [responsestatuses <AttendeeStatus>(,<AttendeeStatus>)*] [calendarversiondate <Date>|<Time>]
41930
41939
  # [(includeshareddrives <Boolean>)|(shareddrivesoption included|included_if_account_is_not_a_member|not_included)]
41940
+ # (sitesurl (<URLList>||(select <FileSelector>|<CSVFileSelector>)))
41931
41941
  # [driveversiondate <Date>|<Time>]
41932
41942
  # [includerooms <Boolean>]
41943
+ # (rooms (<ChatSpaceList>|(select <FileSelector>|<CSVFileSelector>))) |
41944
+ # [terms <String>] [start|starttime <Date>|<Time>] [end|endtime <Date>|<Time>] [timezone <TimeZone>]
41945
+ # [locationquery <StringList>] [peoplequery <StringList>] [minuswords <StringList>]
41946
+ # [responsestatuses <AttendeeStatus>(,<AttendeeStatus>)*] [calendarversiondate <Date>|<Time>]
41933
41947
  # (covereddata calllogs|textmessages|voicemails)*
41948
+ # [<JSONData>]
41934
41949
  # [driveclientsideencryption any|encrypted|unencrypted]
41935
41950
  # [includeaccessinfo <Boolean>]
41936
41951
  # [excludedrafts <Boolean>] [mailclientsideencryption any|encrypted|unencrypted]
@@ -41943,6 +41958,7 @@ def doCreateVaultExport():
41943
41958
  body = {'query': {'dataScope': 'ALL_DATA'}, 'exportOptions': {}}
41944
41959
  includeAccessInfo = None
41945
41960
  exportFormat = None
41961
+ formatLocation = None
41946
41962
  useNewExport = None
41947
41963
  showConfidentialModeContent = None
41948
41964
  exportLinkedDriveFiles = None
@@ -41961,6 +41977,7 @@ def doCreateVaultExport():
41961
41977
  elif myarg == 'includeaccessinfo':
41962
41978
  includeAccessInfo = getBoolean()
41963
41979
  elif myarg == 'format':
41980
+ formatLocation = Cmd.Location()
41964
41981
  exportFormat = getChoice(VAULT_EXPORT_FORMAT_MAP, mapChoice=True)
41965
41982
  elif myarg == 'usenewexport':
41966
41983
  useNewExport = getBoolean()
@@ -41981,18 +41998,19 @@ def doCreateVaultExport():
41981
41998
  if not matterId:
41982
41999
  missingArgumentExit('matter')
41983
42000
  _validateVaultQuery(body, VAULT_CORPUS_ARGUMENT_MAP)
41984
- if exportFormat is not None:
41985
- if not exportFormat in VAULT_CORPUS_EXPORT_FORMATS[body['query']['corpus']]:
41986
- invalidChoiceExit(exportFormat, VAULT_CORPUS_EXPORT_FORMATS[body['query']['corpus']], False)
41987
- elif body['query']['corpus'] != 'DRIVE':
41988
- exportFormat = VAULT_CORPUS_EXPORT_FORMATS[body['query']['corpus']][0]
41989
42001
  if 'name' not in body:
41990
42002
  body['name'] = f'GAM {body["query"]["corpus"]} Export - {ISOformatTimeStamp(todaysTime())}'
41991
42003
  optionsField = VAULT_CORPUS_OPTIONS_MAP[body['query']['corpus']]
41992
42004
  if body['query']['corpus'] == 'DRIVE':
41993
42005
  if includeAccessInfo is not None:
41994
- body['exportOptions'][optionsField]['includeAccessInfo'] = includeAccessInfo
42006
+ body['exportOptions'][optionsField] = {'includeAccessInfo': includeAccessInfo}
41995
42007
  else:
42008
+ if exportFormat is not None:
42009
+ if not exportFormat in VAULT_CORPUS_EXPORT_FORMATS[body['query']['corpus']]:
42010
+ Cmd.SetLocation(formatLocation)
42011
+ invalidChoiceExit(exportFormat, VAULT_CORPUS_EXPORT_FORMATS[body['query']['corpus']], False)
42012
+ else:
42013
+ exportFormat = VAULT_CORPUS_EXPORT_FORMATS[body['query']['corpus']][0]
41996
42014
  body['exportOptions'][optionsField] = {'exportFormat': exportFormat}
41997
42015
  if body['query']['corpus'] == 'MAIL':
41998
42016
  if showConfidentialModeContent is not None:
@@ -42474,7 +42492,7 @@ def _showVaultHold(matterNameId, hold, cd, FJQC, k=0, kcount=0):
42474
42492
  showJSON(None, hold, timeObjects=VAULT_HOLD_TIME_OBJECTS)
42475
42493
  Ind.Decrement()
42476
42494
 
42477
- def _useVaultQuery(v, matterId, matterNameId, body):
42495
+ def _useVaultQueryForHold(v, matterId, matterNameId, body):
42478
42496
  _, _, _, query = convertQueryNameToID(v, getString(Cmd.OB_QUERY_ITEM), matterId, matterNameId)
42479
42497
  body['corpus'] = query['corpus']
42480
42498
  method = query.get('method')
@@ -42579,7 +42597,7 @@ def doCreateVaultHold():
42579
42597
  elif myarg == 'name':
42580
42598
  body['name'] = getString(Cmd.OB_STRING)
42581
42599
  elif matterId is not None and myarg == 'vaultquery':
42582
- _useVaultQuery(v, matterId, matterNameId, body)
42600
+ _useVaultQueryForHold(v, matterId, matterNameId, body)
42583
42601
  usedVaultQuery = True
42584
42602
  elif myarg == 'corpus':
42585
42603
  body['corpus'] = getChoice(VAULT_CORPUS_ARGUMENT_MAP, mapChoice=True)
@@ -43038,6 +43056,116 @@ def _showVaultQuery(matterNameId, query, cd, drive, FJQC, k=0, kcount=0):
43038
43056
  showJSON(None, query, timeObjects=VAULT_QUERY_TIME_OBJECTS)
43039
43057
  Ind.Decrement()
43040
43058
 
43059
+ def doCreateCopyVaultQuery(copyCmd):
43060
+ v = buildGAPIObject(API.VAULT)
43061
+ body = {'query': {'dataScope': 'ALL_DATA'}, 'displayName': ''}
43062
+ matterId, matterNameId = getMatterItem(v)
43063
+ if copyCmd:
43064
+ _, queryName, _, body['query'] = convertQueryNameToID(v, getString(Cmd.OB_QUERY_ITEM), matterId, matterNameId)
43065
+ targetId = None
43066
+ cd = drive = None
43067
+ FJQC = FormatJSONQuoteChar()
43068
+ returnIdOnly = showDetails = False
43069
+ while Cmd.ArgumentsRemaining():
43070
+ myarg = getArgument()
43071
+ if myarg == 'name':
43072
+ body['displayName'] = getString(Cmd.OB_STRING)
43073
+ elif copyCmd and myarg == 'targetmatter':
43074
+ targetId, targetNameId = getMatterItem(v)
43075
+ elif not copyCmd and myarg in VAULT_QUERY_ARGS:
43076
+ _buildVaultQuery(myarg, body['query'], VAULT_CORPUS_ARGUMENT_MAP)
43077
+ elif myarg == 'shownames':
43078
+ cd = buildGAPIObject(API.DIRECTORY)
43079
+ _, drive = buildGAPIServiceObject(API.DRIVE3, _getAdminEmail())
43080
+ if drive is None:
43081
+ return
43082
+ elif myarg == 'showdetails':
43083
+ showDetails = True
43084
+ returnIdOnly = False
43085
+ elif myarg == 'returnidonly':
43086
+ returnIdOnly = True
43087
+ showDetails = False
43088
+ else:
43089
+ FJQC.GetFormatJSON(myarg)
43090
+ if copyCmd:
43091
+ if targetId is None:
43092
+ targetId = matterId
43093
+ targetNameId = matterNameId
43094
+ if not body['displayName']:
43095
+ body['displayName'] = f'Copy of {queryName}' if matterId == targetId else queryName
43096
+ resultId = targetId
43097
+ resultNameId = targetNameId
43098
+ else:
43099
+ _validateVaultQuery(body, VAULT_CORPUS_ARGUMENT_MAP)
43100
+ if not body['displayName']:
43101
+ body['displayName'] = 'GAM {body["query"]["corpus"]} Query - {ISOformatTimeStamp(todaysTime())}'
43102
+ resultId = matterId
43103
+ resultNameId = matterNameId
43104
+ try:
43105
+ result = callGAPI(v.matters().savedQueries(), 'create',
43106
+ throwReasons=[GAPI.NOT_FOUND, GAPI.BAD_REQUEST, GAPI.FORBIDDEN, GAPI.INVALID_ARGUMENT, GAPI.ALREADY_EXISTS],
43107
+ matterId=resultId, body=body)
43108
+ if not returnIdOnly:
43109
+ if not FJQC.formatJSON:
43110
+ entityActionPerformed([Ent.VAULT_MATTER, matterNameId, Ent.VAULT_QUERY, formatVaultNameId(result['displayName'], result['savedQueryId'])])
43111
+ if showDetails or FJQC.formatJSON:
43112
+ _showVaultQuery(resultNameId, result, cd, drive, FJQC)
43113
+ else:
43114
+ writeStdout(f'{result["savedQueryId"]}\n')
43115
+ except (GAPI.notFound, GAPI.badRequest, GAPI.forbidden, GAPI.invalidArgument, GAPI.alreadyExists) as e:
43116
+ entityActionFailedWarning([Ent.VAULT_MATTER, resultNameId, Ent.VAULT_QUERY, body['displayName']], str(e))
43117
+
43118
+ # gam create vaultquery <MatterItem> [name <String>]
43119
+ # corpus calendar|drive|gemini|groups|hangouts_chat|mail|voice
43120
+ # [scope all_data|held_data|unprocessed_data]
43121
+ # (accounts <EmailAddressEntity>) | (orgunit|org|ou <OrgUnitPath>) | everyone|entireorg
43122
+ # (documentids (<DriveFileIDList>|(select <FileSelector>|<CSVFileSelector>))) |
43123
+ # (shareddrives|teamdrives (<SharedDriveIDList>|(select <FileSelector>|<CSVFileSelector>))) |
43124
+ # [(includeshareddrives <Boolean>)|(shareddrivesoption included|included_if_account_is_not_a_member|not_included)]
43125
+ # (sitesurl (<URLList>||(select <FileSelector>|<CSVFileSelector>)))
43126
+ # [driveversiondate <Date>|<Time>]
43127
+ # [includerooms <Boolean>]
43128
+ # (rooms (<ChatSpaceList>|(select <FileSelector>|<CSVFileSelector>))) |
43129
+ # [terms <String>] [start|starttime <Date>|<Time>] [end|endtime <Date>|<Time>] [timezone <TimeZone>]
43130
+ # [locationquery <StringList>] [peoplequery <StringList>] [minuswords <StringList>]
43131
+ # [responsestatuses <AttendeeStatus>(,<AttendeeStatus>)*] [calendarversiondate <Date>|<Time>]
43132
+ # (covereddata calllogs|textmessages|voicemails)*
43133
+ # [<JSONData>]
43134
+ # [shownames]
43135
+ # [showdetails|returnidonly|formatjson]
43136
+ def doCreateVaultQuery():
43137
+ doCreateCopyVaultQuery(False)
43138
+
43139
+ # gam copy vaultquery <MatterItem> <QueryItem> [targetmatter <MatterItem>] [name <String>]
43140
+ # [shownames]
43141
+ # [showdetails|returnidonly|formatjson]
43142
+ def doCopyVaultQuery():
43143
+ doCreateCopyVaultQuery(True)
43144
+
43145
+ # gam delete vaultquery <QueryItem> matter <MatterItem>
43146
+ # gam delete vaultquery <MatterItem> <QueryItem>
43147
+ def doDeleteVaultQuery():
43148
+ v = buildGAPIObject(API.VAULT)
43149
+ if not Cmd.ArgumentIsAhead('matter'):
43150
+ matterId, matterNameId = getMatterItem(v)
43151
+ queryId, queryName, queryNameId, _ = convertQueryNameToID(v, getString(Cmd.OB_QUERY_ITEM), matterId, matterNameId)
43152
+ else:
43153
+ queryName = getString(Cmd.OB_QUERY_ITEM)
43154
+ while Cmd.ArgumentsRemaining():
43155
+ myarg = getArgument()
43156
+ if myarg == 'matter':
43157
+ matterId, matterNameId = getMatterItem(v)
43158
+ queryId, queryName, queryNameId, _ = convertQueryNameToID(v, queryName, matterId, matterNameId)
43159
+ else:
43160
+ unknownArgumentExit()
43161
+ try:
43162
+ callGAPI(v.matters().savedQueries(), 'delete',
43163
+ throwReasons=[GAPI.NOT_FOUND, GAPI.BAD_REQUEST, GAPI.FORBIDDEN, GAPI.INVALID_ARGUMENT],
43164
+ matterId=matterId, savedQueryId=queryId)
43165
+ entityActionPerformed([Ent.VAULT_MATTER, matterNameId, Ent.VAULT_QUERY, queryNameId])
43166
+ except (GAPI.notFound, GAPI.badRequest, GAPI.forbidden, GAPI.invalidArgument) as e:
43167
+ entityActionFailedWarning([Ent.VAULT_MATTER, matterNameId, Ent.VAULT_QUERY, queryNameId], str(e))
43168
+
43041
43169
  VAULT_QUERY_FIELDS_CHOICE_MAP = {
43042
43170
  'createtime': 'createTime',
43043
43171
  'displayname': 'displayName',
@@ -43523,14 +43651,16 @@ def doPrintShowVaultMatters():
43523
43651
  PRINT_VAULT_COUNTS_TITLES = ['account', 'count', 'error']
43524
43652
 
43525
43653
  # gam print vaultcounts [todrive <ToDriveAttributes>*]
43526
- # matter <MatterItem> corpus mail|groups
43527
- # (accounts <EmailAddressEntity>) | (orgunit|org|ou <OrgUnitPath>) | everyone
43528
- # (shareddrives|teamdrives (<SharedDriveIDList>|(select <FileSelector>|<CSVFileSelector>))) |
43529
- # (rooms (<ChatSpaceList>|(select <FileSelector>|<CSVFileSelector>))) |
43530
- # (sitesurl (<URLList>||(select <FileSelector>|<CSVFileSelector>)))
43531
- # [scope <all_data|held_data|unprocessed_data>]
43654
+ # matter <MatterItem> <QueryItem>
43655
+ # [wait <Integer>]
43656
+ # gam print vaultcounts [todrive <ToDriveAttributes>*]
43657
+ # matter <MatterItem>
43658
+ # corpus mail|groups
43659
+ # [scope all_data|held_data|unprocessed_data]
43660
+ # (accounts <EmailAddressEntity>) | (orgunit|org|ou <OrgUnitPath>) | everyone|entireorg
43532
43661
  # [terms <String>] [start|starttime <Date>|<Time>] [end|endtime <Date>|<Time>] [timezone <TimeZone>]
43533
43662
  # [excludedrafts <Boolean>]
43663
+ # [<JSONData>]
43534
43664
  # [wait <Integer>]
43535
43665
  # gam print vaultcounts [todrive <ToDriveAttributes>*]
43536
43666
  # matter <MatterItem> operation <String> [wait <Integer>]
@@ -43539,18 +43669,19 @@ def doPrintVaultCounts():
43539
43669
  csvPF = CSVPrintFile(PRINT_VAULT_COUNTS_TITLES, 'sortall')
43540
43670
  matterId = name = None
43541
43671
  operationWait = 15
43542
- body = {'view': 'ALL'}
43543
- query = {}
43672
+ body = {'view': 'ALL', 'query': {}}
43544
43673
  while Cmd.ArgumentsRemaining():
43545
43674
  myarg = getArgument()
43546
43675
  if csvPF and myarg == 'todrive':
43547
43676
  csvPF.GetTodriveParameters()
43548
43677
  elif myarg == 'matter':
43549
- matterId, _ = getMatterItem(v)
43678
+ matterId, matterNameId = getMatterItem(v)
43679
+ elif matterId is not None and myarg == 'vaultquery':
43680
+ _, _, _, body['query'] = convertQueryNameToID(v, getString(Cmd.OB_QUERY_ITEM), matterId, matterNameId)
43550
43681
  elif myarg == 'operation':
43551
43682
  name = getString(Cmd.OB_STRING)
43552
43683
  elif myarg in VAULT_QUERY_ARGS:
43553
- _buildVaultQuery(myarg, query, VAULT_COUNTS_CORPUS_ARGUMENT_MAP)
43684
+ _buildVaultQuery(myarg, body['query'], VAULT_COUNTS_CORPUS_ARGUMENT_MAP)
43554
43685
  elif myarg == 'wait':
43555
43686
  operationWait = getInteger(minVal=1)
43556
43687
  else:
@@ -43561,7 +43692,6 @@ def doPrintVaultCounts():
43561
43692
  operation = {'name': name}
43562
43693
  doWait = False
43563
43694
  else:
43564
- body['query'] = query
43565
43695
  _validateVaultQuery(body, VAULT_COUNTS_CORPUS_ARGUMENT_MAP)
43566
43696
  try:
43567
43697
  operation = callGAPI(v.matters(), 'count',
@@ -43585,7 +43715,7 @@ def doPrintVaultCounts():
43585
43715
  doWait = True
43586
43716
  response = operation.get('response', {})
43587
43717
  query = operation['metadata']['query']
43588
- search_method = query.get('searchMethod')
43718
+ search_method = query.get('method')
43589
43719
  # ARGH count results don't include accounts with zero items.
43590
43720
  # so we keep track of which accounts we searched and can report
43591
43721
  # zero data for them.
@@ -77976,6 +78106,7 @@ MAIN_ADD_CREATE_FUNCTIONS = {
77976
78106
  Cmd.ARG_VAULTEXPORT: doCreateVaultExport,
77977
78107
  Cmd.ARG_VAULTHOLD: doCreateVaultHold,
77978
78108
  Cmd.ARG_VAULTMATTER: doCreateVaultMatter,
78109
+ Cmd.ARG_VAULTQUERY: doCreateVaultQuery,
77979
78110
  Cmd.ARG_VERIFY: doCreateSiteVerification,
77980
78111
  }
77981
78112
 
@@ -78033,6 +78164,7 @@ MAIN_COMMANDS_WITH_OBJECTS = {
78033
78164
  {Cmd.ARG_SHAREDDRIVEACLS: doCopySyncSharedDriveACLs,
78034
78165
  Cmd.ARG_STORAGEBUCKET: doCopyCloudStorageBucket,
78035
78166
  Cmd.ARG_VAULTEXPORT: doCopyVaultExport,
78167
+ Cmd.ARG_VAULTQUERY: doCopyVaultQuery,
78036
78168
  }
78037
78169
  ),
78038
78170
  'create':
@@ -78097,6 +78229,7 @@ MAIN_COMMANDS_WITH_OBJECTS = {
78097
78229
  Cmd.ARG_VAULTEXPORT: doDeleteVaultExport,
78098
78230
  Cmd.ARG_VAULTHOLD: doDeleteVaultHold,
78099
78231
  Cmd.ARG_VAULTMATTER: doDeleteVaultMatter,
78232
+ Cmd.ARG_VAULTQUERY: doDeleteVaultQuery,
78100
78233
  }
78101
78234
  ),
78102
78235
  'download':
gam/gamlib/glclargs.py CHANGED
@@ -1216,6 +1216,7 @@ class GamCLArgs():
1216
1216
  OB_DOMAIN_NAME_LIST = 'DomainNameList'
1217
1217
  OB_DRIVE_FILE_ENTITY = 'DriveFileEntity'
1218
1218
  OB_DRIVE_FILE_ID = 'DriveFileID'
1219
+ OB_DRIVE_FILE_ID_LIST = 'DriveFileIDList'
1219
1220
  OB_DRIVE_FILE_NAME = 'DriveFileName'
1220
1221
  OB_DRIVE_FILE_PERMISSION_ENTITY = 'DriveFilePermissionEntity'
1221
1222
  OB_DRIVE_FILE_PERMISSION_ID = 'DriveFilePermissionID'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: gam7
3
- Version: 7.22.5
3
+ Version: 7.22.7
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
@@ -1,4 +1,4 @@
1
- gam/__init__.py,sha256=ltpucQqtsz71YaDsryzmj1nc-Ls0DsKpQvDjUr04rKY,3612652
1
+ gam/__init__.py,sha256=dR4_9Ik2T201HEzHF-nOj5dtmbWwDDMUW8jb5RzZzFM,3618477
2
2
  gam/__main__.py,sha256=amz0-959ph6zkZKqjaar4n60yho-T37w6qWI36qx0CA,1049
3
3
  gam/cacerts.pem,sha256=DUsVo2XlFYwfkhe3gnxa-Km4Z4noz74hSApXwTT-nQE,44344
4
4
  gam/cbcm-v1.1beta1.json,sha256=xO5XloCQQULmPbFBx5bckdqmbLFQ7sJ2TImhE1ysDIY,19439
@@ -24,7 +24,7 @@ gam/gamlib/__init__.py,sha256=z5mF-y0j8pm-YNFBaiuxB4M_GAUPG-cXWwrhYwrVReM,679
24
24
  gam/gamlib/glaction.py,sha256=1Il_HrChVnPkzZwiZs5au4mFQVtq4K1Z42uIuR6qdnI,9419
25
25
  gam/gamlib/glapi.py,sha256=u97M7Y2BeP3tYEEGYEz-9kY4fdV0fYkeqC3YN-sRwNc,36028
26
26
  gam/gamlib/glcfg.py,sha256=7Ut-7sDTw-WVHZfvDWn_dlVNfuWd6VsPDBpQ3qnyzJE,28100
27
- gam/gamlib/glclargs.py,sha256=ARqlKA4s578PLOxQSLVWSnUdKNpv8LForlm1jpcfWeI,53207
27
+ gam/gamlib/glclargs.py,sha256=rGcAoRLaCv5L9cBxI56MrPXr0JcImO45bLQNaYahoUY,53251
28
28
  gam/gamlib/glentity.py,sha256=Dp15UbaxGbqDKYyF50z-wjFlQpKvi9mCIuPDsd_kL8Y,35284
29
29
  gam/gamlib/glgapi.py,sha256=pdBbwNtnCwFWxJGaP-_3hdTjSNoOCJF2yo76WdQOi1k,40426
30
30
  gam/gamlib/glgdata.py,sha256=weRppttWm6uRyqtBoGPKoHiNZ2h28nhfUV4J_mbCszY,2707
@@ -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.22.5.dist-info/METADATA,sha256=iHzqp50Z_9xbSdfj98MmEr8pKLfSC4oXwcW0jaM31cw,3092
51
- gam7-7.22.5.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
52
- gam7-7.22.5.dist-info/entry_points.txt,sha256=HVUM5J7dA8YwvJfG30jiLefR19ExMs387TWugWd9sf4,42
53
- gam7-7.22.5.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
54
- gam7-7.22.5.dist-info/RECORD,,
50
+ gam7-7.22.7.dist-info/METADATA,sha256=JC5zR6cORBbntdtONwjfHO83m9zcOD_dDFk3jS-FO50,3092
51
+ gam7-7.22.7.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
52
+ gam7-7.22.7.dist-info/entry_points.txt,sha256=HVUM5J7dA8YwvJfG30jiLefR19ExMs387TWugWd9sf4,42
53
+ gam7-7.22.7.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
54
+ gam7-7.22.7.dist-info/RECORD,,
File without changes