3.0.0
SVX 3.0.0 Release Notes
Software Release Date: 17 September 2025
Summary:
SVX 3.0.0 is a major release that introduces SVX Verify, expands standards support, and delivers operational improvements across the platform. With this release, we continue our commitment to providing a future-proof foundation for high-assurance digital identity and credential exchange.
SVX Verify: Launch of a new hosted service for low-friction, high-assurance identity verification, supporting both wallet-based and account-based models.
Self Signup: New customers can now sign up and access the SVX Sandbox independently, accelerating onboarding and testing.
Resource Hook: The Organisation Wallet can now fetch claims from external resource servers during credential issuance, simplifying integration with existing business systems.
OpenID4VCI & OpenID4VP v1.0 Support: Full support for the final 1.0 versions of these standards, aligning SVX with the broader ecosystem.
DCQL Support: Introduction of the Digital Credentials Query Language, providing a simpler, real-world-focused alternative to DIF’s Presentation Exchange.
DPoP Support: Optional Demonstrating Proof of Possession support added to Organisation and Holder Wallets for stronger token security.
Updated IETF SD-JWT VC (draft-08): All components updated to support the latest draft, including migration from
vc+sd-jwt
todc+sd-jwt
.Unified Configuration Framework: All components now use JSON-based configuration backed by JSON Schema, ensuring consistency, validation, and easier operations.
This release also includes multiple usability enhancements, bug fixes, and security updates across the Portal, SVX API, Organisation Wallet, and Holder Wallet.
Here are the highlights of the new features introduced in SVX 3.0.0:
New Features
SVX Verify
Identity verification is a critical step in digital journeys that require organisations to know the users' identity. Traditional approaches rely on document scanning and can be slow, costly and error prone. They introduce friction for users and complexity for organisations, all while creating new risks around oversharing of PII and compliance issues that come along with that.
SVX Verify offers a new way forward. Instead of relying on document scans, it leverages high-assurance digital identity solutions to deliver:
Streamlined identity verification: A user flow causing fewer drop-offs, higher conversions and overall reduced friction.
Go Live in Minutes: Use our hosted user experience to start verifying credentials with minimal setup or integration effort.
Future proof: Support for standards-based digital credentials as they roll out.
How it works
SVX verify makes it simple for organisations to integrate high-assurance identity verification into their workflows:
Define the identity attributes you’re looking to verify
Redirect to SVX Verify: From any integrated system, users are redirected to the hosted SVX Verify flow
Identity verification: Users verify their identity either by
Wallet-based credentials: Presenting digital credentials such as ISO Mobile Documents and IETF SD-JWT VCs directly from a wallet.
Account-based providers: Authorising a trusted identity provider to share verified attributes using OpenID Connect
Consent and security built-in: SVX Verify managed consent, data sharing and error handling, ensuring privacy and compliance.
Retrieve verified data: Verified attributes are retrieved via an API or made available in Portal.
Below is a journey that shows how SVX Verify can be used in hotels to enable online check-in using a wallet-based system:



Bridging today and tomorrow
SVX Verify is designed to fully embrace the new generation of secure, privacy-preserving digital credentials. As governments and private sectors worldwide adopt standards such as ISO Mobile Documents and IETF SD-JWT VCs, SVX Verify provides organisations with a pathway to accept these high-assurance credentials as they roll out.
At the same time, adoption will vary by country and ecosystem. Many markets already offer digital identity services through APIs and regulated identity providers. SVX Verify includes a bridge component that connects to these account-based ecosystems, allowing organisations to accept trusted identities today while creating derived credentials for use across their own networks.
Built on Organisation Wallet
SVX Verify is built on the SVX Organisation Wallet. It provides a hosted UI for end-users and an API-first model for organisations, ensuring rapid deployment without complex setup. By bridging today’s account-based identity providers with tomorrow’s wallet-based credentials, SVX Verify gives organisations a future-proof way to verify identity with high assurance, low friction, and full compliance.
Self Signup to SVX
Previously, new users had to contact Meeco directly to access the SVX Sandbox environment. We have now introduced a self signup form, allowing users to register themselves and begin testing SVX functionalities more quickly and easily.
This feature can be enabled/disabled on a per installation basis.

Issuance via Resource Hook
The Resource Hook is a new feature in the SVX Organisation Wallet that enables credential issuance using data from an external resource server.
When a credential issuance request is received, the Organisation Wallet automatically calls the configured resource server to fetch the required data. The returned values are then included as claims in the issued credential.
This approach separates responsibilities:
Organisation Wallet manages the technical aspects of issuance flows and ensures compliance with open standards (e.g. OpenID4VCI).
External resource server handles the business logic and provides the data that is included as claims in the credential.
This allows organisations to integrate the Organisation Wallet seamlessly into their existing systems without duplicating or moving business logic into the wallet itself.
The Resource Hook functionality can be configured directly in the Organisation Wallet.
For more details on configuration options, refer to Appendix B.
Standards Updates
OpenID4VCI and OpenID4VP v1.0 Support
After numerous years of being under development, both OpenID specifications have recently published a final version (1.0). We’re extremely proud to announce that the SVX Platform fully support Issuers, Verifiers and Wallet Providers in using these protocols in conjunction with ISO Mobile Documents, IETF SD-JWT VC and W3C Verifiable Credentials.
Below are some notable new features that are supported:
Support for DCQL
DCQL is defined in section 6 of the OpenID for Verifiable Presentations v1.0 specification:
The Digital Credentials Query Language (DCQL, pronounced [ˈdakl̩]) is a JSON-encoded query language that allows the Verifier to request Presentations that match the query.
DCQL simplifies the complexity of Presentation Exchange (PEX) by focusing on real-world use cases, offering a simpler design, practical features, and a specification tailored to the OpenID4VP protocol. For more information about DCQL, refer to OpenID for Verifiable Presentations 1.0. Refer to Appendix A for examples of DCQL Query.
Note that DIF Presentation Exchange (PEX) implementation remains unchanged and can still be used.
Support for DPoP
As recommended in the OpenID4VCI specification, under Best Current Practice for OAuth 2.0 Security, support for DPoP has been added to both the Organisation Wallet and the Holder Wallet. DPoP support is optional and can be enabled via component configuration.
Demonstrating Proof of Possession (DPoP) allows securing an access token by binding a cryptographic key into it. Usage of the access token is only allowed when a valid proof JWT is sent alongside in the request header. For more information about DPoP, refer to RFC 9449: OAuth 2.0 Demonstrating Proof of Possession (DPoP).
This complements really well the OAuth 2.0 Proof Key for Code Exchange (PKCE), which secures the exchange of the authorization code received in the authorization code flow. Both are mandatory in the FAPI 2 Security Profile, often considered an industry standard when it comes to security.
Transition to Final
The publication of the final 1.0 specifications is a major milestone and a clear signal to the digital credential ecosystem. While future iterations will emerge, Meeco is committed to treating this release as a long-term supported (LTS) baseline, ensuring stability and backwards compatibility for our customers.
During the draft process we introduced parameters such as protocol_version
to handle multiple draft versions (e.g. OpenID4VP draft 10 and draft 18). However, maintaining compatibility with drafts creates unnecessary fragmentation. Each draft differs slightly, and no other ecosystem players are continuing to support them.
To promote alignment and reduce integration complexity, this release drops all support for draft versions and only accepts the final identifiers:
openid4vci-v1
openid4vp-v1
These values are also applied by default when the parameter is not specified.
By consolidating on the final 1.0 specifications, we simplify integration, remove ambiguity, and ensure that our customers are fully aligned with the broader ecosystem moving forward.
Updated IETF SD-JWT VC to draft 08
As part as our commitment to follow and support most used credential formats in production use cases, we’ve updated all components to support draft 08 of the IETF SD-JWT-based Verifiable Credentials specification.
The most notable change introduced in this draft is a new credential format identifier:
From
vc+sd-jwt
To
dc+sd-jwt
Operating Updates
Unified (JSON-based) Configuration Framework
To make day-to-day operations easier, we’ve standardised how configuration for components is defined, validated and documented across the SVX Platform.
Previously, components used different formats (YAML, dotenv, etc.). All SVX components now use a single configuration format (JSON) with consistent file names and key structures across the platform. Common settings, such as database connections, are configured in the same way, no matter the programming language and framework used.
Every config is backed by a JSON Schema, which is validated automatically at container startup. This ensures that outdated or invalid configs fail fast, making misconfigurations easy (or at least easier) to detect and fix.
The JSON Schema also serves as living documentation, providing descriptions for every config key.
Component Updates
Portal
DCQL Support
Portal has been updated to support DCQL query creation and processing.
Added support for creation of a
Verification Template
with DCQL Query.Create Verification Template
page has now been separated into two tabs, PEX (Presentation Exchange) and DCQL (Digital Credentials Query Language)Added support to view DCQL Query verification responses
Added support for viewing
Verification Templates
with DCQL Query format
New functionalities
Added detailed view of
constraints
format
andsignature algorithm
forView Presentation Template
page.Added support for credentials using
dc+sd-jwt
format identifier.Added a link from the
Tenant/Organization Details
page to the corresponding Dashboard.
Added ability to Create and View the
Credential Type
type
for W3C VC formats
Enhancements
Added
audience
,IDP Login URL
,Tenant ID
andOrganization ID
(if available) to applications. This makes it easier to configure system-to-system authentication using OAuth 2’s client credentials flow.Added confirmation code check when removing an end user from a tenant.
Allowed Global Admins to view archived tenant details from the Tenants list.
Updated the
jwt_vc_json
verification template example for presentation exchange (PEX) to align with OpenID4VP v1.0.Organization Url
is no longer a required field when creating or editing an Organization, added regex validation.Changed
Disclosure Frame
editor from a plain text area, to a JSON code editor component forCredential Templates
creation and editing.Changed
Disclosure Frame
to be editable forCredential Templates
.
Removed
Removed support for creating credentials types and presentation templates using
vc+sd-jwt
format identifier. Replaced withdc+sd-jwt
to align with OpenID4VCI V1.0Removed the ability to add end-users to a tenant from the portal.
Removed the
Pending End Users
tab from the End Users page, along with all related pages and functionalities.
Bug Fixes
Fixed parsing of non-array
vp_tokens
to show older verification_results correctly.Fixed an issue where the copied icon was not displaying correctly for copied values.
Removed duplicated ID field for global admin details in the View Administrator page.
Removed the Edit button for archived schemas to prevent unintended modifications.
Trimmed search input to remove unnecessary whitespace for
Tenants
,Organisations
,Credential Schemas
,Credential Templates
,Verification Templates
, andVerification Responses
.Fixed missing "No results found for '{search string}'" message when searching archived Credential Templates, Verification Templates, and Verification Requests with no matches.
Fixed missing "No archived Credential Templates / Verification Templates / Verification Requests found" message when no archived items are available for these sections.
Fixed error handling for creating credential schema - the page no longer hangs when the schema name is too long and an appropriate error message is shown.
Updated the following error messages to be more user-friendly:
field_too_long
,invalid_company_url
,agent_with_this_name_already_exists
.Fixed validation to correctly detect syntax errors in uploaded JSON files on the
Create Schema
page.Fixed an issue where error messages persisted during tenant creation and when adding an administrator.
Fixed the Add button on the
Add Administrator
page to only become clickable after input fields are valid.Fixed the Create button in the
Create Credential Template
andCreate Verification Template
page to only become clickable after input fields are valid.Fixed areas that were missing Japanese translations.
Fixed
Format
onCredential Types
tables displayed the format for mdoc as its doctypeFixed
valid at issuance
so that thevalid_at
value is set to null for credential types, ensuring the credential is valid at the time of issuance.Fixed credential type preview
Valid From
to calculate based on the current timestamp instead of the credential type’s creation date.Fixed a bug that didn't accept the edited version of the
Disclosure Frame
when creating aCredential Templates
.Fixed an issue where the docType
org.iso.18013.5.1.mDL
was automatically converted toMobile Driving License (mDL ISO/IEC 18013-5:2021)
. All credentials using Mobile Document show as (ISO Mobile Document).Fixed the portal login page title to reflect the correct title. It is also configurable in IDP with the config setting
branding
->app_title
.
SVX API
OpenID4VP v1.0 Support
Added new parameters to
POST /presentation_definitions
to add support for DCQL Querytype
-'pex' | 'dcql'
Added new properties to
POST /presentation_request
responseparameters.dcql_query
parameters.presentation_definition_type
Added new
model_version
valuedcql-openid4vp-v1
toPresentationDefinition
Added
type
query parameter toGET /presentation_definitions
endpoint
Self-Signup
New Endpoints
GET /signup
- Display public signup registration formPOST /signup
- Submit signup registration with reCAPTCHA validationGET /signup/success
- Show signup confirmation pageGET /signup/resend-verification
- Display resend verification email formPOST /signup/resend-verification
- Resend verification email with reCAPTCHA validationGET /signup/resend-verification/success
- Show resend verification confirmation page
Features
Email verification workflow with token-based validation
reCAPTCHA protection on all form submissions
Feature toggle support via
signup.enabled
config variableIntegration with existing notification system for verification emails
Automatic user and tenant creation upon successful email verification
Company name uniqueness validation to prevent duplicate tenant names
Configuration Properties
enabled
- Whether user signup is enabledverification_token_expiry_seconds
- Signup verification token expiry time in secondsresend_verification_cooldown_seconds
- Signup cooldown period for resending verification emailsconfirmation_email_recipient
- Email address to receive signup confirmationsAdded an endpoint
POST /tenant/with_admin/{user_id}
that allows creating a new tenant where the first admin is not the current user but the user specified by theuser_id
parameter.Enhanced invitation creation with email normalization (case-insensitive).
New Functionalities
Added a public endpoint
GET /orgs/{org_id}/logo
that redirects a client to the logo of the organisation.
Enhancements
Latest SD-JWT-VC draft-08 related changes.
Updated the credential type format identifier from
vc+sd-jwt
todc+sd-jwt
for SD-JWT credential types.The credential header
typ
for SD-JWT is now set todc+sd-jwt
for new credential generation. Verification continues to support bothsd-jwt-vc
anddc+sd-jwt
format identifiers to ensure backward compatibility.
POST /openid/presentations/requests
payload parameterscope
no longer defaults toopenid
. If nothing provided, it will benull
.Updated password minimum length requirement to 12 characters.
Removed
Removed support for OpenID4VP draft-18:
openid4vp-draft18
presentation requests created in the past are still returned by the API, but there is no way to create new ones. Useprotocol_version = openid4vp-v1
.Removed
client_id_scheme
payload parameter fromPOST /openid/presentations/requests
.
Bug Fixes
Fixed storing events in development when
users.login_id
(username) is not a UUID.Fixed storing
ItemDeleted
events correctly.
Security Updates
Upgraded Node to
22.14 LTS
Upgraded Ruby to
3.4.5
Upgraded Erlang to
27.3.4.2
Updated Elixir to
1.18.4
Organisation Wallet
SVX Verify
Added SVX Verify with the following pages:
/identity/verification/:id
SessionStep = Index Verifier landing page/identity/verification/:id
SessionStep = Share Displays the QR code for wallet based flows or a Sharing Credentials... screen for account based flows/identity/verification/:id
SessionStep = Complete Displays the results of the verification process, success/identity/verification/:id
SessionStep = Error Displays the results of any errors that occur, with the following information:error_code
,error_description
anderror_tips
.
Endpoints:
Added verify layout to apply to all
/identity/verification/
routesGET /identity/verification/:id/status
checks and returns status of the identity verification flow sessionGET /identity/verification/:id/request
returns identity verification presentation request tokenPOST /identity/verification/:id/idp/:idp
updates session with selected IDPPOST /identity/verification/:id/abort
aborts the session, returning toreturnURL
POST /identity/sessions
for session management, acceptsreturn_url
,success_url
andpresentation_template_id
GET /identity/sessions/:id
for integrators to fetch the session state andverified_claims
POST /identity/language
for language switching, acceptsko
,jp
,en
andzh-hk
GET /identity/information
endpoint to renderclient_uri
for Select ID integration
Configuration changes:
Added
svx_verify.enabled
to config to enable/disable all/identity/
routesAdded
svx_verify.brand_name
to configure the brand name throughout the platformAdded
svx_verify.operating_company_name
to configure the name of the company operating the platform throughout SVX VerifyAdded
svx_verify.presentation_template_ids
to configure available Presentation Template for identity verification flowAdded
svx_verify.response_mode
to control the response mode for IDP verificationAdded
svx_verify.session_expiry
for identity verification session expiry timeAdded
svx_verify.active_idps
to control the available IDPsAdded
svx_verify.bridge_authorize_url
for bridge authorize entrypointAdded
svx_verify.bridge_client_id
for bridge authorization code flowAdded
svx_verify.presentation_request_multiple_loads_enabled
to control if the request can be loaded multiple times or only onceAdded
svx_verify.manual_terms_acceptance_enabled
to control if the deployment asks the user to check the "Accept" boxAdded
svx_verify.verifier_information
containing various information about the organisation
OpenID4VCI v1.0 Support
Configuration changes:
Added new configuration value for
protocols.issuance
-openid4vci-v1
Added new configuration parameter
credential_issuer.max_batch_credential_issuance_size
Added new configuration
credential_issuer.oidc_clients
to register clients for the Issuer IDPAdded optional
credential_issuer.include_x5c
configuration attribute
Renamed
POST /credentials
toPOST /credential
as per OpenID4VCI specAdded
background_image
to display credential metadataChanged credential metadata returned from
/.well-known/openid-credential-issuer
to match OpenID4VCI v1.0mso_mdoc
credential are returned as base64url encoded string ofissuerSigned
object
DPoP Support
POST /token
andPOST /credential
endpointscredential_issuer.dpop_enabled
configuration added
OpenID4VP v1.0 Support
New
openid4vp-v1
value toprotocols.presentation
values listNew
response_mode
options:dc_api
anddc_api.jwt
client_id
prefixes:redirect_uri
,decentralized_identifier
andx509_san_dns
Support for
expected_origins
parameter inPOST /presentations/requests
payloadPresentation request contains
client_metadata
withvp_formats_supported
listedPresentation request
client_metadata.authorization_encrypted_response_alg
replaced byalg
value from JWKSPresentation request
client_metadata.authorization_encrypted_response_enc
renamed toencrypted_response_enc_values_supported
(array)Changed presentation request
scope
attribute value. It no longer defaults toopenid
. It will be included into the token only if explicitly provided.Changed response in
POST /openid/presentations/requests/:requestId/submissions
fromsubmissionId
tosubmission_id
Configuration changes:
Added optional
presentation.request.include_x5c
configuration attributeAdded required
presentation.request.default_response_mode
configuration attribute
Bridging Entity
Added new configuration
credential_claims_map
, an array of claims mapping from external sourcesAdded claim display options
essential_claims
,optional_claims
Added new optional configuration groups under
integrations
Added generic
POST /interaction/:uid/select_authorization_server
endpoint to handle form submissions from connectionsAdded generic
select_authorization_server
to handle all bridge connection based interaction and its respectiverender
function
Resource Hook
Feature to fetch claim from a resource server
Added new configuration group
resource_hook
:resource_hook.endpoint
: URL of resource serverresource_hook.send_schema_json
: Boolean to include schema JSON of credential in resource hook call (for debugging)
IETF SD-JWT VC (draft-08) Support
Updated the credential type format identifier from
vc+sd-jwt
todc+sd-jwt
for SD-JWT credential typesThe credential header
typ
for SD-JWT is now set todc+sd-jwt
for new credential generation
New Functionalities
Added language selection that can be controlled via
?ui_locales=en
query parameter andui_locales
cookie:Added English, Japanese, Chinese (HK) and Korean translations
Added new parameter
verifierRedirectUri
toPOST /presentations/requests
Added
redirect_uri
in return body toPOST /openid/presentations/requests/:requestId/submissions
if presentation request was created withverifierRedirectUri
Added new option configuration variable
presentation.request.default_expected_origins
Added DCQL support (based on OpenID4VP v1):
Create presentation request with
dcql_query
Verify presentation response for presentation request with
dcql_query
Added
VerifierError
to catch and render any unexpected errors for front-end related routesAdded PostgreSQL database support and configuration
postgres
to the codebaseAdded persistent identity verification session data model
Enhancements
Application configuration changes:
Moved
c_nonce_expires_in
from the root level tocredential_issuer.c_nonce_expires_in
Moved
oid4vc.redis_state_manager_key_expiration_time
tostate_manager.default_expiry
Removed
oid4vc
configuration keyRenamed
svx.organization.auth_uri
tosvx.organisation.token_uri
to match the purpose of the configuration value
Test UI changes:
Updated string-type field rendering: rendered as textarea by default, or as date input when format is set to
"date"
Added
dark:text-white
class to field labels and set a fixed white background behind the QR codeUpdated boolean type to render as radio buttons instead of a checkbox
Allowed integer values to be passed as-is instead of converting them to strings
Additional checks done if configured key contains
x5c
attribute:O
certificate attribute must be providedC
certificate attribute must be providedCN
certificate attribute must be provided and matchapp.base_url
host namesubjectAltName
certificate attribute must be provided and matchDNS:app.<base_url host name>
format
Additional checks for duplicate
vct
ordoctype
values for credential types within the organisation:If a credential type has a duplicated
vct
ordoctype
, it will be removed from thesupportedCredentialTypes
. Errors will be logged at startup when duplicates are detectedGET system/svx/reload_data
returns a 400 error if the organisation has duplicated credential types
Endpoint changes:
Response of
POST /presentations/request
keys transformed to snake case to match the rest of the APIResponse of
POST /presentations/requests/:id/stats
keys transformed to snake caseChanged
/interaction/:uid
endpoint to render an error page instead of raw JSON
Changed
getCredentialDisplayMetadata
to use the credential type name instead of the schema nameAdded support for
contentEncoding
andcontentMediaType
attributes in JSON schema when claims are automatically generated:Supported encodings:
base64
Supported media types:
image/png
,image/jpeg
,image/svg+xml
Removed
Removed support for OpenID4VCI-draft13
Removed
openid4vci-draft13
configuration value fromprotocols.issuance
Removed presentation request JWT claims
sub
,client_name
since they are not standardRemoved
submission_id
attribute fromPOST /openid/presentations/requests/{requestId}/submissions
endpoint responseRemoved
supported_credential.<ID>.expiry
configuration (replaced byexpires_at
,expires_in
)Removed support for OpenID4VP draft-18
Removed
credential_issuer.supported_credential
configuration properties replaced by SVX API:vct
expires_at
expires_in
valid_at
valid_ion
disclosure_frame
Removed
sd_jwt_vc.reserved_claim_keys
configuration (claims list from@meeco/sd-jwt-vc
library is used as default)
Bug Fixes
Added validation for
POST /openid/presentations/requests/:requestId/submissions
to check whethervp_token
is an empty array represented as'[]'
Fixed application crash when
credential_types
selection was blank on/test/issue
form:Added backend validation for missing
credential_types
and claimsEnforced required selection in the frontend
Fixed
x5chain
inCOSE_Sign1
for issuedmso_mdoc
:Single certificate is included as a byte array string instead of an array of single byte array string
Fixed error handling on bad JSON payload: now returns HTTP 400 instead of HTTP 500
Fixed security declaration of public endpoints in
api-spec.yaml
Security Updates
Upgraded
oidc-provider
to version8.8.1
Holder Wallet
Bridging Entity
Added
bridge_wallet
object to config, includes:enabled
: Turns on the bridge wallet setupexternal_reference
: string representing the external reference for wallet initialisationwallet_key_type
: defines thekty
andcrv
issuer_wallets
: contains information related to IDPs used for the Bridge issuance flow
Added
/authorize
endpoint to initialise the bridge_wallet flow
New Functionalities
DPoP support - detect
dpop_signing_alg_values_supported
from/.well-known/openid-configuration
Added
SetupService
provider toAppModule
for post initialization setupSupports PEX and DCQL Presentation Request
Added
/authorize/receive/callback
endpoint for bridge_wallet initiated flows to return toAdded the credential format type
dc+sd-jwt
for SD-JWT credential typesAdded OpenID4VP DCQL support:
Register Presentation Request with
dcql_query
Submit Response from a presentation request with
dcql_query
Added OpenID4VP v1.0 support:
POST /wallets/:id/send
protocol_version added withopenid4vp-v1
Added validation for
x509_san_dns
Verifier Client Identifier Scheme to ensure the identifier is a URL and matches thedNSName
SAN entry of the x.509 leaf certificate
Added OpenID4VCI draft16 support:
New default and only issuance
protocol_version
value isopenid4vci-v1
Added optional
key.client_assertion_jwk
to enableprivate_key_jwt
client auth where needed
Enhancements
This upgrade includes the latest SD-JWT-VC draft-08 related changes:
Focused on mandatory SD-JWT VC draft-08 JOSE Header
typ
changes (dc+sd-jwt
), deferring optional type metadata (type as URL) implementation to a future epic
Legacy
vc+sd-jwt
format is now marked as deprecated. All new issuance and presentation requests should use the newdc+sd-jwt
formatExisting
vc+sd-jwt
credentials will continue to work in storage and for verification and presentationChanged
GET /wallets/{:id}/receive/{:state}
response attributes:proof
has been replaced withproofs
andproofs.jwt
is always an arraymso_mdoc
issuance - expects a base64url encodedIssuerSigned
as per OpenID4VCI v1.0 spec (changed from previous implementation expecting aDeviceResponse
)
Removed
Removed
GET /wallets/{:id}/receive/{:state}
response attributes:c_nonce
c_nonce_expires_in
Removed
POST /wallets/{:id}/receive/get_access_token
response attributes:c_nonce
c_nonce_expires_in
Removed
POST /wallets/{:id}/receive/get_credential
response attributes:c_nonce
c_nonce_expires_in
Removed
openid4vp-draft18
supportclient_id_scheme
is no longer used separately from theclient_id
client_metadata_uri
parameter is no longer supportedRemoved
pre_registered_client_id_scheme_default_metadata
configuration attribute since it is no longer used anywhere
Bug Fixes
Fix incorrect SVX host config variable reference used in DID Service Factory
Fixed issue with creating an
mso_mdoc
device response in mixed-format presentation definitions (e.g., those includingjwt_vc_json
ordc+sd-jwt
), where it incorrectly attempted to matchmso_mdoc
VCs against input descriptors for other formatsFixed security declaration of public endpoints in OpenAPI spec
Deprecations and EOL
The use of the credential format identifier
vc+sd-jwt
is deprecatedRemoved
openid4vp-draft18
protocol version support for OpenID4VP protocol;openid4vp-v1
should be used insteadRemoved
openid4vci-draft13
protocol version support for OpenID4VCI protocol;openid4vci-v1
should be used instead
Appendix
Appendix A - DCQL Query Examples
jwt_vc_json
jwt_vc_json
When used in the context of W3C Verifiable Credentials, the claims_path parameter always matches on the root of Verifiable Credential (not the Verifiable Presentation).
Example jwt_vc_json
credential
{
"iss": "https://example.gov/issuers/565049",
"nbf": 1262304000,
"jti": "http://example.gov/credentials/3732",
"sub": "did:example:ebfeb1f712ebc6f1c276e12ec21",
"vc": {
"@context": [
"https://www.w3.org/2018/credentials/v1",
"https://www.w3.org/2018/credentials/examples/v1"
],
"type": [
"VerifiableCredential",
"IDCredential"
],
"credentialSubject": {
"given_name": "Max",
"family_name": "Mustermann",
"birthdate": "1998-01-11",
"address": {
"street_address": "Sandanger 25",
"locality": "Musterstadt",
"postal_code": "123456",
"country": "DE"
}
}
}
}
Simple query
{
"credentials": [
{
"id": "example_jwt_vc",
"format": "jwt_vc_json",
"meta": {
"type_values": [["IDCredential"]]
},
"claims": [
{"path": ["credentialSubject", "family_name"]},
{"path": ["credentialSubject", "given_name"]}
]
}
]
}
dc+sd-jwt
dc+sd-jwt
Simple query
{
"credentials": [
{
"id": "pid",
"format": "dc+sd-jwt",
"meta": {
"vct_values": ["https://credentials.example.com/identity_credential"]
},
"claims": [
{"path": ["given_name"]},
{"path": ["family_name"]},
{"path": ["address", "street_address"]}
]
}
]
}
mso_mdoc
mso_mdoc
Simple query
{
"credentials": [
{
"id": "my_credential",
"format": "mso_mdoc",
"meta": {
"doctype_value": "org.iso.7367.1.mVRC"
},
"claims": [
{"path": ["org.iso.7367.1", "vehicle_holder"]},
{"path": ["org.iso.18013.5.1", "first_name"]}
]
}
]
}
Appendix B - Resource Hook
Resource Hook is a feature to call an external resource server when a credential is requested via OpenID4VCI protocol.
Non-normative example of resource hook configuration:
"resource_hook": {
"endpoint": "http://resource-server.com/get-claims",
"send_json_schema": false
}
A http request to the configured resource_hook.endpoint
will be sent with the following payload
"user_id": "some_user_id", // user_id in access_token
"format": "dc+sd-jwt", // format identifier of requested credential
"timestamp": "1757421906693", // number of milliseconds since Unix epoch (1970/01/01)
"vct": "vct", // dc+sd-jwt specific credential identifier
"doctype": "doctype", // mso_mdoc specific credential identifier
"type": ["credential-type"], // jwt_vc_json specific credential identifier
"schema": { /** Credential Schema associated with the Credential Template **/ }
The format specific credential identifier(s) will only have value when it is the corresponding format identifier.
For example, if a request for a sd-jwt vc is received by the SVX Organisation Wallet, the following will be sent to the resource server.
{
"user_id": "some_user_id",
"format": "dc+sd-jwt",
"timestamp": "2025-09-09T05:40:29Z",
"vct": "studentID"
}
schema
is only sent if resource_hook.send_json_schema
is set to true
. It is meant to help with testing and development. It is expected that the resource server would be able to identify the required claims based on the format specific credential identifier. Sending the schema
for each request is additional payload that should be not necessary.
For security considerations, X-SVX-OCW-Signature
will be sent along in the HTTP header. It is a signature of the JSON string of the payload, signed with the same key that signs credentials. (SVX Organisation DID or the key of the configured credential_issuer.signing_kid
) This can be used to verify that the call is from the expected SVX organisation wallet component.
The expected response is of the following format:
// object containing claims
"claims": {
"foo": "bar",
},
Last updated
Was this helpful?