Skip to main content

Async integration layer between Home Assistant and Dutch municipal visitor parking APIs.

Project description

pyCityVisitorParking

Async integration layer between Home Assistant and Dutch municipal visitor parking APIs.

Status

This package ships the core client, provider interface, and discovery tooling, plus the following providers:

  • DVS Portal
  • The Hague

list_providers() reads provider manifests under src/pycityvisitorparking/provider/.

Provider documentation:

Supported municipalities

For exact base_url and api_uri values, see the provider READMEs.

  • DVS Portal: Apeldoorn, Bloemendaal, Delft, Den Bosch, Doetinchem (via Buha), Groningen, Haarlem, Harlingen, Heemstede, Heerenveen, Heerlen, Hengelo, Katwijk, Leiden, Leidschendam-Voorburg, Middelburg, Nissewaard, Oldenzaal, Rijswijk, Roermond, Schouwen-Duiveland, Sittard-Geleen, Smallingerland, Sudwest-Fryslan, Veere, Venlo, Vlissingen, Waadhoeke, Waalwijk, Weert, Zaanstad, Zevenaar, Zutphen, Zwolle
  • The Hague: The Hague

Installation

pip install pycityvisitorparking

Usage

import asyncio

from pycityvisitorparking import Client


async def main() -> None:
    async with Client() as client:
        providers = await client.list_providers()
        print(providers)


asyncio.run(main())

Available data

The public API exposes a small, provider-agnostic set of models and operations. Provider READMEs list credential requirements and any unsupported operations.

  • Providers: list_providers() returns ProviderInfo with id and favorite_update_possible.
  • Permit: get_permit() returns Permit with id, remaining_balance (minutes), and zone_validity.
  • Zone validity: each ZoneValidityBlock includes start_time and end_time (UTC ISO 8601).
  • Reservations: list_reservations(), start_reservation(), update_reservation(), and end_reservation() return Reservation with id, name, license_plate, start_time, and end_time.
  • Favorites: list_favorites() and add_favorite() return Favorite with id, name, and license_plate. update_favorite() returns Favorite, while remove_favorite() removes the entry without returning data.

Provider framework

Providers are discovered via manifest.json files without importing provider modules. To add a provider later, create:

src/pycityvisitorparking/provider/<provider_id>/
  manifest.json
  __init__.py
  api.py
  const.py
  README.md
  CHANGELOG.md

Only files under src/pycityvisitorparking/provider/<provider_id>/ should change in a provider PR.

Normalization rules

  • All public timestamps must be UTC ISO 8601 with Z and no microseconds.
  • License plates are normalized to uppercase A-Z0-9 without spaces/symbols.
  • zone_validity must include only chargeable windows.

Development

Run checks with Hatch:

hatch run lint:check
hatch run lint:format-check
hatch run test:run

Build artifacts:

hatch build
python -m twine check dist/*

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

pycityvisitorparking-0.3.0.tar.gz (30.0 kB view details)

Uploaded Source

Built Distribution

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

pycityvisitorparking-0.3.0-py3-none-any.whl (33.2 kB view details)

Uploaded Python 3

File details

Details for the file pycityvisitorparking-0.3.0.tar.gz.

File metadata

  • Download URL: pycityvisitorparking-0.3.0.tar.gz
  • Upload date:
  • Size: 30.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pycityvisitorparking-0.3.0.tar.gz
Algorithm Hash digest
SHA256 7faff6fa7c2e7505947d693bd4ab89f1b134f24cb7dcd721a66fca11a14b4ffe
MD5 2437463df3c9672e9b24ca37afa2b601
BLAKE2b-256 d3dfcd55f8d4284af5cfcffba5831f4b3b4d3b59f5e0b2fbeebbc21545cbc3ef

See more details on using hashes here.

Provenance

The following attestation bundles were made for pycityvisitorparking-0.3.0.tar.gz:

Publisher: release.yml on sir-Unknown/pyCityVisitorParking

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

File details

Details for the file pycityvisitorparking-0.3.0-py3-none-any.whl.

File metadata

File hashes

Hashes for pycityvisitorparking-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 18c65c9ecbe690f04d941bad29c73315793ccbeeff4b474c2f5f2f0ef9f32aad
MD5 57e9aeb4fef911f9f9c1ee3a4646669d
BLAKE2b-256 de9377899b6228176e6de3f1396a47cd63e806c09020ac0ccd18aa2f8ff73736

See more details on using hashes here.

Provenance

The following attestation bundles were made for pycityvisitorparking-0.3.0-py3-none-any.whl:

Publisher: release.yml on sir-Unknown/pyCityVisitorParking

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