Skip to main content

Veeam Backup for Microsoft 365 REST API wrapper for Python

Project description


Veeam Logo

Veeam Backup for Microsoft 365 Python API Wrapper

Python package for interacting with the Veeam Backup for Microsoft 365 REST API

This project is an independent, open source Python client for the Veeam Backup for Microsoft 365 REST API. It is not affiliated with, endorsed by, or sponsored by Veeam Software.

Supported Versions

VB365 Version API Version Supported
8.0.2.159 v8
7.0.0.2911 v7
6.0.0.367 v6
< 6.0.0.367 < v6

How to support new API versions

  1. Download the OpenAPI schema into openapi_schemas
  2. Install the openapi-python-client package
  3. Run python fix_openapi.py .\openapi_schemas\vb365_rest_{version}.json .\openapi_schemas\vb365_rest_{version}_fixed.json
  4. Run openapi-python-client generate --path ".\openapi_schemas\vb365_rest_{version}_fixed.json" --output-path ".\veeam_365" --overwrite
  5. Fix any warnings/errors
  6. Rename the folder to match the API version (i.e., v8)
  7. Add the version mapping to versions.py
  8. Write pytest tests
  9. If an older API has been deprecated, delete its folder, json, and version.py entry, then update the supported versions section of the readme

Install

From PyPi

pip install veeam-365

From Source

Clone the repository and install dependencies:

git clone https://github.com/Cenvora/veeam-365.git
cd veeam-365
pip install -e .

Usage

Recommended Usage (Smart Client)

The VeeamClient handles:

  • API version routing
  • Authentication
  • Token refresh
  • Async calls
  • Operation discovery

Each packaged version can be called independently through separate imports, but this is the recommended way to use this library.

Create a client and connect

import asyncio
from veeam_365.client import VeeamClient

async def main():
    vc = VeeamClient(
        host="https://vb365.example.com:4443",
        username="administrator",
        password="SuperSecretPassword",
        verify_ssl=False,
        api_version="v8",
        disable_antiforgery_token=True
    )

    await vc.connect()

    # use the client...

    await vc.close()

asyncio.run(main())

Optional Parameters:

  • verify_ssl (bool, default: True): Enable/disable SSL certificate verification
  • disable_antiforgery_token (bool, default: True): Disable antiforgery token requirement. Set to True for programmatic/API clients (recommended). Set to False only if using browser-based authentication with cookies.

Call an API endpoint (async)

repos = await vc.call(
  vc.api("backup_repository").backup_repository_get_repositories
)

# repos is a PageOfRESTBackupRepository model
for repo in repos.data or []:
  print(repo.name)

Call any endpoint

Operations map directly to the OpenAPI layout:

api/
└── backup_repository/
  └── backup_repository_get_repositories.py

Call it like this:

await vc.call(
    vc.api("backup_repository").backup_repository_get_repositories
)

Or explicity:

await vc.call(
    vc.api("backup_repository.backup_repository_get_repositories")
)

Pagination example

result = await vc.call(
  vc.api("backup_repository").backup_repository_get_repositories,
    limit=50,
    offset=0,
)

Close the client

await vc.close()

Contributing

Contributions are welcome! To contribute:

  • Fork the repository
  • Create a feature branch
  • Make your changes and add tests
  • Submit a pull request with a clear description

Please follow PEP8 style and include docstrings for new functions/classes.

🤝 Core Contributors

This project is made possible thanks to the efforts of our core contributors:

We’re grateful for their continued support and contributions.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

veeam_365-0.2.0.tar.gz (1.5 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

veeam_365-0.2.0-py3-none-any.whl (4.1 MB view details)

Uploaded Python 3

File details

Details for the file veeam_365-0.2.0.tar.gz.

File metadata

  • Download URL: veeam_365-0.2.0.tar.gz
  • Upload date:
  • Size: 1.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for veeam_365-0.2.0.tar.gz
Algorithm Hash digest
SHA256 22f6867c12dc355f5e047f4857b2cd84525de946c4e4d9461f34ff7ec1e0bb56
MD5 364aff8535e13bbc9582585a6b48d0af
BLAKE2b-256 56b4ba8820e8065bebd0e11f90a576b43b42cef60eb139d8940ec53902f8d1eb

See more details on using hashes here.

Provenance

The following attestation bundles were made for veeam_365-0.2.0.tar.gz:

Publisher: publish-on-release.yml on Cenvora/veeam-365

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file veeam_365-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: veeam_365-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 4.1 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for veeam_365-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f39b04811226c15555fa08a0d7df66b1f627c7c0065cf15921b1d04f5b29da80
MD5 52e1b00c8c94ff46166cdfa57623527f
BLAKE2b-256 ebca672e915a278874f4913ca37a8b17fc716f26fafcd594c76bcedbee3ff4d0

See more details on using hashes here.

Provenance

The following attestation bundles were made for veeam_365-0.2.0-py3-none-any.whl:

Publisher: publish-on-release.yml on Cenvora/veeam-365

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page