The Vault API lets you manage Vault exports. You can:
-
Create exports—send a request to Vault that finds the messages or files that match your query and exports them to Google Cloud.
Note:
- You can have up to 20 exports running at one time across your organization. To make exports faster, divide large exports into smaller ones. For example, export data by month instead of all at once. Another option is to include fewer items, such as users, groups, or chat spaces, in each export.
- Exports are available for 15 days after creation, after which they are deleted and no longer accessible.
Examples:
-
List exports —retrieve the status of all exports associated with a matter.
-
Get exports —retrieve information about an export.
-
Download exports —download an export from Google Cloud.
-
Delete exports —remove exports from a matter when they are no longer needed.
Before you begin
To set up the required libraries and authentication, work through the quickstart for your programming language.
To work with Vault resources, the account must have the required Vault privileges and access to the matter. To access a matter, the account must have created the matter, have the matter shared with them, or have the View All Mattersprivilege.
Create a Gmail export
The following example shows how to create a Gmail export. This request exports all Gmail and classic Hangouts messages that meet the following criteria:
- messages owned by accounts
email1
andemail2
. - excludes draft messages.
- messages sent to
ceo@solarmora.com
.
Tip:These examples use the classic Gmail export system. To export using the new export system
,
in MailExportOptions
,
set useNewExport
to true.
Java
public
Export
createMailAccountHeldDataExports
(
Vault
client
,
String
matterId
)
{
AccountInfo
emailsToSearch
=
new
AccountInfo
().
setEmails
(
ImmutableList
.
of
(
"email1"
,
"email2"
));
MailOptions
mailQueryOptions
=
new
MailOptions
().
setExportFormat
(
"PST"
);
String
queryTerms
=
"to:ceo@solarmora.com"
;
Query
mailQuery
=
new
Query
()
.
setCorpus
(
"MAIL"
)
.
setDataScope
(
"HELD_DATA"
)
.
setSearchMethod
(
"ACCOUNT"
)
.
setAccountInfo
(
emailsToSearch
)
.
setTerms
(
queryTerms
)
.
setMailOptions
(
mailQueryOptions
);
MailExportOptions
mailExportOptions
=
new
MailExportOptions
()
.
setExportFormat
(
"MBOX"
)
.
showConfidentialModeContent
(
true
);
Export
wantedExport
=
new
Export
()
.
setMatterId
(
matterId
)
.
setName
(
"My first mail accounts export"
)
.
setQuery
(
mailQuery
)
.
setExportOptions
(
new
ExportOptions
().
setMailOptions
(
mailExportOptions
));
return
client
.
matters
().
exports
().
create
(
matter
,
wantedExport
).
execute
();
}
Python
def
create_mail_account_held_data_export
(
service
,
matter_id
):
emails_to_search
=
[
'email1'
,
'email2'
]
mail_query_options
=
{
'excludeDrafts'
:
True
}
query_terms
=
'to:ceo@solarmora.com'
mail_query
=
{
'corpus'
:
'MAIL'
,
'dataScope'
:
'HELD_DATA'
,
'searchMethod'
:
'ACCOUNT'
,
'accountInfo'
:
{
'emails'
:
emails_to_search
},
'terms'
:
query_terms
,
'mailOptions'
:
mail_query_options
,
}
mail_export_options
=
{
'exportFormat'
:
'MBOX'
,
'showConfidentialModeContent'
:
True
}
wanted_export
=
{
'name'
:
'My first mail accounts export'
,
'query'
:
mail_query
,
'exportOptions'
:
{
'mailOptions'
:
mail_export_options
}
}
return
service
.
matters
()
.
exports
()
.
create
(
matterId
=
matter_id
,
body
=
wanted_export
)
.
execute
()
Create a Drive export
The following example shows how to create a Drive export. This request exports all files, including those in shared drives, that meet the following criteria:
- belong to the specified organizational unit (obtained with the Admin SDK).
-
were created between the specified times .
Java
public
Export
createDriveOuAllDataExport
(
Vault
client
,
String
matterId
)
{
OrgUnitInfo
ouToSearch
=
new
OrgUnitInfo
().
setOrgUnitId
(
"ou id retrieved from admin sdk"
);
DriveOptions
driveQueryOptions
=
new
DriveOptions
().
setIncludeSharedDrives
(
true
);
Query
driveQuery
=
new
Query
()
.
setCorpus
(
"DRIVE"
)
.
setDataScope
(
"ALL_DATA"
)
.
setSearchMethod
(
"ORG_UNIT"
)
.
setOrgUnitInfo
(
ouToSearch
)
.
setDriveOptions
(
driveQueryOptions
)
.
setStartTime
(
"2017-03-16T00:00:00Z"
)
.
setEndTime
(
"2017-03-16T00:00:00Z"
)
.
setTimeZone
(
"Etc/GMT+2"
);
DriveExportOptions
driveExportOptions
=
new
DriveExportOptions
().
setIncludeAccessInfo
(
false
);
Export
wantedExport
=
new
Export
()
.
setName
(
"My first drive ou export"
)
.
setQuery
(
driveQuery
)
.
setExportOptions
(
new
ExportOptions
().
setDriveOptions
(
driveExportOptions
));
return
client
.
matters
().
exports
().
create
(
matter
,
wantedExport
).
execute
();
}
Python
def
create_drive_ou_all_data_export
(
service
,
matter_id
):
ou_to_search
=
'ou id retrieved from admin sdk'
drive_query_options
=
{
'includeSharedDrives'
:
True
}
drive_query
=
{
'corpus'
:
'DRIVE'
,
'dataScope'
:
'ALL_DATA'
,
'searchMethod'
:
'ORG_UNIT'
,
'orgUnitInfo'
:
{
'org_unit_id'
:
ou_to_search
},
'driveOptions'
:
drive_query_options
,
'startTime'
:
'2017-03-16T00:00:00Z'
,
'endTime'
:
'2017-09-23T00:00:00Z'
,
'timeZone'
:
'Etc/GMT+2'
}
drive_export_options
=
{
'includeAccessInfo'
:
False
}
wanted_export
=
{
'name'
:
'My first drive ou export'
,
'query'
:
drive_query
,
'exportOptions'
:
{
'driveOptions'
:
drive_export_options
}
}
return
service
.
matters
()
.
exports
()
.
create
(
matterId
=
matter_id
,
body
=
wanted_export
)
.
execute
()
Create a Meet export
The following example shows how to create a Meet export. This request exports files associated with accounts in the specified organizational unit that have a file name that follows the pattern for Meet recordings.
Python
def
create_meet_export
(
service
,
matter_id
,
ou_to_search
,
export_name
):
export
=
{
'name'
:
export_name
,
'query'
:
{
'corpus'
:
'DRIVE'
,
'dataScope'
:
'ALL_DATA'
,
'searchMethod'
:
'ORG_UNIT'
,
'terms'
:
'title:"...-...-...
\\
(....-..-.. at ..:.. *
\\
)"'
,
'orgUnitInfo'
:
{
'orgUnitId'
:
'id:'
+
ou_to_search
},
'driveOptions'
:
{
'includeTeamDrives'
:
True
,
'includeSharedDrives'
:
True
},
'timeZone'
:
'Etc/GMT'
,
'method'
:
'ORG_UNIT'
},
'exportOptions'
:
{
'driveOptions'
:
{},
'region'
:
'ANY'
},
}
return
service
.
matters
()
.
exports
()
.
create
(
matterId
=
matter_id
,
body
=
export
)
.
execute
()
Export from a saved query
The following example shows how to create an export from a saved query.
Python
def
create_mail_export_from_saved_query
(
service
,
matter_id
,
saved_query_id
,
export_name
):
export
=
{
'name'
:
export_name
,
'exportOptions'
:
{
'mailOptions'
:
{
'exportFormat'
:
'PST'
,
'showConfidentialModeContent'
:
True
},
'region'
:
'ANY'
}
}
export
[
'query'
]
=
service
.
matters
()
.
savedQueries
()
.
get
(
savedQueryId
=
saved_query_id
,
matterId
=
matter_id
)
.
execute
()[
'query'
]
return
service
.
matters
()
.
exports
()
.
create
(
matterId
=
matter_id
,
body
=
export
)
.
execute
()
List exports
The following example shows how to retrieve a list of exports associated with a matter.
Java
public
class
exports
{
public
ListExportsResponse
listExports
(
Vault
client
,
String
matterId
)
{
return
client
.
matters
().
exports
().
list
(
matterId
).
execute
();
}
Python
def
list_exports
(
service
,
matter_id
):
return
service
.
matters
()
.
exports
()
.
list
(
matterId
=
matter_id
)
.
execute
()
Get information about an export
The following example shows how to get information about a specific export. Note: To download exported files and messages, you use Cloud APIs (in the next example).
Java
public
Export
getExportById
(
Vault
client
,
String
matterId
,
String
exportId
)
{
return
client
.
matters
().
exports
().
get
(
matterId
,
exportId
).
execute
();
}
Python
def
get_export_by_id
(
service
,
matter_id
,
export_id
):
return
service
.
matters
()
.
exports
()
.
get
(
matterId
=
matter_id
,
exportId
=
export_id
)
.
execute
()
Download an export from Google Cloud
The following example shows how to download all completed exports in a matter from Google Cloud. This request uses Vault and Cloud APIs.
Note:To download an export, an account needs the Manage Exports privilege and the matter shared with them.
Python
def
download_exports
(
service
,
matter_id
):
"""Google Cloud storage service is authenticated by running
`gcloud auth application-default login` and expects a billing enabled project
in ENV variable `GOOGLE_CLOUD_PROJECT` """
gcpClient
=
storage
.
Client
()
matter_id
=
os
.
environ
[
'MATTERID'
]
for
export
in
vaultService
.
matters
()
.
exports
()
.
list
(
matterId
=
matter_id
)
.
execute
()[
'exports'
]:
if
'cloudStorageSink'
in
export
:
directory
=
export
[
'name'
]
if
not
os
.
path
.
exists
(
directory
):
os
.
makedirs
(
directory
)
print
(
export
[
'id'
])
for
sinkFile
in
export
[
'cloudStorageSink'
][
'files'
]:
filename
=
'
%s
/
%s
'
%
(
directory
,
sinkFile
[
'objectName'
]
.
split
(
'/'
)[
-
1
])
objectURI
=
'gs://
%s
/
%s
'
%
(
sinkFile
[
'bucketName'
],
sinkFile
[
'objectName'
])
print
(
'get
%s
to
%s
'
%
(
objectURI
,
filename
))
gcpClient
.
download_blob_to_file
(
objectURI
,
open
(
filename
,
'wb+'
))
Delete an export
The following example shows how to delete an export.
Java
public
void
deleteExportById
(
Vault
client
,
String
matterId
,
String
exportId
)
{
client
.
matters
().
exports
().
delete
(
matterId
,
exportId
).
execute
();
Python
def
delete_export_by_id
(
service
,
matter_id
,
export_id
):
return
service
.
matters
()
.
exports
()
.
delete
(
matterId
=
matter_id
,
exportId
=
export_id
)
.
execute
()
For app-specific information on search and export including search limits, see Get started with Vault search and export .