Skip to content

v3.4.0

Compare
Choose a tag to compare
@ff137 ff137 released this 03 Sep 11:48
6df55dd

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 the created_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 by updated_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 new RevokedResponse model.
  • For pagination: Review and update any usage of the affected endpoints to incorporate limit, offset, and descending 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 initial offset of 0.
      • Continue making calls, incrementing the offset by the limit value, until the response is either empty or contains fewer records than the requested limit.

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