Greetings friends, a few weeks ago I showed you that Veeam had released its Veeam Beta Backup for Microsoft Office 365 v4, and if you are testing it and want to give it a little deeper through API, I think you will like this post.

Enable RestAPI in Veeam Backup for Microsoft Office 365

We’ll have to run several steps before we start downloading anything, or even touching Grafana, from our Veeam Backup for Microsoft Office 365, we’ll go in the Console to the menu icon, and then General Settings: We will go to the sub-menu called REST API and enable the REST service, also here we could install our own SSL, and change the timeout of the tokens and SSL port, in my case I have not changed anything:

With this we can go to our browser and explore the SWAGGER that Veeam Backup for Microsoft Office 365 comes standard, we will find it at https://VBOURL:4443/swagger and should look like this:

Now with this we are ready to continue with the post.

What’s New in RESTful API in Veeam Backup for Microsoft Office 365 v4 – Beta

Comparing this new REST with version 3 of the same one, we found very interesting novelties. As expected, we can configure and review everything related to Object Storage that this version allows, as well as some more new features. Let’s see them one by one.

Account

This new API allows us to view, add, and remove Object Storage accounts:

Let’s see the example of my local FreeNAS account using MinIO, which is amazonS3CompatibleAccount type:

[ { "accountType": "amazonS3CompatibleAccount", "userName": "VEEAMS3BUCKETFREENAS", "id": "92434b99-ad79-49d1-8c41-71d8a4bac1a4", "description": "Object Storage Credentials", "_links": { "self": { "href": "https://192.168.1.31:4443/v4/accounts/92434b99-ad79-49d1-8c41-71d8a4bac1a4" } } } ] 1 2 3 4 5 6 7 8 9 10 11 12 13 [ { "accountType" : "amazonS3CompatibleAccount" , "userName" : "VEEAMS3BUCKETFREENAS" , "id" : "92434b99-ad79-49d1-8c41-71d8a4bac1a4" , "description" : "Object Storage Credentials" , "_links" : { "self" : { "href" : "https://192.168.1.31:4443/v4/accounts/92434b99-ad79-49d1-8c41-71d8a4bac1a4" } } } ]

As you can imagine, we could introduce new credentials automatically also using PUT or POST.

AmazonS3CompatibleObjectStorage

As we have three different ways to use Object Storage which are Amazon S3 Compatible, AWS S3, or Microsoft Azure Blob, we will find three different APIs for each of the services, this is S3 Compatible: In my case it’s perfect, since it’s the way I’m using, so I can know some more information about my bucket, it’s true that we will have to introduce in this API our accountID, which we have in the previous API, in addition to the service point, which we have to know, and the region, which by default is usually us-east-1 in on-prem services such as FreeNAS using MinIO:

The result of this API is the following, where it shows us the name of the bucket in VBO, in addition to two additional links to other APIs, the account that we have already seen and the one of more bucket information:

[ { "servicePoint": "freenas.jorgedelacruz.es:9000", "customRegionId": "us-east-1", "name": "veeam-bucket", "location": "us-east-1", "region": "us-east-1", "links": { "self": { "href": "https://192.168.1.31:4443/v4/S3CompatibleResources/buckets/veeam-bucket?accountId=92434b99-ad79-49d1-8c41-71d8a4bac1a4&ServicePoint=freenas.jorgedelacruz.es:9000&CustomRegionId=us-east-1" }, "account": { "href": "https://192.168.1.31:4443/v4/accounts/92434b99-ad79-49d1-8c41-71d8a4bac1a4" } } } ] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 [ { "servicePoint" : "freenas.jorgedelacruz.es:9000" , "customRegionId" : "us-east-1" , "name" : "veeam-bucket" , "location" : "us-east-1" , "region" : "us-east-1" , "links" : { "self" : { "href" : "https://192.168.1.31:4443/v4/S3CompatibleResources/buckets/veeam-bucket?accountId=92434b99-ad79-49d1-8c41-71d8a4bac1a4&ServicePoint=freenas.jorgedelacruz.es:9000&CustomRegionId=us-east-1" } , "account" : { "href" : "https://192.168.1.31:4443/v4/accounts/92434b99-ad79-49d1-8c41-71d8a4bac1a4" } } } ]

That we would be as follows when we fill everything, we can know more about this bucket:

The result of this API is similar to the above, only detailed for this particular bucket:

{ "servicePoint": "freenas.jorgedelacruz.es:9000", "customRegionId": "us-east-1", "name": "veeam-bucket", "location": "us-east-1", "region": "us-east-1", "links": { "self": { "href": "https://192.168.1.31:4443/v4/S3CompatibleResources/buckets/veeam-bucket?accountId=92434b99-ad79-49d1-8c41-71d8a4bac1a4&ServicePoint=freenas.jorgedelacruz.es:9000&CustomRegionId=us-east-1" }, "account": { "href": "https://192.168.1.31:4443/v4/accounts/92434b99-ad79-49d1-8c41-71d8a4bac1a4" } } } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 { "servicePoint" : "freenas.jorgedelacruz.es:9000" , "customRegionId" : "us-east-1" , "name" : "veeam-bucket" , "location" : "us-east-1" , "region" : "us-east-1" , "links" : { "self" : { "href" : "https://192.168.1.31:4443/v4/S3CompatibleResources/buckets/veeam-bucket?accountId=92434b99-ad79-49d1-8c41-71d8a4bac1a4&ServicePoint=freenas.jorgedelacruz.es:9000&CustomRegionId=us-east-1" } , "account" : { "href" : "https://192.168.1.31:4443/v4/accounts/92434b99-ad79-49d1-8c41-71d8a4bac1a4" } } }

Inside the API to see the folders that lodge inside the bucket, if we fill all the fields it would be something like this:

That will return us the exact folder where all our backup is housed inside this bucket, in my case it would be like this:

[ { "path": "Veeam/Backup365/VBO4/", "name": "VBO4", "links": { "self": { "href": "https://192.168.1.31:4443/v4/S3CompatibleResources/buckets/veeam-bucket/folders/VBO4?accountId=92434b99-ad79-49d1-8c41-71d8a4bac1a4&ServicePoint=freenas.jorgedelacruz.es:9000&CustomRegionId=us-east-1" }, "account": { "href": "https://192.168.1.31:4443/v4/accounts/92434b99-ad79-49d1-8c41-71d8a4bac1a4" }, "bucket": { "href": "https://192.168.1.31:4443/v4/S3CompatibleResources/buckets/veeam-bucket?accountId=92434b99-ad79-49d1-8c41-71d8a4bac1a4&ServicePoint=freenas.jorgedelacruz.es:9000&CustomRegionId=us-east-1" } } } ] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 [ { "path" : "Veeam/Backup365/VBO4/" , "name" : "VBO4" , "links" : { "self" : { "href" : "https://192.168.1.31:4443/v4/S3CompatibleResources/buckets/veeam-bucket/folders/VBO4?accountId=92434b99-ad79-49d1-8c41-71d8a4bac1a4&ServicePoint=freenas.jorgedelacruz.es:9000&CustomRegionId=us-east-1" } , "account" : { "href" : "https://192.168.1.31:4443/v4/accounts/92434b99-ad79-49d1-8c41-71d8a4bac1a4" } , "bucket" : { "href" : "https://192.168.1.31:4443/v4/S3CompatibleResources/buckets/veeam-bucket?accountId=92434b99-ad79-49d1-8c41-71d8a4bac1a4&ServicePoint=freenas.jorgedelacruz.es:9000&CustomRegionId=us-east-1" } } } ]

If we continue inside this API, we will see one in concrete to see even inside the folder that we have just discovered, we would remain of the following way when filling everything: The result of the call is similar to the previous one, but it would only show us this folder instead of showing several in case we were using the bucket for another backup.

AmazonS3ObjectStorage

In this new API and its different methods we will be able to use exactly the same as all the previous API, but it is dedicated exclusively to the buckets that we host in Amazon S3, there is no API or different method, so if you have doubts use the section above.

AzureObjectStorage

In this new API and its different methods, we will be able to use exactly the same as all the previous API, but it is dedicated exclusively to the containers that we host in Azure blob, there is no API or a different method, so if you have doubts use the section above. It is true that what in Amazon is called bucket, here is called container, otherwise, everything is the same.

BackupRepository

This API is not new, only has improved the result of it, since we remember that now we can combine a local repository with one of Object Storage, storing the local metadata and cache, and the object storage metadata and information in turn, so we can expect that the result of the API is different.

Result of BackupRepository v3

In the query result we will be able to see the capacity in bytes, the free space, id, name, path, and the retention:

[ { "capacityBytes": 107370971136, "freeSpaceBytes": 96614940672, "id": "992ddd4c-7572-4332-9958-1425fa261f1b", "name": "NTFS-REPO-001", "description": "VBO Backup Repo on NTFS", "path": "E:\\REPO001", "retentionType": "ItemLevel", "retentionPeriodType": "Yearly", "yearlyRetentionPeriod": "Years3", "retentionFrequencyType": "Daily", "dailyTime": "07:00:00", "dailyType": "Everyday", "proxyId": "b710e407-b498-4e71-846d-facaba0f26fa", "_links": { "self": { "href": "https://192.168.1.32:4443/v3/backuprepositories/992ddd4c-7572-4332-9958-1425fa261f1b" }, "proxy": { "href": "https://192.168.1.32:4443/v3/proxies/b710e407-b498-4e71-846d-facaba0f26fa" } } } ] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 [ { "capacityBytes" : 107370971136 , "freeSpaceBytes" : 96614940672 , "id" : "992ddd4c-7572-4332-9958-1425fa261f1b" , "name" : "NTFS-REPO-001" , "description" : "VBO Backup Repo on NTFS" , "path" : "E:\\REPO001" , "retentionType" : "ItemLevel" , "retentionPeriodType" : "Yearly" , "yearlyRetentionPeriod" : "Years3" , "retentionFrequencyType" : "Daily" , "dailyTime" : "07:00:00" , "dailyType" : "Everyday" , "proxyId" : "b710e407-b498-4e71-846d-facaba0f26fa" , "_links" : { "self" : { "href" : "https://192.168.1.32:4443/v3/backuprepositories/992ddd4c-7572-4332-9958-1425fa261f1b" } , "proxy" : { "href" : "https://192.168.1.32:4443/v3/proxies/b710e407-b498-4e71-846d-facaba0f26fa" } } } ]

Result of BackupRepository v4

The result in this new version is much more complete, we can see the first five results talk about the new functionality of object storage, as is the ID of the object storage, where we store the cache, whether encryption is enabled, plus the ID of the encryption key, and whether it is unsynchronized or not, otherwise everything the same as before:

[ { "objectStorageId": "830155a2-b6f7-4f9c-9a5b-8329aba888f0", "objectStorageCachePath": "E:\\VEEAM-REPO-001", "objectStorageEncryptionEnabled": true, "encryptionKeyId": "f0fe962d-00d0-4d39-8df4-392013828fc9", "isOutOfSync": false, "capacityBytes": 107237863424, "freeSpaceBytes": 106852098048, "id": "e0f7657e-2a7e-4d37-857c-e25d245484c0", "name": "VEEAM-REPO-001", "description": "Local Backup Repository 001", "retentionType": "ItemLevel", "retentionPeriodType": "Yearly", "yearlyRetentionPeriod": "Keep", "retentionFrequencyType": "Daily", "dailyTime": "23:00:00", "dailyType": "Everyday", "proxyId": "a28ccf22-2de3-436e-88ed-6e91878499f9", "_links": { "self": { "href": "https://192.168.1.31:4443/v4/backuprepositories/e0f7657e-2a7e-4d37-857c-e25d245484c0" }, "proxy": { "href": "https://192.168.1.31:4443/v4/proxies/a28ccf22-2de3-436e-88ed-6e91878499f9" } } } ] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 [ { "objectStorageId" : "830155a2-b6f7-4f9c-9a5b-8329aba888f0" , "objectStorageCachePath" : "E:\\VEEAM-REPO-001" , "objectStorageEncryptionEnabled" : true , "encryptionKeyId" : "f0fe962d-00d0-4d39-8df4-392013828fc9" , "isOutOfSync" : false , "capacityBytes" : 107237863424 , "freeSpaceBytes" : 106852098048 , "id" : "e0f7657e-2a7e-4d37-857c-e25d245484c0" , "name" : "VEEAM-REPO-001" , "description" : "Local Backup Repository 001" , "retentionType" : "ItemLevel" , "retentionPeriodType" : "Yearly" , "yearlyRetentionPeriod" : "Keep" , "retentionFrequencyType" : "Daily" , "dailyTime" : "23:00:00" , "dailyType" : "Everyday" , "proxyId" : "a28ccf22-2de3-436e-88ed-6e91878499f9" , "_links" : { "self" : { "href" : "https://192.168.1.31:4443/v4/backuprepositories/e0f7657e-2a7e-4d37-857c-e25d245484c0" } , "proxy" : { "href" : "https://192.168.1.31:4443/v4/proxies/a28ccf22-2de3-436e-88ed-6e91878499f9" } } } ]

EncryptionKey

This new API allows us to view, create and remove Encryption Keys for our Object Storage in a very simple way: For example, if we wanted to see all the Encryption Keys, this would be the result:

[ { "id": "f0fe962d-00d0-4d39-8df4-392013828fc9", "description": "Object Storage Password to Encrypt", "_links": { "self": { "href": "https://192.168.1.31:4443/v4/encryptionkeys/f0fe962d-00d0-4d39-8df4-392013828fc9" } } } ] 1 2 3 4 5 6 7 8 9 10 11 [ { "id" : "f0fe962d-00d0-4d39-8df4-392013828fc9" , "description" : "Object Storage Password to Encrypt" , "_links" : { "self" : { "href" : "https://192.168.1.31:4443/v4/encryptionkeys/f0fe962d-00d0-4d39-8df4-392013828fc9" } } } ]

GlobalRetentionExclusionSettings

This new API allows us to see if we have excluded the contacts and calendar from the retention rules, for example, imagine that we have a retention rule of 5 years, if we do not activate this and we have contacts created 10 years ago, they will not be able to recover them from our backup, this is the API: That’s what it would look like if we executed it:

{ "contacts": false, "calendar": false } 1 2 3 4 { "contacts" : false , "calendar" : false }

Luckily we don’t need to be an API expert, these values can be changed in the GUI as well:

ObjectStorageRepository

Being one of the most important features of this version, it is not surprising that we have a new API and methods for this need, specifically, these are all methods:

If we launch the GET objectstoragerepositories method we can see something similar to this, where we find the bucket, servicepoint, customRegionId, bucket name, region, within the section we can see the S3 folder, along with the name of the logical repository in VBO, as well as the size consumed (very important) in this bucket, and the type of object storage what it is:

[ { "bucket": { "servicePoint": "freenas.jorgedelacruz.es:9000", "customRegionId": "us-east-1", "name": "veeam-bucket", "location": "us-east-1", "region": "us-east-1" }, "s3Folder": "VBO4", "id": "830155a2-b6f7-4f9c-9a5b-8329aba888f0", "name": "VEEAM-OBJECT-001", "description": "Object Storage Repository 001", "accountId": "92434b99-ad79-49d1-8c41-71d8a4bac1a4", "sizeLimitEnabled": false, "usedSpaceGB": 4067721842, "type": "AmazonS3Compatible", "_links": { "self": { "href": "https://192.168.1.31:4443/v4/objectstoragerepositories/830155a2-b6f7-4f9c-9a5b-8329aba888f0" }, "account": { "href": "https://192.168.1.31:4443/v4/accounts/92434b99-ad79-49d1-8c41-71d8a4bac1a4" }, "bucket": { "href": "https://192.168.1.31:4443/v4/S3CompatibleResources/buckets/veeam-bucket?accountId=92434b99-ad79-49d1-8c41-71d8a4bac1a4&ServicePoint=freenas.jorgedelacruz.es:9000&CustomRegionId=us-east-1" }, "folder": { "href": "https://192.168.1.31:4443/v4/S3CompatibleResources/buckets/veeam-bucket/folders/VBO4?accountId=92434b99-ad79-49d1-8c41-71d8a4bac1a4&ServicePoint=freenas.jorgedelacruz.es:9000&CustomRegionId=us-east-1" } } } ] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 [ { "bucket" : { "servicePoint" : "freenas.jorgedelacruz.es:9000" , "customRegionId" : "us-east-1" , "name" : "veeam-bucket" , "location" : "us-east-1" , "region" : "us-east-1" } , "s3Folder" : "VBO4" , "id" : "830155a2-b6f7-4f9c-9a5b-8329aba888f0" , "name" : "VEEAM-OBJECT-001" , "description" : "Object Storage Repository 001" , "accountId" : "92434b99-ad79-49d1-8c41-71d8a4bac1a4" , "sizeLimitEnabled" : false , "usedSpaceGB" : 4067721842 , "type" : "AmazonS3Compatible" , "_links" : { "self" : { "href" : "https://192.168.1.31:4443/v4/objectstoragerepositories/830155a2-b6f7-4f9c-9a5b-8329aba888f0" } , "account" : { "href" : "https://192.168.1.31:4443/v4/accounts/92434b99-ad79-49d1-8c41-71d8a4bac1a4" } , "bucket" : { "href" : "https://192.168.1.31:4443/v4/S3CompatibleResources/buckets/veeam-bucket?accountId=92434b99-ad79-49d1-8c41-71d8a4bac1a4&ServicePoint=freenas.jorgedelacruz.es:9000&CustomRegionId=us-east-1" } , "folder" : { "href" : "https://192.168.1.31:4443/v4/S3CompatibleResources/buckets/veeam-bucket/folders/VBO4?accountId=92434b99-ad79-49d1-8c41-71d8a4bac1a4&ServicePoint=freenas.jorgedelacruz.es:9000&CustomRegionId=us-east-1" } } } ]

With this, we have already looked at all the news that includes the new Veeam Backup for Microsoft Office 365 v4, ne beta phase for now.

As you can imagine, I’m already working to have Grafana’s Dashboard updated for when the product is GA. I hope it serves you.

Like this: Like Loading...