Python client for the Regiondo Booking API (https://sandbox-api.regiondo.com/api.json). Install as `py-regiondo`, import as `regiondo`.
Project description
regiondo
A Python client for the Regiondo Booking API.
Implements the request signing scheme used by the Regiondo PHP/JS sample
clients (HMAC-SHA256 over timestamp + public_key + http_build_query(params)),
plus typed namespaces for every endpoint in the v1 spec.
Install
pip install py-regiondo
The distribution is py-regiondo, the import name is regiondo:
from regiondo import RegiondoClient
From source:
pip install -e ".[dev]"
Usage
from regiondo import RegiondoClient
client = RegiondoClient(
public_key="YOUR_PUBLIC_KEY",
private_key="YOUR_PRIVATE_KEY",
sandbox=True, # talks to https://sandbox-api.regiondo.com/v1/
accept_language="de-DE",
)
# Catalog
categories = client.categories.list()
product = client.products.get(12345)
products = client.products.list(limit=20, active_only="true")
slots = client.products.timeslots(product_id=12345)
# Checkout flow
hold = client.checkout.create_hold(
item={"product_id": 12345, "variation_id": 1, "qty": 2},
currency="EUR",
)
totals = client.checkout.totals(input_data={"items": [...]})
order = client.checkout.purchase(
input_data={"items": [...], "customer": {...}, "payment": {...}},
currency="EUR",
)
# Partner / supplier
sales = client.partner.sold_items_list(date_from="2026-01-01", date_to="2026-01-31")
# Validation
client.validate.submit(item={"ticket_code": "ABC-123"})
Namespaces
| Attribute | Endpoints |
|---|---|
client.account |
/account/locale, /account/currency |
client.categories |
/categories, /categories/{id} |
client.checkout |
hold / totals / purchase / cancel / permanent reservations |
client.languages |
/languages, /languages/{id} |
client.locations |
/locations, /locations/suggest, /locations/{id} |
client.partner |
sold items, CRM customers, bookings |
client.products |
listing, variations, timeslots, availabilities, widgets, … |
client.reviews |
/reviews |
client.supplier |
sold items, CRM customers, bookings, resources |
client.tags |
/tags |
client.validate |
/validate/submit |
Calling an arbitrary endpoint
client.get("products/availabilities/42", date_from="2026-01-01")
client.post("checkout/cancel", params={"reference_ids": "1,2,3"})
client.put("checkout/hold", params={"reservation_code": "X", "reserve_minutes": 15})
client.delete("checkout/hold", reservation_code="X")
All four methods sign the request, send PHP-style http_build_query params, and
return the parsed JSON body. JSON bodies passed via json=... are not
included in the signature, matching the reference PHP implementation.
Errors
Non-2xx responses raise:
| HTTP | Exception |
|---|---|
| 401/403 | regiondo.AuthenticationError |
| 404 | regiondo.NotFoundError |
| 429 | regiondo.RateLimitError |
| Other 4xx | regiondo.ValidationError |
| 5xx | regiondo.RegiondoAPIError (base class) |
All of them carry .status_code, .payload (parsed JSON body), and .response
(raw requests.Response).
Tests
pip install -e ".[dev]"
pytest
The signing tests pin output against PHP 7.2's http_build_query (captured
live) so the wire format stays compatible with the upstream verifier.
Releasing
Releases are published to PyPI automatically by the publish workflow when a
GitHub Release is created. Auth is via PyPI Trusted Publishing (OIDC) — no
API token secrets in the repo.
One-time PyPI setup
- Sign in at https://pypi.org/manage/account/publishing/.
- Under Add a new pending publisher (works even before the project exists),
fill in:
- PyPI project name:
py-regiondo - Owner:
e-dway - Repository name:
py-regiondo - Workflow filename:
publish.yml - Environment name:
pypi
- PyPI project name:
- Create a matching GitHub Environment named
pypiunder Settings → Environments (optionally add required reviewers as a manual approval gate). Repeat fortestpypiif you want to dry-run there.
Cutting a release
# 1. Bump the version in pyproject.toml
$EDITOR pyproject.toml # version = "X.Y.Z"
# 2. Commit, tag, push
git commit -am "release: X.Y.Z"
git tag vX.Y.Z
git push origin main vX.Y.Z
# 3. Create the GitHub Release for tag vX.Y.Z
gh release create vX.Y.Z --generate-notes
The workflow verifies that the tag (minus the v prefix) matches the version
in pyproject.toml before building and uploading. Dry-run uploads to TestPyPI
are available via the workflow's Run workflow button (choose testpypi).
Notes
- The sandbox URL is
https://sandbox-api.regiondo.com/v1/; production ishttps://api.regiondo.com/v1/. There are also regional production hosts (e.g.api.regiondo.de); pass them viabase_url=. - Regiondo limits API usage to 50,000 requests / 24 h (2,083 / h, 157 / 5 min). Prefer webhooks where possible.
/checkout/avaialableassigneesis misspelled upstream; the wrapperclient.checkout.available_assignees()uses the misspelled path on the wire.
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 py_regiondo-0.2.0.tar.gz.
File metadata
- Download URL: py_regiondo-0.2.0.tar.gz
- Upload date:
- Size: 19.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
85a760bf44615a6d7a45f52c53c086618cf03268f2213c31c64d201ae2d94e25
|
|
| MD5 |
59df04240edb1d6cc5bbfb78e1850e46
|
|
| BLAKE2b-256 |
988db1e7ef1e74e42f3925719bb6752f78542b53f85742503cd18a026a8abec4
|
Provenance
The following attestation bundles were made for py_regiondo-0.2.0.tar.gz:
Publisher:
publish.yml on e-dway/py-regiondo
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
py_regiondo-0.2.0.tar.gz -
Subject digest:
85a760bf44615a6d7a45f52c53c086618cf03268f2213c31c64d201ae2d94e25 - Sigstore transparency entry: 1635239085
- Sigstore integration time:
-
Permalink:
e-dway/py-regiondo@bd51fc5136ce608dd834100c0e67e1440c9fd33e -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/e-dway
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@bd51fc5136ce608dd834100c0e67e1440c9fd33e -
Trigger Event:
release
-
Statement type:
File details
Details for the file py_regiondo-0.2.0-py3-none-any.whl.
File metadata
- Download URL: py_regiondo-0.2.0-py3-none-any.whl
- Upload date:
- Size: 13.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8f0b1bfa7e9932e5efe5ef469add33505e08b624a50848512fb8e250cdf0b978
|
|
| MD5 |
c5fbfbf77d21de303655c4b7760bc71b
|
|
| BLAKE2b-256 |
f276058e43a95733378db549d220a66b048ca196afe7b07d0381c5ce7c5ff8b1
|
Provenance
The following attestation bundles were made for py_regiondo-0.2.0-py3-none-any.whl:
Publisher:
publish.yml on e-dway/py-regiondo
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
py_regiondo-0.2.0-py3-none-any.whl -
Subject digest:
8f0b1bfa7e9932e5efe5ef469add33505e08b624a50848512fb8e250cdf0b978 - Sigstore transparency entry: 1635239171
- Sigstore integration time:
-
Permalink:
e-dway/py-regiondo@bd51fc5136ce608dd834100c0e67e1440c9fd33e -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/e-dway
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@bd51fc5136ce608dd834100c0e67e1440c9fd33e -
Trigger Event:
release
-
Statement type: