Veeam Backup & Replication REST API wrapper for Python
Project description
Veeam Backup & Replication Python API Wrapper
Python package for interacting with the Veeam Backup & Replication REST API
This project is an independent, open source Python client for the Veeam Backup & Replication REST API. It is not affiliated with, endorsed by, or sponsored by Veeam Software.
Supported Versions
| VBR Version | API Version | Supported |
|---|---|---|
| 13.0.1.180 | 1.3-rev1 | ✅ |
| 13.0.0.4967 | 1.3-rev0 | ✅ |
| 12.3.1.1139 | 1.2-rev1 | ✅ |
| < 12.3.1.1139 | < 1.2-rev1 | ❌ |
How to support new API versions
- Download the OpenAPI schema into openapi_schemas
- Install the openapi-python-client package
- Run
python fix_openapi_yaml.py .\openapi_schemas\vbr_rest_{version}.yaml .\openapi_schemas\vbr_rest_{version}_fixed.yaml - Run
openapi-python-client generate --path ".\openapi_schemas\vbr_rest_{version}_fixed.json" --output-path ".\veeam_br" --overwrite - Fix any warnings/errors
- Rename the folder to match the API version (i.e.,
v1.3-rev1) - Write pytest tests
- If an older API has been deprecated, delete its folder and yaml, then update the supported versions section of the readme
Install
From PyPi
pip install veeam-br
From Source
Clone the repository and install dependencies:
git clone https://github.com/Cenvora/veeam-br.git
cd veeam-br
pip install -e .
Usage
Basic Usage
First, create a client from the appropriate API version:
from veeam_br.v1_3_rev1 import Client
client = Client(base_url="https://api.example.com:9419")
Log in to the service (this requires an account with MFA disabled):
from veeam_br.v1_3_rev1.client import Client
from veeam_br.v1_3_rev1.models.token_login_spec import TokenLoginSpec
from veeam_br.v1_3_rev1.api.login import create_token
from veeam_br.v1_3_rev1.models.e_login_grant_type import ELoginGrantType
client = Client(
base_url="https://vbr.example.com:9419",
verify_ssl=False
)
body = TokenLoginSpec(
grant_type=ELoginGrantType.PASSWORD,
username="administrator",
password="SuperSecretPassword"
)
with client as client:
token = create_token.sync(
client=client,
body=body,
x_api_version="1.3-rev1",
)
Now switch to the AuthenticatedClient:
auth_client = AuthenticatedClient(
base_url=client._base_url,
token=token.access_token,
verify_ssl=client._verify_ssl,
)
Now call your endpoint and use your models:
from veeam_br.v1_3_rev1.models import ServerTimeModel
from veeam_br.v1_3_rev1.api.service import get_server_time
from veeam_br.v1_3_rev1.types import Response
with auth_client as auth_client:
my_data: ServerTimeModel = get_server_time.sync(client=auth_client, x_api_version="1.3-rev1")
# or if you need more info (e.g. status_code)
response: Response[ServerTimeModel] = get_server_time.sync_detailed(client=auth_client, x_api_version="1.3-rev1")
Async Usage
Or do the same thing with an async version:
from veeam_br.v1_3_rev1.models import ServerTimeModel
from veeam_br.v1_3_rev1.api.service import get_server_time
from veeam_br.v1_3_rev1.types import Response
async with auth_client as auth_client:
my_data: ServerTimeModel = await get_server_time.asyncio(client=auth_client, x_api_version="1.3-rev1")
response: Response[ServerTimeModel] = await get_server_time.asyncio_detailed(client=auth_client, x_api_version="1.3-rev1")
SSL Verification
By default, HTTPS APIs will verify SSL certificates. You can pass a custom certificate bundle or disable verification (not recommended):
client = AuthenticatedClient(
base_url="https://internal_api.example.com:9419",
token="SuperSecretToken",
verify_ssl="/path/to/certificate_bundle.pem",
)
# Disable SSL verification (security risk)
client = AuthenticatedClient(
base_url="https://internal_api.example.com:9419",
token="SuperSecretToken",
verify_ssl=False
)
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file veeam_br-0.1.1b2.tar.gz.
File metadata
- Download URL: veeam_br-0.1.1b2.tar.gz
- Upload date:
- Size: 3.0 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cc8e04bdf23415889ccc7fe0b4f44a80ea6098c030e5ec005cf72377348f2ad1
|
|
| MD5 |
7ee47363c61820cc250551134956343c
|
|
| BLAKE2b-256 |
9b04fd0f8ef5a09f9ad2dddc752b5d5bdf77769498c39491d64e8c2476b16f66
|
Provenance
The following attestation bundles were made for veeam_br-0.1.1b2.tar.gz:
Publisher:
publish-on-release.yml on Cenvora/veeam-br
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
veeam_br-0.1.1b2.tar.gz -
Subject digest:
cc8e04bdf23415889ccc7fe0b4f44a80ea6098c030e5ec005cf72377348f2ad1 - Sigstore transparency entry: 870887720
- Sigstore integration time:
-
Permalink:
Cenvora/veeam-br@5b173e0f407bfdbd3c5d62d683512bfb0d1c93f6 -
Branch / Tag:
refs/tags/0.1.1b2 - Owner: https://github.com/Cenvora
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-on-release.yml@5b173e0f407bfdbd3c5d62d683512bfb0d1c93f6 -
Trigger Event:
push
-
Statement type:
File details
Details for the file veeam_br-0.1.1b2-py3-none-any.whl.
File metadata
- Download URL: veeam_br-0.1.1b2-py3-none-any.whl
- Upload date:
- Size: 5.8 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
55e815e50b3af0c7dfd9b53a7b359f455caab537689ab443f80707bb87337d63
|
|
| MD5 |
2948bed0c3022b6d9c47dad6f38ff440
|
|
| BLAKE2b-256 |
ff372d22dac3cc34acd626b1df7b5130af21bb262fea887beed74a97b065aff6
|
Provenance
The following attestation bundles were made for veeam_br-0.1.1b2-py3-none-any.whl:
Publisher:
publish-on-release.yml on Cenvora/veeam-br
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
veeam_br-0.1.1b2-py3-none-any.whl -
Subject digest:
55e815e50b3af0c7dfd9b53a7b359f455caab537689ab443f80707bb87337d63 - Sigstore transparency entry: 870887725
- Sigstore integration time:
-
Permalink:
Cenvora/veeam-br@5b173e0f407bfdbd3c5d62d683512bfb0d1c93f6 -
Branch / Tag:
refs/tags/0.1.1b2 - Owner: https://github.com/Cenvora
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-on-release.yml@5b173e0f407bfdbd3c5d62d683512bfb0d1c93f6 -
Trigger Event:
push
-
Statement type: