Exporting, Restoring, Sending and Saving Mailbox Items
This section explains how to export, restore, send and save a specific backed-up item by item ID.
Request
POST https://<hostname>:4443/v5/RestoreSessions/{restoreSessionId}/Organization/Mailboxes/{mailboxId}/Items/{itemId}/action |
Request Headers
The request header must contain an authorization token of the current session.
Request Body
Export to PST
|
To export Veeam Backup for Microsoft Office 365 entities to PST files (Personal Folder Files), you must have a 64-bit version of Microsoft Outlook 2016, Microsoft Outlook 2013 or Microsoft Outlook 2010 installed on the computer running restore sessions. |
To export a backed-up item from the organization's mailbox to a Personal Folder File (PST file), the request body must contain the exporToPst action properties:
Property | Type | Description |
---|---|---|
contentKeywords | string | Specifies the keyword to query backed-up mailbox folder data. |
enablePstSizeLimit | boolean | Defines whether to set the size limit for the exported PST file. If set to true, make sure to specify the pstSizeLimitBytes parameter. |
pstSizeLimitBytes | integer | Sets the limit of the exported PST file. You can choose the limit range from 1 GB to 49 GB. |
For example:
Request Body: { "exporttoPst": { "contentKeywords": "support", "enablePstSizeLimit": false } } |
The request command will export a backed-up item to a PST file and place it to a temporary folder on the Veeam Backup for Microsoft Office 365 server. After that, the PST file will be transferred as application/octet-stream media to the client. To download, read, convert to PST or perform other actions with the octet-stream, use features of programming languages.
|
You can use Swagger UI to download the octet-stream file by clicking the Download action link, which server returns in the response body after a successfully completed export operation. For more information, see Evaluation in Swagger UI. |
Restore to Same Mailbox
To restore a backed-up item to the same mailbox on the production Exchange server, the request body must contain the restoretoOriginallocation action properties:
Property | Type | Description |
---|---|---|
userName | string | Specifies the user name that you want to use for authenticating with the Exchange organization. |
userPassword | string | Specifies the password of the user account that you want to use for authenticating with the Exchange organization. |
userCode | string | Specifies the authentication code. For information about how to obtain the code, see Getting Device Code. This property is required if you want to use a device code for data restore. |
applicationId | string | An identification number of the Azure AD application that you want to use for a restore. |
applicationCertificate | base64 | Specifies the SSL certificate configured for the Azure AD application that you want to use for data restore. You must provide the certificate as a Base64 string. For information on how to obtain a string, see Converting Certificate to Base64 String. |
applicationCertificatePassword | string | A password for the SSL certificate being used. |
impersonationAccountName | string | Specifies a user name of the account that will be used as a Microsoft Exchange account to restore a specific backed-up mailbox item. This property is required if you want to use an application certificate for data restore. Use this property only with the applicationCertificate property. |
Converting Certificate to Base64 String
If you want to use a certificate to access an Azure AD application, you must provide the certificate as a Base64 string. To obtain a Base64 string, perform the following steps:
- Get the certificate content from a PFX file.
- Convert the certificate to a Base64 string.
To do this, you can use the following PowerShell cmdlets:
$pfx_cert = get-content '<path_to_cert>' -Encoding Byte [System.Convert]::ToBase64String($pfx_cert) | Out-File '<path_to_file>' |
where:
- <path_to_cert> — path to the PFX file that you want to convert to a Base64 string.
- <path_to_file> — path to a file that that will contain the resulting Base64 string. You will be able to copy the Base64 string from the file and provide the string in the body of a request to Veeam Backup for Microsoft Office 365 REST API.
For example:
$pfx_cert = get-content 'C:\cert.pfx' -Encoding Byte [System.Convert]::ToBase64String($pfx_cert) | Out-File 'C:\base64.txt' |
Request Example 1
The following example shows how to use a user name and password for a restore.
Request Body: { "restoretoOriginallocation": {"userName": "jsmith@westsupport.onmicrosoft.com", "userPassword": "paSSw0rd" } } |
Request Example 2
The following example shows how to use a device code for a restore.
Request Body: { "restoretoOriginallocation": { "userCode": "C6A9DB737" } } |
Request Example 3
The following example shows how to use a certificate for a restore.
Request Body: { "restoretoOriginallocation": { "applicationId" : <app_id>, "applicationCertificate": "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", "applicationCertificatePassword": "xxx", "impersonationAccountName": "xxx", } } |
Restore to Different Mailbox
To restore a backed-up item to a different mailbox on the production Exchange server, the request body must contain the restoreTo action properties:
Property | Type | Description |
---|---|---|
mailbox | string | Specifies the email address of the mailbox to which you want to restore a mailbox item. |
userName | string | Specifies the user name that you want to use for authenticating with the Exchange organization. |
userPassword | string | Specifies the password of the user account that you want to use for authenticating with the Exchange organization. |
userCode | string | Specifies the authentication code. For information about how to obtain the code, see Getting Device Code. This property is required if you want to use a device code for data restore. |
applicationId | string | An identification number of the Azure AD application that you want to use for a restore. |
applicationCertificate | base64 | Specifies the SSL certificate configured for the Azure AD application that you want to use for data restore. You must provide the certificate as a Base64 string. For information on how to obtain a string, see Converting Certificate to Base64 String. |
applicationCertificatePassword | string | A password for the SSL certificate being used. |
impersonationAccountName | string | Specifies a user name of the account that will be used as a Microsoft Exchange account to restore a specific backed-up mailbox item. This property is required if you want to use an application certificate for data restore. Use this property only with the applicationCertificate property. |
Send to Same Mailbox
To send a backed-up item as attachment in an email message to the same production mailbox, the request body must contain the sendtoDefaultaddress action:
Request Body: { "sendtoDefaultaddress": null } |
|
To be able to send items as attachments you must specify the Veeam Explorer for Microsoft Exchange email settings by sending PUT HTTPS request to the /VEXEmailSettings URL. For more information, see (PUT) /VEXEmailSettings. |
Send to Different Mailbox
To send a backed-up item as attachment in an email message to a different mailbox, the request body must contain the sendtoDifferentaddress action properties:
Property | Type | Description |
---|---|---|
from | string | Specifies the email address from which a restored mailbox item will be sent. |
to | string | Specifies the email address to which a restored mailbox item will be sent. |
subject | string | Specifies the subject of the email message used for sending a restored mailbox item. |
text | string | Specifies the body of the email message used for sending a restored mailbox item. |
For example:
Request Body: { "sendtoDifferentaddress": {"from": "j_smith@bestsupport.onmicrosoft.com", "to": "r.clark@bestsupport.onmicrosoft.com", "subject": "Support Tickets", "text": "Please find attached the files you requested" } } |
Save As MSG
To save a backed-up item to an MSG file (Outlook Message File), the request body must contain the savetoMsg action:
Request Body: { "savetoMsg": null } |
The request command will save the backed-up item with the specified ID to an MSG file and transfer it to application/octet-stream media. You can use Swagger UI to download the mailbox item in MSG format from the stream by clicking the Download action link in the response body. For more information, see Evaluation in Swagger UI.
Response
The server returns the following response to the client.
Response Codes
A successfully completed operation returns a response code 200 OK.
Response Headers
The response to this request contains the following headers. The response may also include additional standard HTTPS headers.
Header | Description |
---|---|
Content-length | The length of the response body. |
Content-type | The media type and syntax of the response body message for the requests with the export and save actions: application/octet-stream. The media type and syntax of the response body message for the requests with the restore and send actions: null. |
Response Body
In the response body, the server returns the following data:
- [For export and save actions] Binary data stream
- [For the restore action] Information about operation results
- [For the send action] None
The response body for the restore operation has the following properties:
Property | Type | Description |
---|---|---|
createdItemsCount | integer | Number of missing items restored from the backup. |
mergedItemsCount | integer | Number of changed items restored from the backup. |
failedItemsCount | integer | Number of items for which the restore operation failed. |
skippedItemsCount | integer | Number of items that were not changed or missing in the original location. Such items are skipped during the restore operation. |
Example 1
The following request exports a backed-up item to a PST file.
Request: POST https://abc.tech.local:4443/v5/RestoreSessions/380d7caf-6294-4a33-b50a-b8aeb13af58c/Organization/Mailboxes/9e9b7199-f547-467a-b580-9d283a75eaad/Items/AAAAAKGE4dIvQUtGjuSnq8JTHAgHAPliTMf_6DxPiJ6TGYB9CqAAAAAAAUcAAEJD8-NHTuNAoFrJGmIzcMoAAE-h_u0AAA==/action
Request Header: Authorization: Bearer <Access-Token>
Request Body: { "exporttoPst": { "contentKeywords": "support", "enablePstSizeLimit": false } }
Response: 200 OK |
Example 2
The following request saves a backed-up item to an MSG file.
Request: POST https://abc.tech.local:4443/v5/RestoreSessions/380d7caf-6294-4a33-b50a-b8aeb13af58c/Organization/Mailboxes/9e9b7199-f547-467a-b580-9d283a75eaad/Items/AAAAAKGE4dIvQUtGjuSnq8JTHAgHAPliTMf_6DxPiJ6TGYB9CqAAAAAAAUcAAEJD8-NHTuNAoFrJGmIzcMoAAE-h_u0AAA==/action
Request Header: Authorization: Bearer <Access-Token>
Request Body: { "savetoMsg": null }
Response: 200 OK |
Example 3
The following request restores a backed-up item to the same mailbox on the production Exchange server.
Request: POST https://abc.tech.local:4443/v5/RestoreSessions/380d7caf-6294-4a33-b50a-b8aeb13af58c/Organization/Mailboxes/9e9b7199-f547-467a-b580-9d283a75eaad/Items/AAAAAKGE4dIvQUtGjuSnq8JTHAgHAPliTMf_6DxPiJ6TGYB9CqAAAAAAAUcAAEJD8-NHTuNAoFrJGmIzcMoAAE-h_u0AAA==/action
Request Header: Authorization: Bearer <Access-Token>
Request Body: { "restoretoOriginallocation": {"userName": "jsmith@westsupport.onmicrosoft.com", "userPassword": "paSSw0rd" } }
Response: 200 OK
Response Body: { "createdItemsCount": 0, "mergedItemsCount": 0, "failedItemsCount": 0, "skippedItemsCount": 0 } |
Example 4
The following request restores a backed-up item to a different mailbox on the production Exchange server.
Request: POST https://abc.tech.local:4443/v5/RestoreSessions/380d7caf-6294-4a33-b50a-b8aeb13af58c/Organization/Mailboxes/9e9b7199-f547-467a-b580-9d283a75eaad/Items/AAAAAKGE4dIvQUtGjuSnq8JTHAgHAPliTMf_6DxPiJ6TGYB9CqAAAAAAAUcAAEJD8-NHTuNAoFrJGmIzcMoAAE-h_u0AAA==/action
Request Header: Authorization: Bearer <Access-Token>
Request Body: { "restoreTo": {"mailbox": "djohnes@westsupport.onmicrosoft.com", "userName": "djohnes@westsupport.onmicrosoft.com", "userPassword": "paSSw0rd" } }
Response: 200 OK
Response Body: { "createdItemsCount": 0, "mergedItemsCount": 0, "failedItemsCount": 0, "skippedItemsCount": 0 } |
Example 5
The following request sends a restored organization's mailbox item as attachment in the email message to the same production mailbox.
Request: POST https://abc.tech.local:4443/v5/RestoreSessions/380d7caf-6294-4a33-b50a-b8aeb13af58c/Organization/Mailboxes/9e9b7199-f547-467a-b580-9d283a75eaad/Items/AAAAAKGE4dIvQUtGjuSnq8JTHAgHAPliTMf_6DxPiJ6TGYB9CqAAAAAAAUcAAEJD8-NHTuNAoFrJGmIzcMoAAE-h_u0AAA==/action
Request Header: Authorization: Bearer <Access-Token>
Request Body: { "sendtoDefaultaddress": null }
Response: 200 OK |
Example 6
The following request sends a restored organization's mailbox item as attachment in the email message to a different production mailbox.
Request: POST https://abc.tech.local:4443/v5/RestoreSessions/380d7caf-6294-4a33-b50a-b8aeb13af58c/Organization/Mailboxes/9e9b7199-f547-467a-b580-9d283a75eaad/Items/AAAAAKGE4dIvQUtGjuSnq8JTHAgHAPliTMf_6DxPiJ6TGYB9CqAAAAAAAUcAAEJD8-NHTuNAoFrJGmIzcMoAAE-h_u0AAA==/action
Request Header: Authorization: Bearer <Access-Token>
Request Body: { "sendtoDifferentaddress": {"from": "j_smith@bestsupport.onmicrosoft.com", "to": "r.clark@bestsupport.onmicrosoft.com", "subject": "Support Tickets"; "text": "Please find attached the files you requested" } }
Response: 200 OK |