Skip to content

v4.0.0

Compare
Choose a tag to compare
@ff137 ff137 released this 17 Oct 15:38
c6b887e

v4.0.0 Release Summary

We’re excited to announce the release of v4.0.0, which marks a significant milestone in our platform's evolution. This release is packed with new features, improvements, and critical changes that streamline development, enhance integration with webhook events, and simplify protocol interactions. Read on for all the details!

✨ New Features

NATS for Webhook Event Processing & SSE Changes

We’ve replaced our Webhook service, previously reliant on Redis, with NATS JetStream and Benthos for storing and processing webhook events. This update significantly improves scalability and reliability for event processing. As a result, all consumers are now recommended to use NATS for webhook event subscriptions.

Additionally, the deprecated /webhooks and websocket endpoints have been completely removed. Several SSE endpoints have also been removed as part of this migration, simplifying the system. The following SSE endpoints are no longer available:

  • /sse/{wallet_id}
  • /sse/{wallet_id}/{topic}
  • /sse/{wallet_id}/{topic}/{desired_state}
  • /sse/{wallet_id}/{topic}/{field}/{field_id}

Moving forward, there is only one SSE endpoint:

  • /sse/{wallet_id}/{topic}/{field}/{field_id}/{desired_state}

For all other event subscriptions, we recommend switching to NATS.

DID-Rotate and DID-Exchange Protocol Support

We’ve introduced support for DID-Rotate and DID-Exchange methods, providing more flexible DID management throughout the lifecycle of a connection.

Notably, connections established using the DID-Exchange protocol can now utilize the hangup feature, which automatically deletes the connection record for both parties. Previously, with the old connections protocol, deleting a connection record would leave the other party with an unusable connection, as they would not be aware of its deletion. With DID-Exchange, this issue is resolved, and connections are automatically hung up when the DID-Exchange record is deleted.

The old connections protocol has now been marked as deprecated in favor of DID-Exchange.

To clarify: connection records themselves are not deprecated—they are still fetched and returned the same way. However, if a connection is established using DID-Exchange, the connection_protocol field in the record will now be labeled as didexchange/1.0, instead of connections/1.0.

Issuer & Verifier Image URL in Trust Registry

We’ve introduced an image_url field for both issuers and verifiers in the trust registry, allowing a visual representation to accompany their names. Tenant-admins can now onboard or update actors with an image using the PUT /tenant-admin/{wallet_id} endpoint, enhancing the clarity and recognition of trusted parties in the registry.

Swagger Replaced by Scalar

You will notice that our API Docs have gotten a make-over, as the Swagger OpenAPI documentation interface has been replaced with Scalar. Scalar offers a sleeker, more modern interface for exploring our API documentation. It’s easier to navigate, and we hope you’ll love the new look and feel!


🗑️ Deprecations and 💥 Breaking Changes

Protocol Version Cleanup

With the removal of v1 protocol support, there’s no longer a need to specify a protocol_version in your requests. We now default to v2, simplifying interactions and ensuring the latest features are used.

Deprecation of Old Connections Protocol

The old connections protocol has officially been deprecated. We recommend migrating to the DID-Exchange protocol for all new integrations to benefit from improved DID management and secure connection flows. Please see the Action Required section for more detail.

Webhook Event Changes

As stated in the new features: websocket subscription of webhook events is now removed; bulk fetching using the deprecated /webhooks endpoint is also no longer available; and some of the SSE endpoints mentioned above have been removed.


📝 Documentation Improvements

We’ve added several new and detailed documentation guides to help you get the most out of our platform. These additions provide clear guidance on managing proofs, revocations, and restrictions during verification processes:

  • Self-Attested Proofs: Learn how to handle and process self-attested attributes when responding to proof requests.
  • Predicate Proofs: Detailed guides on using predicates in proofs, allowing verifiers to request conditions on attributes, such as proving someone is over a certain age without revealing the actual value.
  • Revocation: Updated instructions on managing credential revocation, including how to handle revoked credentials during verification and ensure validity using NATS-based event subscriptions.
  • Proof Restrictions: New guidance on applying restrictions to proofs, allowing verifiers to set conditions on attributes, such as schema, issuer, or attribute values.

You can explore these guides in more detail on our public docs page.

👷 Developer Improvements

Kubernetes Native Development with Mise, Kind, and Tilt

We’ve officially migrated away from ./manage up and Docker Compose in favor of a Kubernetes-native setup using Mise, Kind, and Tilt. This powerful combination enables live reloading and a more standardized development environment. Say goodbye to local inconsistencies and embrace a more seamless workflow! 🎉


❗ Action Required

To ensure smooth transitions and compatibility, please review the following:

  • For webhook consumers: If you’re still using SSE or websockets for webhook event subscription, you’ll need to switch to NATS JetStream. Please contact us if you need help with this integration.

  • Connections protocol: Please begin migrating to use the DID-Exchange protocol, as the old one is deprecated. You'll find that the flow is now much simpler: every issuer has a public DID, and a tenant can now connect to them directly in a single call, using the new /connections/did-exchange/create-request endpoint. For connections with verifiers that don't have a public DID, please use the Out-Of-Band protocol instead of the connections protocol. If you need any assistance with this migration, please contact us.

  • Protocol version changes: Please search for where you make use of specifying a protocol_version in the issuer or verifying flows. This field can be removed as it will now have no effect. The v1 protocol is no longer supported, and we now default to using the recommended v2 protocols.

We also recommend regenerating any OpenAPI clients to reflect all the latest changes.


We hope you enjoy the improvements in v4.0.0! If you have any questions or need further assistance, feel free to reach out.


What's Changed

Full Changelog: v3.4.0...v4.0.0