From 6d6b6b5b1c8724e5393a856185ac96b25c39b4f5 Mon Sep 17 00:00:00 2001 From: Stephen Curran Date: Tue, 17 Feb 2026 14:50:49 -0800 Subject: [PATCH 1/3] 1.5.1rc0 Signed-off-by: Stephen Curran --- CHANGELOG.md | 34 ++++++ Managing-ACA-Py-Doc-Site.md | 4 +- PUBLISHING.md | 16 +-- .../ContainerImagesAndGithubActions.md | 12 +-- .../upgradingToAipv2.md | 73 ++++++++++--- docs/features/PlugIns.md | 6 +- docs/features/SupportedRFCs.md | 2 +- mkdocs.yml | 1 + open-api/openapi.json | 102 +++++++++++++++++- open-api/swagger.json | 91 +++++++++++++++- pyproject.toml | 2 +- 11 files changed, 304 insertions(+), 39 deletions(-) rename docs/{features => deploying}/upgradingToAipv2.md (95%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 58d888f016..0555e1640c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,39 @@ # ACA-Py Changelog +## 1.5.1rc0 + +### February 18, 2026 + +ACA-Py 1.5.1 is a clean up release primarily to address some follow-on issues related to the [1.5.0] release -- notably with the handling of AnonCreds revocation. There are some convenience additions and a GitHub Actions pipeline fix. + +[1.5.0]: https://github.com/openwallet-foundation/acapy/releases/tag/1.5.0 + +### 1.5.1 Breaking Changes + +There are no breaking changes in this release from [1.5.0]. Those upgrading from a version prior to [1.5.0] should review the [1.5.0] Breaking Changes section for details about the breaking changes introduced in [1.5.0]. + +### 1.5.1 Deprecation Notices + +The `acapy_agent.revocation_anoncreds` package has been deprecated and relocated to `acapy_agent.anoncreds.revocation` for improved consistency across the codebase. The change should only affect [ACA-Py Plugins] that implement AnonCreds, but other developers should also take note. + +The `wallet-type` configuration value `askar` is now deprecated and all deployments still using that wallet type should migrate to either the `askar-anoncreds` or (ideally) `kanon-anoncreds` wallet types. + +AIP 1.0 protocols that were [previously announced as deprecated](#140-deprecation-notices) have now been removed from ACA-Py core. Implementers still using those protocols **MUST** adjust their configuration to load those protocols from the respective plugins, or better, upgrade to their AIP 2.0 equivalents. + +### 1.5.1 Categorized PR List + +- **Core Platform and Architecture** + - Enable outbound transport in `--no-transport` mode, only disable inbound [\#4050](https://github.com/openwallet-foundation/acapy/pull/4050) [PatStLouis](https://github.com/PatStLouis) + - feat: add list endpoint for out-of-band records [\#4046](https://github.com/openwallet-foundation/acapy/pull/4046) [kukgini](https://github.com/kukgini) +- **AnonCreds, Revocation, and Wallet Migration** + - Fix revocation setup [\#4047](https://github.com/openwallet-foundation/acapy/pull/4047) [PatStLouis](https://github.com/PatStLouis) +- **Testing, Logging, and Diagnostics** + - FIX BDD interop integration tests [\#4052](https://github.com/openwallet-foundation/acapy/pull/4052) [PatStLouis](https://github.com/PatStLouis) +- **Dependabot PRs** + - [Link to list of Dependabot PRs in this release](https://github.com/openwallet-foundation/acapy/pulls?q=is%3Apr+is%3Amerged+merged%3A2025-01-29..2026-02-18+author%3Aapp%2Fdependabot+) +- **Release management pull requests**: + - 1.5.1rc0 [\#4054](https://github.com/openwallet-foundation/acapy/pull/4054) [swcurran](https://github.com/swcurran) + ## 1.5.0 ### January 29, 2026 diff --git a/Managing-ACA-Py-Doc-Site.md b/Managing-ACA-Py-Doc-Site.md index ca32c3eb55..3b1b719c40 100644 --- a/Managing-ACA-Py-Doc-Site.md +++ b/Managing-ACA-Py-Doc-Site.md @@ -20,7 +20,7 @@ and mkdocs configuration. When the GitHub Action fires, it runs a container that carries out the following steps: -- Checks out the triggering branch, either `main` or `docs-v` (e.g `docs-v1.5.0`). +- Checks out the triggering branch, either `main` or `docs-v` (e.g `docs-v1.5.1`). - Runs the script [scripts/prepmkdocs.sh], which moves and updates some of the markdown files so that they fit into the generated site. See the comments in the scripts for details about the copying and editing done via the script. In @@ -97,7 +97,7 @@ To delete the documentation version, do the following: - Check your `git status` and make sure there are no changes in the branch -- e.g., new files that shouldn't be added to the `gh-pages` branch. If there are any -- delete the files so they are not added. -- Remove the folder for the RC. For example `rm -rf 1.5.0rc1` +- Remove the folder for the RC. For example `rm -rf 1.5.1rc0` - Edit the `versions.json` file and remove the reference to the RC release in the file. - Push the changes via a PR to the ACA-Py `gh-pages` branch (don't PR them into diff --git a/PUBLISHING.md b/PUBLISHING.md index cc925a6de2..1797a4fd16 100644 --- a/PUBLISHING.md +++ b/PUBLISHING.md @@ -6,7 +6,7 @@ a major, minor or patch release, per [semver](https://semver.org/) rules. Once ready to do a release, create a local branch that includes the following updates: -1. Create a local PR branch from an updated `main` branch, e.g. "1.5.0". +1. Create a local PR branch from an updated `main` branch, e.g. "1.5.1". 2. See if there are any Document Site `mkdocs` changes needed. Run the script `./scripts/prepmkdocs.sh; mkdocs`. Watch the log, noting particularly if @@ -146,15 +146,15 @@ For the build test, the RTD Sphinx theme needs to be added to the docker image, Published images are automatically tagged with multiple tags for flexibility: - - **Regular Releases** (e.g., `1.5.0`): - - `py3.12-1.5.0` - Python version specific tag - - `1.5.0` - Semantic version tag + - **Regular Releases** (e.g., `1.5.1`): + - `py3.12-1.5.1` - Python version specific tag + - `1.5.1` - Semantic version tag - `1.5` - Major.minor tag (moves to latest patch release) - `latest` - Only assigned if this is the highest semantic version - - **Release Candidates** (e.g., `1.5.0rc1`): - - `py3.12-1.5.0rc1` - Python version specific RC tag - - `1.5.0rc1` - Semantic version RC tag + - **Release Candidates** (e.g., `1.5.1rc0`): + - `py3.12-1.5.1rc0` - Python version specific RC tag + - `1.5.1rc0` - Semantic version RC tag - **Note**: RC releases do NOT receive major.minor (`1.5`) or `latest` tags The `latest` tag is explicitly managed by comparing semantic versions across all @@ -179,7 +179,7 @@ For the build test, the RTD Sphinx theme needs to be added to the docker image, [publish.yml]: https://github.com/openwallet-foundation/acapy/blob/main/.github/workflows/publish.yml 12. When a new release is tagged, create a new branch at the same commit with - the branch name in the format `docs-v`, for example, `docs-v1.5.0`. + the branch name in the format `docs-v`, for example, `docs-v1.5.1`. The creation of the branch triggers the execution of the [publish-docs] GitHub Action which generates the documentation for the new release, publishing it at [https://aca-py.org]. The GitHub Action also executes when diff --git a/docs/deploying/ContainerImagesAndGithubActions.md b/docs/deploying/ContainerImagesAndGithubActions.md index 22efde5c50..c5b2ae256c 100644 --- a/docs/deploying/ContainerImagesAndGithubActions.md +++ b/docs/deploying/ContainerImagesAndGithubActions.md @@ -42,15 +42,15 @@ Click [here](https://github.com/openwallet-foundation/acapy/pkgs/container/acapy The following is the ACA-Py container images tagging format: -**Regular Releases** (e.g., `1.5.0`): - - `py3.12-1.5.0` - Python version specific tag - - `1.5.0` - Semantic version tag +**Regular Releases** (e.g., `1.5.1`): + - `py3.12-1.5.1` - Python version specific tag + - `1.5.1` - Semantic version tag - `1.5` - Major.minor tag (moves to latest patch release) - `latest` - Only assigned if this is the highest semantic version -**Release Candidates** (e.g., `1.5.0rc1`): - - `py3.12-1.5.0rc1` - Python version specific RC tag - - `1.5.0rc1` - Semantic version RC tag +**Release Candidates** (e.g., `1.5.1rc0`): + - `py3.12-1.5.1rc0` - Python version specific RC tag + - `1.5.1rc0` - Semantic version RC tag - **Note**: RC releases do NOT receive major.minor (`1.5`) or `latest` tags **Nightly Builds**: diff --git a/docs/features/upgradingToAipv2.md b/docs/deploying/upgradingToAipv2.md similarity index 95% rename from docs/features/upgradingToAipv2.md rename to docs/deploying/upgradingToAipv2.md index 8494cd720b..aab2cb9f35 100644 --- a/docs/features/upgradingToAipv2.md +++ b/docs/deploying/upgradingToAipv2.md @@ -7,6 +7,7 @@ This guide helps you upgrade your controller application to use AIP 2.0 endpoint AIP 2.0 introduces significant changes to how credential and presentation exchanges are handled. AIP 1.0 exclusively supported Indy credentials. AIP 2.0 supports multiple credential formats, providing better interoperability and flexibility. **Key differences from AIP 1.0:** + - New REST endpoints under `/issue-credential-2.0` and `/present-proof-2.0` namespaces - Format-specific filters in request bodies - New exchange record types with updated field names @@ -14,6 +15,7 @@ AIP 2.0 introduces significant changes to how credential and presentation exchan - Enhanced state management **Credential format options:** + - **`anoncreds` filter** (Recommended): Requires upgraded wallet type (`askar-anoncreds`). This is the recommended option offering improved performance, better features, and future-proof compatibility. - **`indy` filter**: Backward compatible with AIP 1.0, works with existing Indy wallets (no wallet upgrade required) @@ -61,6 +63,7 @@ AIP 2.0 introduces new exchange record types that replace the v1.0 records. Unde ### Credential Exchange Records (V20CredExRecord) Key fields: + - `cred_ex_id`: Unique identifier for the exchange (replaces `credential_exchange_id`) - `connection_id`: Connection identifier - `thread_id`: Thread identifier for message threading @@ -77,6 +80,7 @@ Key fields: - `updated_at`: Timestamp when the record was last updated **Exchange States:** + - `proposal-sent`: Proposal has been sent - `proposal-received`: Proposal has been received - `offer-sent`: Offer has been sent @@ -91,6 +95,7 @@ Key fields: ### Presentation Exchange Records (V20PresExRecord) Key fields: + - `pres_ex_id`: Unique identifier for the exchange (replaces `presentation_exchange_id`) - `connection_id`: Connection identifier - `thread_id`: Thread identifier for message threading @@ -105,6 +110,7 @@ Key fields: - `updated_at`: Timestamp when the record was last updated **Exchange States:** + - `proposal-sent`: Proposal has been sent - `proposal-received`: Proposal has been received - `request-sent`: Request has been sent @@ -121,6 +127,7 @@ AIP 2.0 uses format-specific filters in request bodies when creating credential ### Credential Exchange Filters The `filter` field is required in requests to endpoints like: + - `POST /issue-credential-2.0/create` - `POST /issue-credential-2.0/send-offer` - `POST /issue-credential-2.0/send-request` @@ -156,19 +163,21 @@ aca-py start \ **Upgrading existing wallets:** For existing wallets with the `askar` type, you can upgrade to `askar-anoncreds` using the wallet upgrade endpoint: -``` +```bash POST /anoncreds/wallet/upgrade?wallet_name= ``` > **⚠️ Warning:** This upgrade is irreversible. You cannot downgrade from `askar-anoncreds` back to `askar`. It is highly recommended to back up your wallet and test the upgrade in a development environment before upgrading a production wallet. **Benefits of upgrading to `askar-anoncreds`:** + - Improved performance and efficiency - Better support for modern credential features - Future-proof solution aligned with AnonCreds specifications - Enhanced interoperability with other AnonCreds-compatible systems **AnonCreds filter fields:** + - `cred_def_id` (string, optional): Credential definition identifier - `schema_id` (string, optional): Schema identifier - `schema_issuer_id` (string, optional): Schema issuer ID @@ -191,6 +200,7 @@ The `indy` filter provides backward compatibility with AIP 1.0 and works with ex ``` **Indy filter fields:** + - `cred_def_id` (string, optional): Credential definition identifier - `schema_id` (string, optional): Schema identifier - `schema_issuer_did` (string, optional): Schema issuer DID @@ -201,6 +211,7 @@ The `indy` filter provides backward compatibility with AIP 1.0 and works with ex ### Presentation Request Filters When creating presentation requests, you specify a `presentation_request` object that supports multiple proof formats. The `presentation_request` field is used in endpoints like: + - `POST /present-proof-2.0/create-request` - `POST /present-proof-2.0/send-request` @@ -270,6 +281,7 @@ Webhooks are sent as POST requests to the configured URL with the topic appended **Webhook URL:** `https://your-controller.example.com/webhooks/issue_credential_v2_0` **Example payload:** + ```json { "connection_id": "conn-123", @@ -289,6 +301,7 @@ Webhooks are sent as POST requests to the configured URL with the topic appended ``` **Key webhook fields:** + - `cred_ex_id`: The credential exchange identifier (use this to retrieve full details via API) - `state`: Current state of the exchange - `role`: Your role in the exchange (`issuer` or `holder`) @@ -302,6 +315,7 @@ Webhooks are sent as POST requests to the configured URL with the topic appended **Webhook URL:** `https://your-controller.example.com/webhooks/present_proof_v2_0` **Example payload:** + ```json { "connection_id": "conn-123", @@ -319,6 +333,7 @@ Webhooks are sent as POST requests to the configured URL with the topic appended ``` **Key webhook fields:** + - `pres_ex_id`: The presentation exchange identifier (use this to retrieve full details via API) - `state`: Current state of the exchange - `role`: Your role in the exchange (`prover` or `verifier`) @@ -328,20 +343,22 @@ Webhooks are sent as POST requests to the configured URL with the topic appended ### Webhook Processing Best Practices -1. **Idempotency**: Webhooks may be delivered multiple times. Implement idempotent handlers using the exchange ID and state. +**Idempotency**: Webhooks may be delivered multiple times. Implement idempotent handlers using the exchange ID and state. + +**State Transitions**: Monitor state transitions to trigger appropriate actions: -2. **State Transitions**: Monitor state transitions to trigger appropriate actions: - - `offer-received` → Retrieve offer details and decide whether to request - - `request-received` → Issue credential - - `credential-received` → Store credential - - `request-received` (presentation) → Prepare and send presentation - - `presentation-received` → Verify presentation + - `offer-received` → Retrieve offer details and decide whether to request + - `request-received` → Issue credential + - `credential-received` → Store credential + - `request-received` (presentation) → Prepare and send presentation + - `presentation-received` → Verify presentation -3. **Error Handling**: Check for `error_msg` field in webhook payloads to handle errors. +**Error Handling**: Check for `error_msg` field in webhook payloads to handle errors. -4. **Webhook Topics**: Ensure your webhook handler distinguishes between v1.0 and v2.0 topics: - - v1.0: `issue_credential`, `present_proof` - - v2.0: `issue_credential_v2_0`, `present_proof_v2_0` +**Webhook Topics**: Ensure your webhook handler distinguishes between v1.0 and v2.0 topics: + + - v1.0: `issue_credential`, `present_proof` + - v2.0: `issue_credential_v2_0`, `present_proof_v2_0` ## Migration Steps @@ -352,10 +369,12 @@ This section provides a step-by-step guide for migrating your controller code fr Replace all v1.0 endpoint calls in your controller code with v2.0 equivalents: **Before (v1.0):** + - `GET /issue-credential/records` - `POST /issue-credential/send-offer` **After (v2.0):** + - `GET /issue-credential-2.0/records` - `POST /issue-credential-2.0/send-offer` @@ -364,19 +383,23 @@ Replace all v1.0 endpoint calls in your controller code with v2.0 equivalents: Update your controller's webhook handlers to process v2.0 topics: **Before (v1.0):** + - Webhook topic: `issue_credential` - Field name: `credential_exchange_id` **After (v2.0):** + - Webhook topic: `issue_credential_v2_0` - Field name: `cred_ex_id` (note: field name changed) **Key changes:** + - Update webhook route to handle `/webhooks/issue_credential_v2_0` path - Use `cred_ex_id` instead of `credential_exchange_id` to access the exchange ID - Handle state transitions: `offer-received`, `request-received`, `credential-received` **Supporting both versions during migration:** + - Check the topic name to determine which field name to use - Use `cred_ex_id` for v2.0 topics, `credential_exchange_id` for v1.0 topics @@ -385,21 +408,26 @@ Update your controller's webhook handlers to process v2.0 topics: Since AIP 1.0 exclusively supported Indy credentials, you'll need to choose between using the `indy` filter (backward compatible) or `anoncreds` filter (requires wallet upgrade): **Before (v1.0 - Credential Offer):** + - Use `credential_definition_id` field directly - No filter object required **After (v2.0 - Using indy filter, backward compatible):** + - Wrap credential definition ID in `filter.indy.cred_def_id` - Use `@type: "issue-credential/2.0/credential-preview"` in credential preview **After (v2.0 - Using anoncreds filter, requires askar-anoncreds wallet):** + - Wrap credential definition ID in `filter.anoncreds.cred_def_id` - Requires `--wallet-type askar-anoncreds` when starting ACA-Py **Before (v1.0 - Presentation Request):** + - Use `proof_request` object directly **After (v2.0 - Presentation Request):** + - Use `presentation_request` object with format-specific request (`indy` or `anoncreds`) - Wrap proof request structure in `presentation_request.indy` or `presentation_request.anoncreds` @@ -408,16 +436,19 @@ Since AIP 1.0 exclusively supported Indy credentials, you'll need to choose betw Update your controller code that accesses exchange record fields: **Before (v1.0):** + - `credential_exchange_id` - Credential exchange identifier - `credential_definition_id` - Credential definition identifier - `presentation_exchange_id` - Presentation exchange identifier **After (v2.0):** + - `cred_ex_id` - Credential exchange identifier (shorter name) - `cred_def_id` - Credential definition identifier (shorter name) - `pres_ex_id` - Presentation exchange identifier (shorter name) **Key field name changes:** + - `credential_exchange_id` → `cred_ex_id` - `presentation_exchange_id` → `pres_ex_id` - `credential_definition_id` → `cred_def_id` (within filter) @@ -427,12 +458,15 @@ Update your controller code that accesses exchange record fields: Update your controller's state handling logic to account for v2.0 state names: **Before (v1.0):** + - States use snake_case: `offer_sent`, `request_received` **After (v2.0):** + - States use kebab-case: `offer-sent`, `request-received`, `credential-received` **State name changes:** + - `offer_sent` → `offer-sent` - `offer_received` → `offer-received` - `request_sent` → `request-sent` @@ -450,12 +484,14 @@ As an issuer, you may need to revoke credentials that have been issued. AIP 2.0 To revoke a credential, use the revocation endpoint that matches the filter used when the credential was issued: **If credential was issued using `anoncreds` filter (askar-anoncreds wallet):** -``` + +```bash POST /anoncreds/revocation/revoke ``` **If credential was issued using `indy` filter (askar wallet):** -``` + +```bash POST /revocation/revoke ``` @@ -476,6 +512,7 @@ The simplest way to revoke a credential is using the `cred_ex_id` (credential ex ``` **Request parameters:** + - `cred_ex_id` (string, optional): Credential exchange ID from the issuance. If provided, revocation details are retrieved automatically. - `rev_reg_id` (string, optional): Revocation registry ID. Required if `cred_ex_id` is not provided. - `cred_rev_id` (string, optional): Credential revocation ID. Required if `cred_ex_id` is not provided. @@ -492,6 +529,7 @@ The simplest way to revoke a credential is using the `cred_ex_id` (credential ex 3. **Notify the holder** by setting `notify: true` and providing the `connection_id` to send a revocation notification **Example: Revoking with immediate publication and notification** + ```json { "cred_ex_id": "cred-ex-456", @@ -503,6 +541,7 @@ The simplest way to revoke a credential is using the `cred_ex_id` (credential ex ``` **Example: Revoking and marking as pending (publish later)** + ```json { "cred_ex_id": "cred-ex-456", @@ -516,11 +555,13 @@ The simplest way to revoke a credential is using the `cred_ex_id` (credential ex If you revoked credentials with `publish: false`, you can publish all pending revocations later. Use the endpoint that matches the filter used when issuing: **If credentials were issued using `anoncreds` filter (askar-anoncreds wallet):** + ``` POST /anoncreds/revocation/publish-revocations ``` **If credentials were issued using `indy` filter (askar wallet):** + ``` POST /revocation/publish-revocations ``` @@ -542,5 +583,5 @@ For more details on revocation, see the [AnonCreds Specification](https://anoncr ## Additional Resources - [Aries Interop Profile 2.0 Specification](https://github.com/decentralized-identity/aries-rfcs/tree/main/concepts/0302-aries-interop-profile) -- [ACA-Py Supported RFCs](SupportedRFCs.md) -- [ACA-Py Release Notes](../../CHANGELOG.md) +- [ACA-Py Supported RFCs](../features/SupportedRFCs.md) +- [ACA-Py Release Notes](https://github.com/openwallet-foundation/acapy/blob/main/CHANGELOG.md) diff --git a/docs/features/PlugIns.md b/docs/features/PlugIns.md index 173d460702..cbd96a48ce 100644 --- a/docs/features/PlugIns.md +++ b/docs/features/PlugIns.md @@ -107,9 +107,9 @@ When plugins are installed, ACA-Py logs detailed information including: Example log output: ``` -INFO: Auto-installing plugins from acapy-plugins repository: webvh, connection_update (current ACA-Py version (1.5.0)) -INFO: Installing plugin: webvh (version: 1.5.0) -INFO: Successfully installed plugin: webvh (version: 1.5.0) +INFO: Auto-installing plugins from acapy-plugins repository: webvh, connection_update (current ACA-Py version (1.5.1)) +INFO: Installing plugin: webvh (version: 1.5.1) +INFO: Successfully installed plugin: webvh (version: 1.5.1) ``` ### Checking Installed Plugin Versions diff --git a/docs/features/SupportedRFCs.md b/docs/features/SupportedRFCs.md index e94eac2766..75e041b77d 100644 --- a/docs/features/SupportedRFCs.md +++ b/docs/features/SupportedRFCs.md @@ -8,7 +8,7 @@ ACA-Py or the repository `main` branch. Reminders (and PRs!) to update this page welcome! If you have any questions, please contact us on the #aries channel on [OpenWallet Foundation Discord](https://discord.gg/openwallet-foundation) or through an issue in this repo. -**Last Update**: 2026-01-29, Release 1.5.0 +**Last Update**: 2026-02-18, Release 1.5.1rc0 > The checklist version of this document was created as a joint effort > between [Northern Block](https://northernblock.io/), [Animo Solutions](https://animo.id/) and the Ontario government, on behalf of the Ontario government. diff --git a/mkdocs.yml b/mkdocs.yml index 5da36b7146..1dd11b253d 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -138,6 +138,7 @@ nav: - Deploying: - Deployment Model: deploying/deploymentModel.md - Upgrading ACA-Py: deploying/UpgradingACA-Py.md + - Upgrading ACA-Py from AIPv1 to AIPv2: deploying/upgradingToAipv2.md - Enabling BBS Signatures support: deploying/BBSSignatures.md - Indy SDK to Askar Migration: deploying/IndySDKtoAskarMigration.md - Controller Migration to use the askar-anoncreds Wallet Type: deploying/AnonCredsControllerMigration.md diff --git a/open-api/openapi.json b/open-api/openapi.json index 5928404122..14883143b6 100644 --- a/open-api/openapi.json +++ b/open-api/openapi.json @@ -2,7 +2,7 @@ "openapi" : "3.0.1", "info" : { "title" : "Aries Cloud Agent", - "version" : "v1.5.0" + "version" : "v1.5.1rc0" }, "servers" : [ { "url" : "/" @@ -4237,6 +4237,93 @@ "x-codegen-request-body-name" : "body" } }, + "/out-of-band/records" : { + "get" : { + "parameters" : [ { + "description" : "Connection identifier", + "in" : "query", + "name" : "connection_id", + "schema" : { + "pattern" : "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-4[a-fA-F0-9]{3}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + "type" : "string" + } + }, { + "description" : "Order results in descending order if true", + "in" : "query", + "name" : "descending", + "schema" : { + "default" : false, + "type" : "boolean" + } + }, { + "description" : "Invitation message identifier", + "in" : "query", + "name" : "invi_msg_id", + "schema" : { + "pattern" : "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-4[a-fA-F0-9]{3}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + "type" : "string" + } + }, { + "description" : "Number of results to return", + "in" : "query", + "name" : "limit", + "schema" : { + "default" : 100, + "maximum" : 10000, + "minimum" : 1, + "type" : "integer" + } + }, { + "description" : "Offset for pagination", + "in" : "query", + "name" : "offset", + "schema" : { + "default" : 0, + "minimum" : 0, + "type" : "integer" + } + }, { + "description" : "The column to order results by. Only \"id\" is currently supported.", + "in" : "query", + "name" : "order_by", + "schema" : { + "default" : "id", + "enum" : [ "id" ], + "type" : "string" + } + }, { + "description" : "OOB record role", + "in" : "query", + "name" : "role", + "schema" : { + "enum" : [ "sender", "receiver" ], + "type" : "string" + } + }, { + "description" : "OOB record state", + "in" : "query", + "name" : "state", + "schema" : { + "enum" : [ "initial", "prepare-response", "await-response", "reuse-not-accepted", "reuse-accepted", "done", "deleted" ], + "type" : "string" + } + } ], + "responses" : { + "200" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/OobRecordList" + } + } + }, + "description" : "" + } + }, + "summary" : "Query OOB records", + "tags" : [ "out-of-band" ] + } + }, "/plugins" : { "get" : { "responses" : { @@ -11017,6 +11104,19 @@ "required" : [ "invi_msg_id", "invitation", "oob_id", "state" ], "type" : "object" }, + "OobRecordList" : { + "properties" : { + "results" : { + "description" : "List of OOB records", + "items" : { + "$ref" : "#/components/schemas/OobRecord" + }, + "type" : "array" + } + }, + "required" : [ "results" ], + "type" : "object" + }, "PerformRequest" : { "properties" : { "name" : { diff --git a/open-api/swagger.json b/open-api/swagger.json index cfb2c42807..7f1fce2ae5 100644 --- a/open-api/swagger.json +++ b/open-api/swagger.json @@ -1,7 +1,7 @@ { "swagger" : "2.0", "info" : { - "version" : "v1.5.0", + "version" : "v1.5.1rc0", "title" : "Aries Cloud Agent" }, "tags" : [ { @@ -3492,6 +3492,82 @@ } } }, + "/out-of-band/records" : { + "get" : { + "tags" : [ "out-of-band" ], + "summary" : "Query OOB records", + "produces" : [ "application/json" ], + "parameters" : [ { + "name" : "connection_id", + "in" : "query", + "description" : "Connection identifier", + "required" : false, + "type" : "string", + "pattern" : "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-4[a-fA-F0-9]{3}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}" + }, { + "name" : "descending", + "in" : "query", + "description" : "Order results in descending order if true", + "required" : false, + "type" : "boolean", + "default" : false + }, { + "name" : "invi_msg_id", + "in" : "query", + "description" : "Invitation message identifier", + "required" : false, + "type" : "string", + "pattern" : "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-4[a-fA-F0-9]{3}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}" + }, { + "name" : "limit", + "in" : "query", + "description" : "Number of results to return", + "required" : false, + "type" : "integer", + "default" : 100, + "maximum" : 10000, + "minimum" : 1 + }, { + "name" : "offset", + "in" : "query", + "description" : "Offset for pagination", + "required" : false, + "type" : "integer", + "default" : 0, + "minimum" : 0 + }, { + "name" : "order_by", + "in" : "query", + "description" : "The column to order results by. Only \"id\" is currently supported.", + "required" : false, + "type" : "string", + "default" : "id", + "enum" : [ "id" ] + }, { + "name" : "role", + "in" : "query", + "description" : "OOB record role", + "required" : false, + "type" : "string", + "enum" : [ "sender", "receiver" ] + }, { + "name" : "state", + "in" : "query", + "description" : "OOB record state", + "required" : false, + "type" : "string", + "enum" : [ "initial", "prepare-response", "await-response", "reuse-not-accepted", "reuse-accepted", "done", "deleted" ] + } ], + "responses" : { + "200" : { + "description" : "", + "schema" : { + "$ref" : "#/definitions/OobRecordList" + } + } + } + } + }, "/plugins" : { "get" : { "tags" : [ "server" ], @@ -9581,6 +9657,19 @@ }, "additionalProperties" : false }, + "OobRecordList" : { + "type" : "object", + "required" : [ "results" ], + "properties" : { + "results" : { + "type" : "array", + "description" : "List of OOB records", + "items" : { + "$ref" : "#/definitions/OobRecord" + } + } + } + }, "PerformRequest" : { "type" : "object", "properties" : { diff --git a/pyproject.toml b/pyproject.toml index b67ace5e27..e357fa168a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "acapy_agent" -version = "1.5.0" +version = "1.5.1rc0" description = "(ACA-Py) A Cloud Agent Python is a foundation for building decentralized identity applications and services running in non-mobile environments. " authors = [] license = "Apache-2.0" From 5dcef4ae319ae6b62c2540ab960b78320e9d18bb Mon Sep 17 00:00:00 2001 From: Stephen Curran Date: Wed, 18 Feb 2026 19:26:26 -0800 Subject: [PATCH 2/3] Add PR Signed-off-by: Stephen Curran --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0555e1640c..426a2b84c7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,6 +27,7 @@ AIP 1.0 protocols that were [previously announced as deprecated](#140-deprecatio - feat: add list endpoint for out-of-band records [\#4046](https://github.com/openwallet-foundation/acapy/pull/4046) [kukgini](https://github.com/kukgini) - **AnonCreds, Revocation, and Wallet Migration** - Fix revocation setup [\#4047](https://github.com/openwallet-foundation/acapy/pull/4047) [PatStLouis](https://github.com/PatStLouis) + - fix: handle revocation registry race conditions for BDD integration tests [\#4056](https://github.com/openwallet-foundation/acapy/pull/4056) [PatStLouis](https://github.com/PatStLouis) - **Testing, Logging, and Diagnostics** - FIX BDD interop integration tests [\#4052](https://github.com/openwallet-foundation/acapy/pull/4052) [PatStLouis](https://github.com/PatStLouis) - **Dependabot PRs** From 525d5476b4f1b72dd18f946bc649cb5c84e27062 Mon Sep 17 00:00:00 2001 From: Stephen Curran Date: Thu, 19 Feb 2026 14:44:05 -0800 Subject: [PATCH 3/3] Update date after test issues Signed-off-by: Stephen Curran --- CHANGELOG.md | 4 ++-- docs/features/SupportedRFCs.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 426a2b84c7..3d90a2691b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ ## 1.5.1rc0 -### February 18, 2026 +### February 20, 2026 ACA-Py 1.5.1 is a clean up release primarily to address some follow-on issues related to the [1.5.0] release -- notably with the handling of AnonCreds revocation. There are some convenience additions and a GitHub Actions pipeline fix. @@ -31,7 +31,7 @@ AIP 1.0 protocols that were [previously announced as deprecated](#140-deprecatio - **Testing, Logging, and Diagnostics** - FIX BDD interop integration tests [\#4052](https://github.com/openwallet-foundation/acapy/pull/4052) [PatStLouis](https://github.com/PatStLouis) - **Dependabot PRs** - - [Link to list of Dependabot PRs in this release](https://github.com/openwallet-foundation/acapy/pulls?q=is%3Apr+is%3Amerged+merged%3A2025-01-29..2026-02-18+author%3Aapp%2Fdependabot+) + - [Link to list of Dependabot PRs in this release](https://github.com/openwallet-foundation/acapy/pulls?q=is%3Apr+is%3Amerged+merged%3A2025-01-29..2026-02-20+author%3Aapp%2Fdependabot+) - **Release management pull requests**: - 1.5.1rc0 [\#4054](https://github.com/openwallet-foundation/acapy/pull/4054) [swcurran](https://github.com/swcurran) diff --git a/docs/features/SupportedRFCs.md b/docs/features/SupportedRFCs.md index 75e041b77d..0e12c1ba4f 100644 --- a/docs/features/SupportedRFCs.md +++ b/docs/features/SupportedRFCs.md @@ -8,7 +8,7 @@ ACA-Py or the repository `main` branch. Reminders (and PRs!) to update this page welcome! If you have any questions, please contact us on the #aries channel on [OpenWallet Foundation Discord](https://discord.gg/openwallet-foundation) or through an issue in this repo. -**Last Update**: 2026-02-18, Release 1.5.1rc0 +**Last Update**: 2026-02-20, Release 1.5.1rc0 > The checklist version of this document was created as a joint effort > between [Northern Block](https://northernblock.io/), [Animo Solutions](https://animo.id/) and the Ontario government, on behalf of the Ontario government.