Skip to main content

Enforcing an Ecosystem as a Wallet

This page explains how ecosystems are enforced by the wallet.

Prerequisites

A wallet must have ecosystems available before it can enforce them on interactions. See Determining available ecosystems below for how a wallet instance determines this.

Determining available ecosystems

A wallet instance checks two sources, in order:

  1. Registration — if the wallet instance is registered with a Wallet Provider, the ecosystems selected by that Provider apply. See Enforcing an Ecosystem as a Provider.

  2. Own configuration — if the wallet instance is not registered with a Provider, it falls back to its own organization's configuration. See Enabling Ecosystems for instructions on selecting ecosystems for a standalone wallet organization.

Enforcing an ecosystem on an interaction

A wallet user can enforce an ecosystem on any given interaction by naming it:

POST /api/interaction/v1/handle-invitation

{
"ecosystem": "EUDI",
{{...}}
}

Whether it's a credential offer or a proof request, the interaction will be evaluated against the constraints of the named ecosystem and will either be "trusted" or will be rejected and return an error.

Ecosystem auto-detection

If no ecosystem is passed during handle-invitation, the system uses auto-detection, running sequences of constraints of available ecosystems until the interaction is either trusted according to the constraints of an ecosystem, or untrusted.

Requiring ecosystem enforcement

Any ecosystem available to a wallet organization is available for use either passed in handle-invitation or through auto-detection. In the case of auto-detection, the enforcement is optional: an untrusted credential offer or proof request can still be completed by the wallet user. To require that every interaction must be trusted, update the wallet organization:

PATCH /api/organisations/v1/{id}

{
"configuration": {
"enforceEcosystemAsHolder": true
}
}