Restoring, Sending and Saving Files
You can restore, send and save backed-up Microsoft Teams files.
Request
POST https://<hostname>:4443/v5/RestoreSessions/{restoreSessionId}/organization/teams/{teamId}/files/action |
Request Headers
The request header must contain an authorization token of the current session.
Request Parameters
The following parameters must be specified in the URL of the request:
Parameter | Type | Description |
---|---|---|
restoreSessionId | string | Specifies the identification number of the restore session. For more information on how to get this parameter, see Getting Restore Sessions. |
teamId | string | Specifies the identification number of the team. For more information on how to get this parameter, see Getting Teams. |
Request Body
Restore
To restore backed-up files, the request body must contain the restore action properties:
Property | Type | Description |
---|---|---|
userName | string | Specifies the user name that you want to use for authenticating with the organization. This property is required if you want to use credentials of a user account for data restore. |
userPassword | string | Specifies the password of the user account that you want to use for authenticating with the organization. This property is required if you want to use credentials of a user account for data restore. |
userCode | string | Specifies the authentication code. For more information on how to get a device code, see Getting Device Code. This property is required if you want to use a device code for data restore. |
applicationId | string | Specifies the identification number of an Azure AD application that you want to use for data restore. This property is required if you want to use a certificate for data 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 more information on how to obtain a Base64 string, see Converting Certificate to Base64 String. |
applicationCertificatePassword | string | Specifies the password for the SSL certificate that you want to use for data restore. |
restoreChangedItems | boolean | Defines whether to restore items that have changed in the original location since the time when the backup was created. |
restoreMissingItems | boolean | Defines whether to restore items that are missing in the original location. |
fileVersion | fileVersion | Specifies what versions of files to restore. Possible values:
|
fileLastVersionAction | fileLastVersionAction | Specifies what action to perform with the file in the original location when restoring the latest version of the file in the backup. Possible values:
|
channelId | string | Specifies the ID of the channel whose files you want to restore. Veeam Explorer for Microsoft Teams will restore all files of this channel. You do not need to use this property if you use the files property to specify what files to restore. |
files | file[] | Accepts IDs of files that you want to restore. The files must reside in the same channel. You do not need to use this property if you use the channelId property to specify a channel whose files to restore. For more information on how to get such IDs, see Getting Files. |
Converting Certificate to 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>' |
- <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.
$pfx_cert = get-content 'C:\cert.pfx' -Encoding Byte [System.Convert]::ToBase64String($pfx_cert) | Out-File 'C:\base64.txt' |
Request Body: { "restore": { "userName": "admin", "userPassword": "password", "restoreChangedItems": true, "restoreMissingItems": true, "fileVersion": "last", "fileLastVersionAction": "overwrite", "files": [ {"id": "94e5f006-77da-4c52-8f1e-1051a195844a"}, {"id": "1c750ff5-f22f-4c42-8522-97925a5a2e5e"} ] } } |
The following example shows how to use a device code to restore specific files of a channel.
Request Body: { "restoreMissingItems": true, "fileVersion": "last", "fileLastVersionAction": "overwrite", "files": [ {"id": "94e5f006-77da-4c52-8f1e-1051a195844a"}, {"id": "1c750ff5-f22f-4c42-8522-97925a5a2e5e"} ] |
The following example shows how to use a certificate to restore specific files of a channel.
Request Body: { "restore": { "applicationId" : <app_id>, "applicationCertificate": "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", "applicationCertificatePassword": "xxx", "restoreChangedItems": true, "restoreMissingItems": true, "fileVersion": "last", "fileLastVersionAction": "overwrite", "files": [ {"id": "94e5f006-77da-4c52-8f1e-1051a195844a"}, {"id": "1c750ff5-f22f-4c42-8522-97925a5a2e5e"} ] } } |
Property | Type | Description |
---|---|---|
from | string | Specifies the email address from which the restored files will be sent. |
to | string | Specifies the email address to which the restored files will be sent. |
subject | string | Specifies the subject of the email message used for sending restored files. |
text | string | Specifies the body of the email message used for sending restored files. |
channelId | string | Specifies the ID of the channel whose files you want to send. Veeam Explorer for Microsoft Teams will send all files of this channel. You do not need to use this property if you use the files property to specify what files to send. |
files | file[] | Accepts IDs of files that you want to send. The files must reside in the same channel. You do not need to use this property if you use the channelId property to specify a channel whose files to send. For more information on how to get such IDs, see Getting Files. |
The following example shows how to send backed-up files of a specified channel.
Request Body: { "send": { "from": "admin@tech.com", "to": "user@tech.com", "subject": "teams recovery", "text": "sent by rest api", "channelId": "19:94e57dbfaa634f999353b374b69b5800@thread.tacv2" } } |
The following example shows how to send the selected backed-up files.
Request Body: { "send": { "from": "admin@tech.com", "to": "user@tech.com", "subject": "teams recovery", "text": "sent by rest api", "files": [ {"id": "94e5f006-77da-4c52-8f1e-1051a195844a"}, {"id": "1c750ff5-f22f-4c42-8522-97925a5a2e5e"} ] } } |
|
If you omit the from property, the default sender email address specified in Veeam Explorer for Microsoft Teams email settings will be used. To specify Veeam Explorer for Microsoft Teams email settings, send the PUT HTTPS request to the /VETEmailSettings URL. For more information, see Editing Notification Settings. |
|
Files are always saved in a ZIP archive. |
Property | Type | Description |
---|---|---|
channelId | string | Specifies the ID of the channel whose files you want to save. Veeam Explorer for Microsoft Teams will save all files of this channel. You do not need to use this property if you use the files property to specify what files to save. |
files | file[] | Accepts IDs of files that you want to save. The files must reside in the same channel. You do not need to use this property if you use the channelId property to specify a channel whose files to save. For more information on how to get such IDs, see Getting Files. |
The following example shows how to save backed-up files of a specified channel.
The following example shows how to save the selected backed-up files.
Request Body: { "save": { {"id": "94e5f006-77da-4c52-8f1e-1051a195844a"}, {"id": "1c750ff5-f22f-4c42-8522-97925a5a2e5e"} ] } } |
|
You can use Swagger UI to download the document from the stream by clicking Download action link in the response body. For more information, see Evaluation in Swagger UI. |
The server returns the following response to the client.
A successfully completed operation returns response code 200 OK.
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. |
In the response body, the server returns the following data:
- [For the restore action] Information about operation results
- [For the send action] None
- [For the save action] Binary data stream
The response body for the restore operation has the following properties:
Property | Type | Description |
---|---|---|
totalItemsCount | integer | Total number of items in the backup. |
restoredItemsCount | integer | Number of 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. |
restoreIssues | Array of string values | Description of issues that occurred during the restore operation. |
Request: POST https://abc.tech.local:4443/v5/RestoreSessions/380d7caf738d3d9f-268b-435b-93e2-64e70f8032b6/organization/teams/448c5b66-8dcd-4c75-b636-d3b500bce36f/files/action
Request Header: Authorization: Bearer <Access-Token>
Request Body: { "restore": { "userName": "admin", "userPassword": "password", "restoreChangedItems": true, "restoreMissingItems": true, "fileVersion": "last", "fileLastVersionAction": "overwrite" } }
Response: 200 OK
Response Body: { "totalItemsCount": 38, "restoredItemsCount": 3, "failedItemsCount": 0, "skippedItemsCount": 35, "restoreIssues": [] } |
Request: POST https://abc.tech.local:4443/v5/RestoreSessions/380d7caf738d3d9f-268b-435b-93e2-64e70f8032b6/organization/teams/448c5b66-8dcd-4c75-b636-d3b500bce36f/files/action
Request Header: Authorization: Bearer <Access-Token>
Request Body: { "send": { "from": "admin@tech.com", "to": "user@tech.com", "subject": "teams recovery", "text": "sent by rest api", "files": [ {"id": "94e5f006-77da-4c52-8f1e-1051a195844a"}, {"id": "1c750ff5-f22f-4c42-8522-97925a5a2e5e"} ] } }
Response: 200 OK |
Request: POST https://abc.tech.local:4443/v5/RestoreSessions/380d7caf738d3d9f-268b-435b-93e2-64e70f8032b6/organization/teams/448c5b66-8dcd-4c75-b636-d3b500bce36f/files/action
Request Header: Authorization: Bearer <Access-Token>
Request Body: { "save": { "files": [ {"id": "94e5f006-77da-4c52-8f1e-1051a195844a"}, {"id": "1c750ff5-f22f-4c42-8522-97925a5a2e5e"} ] } }
Response: 200 OK |