Publish and Resolve VICAL Versions

Use the authenticated publication routes to create new signed versions, then use the public registry routes to distribute the latest or a specific published version.

Service references:

Shared Path Parameters

  • orgID: When performing operations within an organization, use the organization's Base URL or another valid host alias. For example, if your organization is named test, your default Base URL will be test.enterprise-sandbox.waltid.dev when using the sandbox environment.
  • target: For publish, versions/ids, and the latest registry routes, use the VICAL service path ({organizationID}.{tenantID}.{vicalServiceID}), for example test.tenant1.vical-service. For the version-specific versions registry routes, use the versionIdPath returned by publish or one of the version targets returned by versions/ids, for example test.tenant1.vical-service.versions.production-2026-03-23.

Publish a new VICAL version

Endpoint: /v1/{target}/vical-service-api/publish | API Reference

CURL
curl -X 'POST' \
  'https://{orgID}.enterprise-sandbox.waltid.dev/v1/{target}/vical-service-api/publish' \
  -H 'accept: application/json' \
  -H 'Authorization: Bearer {yourToken}' \
  -H 'Content-Type: application/json' \
  -d '{
  "vicalProvider": "Example mDL Trust Provider",
  "versionId": "production-2026-03-23",
  "issuanceDate": "2026-03-23T10:15:30Z",
  "nextUpdate": "2026-04-23T10:15:30Z"
}'

Example Response

{
  "versionIdPath": "test.tenant1.vical-service.versions.production-2026-03-23",
  "version": "1.0",
  "entryCount": 3,
  "vicalProvider": "Example mDL Trust Provider",
  "date": "2026-03-23T10:15:30Z",
  "vicalIssueId": 12,
  "nextUpdate": "2026-04-23T10:15:30Z"
}

Body Parameters

  • vicalProvider: Name of the provider written into the published VICAL.
  • versionId: Optional version identifier. If omitted, the service generates a UUID automatically.
  • issuanceDate: Optional publication timestamp. If omitted, the current time is used.
  • nextUpdate: Optional next planned update timestamp. When provided, it must be later than issuanceDate.

Response Codes

  • 201 - VICAL version published successfully.

Publishing reads all attached X.509 stores and includes every stored vical-entry certificate it finds. The response includes versionIdPath, which you can reuse with the version-specific registry routes below.

List published version targets

Endpoint: /v1/{target}/vical-service-api/versions/ids | API Reference

CURL
curl -X 'GET' \
  'https://{orgID}.enterprise-sandbox.waltid.dev/v1/{target}/vical-service-api/versions/ids' \
  -H 'accept: application/json' \
  -H 'Authorization: Bearer {yourToken}'

Example Response

[
  "test.tenant1.vical-service.versions.production-2026-03-20",
  "test.tenant1.vical-service.versions.production-2026-03-23"
]

Response Codes

  • 200 - Published version targets retrieved successfully.

Resolve the latest published artifact

Endpoint: /v1/{target}/vical-service-api/latest | API Reference

This route is public and does not require a bearer token.

CURL
curl -X 'GET' \
  'https://{orgID}.enterprise-sandbox.waltid.dev/v1/{target}/vical-service-api/latest?format=hex' \
  -H 'accept: application/json'

Example Response

"d28443a10126a1045820aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899"

Query Parameters

  • format: Optional artifact encoding. Supported values are hex (default), base64, and cbor.

Response Codes

  • 200 - Latest published artifact retrieved successfully.

When format=cbor, the endpoint returns raw application/cbor bytes. Save the response to a file if you want the binary artifact directly.

Resolve the latest manifest

Endpoint: /v1/{target}/vical-service-api/latest/manifest | API Reference

This route is public and does not require a bearer token.

CURL
curl -X 'GET' \
  'https://{orgID}.enterprise-sandbox.waltid.dev/v1/{target}/vical-service-api/latest/manifest' \
  -H 'accept: application/json'

Example Response

{
  "version": "1.0",
  "entryCount": 3,
  "vicalProvider": "Example mDL Trust Provider",
  "date": "2026-03-23T10:15:30Z",
  "vicalIssueId": 12,
  "nextUpdate": "2026-04-23T10:15:30Z"
}

Response Codes

  • 200 - Latest manifest retrieved successfully.

Resolve the latest trust material

Endpoint: /v1/{target}/vical-service-api/latest/trust-material | API Reference

This route is public and does not require a bearer token.

CURL
curl -X 'GET' \
  'https://{orgID}.enterprise-sandbox.waltid.dev/v1/{target}/vical-service-api/latest/trust-material' \
  -H 'accept: application/json'

Example Response

{
  "signerCertificatePem": "-----BEGIN CERTIFICATE-----
MIIB4z...
-----END CERTIFICATE-----",
  "signerCertificateChainPem": [
    "-----BEGIN CERTIFICATE-----
MIIB8T...
-----END CERTIFICATE-----"
  ]
}

Response Codes

  • 200 - Latest trust material retrieved successfully.

Resolve a specific published version

Use the versionIdPath returned by publish or one of the published version targets returned by versions/ids, for example test.tenant1.vical-service.versions.production-2026-03-23.

Resolve a specific artifact

Endpoint: /v1/{target}/vical-service-api/versions | API Reference

This route is public and does not require a bearer token.

CURL
curl -X 'GET' \
  'https://{orgID}.enterprise-sandbox.waltid.dev/v1/{target}/vical-service-api/versions?format=base64' \
  -H 'accept: application/json'

Example Response

"0oRDoQEmoQRYIKq7zN3u/wARIjNEVWZ3iJmqu8zd7v8AESIzRFVmd4iZ"

Response Codes

  • 200 - Version-specific artifact retrieved successfully.

Resolve a specific manifest

Endpoint: /v1/{target}/vical-service-api/versions/manifest | API Reference

This route is public and does not require a bearer token. The response body matches the latest manifest shape shown above.

CURL
curl -X 'GET' \
  'https://{orgID}.enterprise-sandbox.waltid.dev/v1/{target}/vical-service-api/versions/manifest' \
  -H 'accept: application/json'

Response Codes

  • 200 - Version-specific manifest retrieved successfully.

Resolve a specific trust material snapshot

Endpoint: /v1/{target}/vical-service-api/versions/trust-material | API Reference

This route is public and does not require a bearer token. The response body matches the latest trust material shape shown above.

CURL
curl -X 'GET' \
  'https://{orgID}.enterprise-sandbox.waltid.dev/v1/{target}/vical-service-api/versions/trust-material' \
  -H 'accept: application/json'

Response Codes

  • 200 - Version-specific trust material retrieved successfully.

Publish at least one version before calling the latest registry routes. The version-specific versions routes become usable as soon as you have a published version target.

Last updated on April 22, 2026