Skip to main content

IDUnion Trust List API (0.0.1)

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.

HealthCheck

Returns the operational health status of the Trust List API service. Useful for monitoring, load balancer checks, and readiness probes.

Responses

Response samples

Content type
application/json
{
  • "status": "ok"
}

TlCreate

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.

Authorizations:
accessToken
Request Body schema: application/json

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:

  • QEAA_Provider: Qualified Electronic Attestation of Attributes provider
  • PuBEAA_Provider: Public Body Electronic Attestation of Attributes provider
  • Wallet_Provider: EUDI-compliant identity wallet solution provider
  • PID_Provider: Person Identification Data provider (e.g. national eID issuer)
  • Access_Certificate_Authority: Issuer of access certificates for wallet interactions
  • Registration_Certificates_Provider: Issuer of registration certificates
  • EAA_Provider: Electronic Attestation of Attributes provider (non-qualified)
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

email
string (Contact email)

Contact email address for the Trust List owner.

organization
string (Organization)

Name of the organization operating the Trust List.

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "type": "QEAA_Provider",
  • "description": "string",
  • "suggestedId": "string",
  • "governanceWalletId": "string",
  • "verifierId": "string",
  • "email": "string",
  • "organization": "string"
}

Response samples

Content type
application/json
{
  • "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
}

TlList

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.

query Parameters
search
string

Responses

Response samples

Content type
application/json
{
  • "items": [
    ]
}

TlGetPublicInfo

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.

path Parameters
tl_id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "name": "string",
  • "type": "QEAA_Provider",
  • "description": "string",
  • "didBase": "string",
  • "governanceWalletId": "string",
  • "email": "string",
  • "organization": "string"
}

TlListByOwner

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.

Authorizations:
accessToken

Responses

Response samples

Content type
application/json
{
  • "items": [
    ]
}

TlGet

Returns the full representation of a specific Trust List for the authenticated owner, including the verifier ID not exposed in the public directory endpoints.

Authorizations:
accessToken
path Parameters
tl_id
required
string

Responses

Response samples

Content type
application/json
{
  • "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
}

TlPatch

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.

Authorizations:
accessToken
path Parameters
tl_id
required
string
Request Body schema: application/json

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:

  • QEAA_Provider: Qualified Electronic Attestation of Attributes provider
  • PuBEAA_Provider: Public Body Electronic Attestation of Attributes provider
  • Wallet_Provider: EUDI-compliant identity wallet solution provider
  • PID_Provider: Person Identification Data provider (e.g. national eID issuer)
  • Access_Certificate_Authority: Issuer of access certificates for wallet interactions
  • Registration_Certificates_Provider: Issuer of registration certificates
  • EAA_Provider: Electronic Attestation of Attributes provider (non-qualified)
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

email
string (Contact email)

Contact email address for the Trust List owner.

organization
string (Organization)

Name of the organization operating the Trust List.

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "type": "QEAA_Provider",
  • "description": "string",
  • "suggestedId": "string",
  • "governanceWalletId": "string",
  • "verifierId": "string",
  • "email": "string",
  • "organization": "string"
}

Response samples

Content type
application/json
{
  • "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
}

TlDelete

Permanently deletes the specified Trust List and all its associated records. Only the Trust List owner can perform this operation.

Authorizations:
accessToken
path Parameters
tl_id
required
string

Responses

Response samples

Content type
application/json
{
  • "error": "string",
  • "message": "string"
}

TlrSearch

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.

query Parameters
org_name
string

Responses

Response samples

Content type
application/json
{
  • "items": [
    ]
}

TlrsGet

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.

Authorizations:
accessToken
path Parameters
tl_id
required
string

Responses

Response samples

Content type
application/json
{
  • "items": [
    ]
}

TlrCreate

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.

Authorizations:
accessToken
path Parameters
tl_id
required
string
Request Body schema: application/json

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)

Responses

Request samples

Content type
application/json
{
  • "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"
}

Response samples

Content type
application/json
{
  • "did": "string",
  • "x509Certificate": "string"
}

DidVerificationMethodAdd

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.

Authorizations:
accessToken
path Parameters
tl_id
required
string (Trust List ID)

Trust List Identifier

tlr_id
required
string (Trust List Record ID)

Trust List Record Identifier

Request Body schema: application/json

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

Responses

Request samples

Content type
application/json
{
  • "controller": "string",
  • "id": "string",
  • "type": "string"
}

Response samples

Content type
application/json
{
  • "error": "string",
  • "message": "string"
}

DidVerificationMethodPatch

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.

Authorizations:
accessToken
path Parameters
tl_id
required
string (Trust List ID)

Trust List Identifier

tlr_id
required
string (Trust List Record ID)

Trust List Record Identifier

Request Body schema: application/json

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.

Responses

Request samples

Content type
application/json
{
  • "controller": "string",
  • "id": "string",
  • "revoked": "2019-08-24T14:15:22Z"
}

Response samples

Content type
application/json
{
  • "error": "string",
  • "message": "string"
}

DidSuggest

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.

Authorizations:
accessToken
path Parameters
tl_id
required
string

Responses

Response samples

Content type
application/json
"string"

EtsiTlGet

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.

Authorizations:
accessToken
path Parameters
tl_id
required
string

Responses

Response samples

Content type
application/json
{
  • "error": "string",
  • "message": "string"
}

VpGet

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.

Authorizations:
accessToken
path Parameters
tl_id
required
string
did
required
string
id
required
string

Responses

Response samples

Content type
application/json
{
  • "vp": "string"
}

TlrGet

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.

path Parameters
tl_id
required
string (Trust List ID)

Trust List Identifier

tlr_id
required
string (Trust List Record ID)

Trust List Record Identifier

Responses

Response samples

Content type
application/json
{
  • "orgName": "string",
  • "id": "string",
  • "did": "string",
  • "tlId": "string",
  • "tlName": "string",
  • "status": "onboarded",
  • "accreditedFor": [],
  • "onboardingCredentials": [
    ],
  • "isRoot": true,
  • "createdTs": 0,
  • "updatedTs": 0
}

TlrDelete

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.

Authorizations:
accessToken
path Parameters
tl_id
required
string (Trust List ID)

Trust List Identifier

tlr_id
required
string (Trust List Record ID)

Trust List Record Identifier

Responses

Response samples

Content type
application/json
{
  • "error": "string",
  • "message": "string"
}

TlrTrustChainGet

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.

path Parameters
tl_id
required
string (Trust List ID)

Trust List Identifier

tlr_id
required
string (Trust List Record ID)

Trust List Record Identifier

Responses

Response samples

Content type
application/json
[
  • {
    }
]

DidGet

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.

path Parameters
tl_id
required
string (Trust List ID)

Trust List Identifier

tlr_id
required
string (Trust List Record ID)

Trust List Record Identifier

Responses

Response samples

Content type
application/json
{
  • "@context": [
    ],
  • "controller": [
    ],
  • "id": "string",
  • "verificationMethod": [
    ],
  • "capabilityInvocation": [
    ],
  • "authentication": [
    ],
  • "assertionMethod": [
    ],
  • "service": [
    ]
}

OnboardingInit

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.

path Parameters
tl_id
required
string (Trust List ID)

Trust List identifier

Request Body schema: application/json

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

Responses

Request samples

Content type
application/json
{
  • "verifierId": "string",
  • "holderEntityId": "string"
}

Response samples

Content type
application/json
{
  • "verifierUrl": "string",
  • "verifierState": "string"
}

OnboardingStatus

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.

path Parameters
verifier_state
required
string

Verifier state

Responses

Response samples

Content type
application/json
{
  • "did": "string",
  • "message": "string",
  • "status": "in_progress",
  • "tl": {
    },
  • "verifierUrl": "string"
}