v3.4.0
v3.4.0 Release Summary
Our latest release is packed with improvements, including an upgrade to ACA-Py's latest v1.0.0 release, together with performance enhancements and new features!
Below are the detailed changes, with recommended actions at the end:
✨ New Features
Pagination with Ordering Support
A key feature in this release is pagination support for fetching tenants, connection records, credential exchange records, and proof records. This allows for improved performance and scalability when working with potentially thousands of tenants or records.
The following query parameters are now available:
limit
: Specifies the number of records to return.offset
: Specifies the starting point for fetching records.descending
: Controls the order of results based on thecreated_at
timestamp.
These parameters are supported on the following routes:
- Tenant-admin API:
GET /v1/tenants
- Tenant API:
GET /v1/connections
,GET /v1/issuer/credentials
,GET /v1/verifier/proofs
By default, results are ordered with descending=true
, which returns the most recently created records at the top. Set descending=false
to retrieve the oldest records first.
Example usage:
GET /v1/tenants?limit=10&descending=false
will fetch the oldest 10 tenant records.GET /v1/tenants?limit=10&offset=10&descending=false
will return the next 10 records.GET /v1/connections?limit=1
will return the most recently created connection record.
The maximum allowable limit
is 10'000, to prevent excessively large fetch queries.
NB: The default behaviour, when limit
is not specified, will now return 1'000 records, instead of the previous default of returning all records. This represents a 💥 breaking change for integrations that previously expected all records to be returned in a single call.
Note on Custom Ordering:
Due to encrypted storage, custom ordering during record retrieval is not supported. Therefore, to correctly order byupdated_at
, for example, all records must be fetched before applying custom ordering in post-processing. We plan to support this in a future release, but for now, clients requiring custom ordering will need to implement it after retrieving all records.
New Query Parameters for Fetching Matching Credentials
The GET /v1/verifier/proofs/{proof_id}/credentials
endpoint returns matching credentials for a proof request. Previously the default behaviour would return up to 10 valid credentials. This endpoint now also supports limit
and offset
query parameters, to benefit from pagination functionality, together with an additional referent
query parameter that allows filtering by presentation referent as well.
New Response Model for /revoke
Endpoint
The /v1/issuer/credentials/revoke
endpoint no longer returns an empty success response (204). Instead, it now returns a RevokedResponse
model, providing clearer confirmation of which credential revocation IDs have been successfully published in the request.
New Endpoint: Get Pending Revocations
We’ve introduced a new endpoint, GET /v1/issuer/credentials/get-pending-revocations/{revocation_registry_id}
, which allows you to retrieve pending revocations for a given revocation registry ID. This provides better insight into revocation statuses and assists in managing revocation workflows more effectively.
❗ Action Required
To maintain compatibility with the changes in this release, please take the following actions:
- For the
/v1/issuer/credentials/revoke
endpoint: Update your integrations to handle the newRevokedResponse
model. - For pagination: Review and update any usage of the affected endpoints to incorporate
limit
,offset
, anddescending
parameters as necessary.- If you previously expected all records to be returned in a single call, you must now explicitly specify a
limit
that meets your needs. If your dataset exceeds 10,000 records, fetching all records will require multiple iterative calls. - To fetch all records:
- Begin by calling the endpoint with your desired
limit
(up to 10,000) and an initialoffset
of 0. - Continue making calls, incrementing the
offset
by thelimit
value, until the response is either empty or contains fewer records than the requestedlimit
.
- Begin by calling the endpoint with your desired
- If you previously expected all records to be returned in a single call, you must now explicitly specify a
We also recommend regenerating any OpenAPI clients to reflect all the latest changes.
If you have any questions about these changes, please feel free to contact us!
What's Changed
- ⬆️ Bump docker/build-push-action from 5 to 6 by @dependabot in #849
- ⬆️ upgrade to latest ACA-Py build by @ff137 in #839
- Update Helm, Helmfile, and Tailscale by @rblaine95 in #853
- Create a service for definitions endpoints by @cl0ete in #842
- ⬆️ Update setuptools requirement from ~=70.1.0 to ~=70.2.0 by @dependabot in #858
- ⬆️ Update pydantic requirement from ~=2.7.0 to ~=2.8.2 by @dependabot in #859
- ⬆️ ACA-Py 1.0.0rc4 by @ff137 in #861
- ⬆️ Bump MishaKav/pytest-coverage-comment from 1.1.51 to 1.1.52 by @dependabot in #852
- ⬆️ Bump codacy/codacy-analysis-cli-action from 4.4.1 to 4.4.5 by @dependabot in #865
- ✨ Pagination support for fetching wallets, connections, cred ex and proof records by @ff137 in #850
- ⬆️ update redis events plugin to latest release by @ff137 in #870
- Definition routes/services unit tests by @cl0ete in #857
- ✅ ensure test tenants are deleted upon test failure by @ff137 in #878
- ✅ adjust sleep durations in tests by @ff137 in #879
- ✨ better dependency management with Poetry by @ff137 in #863
- ⬆️ Bulk dependency upgrades by @ff137 in #900
- 🐛 Fix scanning of redis keys by @ff137 in #898
- ⬆️ Bump pytest from 8.3.1 to 8.3.2 in /app by @dependabot in #913
- 👷 K6 by @wdbasson in #897
- 👷 K6 refactor by @wdbasson in #917
- 👷 K6 create issuers by @wdbasson in #918
- 🎨 👷♂️ Make Markdownlint happy in k6 readme by @rblaine95 in #920
- 🎨 👷♂️ K6 run Biome Lint and Format by @rblaine95 in #921
- 🔧 Increase default pagination
limit
to 1000 and ✅ fix regression tests when fetching many records by @ff137 in #953 - ⬆️ Bump docker/build-push-action from 5 to 6 by @dependabot in #952
- ⬆️ Bulk dependency upgrades:
black
,fastapi
,uvicorn
,aiohttp
by @ff137 in #950 - 🎨 fix lint warnings by @ff137 in #951
- ⬆️ Upgrade redis and redis_events plugin dependencies by @ff137 in #956
- Revoc reg size by @wdbasson in #958
- 👷 Increase deploy timeout by @wdbasson in #960
- ✅ Add
self_attested_attributes
e2e test by @cl0ete in #922 - 🩹 Remove
_backfill_events
method from webhooks service startup by @ff137 in #961 - 🩹 Increase expiry time of redis webhook event locks by @ff137 in #963
- ✅ K6 cred def by @wdbasson in #974
- ⬆️ Upgrade dependencies:
aiohttp
,orjson
,pyjwt
,pyyaml
by @ff137 in #973 - Configure global concurrency by @wdbasson in #976
- 🩹 Increase issuer-endorser connection timeout to 15s by @wdbasson in #964
- ✅ fix regression tests when fetching "trust registry" connections by @ff137 in #975
- ⚡✅ Add pytest-xdist to pytest container by @wdbasson in #977
- ✅ Ensure e2e test resources are always cleaned up by @ff137 in #981
- 🎨 Ensure appropriate log levels for a production context by @ff137 in #980
- 🧑💻 Remove patch proxy CICD logic by @wdbasson in #979
- ✅ fix test to work with pytest-xdist by @ff137 in #986
- ⬆️ Update lock files by @ff137 in #985
- 👷 Remove SOPS from pipeline by @wdbasson in #982
- ⬆️ ✨ Upgrade acapy 1.0.0 by @cl0ete in #990
- 👷 Specify Docker Platforms for Docker Images by @rblaine95 in #988
- ✅ K6: revocation scenarios by @wdbasson in #993
- ⬆️ Bump aiohttp from 3.10.4 to 3.10.5 in /app by @dependabot in #994
- ⬆️ Bump SonarSource/sonarcloud-github-action from 2.3.0 to 3.0.0 by @dependabot in #995
- ✅ Automated fault tolerance by @wdbasson in #998
- 🔧 Modify SSE Manager env var defaults, and make setting of locks configurable by @ff137 in #999
- 🦺 🩹 Aca-py V1 update cleanup by @cl0ete in #1000
- Support for feature/branch-name and gotmpl extention by @wdbasson in #1002
- ✨ Add ordering functionality to fetching of askar records by @ff137 in #989
- Expose query params for
get_credentials_by_proof_id
by @cl0ete in #997 - ✅ K6 create schemas by @wdbasson in #1001
- 📝 Update openapi specs for v3.4.0 release by @ff137 in #1006
Full Changelog: v3.3.0-0.12.1...v3.4.0