Skip to main content

Enforcing an Ecosystem as an Issuer

This page explains how to enforce ecosystem constraints — such as those required by EUDI — during credential issuance. Once an ecosystem is enforced, Procivis One automatically validates each credential against that ecosystem's requirements, and prevents issuance that does not comply.

For an overview of how ecosystems operate, see Ecosystem Enforcement Overview.

Prerequisites

The issuing organization must have an ecosystem enabled. See Enabling Ecosystems for instructions.

Enforcing an ecosystem

To enforce an ecosystem on any given issuance, use ecosystem during creation of a credential.

POST /api/credential/v1

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

A successful call returns 201. The ecosystem will be enforced during the issuance of this credential.

If the credential itself cannot be created due to an ecosystem constraint — for example, EUDI is the ecosystem and you attempt to create the credential with a DID instead of a certificate — the call returns 400 instead, with an ecosystemErrors map in data explaining which constraint was breached.

Checking the outcome

After creating the credential, call the share endpoint and offer it to a wallet, then poll GET /api/credential/v1/{id} to see what happens.

info

See Creating a Credential and Sharing a Credential for more on the issuance flow, and Credential States as an Issuer for the full state reference.

If the credential reaches ACCEPTED, the ecosystem checks passed. If it reaches ERROR instead, that could be because a check failed or for a reason unrelated to ecosystems entirely.

Whatever the state, if an ecosystem was applied, trustInformation tells you the result:

"trustInformation": {
"result": "TRUSTED",
"name": "EUDI",
"receivedAt": "2026-09-17T14:02:05.632Z",
"ecosystemErrors": {
"EUDI": {
"result": "TRUSTED",
"error": {
"code": "BR_0486",
"message": "..."
}
}
}
}

This resolution is also recorded as an ECOSYSTEMS_RESOLVED history event on the credential.

Requiring ecosystem enforcement

Any ecosystem selected for an issuing organization is available for use in issuance, but its use is optional. To require every issuance to use an ecosystem, update the issuing organization:

PATCH /api/organisations/v1/{id}

{
"configuration": {
"enforceEcosystemAsIssuer": true
}
}

When this flag is set, every credential must have an ecosystem assigned. To force all issuances from this organization to use one and only one ecosystem, make sure that selectedEcosystems only contains one ecosystem.