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 ecosystem validation error message.

Omitting ecosystem​

If you omit ecosystem from a credential, the system checks the wallet against every ecosystem available to your organization instead. In this mode, failure to validate against an ecosystem does not block issuance. The credential can still reach ACCEPTED regardless of what those checks find; see Checking the outcome below for how to read the results either way.

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 an ecosystem was applied to the credential, the wallet must pass that ecosystem's checks to receive it. The checks run on the wallet's attestations (Wallet Instance Attestation (WIA) and/or Key Attestation (KA), according to the settings defined on the schema) when the wallet requests the credential.

If the wallet fails the checks, the credential is not issued, stays OFFERED, and the wallet receives an error. It can try again, for example with a new attestation from its wallet provider.

trustInformation shows the result of the checks:

"trustInformation": {
"result": "UNTRUSTED",
"name": "EUDI",
"receivedAt": "2026-09-17T14:02:05.632Z",
"ecosystemErrors": {
"EUDI": {
"result": "NOT_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.