This release adds support for version 3.0 of the EasyVerein API, while keeping full support for API v2.0. API v2.0 remains the default, so existing code keeps working without changes. To switch to v3.0, pass api_version="v3.0" when creating the client:
ev_client = EasyvereinAPI(api_key, api_version="v3.0")
Models and methods are identical for both API versions. API v3.0 renamed every field, filter and query parameter to snake_case. The library keeps the existing (v2.0) attribute names and translates them automatically, so invoice.invNumber, InvoiceFilter(isDraft=False) or query="{id,contactDetails{firstName}}" work with both versions. See the usage documentation for details.
Breaking Changes
⚠️ invoice.create_with_items now creates the invoice and all its items in a single, atomic request by @waza-ari. If an item is invalid, nothing is created at all, where previously the invoice could be left behind half-finished. The invoice object you pass in is no longer modified, and relatedInvoice on the items is ignored.
⚠️ InvoiceFilter.dateItHappened, dateItHappened__gt and dateItHappened__lt now actually filter by @waza-ari. They were sent with a misspelled name and silently ignored by the API before, so queries using them may now return fewer results.
⚠️ The deleted filter raises an error when used with API v3.0 by @waza-ari, as EasyVerein removed it. Use get_deleted() instead. API v2.0 is not affected.
⚠️ API v1.7 is rejected with a clear error message by @waza-ari. Pin the library to 1.x if you still need it.
Features
✨ Support for EasyVerein API v3.0 by @waza-ari, including:
- automatic translation of model fields, filters, queries and
orderingvalues to the v3.0 names api.member.custom_field(<id>),api.member.member_group(<id>)andapi.custom_field.select_option(<id>)use the new v3.0 endpoints (member-custom-field-assignment,member-group-assignment,select-option) transparently- token refresh works with API v3.0
✨ Creating an invoice with items needs a single API request instead of 2 + one per item by @waza-ari, for both API versions. The returned invoice already contains the path of the generated PDF.
✨ Add customField to CustomFieldSelectOption by @waza-ari
Bugfixes / Other
✏️ Accept the SKR 42 sub-spheres (11–49), which made parsing bookings, billing accounts, invoice items and member groups using them fail by @waza-ari
✏️ Run the test suite against both API v2.0 and v3.0 by @waza-ari
✏️ Document the API v3.0 quirks we found while testing against the live API in KNOWN_ISSUES.md, as the official v3.0 changelog is incomplete in places by @waza-ari
Full Changelog: v2.6.0...v3.0.0