Python client for the d.velop DMS REST API (JSON-HAL, Bearer Auth, Blob Upload)
Project description
iil-dvelop-client
Python client for the d.velop DMS REST API (JSON-HAL, Bearer Auth, 2-Step Blob Upload).
Installation
pip install iil-dvelop-client
Quick Start
from dvelop_client import DvelopClient
with DvelopClient(base_url="https://iil.d-velop.cloud", api_key="...") as client:
# List repositories
repos = client.list_repositories()
# Upload document (2-step: blob + object)
doc = client.upload_document(
repo_id="...",
filename="Audit_2026-03-26.pdf",
content=pdf_bytes,
category="DSGVO_AUDIT",
properties={"Mandant": "Landratsamt", "Datum": "2026-03-26"},
)
print(doc.id, doc.location_uri)
# Search
results = client.search(repo_id="...", query="Datenpanne 2026")
# List categories
categories = client.list_categories(repo_id="...")
Async
async with DvelopClient(base_url="https://iil.d-velop.cloud", api_key="...") as client:
repos = await client.list_repositories_async()
doc = await client.upload_document_async(repo_id="...", ...)
API Reference
DvelopClient
| Method | Description |
|---|---|
list_repositories() |
List all DMS repositories |
list_categories(repo_id) |
List categories for a repository |
upload_blob(repo_id, content, filename) |
Step 1: Upload binary blob |
create_document(repo_id, blob_ref, category, properties) |
Step 2: Create DMS object |
upload_document(repo_id, filename, content, category, properties) |
Convenience: Steps 1+2 |
search(repo_id, query) |
Full-text search |
get_document(repo_id, doc_id) |
Get document by ID |
All methods have _async variants for async usage.
Exceptions
| Exception | HTTP Status | Retry? |
|---|---|---|
DvelopAuthError |
401 | No — key invalid/expired |
DvelopForbiddenError |
403 | No — missing Origin or permissions |
DvelopNotFoundError |
404 | No |
DvelopRateLimitError |
429 | Yes — check retry_after attribute |
DvelopError |
other | Depends |
d.velop Upload Sequence
1. POST /dms/r/{repo_id}/b → 201 + Location: /dms/r/{id}/b/{blob_id}
2. POST /dms/r/{repo_id}/o → 201 + Location: /dms/r/{id}/o/{doc_id}
Required Headers (handled automatically)
Authorization: Bearer {api_key}— all requestsAccept: application/hal+json— all requestsOrigin: {base_url}— write requests (CSRF)
Development
pip install -e ".[dev]"
pytest tests/ -v
Related
- ADR-149: DMS-Hub Architecture Decision
- dms-hub: Django Service-Hub consuming this package
- Platform:
platform/packages/dvelop-client/
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
iil_dvelop_client-0.1.0.tar.gz
(10.1 kB
view details)
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 iil_dvelop_client-0.1.0.tar.gz.
File metadata
- Download URL: iil_dvelop_client-0.1.0.tar.gz
- Upload date:
- Size: 10.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3f551587b903f65634ffc00c37fea5e3dd08c2bf881ff015e27839f8076d4d9e
|
|
| MD5 |
5e67fadb9c788d20915828c049c8318a
|
|
| BLAKE2b-256 |
6ce60b589a3880abbb7b3acc41cd3c3b35f4cb23db674a3914aedaf4d64fb73d
|
File details
Details for the file iil_dvelop_client-0.1.0-py3-none-any.whl.
File metadata
- Download URL: iil_dvelop_client-0.1.0-py3-none-any.whl
- Upload date:
- Size: 8.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b72fb5522141096078c47ab066d0b04e24860fb01dedf52e7431a2439f6cc5c3
|
|
| MD5 |
729f0aff866e422d6521f90d95c2c687
|
|
| BLAKE2b-256 |
39866d0804d0ab30b6822cdb05dfbaa7e1768871a023711b1f4e12cdd3804626
|