Download OpenAPI specification:Download
The IDUnion Trust List API provides a backend for managing decentralized trust infrastructure based on ETSI TS 119-602 and TS 119-612 standards. It enables creation and management of Trust Lists (TLs) and Trust List Records (TLRs), DID document management, credential-based onboarding of organizations, and export of standards-compliant trust list XML documents.
Trust Lists group organizations (Trust List Records) by their role in the ecosystem, such as Wallet Providers, PID Providers, or QEAA Providers. Each organization is represented by a W3C Decentralized Identifier (DID) with associated cryptographic verification methods.
Creates a new Trust List owned by the authenticated user. A Trust List groups organizations (Trust List Records) of a specific role type (e.g. Wallet Provider, PID Provider). It requires a governance wallet for VC interactions and a verifier to validate onboarding credentials presented by joining organizations.
Trust List create payload including name, type, description, and references to the governance wallet and verifier services.
| name required | string (Trust List name) Trust List human-readable name |
| type | string (Trust List type) Enum: "QEAA_Provider" "PuBEAA_Provider" "Wallet_Provider" "PID_Provider" "Access_Certificate_Authority" "Registration_Certificates_Provider" "EAA_Provider" Defines the role category of entities registered in the Trust List, aligned with ETSI TS 119-602 and the EU Digital Identity (EUDI) framework:
|
| description required | string (Trust List description) Trust List description |
| suggestedId | string (Suggested Trust List ID) |
| governanceWalletId required | string (Wallet Identifier) The Wallet used by the Trust List for VC interactions |
| verifierId required | string (Verifier Identifier) The Verifier used to verify onboarding credentials |
string (Contact email) Contact email address for the Trust List owner. | |
| organization | string (Organization) Name of the organization operating the Trust List. |
{- "name": "string",
- "type": "QEAA_Provider",
- "description": "string",
- "suggestedId": "string",
- "governanceWalletId": "string",
- "verifierId": "string",
- "email": "string",
- "organization": "string"
}{- "id": "string",
- "name": "string",
- "type": "QEAA_Provider",
- "description": "string",
- "didBase": "string",
- "governanceWalletId": "string",
- "verifierId": "string",
- "email": "string",
- "organization": "string",
- "createdTs": 0,
- "updatedTs": 0,
- "lastOnboardedTs": 0
}Returns a publicly accessible directory of all Trust Lists. No authentication is required.
An optional search query parameter filters results by name or description.
Used by clients to display a browseable catalog of available trust ecosystems.
| search | string |
{- "items": [
- {
- "id": "string",
- "name": "string",
- "type": "QEAA_Provider",
- "description": "string",
- "didBase": "string",
- "governanceWalletId": "string",
- "email": "string",
- "organization": "string"
}
]
}Returns publicly accessible metadata for a specific Trust List. No authentication is required. Returns the same fields as the directory listing but for a single Trust List, excluding sensitive fields such as the verifier ID.
| tl_id required | string |
{- "id": "string",
- "name": "string",
- "type": "QEAA_Provider",
- "description": "string",
- "didBase": "string",
- "governanceWalletId": "string",
- "email": "string",
- "organization": "string"
}Returns all Trust Lists owned by the authenticated user. Unlike the public directory, this response includes the full Trust List representation with the verifier ID. Used to populate the authenticated user's management dashboard.
{- "items": [
- {
- "id": "string",
- "name": "string",
- "type": "QEAA_Provider",
- "description": "string",
- "didBase": "string",
- "governanceWalletId": "string",
- "verifierId": "string",
- "email": "string",
- "organization": "string",
- "createdTs": 0,
- "updatedTs": 0,
- "lastOnboardedTs": 0
}
]
}Returns the full representation of a specific Trust List for the authenticated owner, including the verifier ID not exposed in the public directory endpoints.
| tl_id required | string |
{- "id": "string",
- "name": "string",
- "type": "QEAA_Provider",
- "description": "string",
- "didBase": "string",
- "governanceWalletId": "string",
- "verifierId": "string",
- "email": "string",
- "organization": "string",
- "createdTs": 0,
- "updatedTs": 0,
- "lastOnboardedTs": 0
}Updates the metadata of an existing Trust List. Only the Trust List owner can perform this operation. Fields provided in the payload will overwrite current values.
| tl_id required | string |
Trust List update payload. Provide only the fields to update.
| name required | string (Trust List name) Trust List human-readable name |
| type | string (Trust List type) Enum: "QEAA_Provider" "PuBEAA_Provider" "Wallet_Provider" "PID_Provider" "Access_Certificate_Authority" "Registration_Certificates_Provider" "EAA_Provider" Defines the role category of entities registered in the Trust List, aligned with ETSI TS 119-602 and the EU Digital Identity (EUDI) framework:
|
| description required | string (Trust List description) Trust List description |
| suggestedId | string (Suggested Trust List ID) |
| governanceWalletId required | string (Wallet Identifier) The Wallet used by the Trust List for VC interactions |
| verifierId required | string (Verifier Identifier) The Verifier used to verify onboarding credentials |
string (Contact email) Contact email address for the Trust List owner. | |
| organization | string (Organization) Name of the organization operating the Trust List. |
{- "name": "string",
- "type": "QEAA_Provider",
- "description": "string",
- "suggestedId": "string",
- "governanceWalletId": "string",
- "verifierId": "string",
- "email": "string",
- "organization": "string"
}{- "id": "string",
- "name": "string",
- "type": "QEAA_Provider",
- "description": "string",
- "didBase": "string",
- "governanceWalletId": "string",
- "verifierId": "string",
- "email": "string",
- "organization": "string",
- "createdTs": 0,
- "updatedTs": 0,
- "lastOnboardedTs": 0
}Permanently deletes the specified Trust List and all its associated records. Only the Trust List owner can perform this operation.
| tl_id required | string |
{- "error": "string",
- "message": "string"
}Searches for Trust List Records across all Trust Lists by organization name. No authentication is required. Used by public-facing directory or search features to find entities registered under a given organization name.
| org_name | string |
{- "items": [
- {
- "orgName": "string",
- "id": "string",
- "did": "string",
- "tlId": "string",
- "tlName": "string",
- "status": "onboarded",
- "accreditedFor": [
], - "onboardingCredentials": [
- {
- "issuerDid": "string",
- "issuerDisplay": [
- {
- "name": "string",
- "locale": "string",
- "logo": {
- "uri": "string",
- "alt_text": "string"
}
}
], - "subject": {
- "organizationName": "string",
- "tradeName": "string",
- "trustListId": "string",
- "onboardingDid": "string",
- "accreditedFor": "string",
- "orgAddress": {
- "streetAddress": "string",
- "city": "string",
- "province": "string",
- "postalCode": "string",
- "country": "string"
}, - "orgWebsite": "string",
- "contactInfo": {
- "website": "string",
- "email": "string"
}, - "x509Certificate": "string"
}
}
], - "isRoot": true,
- "createdTs": 0,
- "updatedTs": 0
}
]
}Returns all Trust List Records belonging to a specific Trust List. Each record represents an organization with its DID, status (onboarded, trusted, revoked, or expired), accreditations, and onboarding credentials. Used to display the list of entities participating in a trust ecosystem.
| tl_id required | string |
{- "items": [
- {
- "orgName": "string",
- "id": "string",
- "did": "string",
- "tlId": "string",
- "tlName": "string",
- "status": "onboarded",
- "accreditedFor": [
], - "onboardingCredentials": [
- {
- "issuerDid": "string",
- "issuerDisplay": [
- {
- "name": "string",
- "locale": "string",
- "logo": {
- "uri": "string",
- "alt_text": "string"
}
}
], - "subject": {
- "organizationName": "string",
- "tradeName": "string",
- "trustListId": "string",
- "onboardingDid": "string",
- "accreditedFor": "string",
- "orgAddress": {
- "streetAddress": "string",
- "city": "string",
- "province": "string",
- "postalCode": "string",
- "country": "string"
}, - "orgWebsite": "string",
- "contactInfo": {
- "website": "string",
- "email": "string"
}, - "x509Certificate": "string"
}
}
], - "isRoot": true,
- "createdTs": 0,
- "updatedTs": 0
}
]
}Directly creates a new Trust List Record in the specified Trust List, bypassing the
credential-based onboarding flow. The public key material must be provided either as
a did:key or a Certificate Signing Request (CSR) in PEM format. When a CSR is
provided, the API issues an x509 certificate and registers it in the ETSI TS 119-612
trust list XML. Returns the generated DID and, if a CSR was provided, the issued certificate.
| tl_id required | string |
Trust List Record create payload. Includes organization details and either a did:key or a CSR for key material provisioning.
| didKey | string (DID Key) |
| csr | string (Certificate signing request in PEM format) |
| orgName required | string (Organization Name) |
| orgTradeName required | string (Organization Trade Name) |
| orgStreetAddress required | string (Organization Street Address) |
| orgCity required | string (Organization Address City) |
| orgState required | string (Organization Address State) |
| orgPostalCode required | string (Organization Postal Code) |
| orgCountry required | string (Organization Country) |
| orgEmail required | string (Organization email) |
| orgPhone required | string (Organization phone) |
| orgWebAddress required | string (Organization Web Address) |
| orgToC required | string (Organization Terms and Conditions URL) |
| walletSolutionName required | string (Organization Wallet Solution name) |
| walletSolutionUrl required | string (Organization Wallet Solution URL) |
| walletSolutionRefId required | string (Organization Wallet Solution Reference ID) |
{- "didKey": "string",
- "csr": "string",
- "orgName": "string",
- "orgTradeName": "string",
- "orgStreetAddress": "string",
- "orgCity": "string",
- "orgState": "string",
- "orgPostalCode": "string",
- "orgCountry": "string",
- "orgEmail": "string",
- "orgPhone": "string",
- "orgWebAddress": "string",
- "orgToC": "string",
- "walletSolutionName": "string",
- "walletSolutionUrl": "string",
- "walletSolutionRefId": "string"
}{- "did": "string",
- "x509Certificate": "string"
}Adds a new verification method to the DID Document of the specified Trust List Record. The verification method includes cryptographic key material (e.g. Ed25519, RSA, or ES256K) and is registered under the assertionMethod, authentication, and capabilityInvocation relationships in the DID Document.
| tl_id required | string (Trust List ID) Trust List Identifier |
| tlr_id required | string (Trust List Record ID) Trust List Record Identifier |
Verification method to add, including its type, controller DID, key ID, and key material.
| controller required | string (DID) |
| id required | string (Key ID) |
| type required | string (Type) The value of the type property MUST be a string that references exactly one verification method type. In order to maximize global interoperability, the verification method type SHOULD be registered in the DID Specification Registries [DID-SPEC-REGISTRIES]. |
| property name* additional property | any |
{- "controller": "string",
- "id": "string",
- "type": "string"
}{- "error": "string",
- "message": "string"
}Updates an existing verification method on the DID Document of a Trust List Record.
Primarily used to revoke a verification method by setting the revoked timestamp,
which marks the key as no longer valid and transitions the Trust List Record status
to revoked. The Trust List Record's status in the ETSI trust list XML is updated accordingly.
| tl_id required | string (Trust List ID) Trust List Identifier |
| tlr_id required | string (Trust List Record ID) Trust List Record Identifier |
Partial verification method update payload. Provide the key ID and the fields to update,
such as the revoked timestamp to revoke the key.
| controller | string (DID) |
| id required | string (Key ID) |
| revoked | string <date-time> (Revoked) DateTimeStamp string specifying when the verification method MUST NOT be used. |
{- "controller": "string",
- "id": "string",
- "revoked": "2019-08-24T14:15:22Z"
}{- "error": "string",
- "message": "string"
}Returns a suggested DID for a new Trust List Record within the specified Trust List. The suggested DID is derived from the Trust List's DID base and can be used to pre-fill the DID field when creating a new record.
| tl_id required | string |
"string"Returns the Trust List in either ETSI TS 119-612 or ETSI TS 119-602 XML format, Depending on the trust list type. The XML document includes Trust List Records with their DID-based cryptographic material and accreditation information, suitable for consumption by wallet verifiers and trust framework participants.
| tl_id required | string |
{- "error": "string",
- "message": "string"
}Retrieves the Verifiable Presentation (VP) stored for a specific Trust List Record. The VP is encoded as a JWT and represents the credential presented during the onboarding process, proving the entity's eligibility to join the Trust List. Used to audit or display the onboarding evidence for a given record.
| tl_id required | string |
| did required | string |
| id required | string |
{- "vp": "string"
}Returns a specific Trust List Record including organization details, DID, current status (onboarded, trusted, revoked, or expired), accreditations, and onboarding credentials. No authentication is required; used to display public entity detail pages.
| tl_id required | string (Trust List ID) Trust List Identifier |
| tlr_id required | string (Trust List Record ID) Trust List Record Identifier |
{- "orgName": "string",
- "id": "string",
- "did": "string",
- "tlId": "string",
- "tlName": "string",
- "status": "onboarded",
- "accreditedFor": [
], - "onboardingCredentials": [
- {
- "issuerDid": "string",
- "issuerDisplay": [
- {
- "name": "string",
- "locale": "string",
- "logo": {
- "uri": "string",
- "alt_text": "string"
}
}
], - "subject": {
- "organizationName": "string",
- "tradeName": "string",
- "trustListId": "string",
- "onboardingDid": "string",
- "accreditedFor": "string",
- "orgAddress": {
- "streetAddress": "string",
- "city": "string",
- "province": "string",
- "postalCode": "string",
- "country": "string"
}, - "orgWebsite": "string",
- "contactInfo": {
- "website": "string",
- "email": "string"
}, - "x509Certificate": "string"
}
}
], - "isRoot": true,
- "createdTs": 0,
- "updatedTs": 0
}Permanently removes a specific Trust List Record from the Trust List. Only the Trust List owner can perform this operation. The associated DID Document and all related data will be deleted.
| tl_id required | string (Trust List ID) Trust List Identifier |
| tlr_id required | string (Trust List Record ID) Trust List Record Identifier |
{- "error": "string",
- "message": "string"
}Returns the full chain of Trust List Records from the root trust anchor down to the specified record. Each element in the array represents one step in the chain of trust, showing which entities issued or accredited the next. Used to visualize and verify the complete trust path for a given organization.
| tl_id required | string (Trust List ID) Trust List Identifier |
| tlr_id required | string (Trust List Record ID) Trust List Record Identifier |
[- {
- "orgName": "string",
- "id": "string",
- "did": "string",
- "tlId": "string",
- "tlName": "string",
- "status": "onboarded",
- "accreditedFor": [
], - "onboardingCredentials": [
- {
- "issuerDid": "string",
- "issuerDisplay": [
- {
- "name": "string",
- "locale": "string",
- "logo": {
- "uri": "string",
- "alt_text": "string"
}
}
], - "subject": {
- "organizationName": "string",
- "tradeName": "string",
- "trustListId": "string",
- "onboardingDid": "string",
- "accreditedFor": "string",
- "orgAddress": {
- "streetAddress": "string",
- "city": "string",
- "province": "string",
- "postalCode": "string",
- "country": "string"
}, - "orgWebsite": "string",
- "contactInfo": {
- "website": "string",
- "email": "string"
}, - "x509Certificate": "string"
}
}
], - "isRoot": true,
- "createdTs": 0,
- "updatedTs": 0
}
]Returns the W3C DID Document for the specified Trust List Record. The document
contains the entity's DID, cryptographic verification methods, and service endpoints.
This endpoint follows the did:web resolution convention and is used by DID resolvers
to look up the entity's public key material and service information.
| tl_id required | string (Trust List ID) Trust List Identifier |
| tlr_id required | string (Trust List Record ID) Trust List Record Identifier |
{- "@context": [
- "string"
], - "controller": [
- "string"
], - "id": "string",
- "verificationMethod": [
- {
- "controller": "string",
- "id": "string",
- "type": "string",
- "revoked": "2019-08-24T14:15:22Z"
}
], - "capabilityInvocation": [
- "string"
], - "authentication": [
- "string"
], - "assertionMethod": [
- "string"
], - "service": [
- {
- "id": "string",
- "type": "string",
- "serviceEndpoint": "string"
}
]
}Initiates the credential-based onboarding process for an organization joining the
specified Trust List. Returns a verifier URL to redirect the holder to, where they
must present an onboarding Verifiable Credential (VC) proving their eligibility.
After presenting the credential, the status can be polled via GET /onboarding/{verifier_state}.
On successful verification, a Trust List Record is automatically created for the organization.
| tl_id required | string (Trust List ID) Trust List identifier |
Onboarding initiation payload specifying the verifier to use and optionally the holder's entity identifier (did:key).
| verifierId required | string (Verifier ID) The Verifier ID that should be used to verify the onboarding credential. |
| holderEntityId | string Holder identifier, i.e. did:key of the holder |
{- "verifierId": "string",
- "holderEntityId": "string"
}{- "verifierUrl": "string",
- "verifierState": "string"
}Polls the status of an ongoing onboarding process using the verifier state token
returned by POST /{tl_id}/onboarding. Returns the current status (in_progress,
completed, or error) along with the assigned DID once onboarding is complete.
Clients should poll this endpoint periodically until a terminal status is reached.
| verifier_state required | string Verifier state |
{- "did": "string",
- "message": "string",
- "status": "in_progress",
- "tl": {
- "id": "string",
- "name": "string",
- "type": "QEAA_Provider",
- "description": "string",
- "didBase": "string",
- "governanceWalletId": "string",
- "verifierId": "string",
- "email": "string",
- "organization": "string",
- "createdTs": 0,
- "updatedTs": 0,
- "lastOnboardedTs": 0
}, - "verifierUrl": "string"
}