Integration Guide
Use the machine-readable registry index to automatically configure issuers, verifiers, and wallet applications with credential metadata.
Registry Index
The registry provides a comprehensive index of all credentials at:
https://registry.siros.org/.well-known/vctm-registry.json
This JSON file contains links to all credential metadata in multiple formats, enabling automated configuration of credential ecosystems.
Index Structure
The registry index follows this structure:
{
"$schema": "https://registry.siros.org/schemas/vctm-registry.json",
"name": "SIROS Credential Type Registry",
"version": "2.0",
"url": "https://registry.siros.org",
"organizations": [
{
"name": "example-org",
"url": "https://registry.siros.org/example-org/",
"credentials": 3
}
],
"credentials": [
{
"vct": "https://example.com/credentials/identity",
"name": "Identity Credential",
"description": "A verifiable identity credential",
"organization": "example-org",
"formats": {
"vctm": {
"url": "https://registry.siros.org/.../Identity.vctm.json",
"type": "application/json",
"spec": "https://datatracker.ietf.org/doc/draft-ietf-oauth-sd-jwt-vc/"
},
"mdoc": {
"url": "https://registry.siros.org/.../Identity.mdoc.json",
"type": "application/json",
"spec": "https://www.iso.org/standard/69084.html",
"doctype": "com.example.credentials.identity"
},
"vc": {
"url": "https://registry.siros.org/.../Identity.vc.json",
"type": "application/json",
"spec": "https://www.w3.org/TR/vc-data-model-2.0/"
}
},
"metadata": {
"html": "https://registry.siros.org/.../Identity.html",
"json": "https://registry.siros.org/.../Identity.json"
},
"source": {
"repository": "https://github.com/example-org/credentials",
"branch": "vctm"
}
}
],
"totalCredentials": 1,
"buildTime": "2026-02-16T12:00:00.000Z"
}
Credential Formats
Each credential may include metadata in one or more formats:
| Format | Key | Description |
|---|---|---|
| SD-JWT VC | vctm |
Verifiable Credential Type Metadata for SD-JWT VCs (IETF draft) |
| mso_mdoc | mdoc |
ISO 18013-5 mobile document configuration (mDL, mID) |
| W3C VC | vc |
W3C Verifiable Credentials Data Model 2.0 JSON Schema |
Download Script
Use this shell script to download all credential metadata files organized by format:
#!/bin/bash
# Download all credential metadata from SIROS Registry
# Requires: curl, jq
set -e
REGISTRY_URL="https://registry.siros.org/.well-known/vctm-registry.json"
OUTPUT_DIR="${1:-credentials}"
echo "Fetching registry index..."
REGISTRY=$(curl -s "$REGISTRY_URL")
# Create output directories
mkdir -p "$OUTPUT_DIR"/{vctm,mdoc,vc}
# Parse credentials and download each format
echo "$REGISTRY" | jq -c '.credentials[]' | while read -r cred; do
NAME=$(echo "$cred" | jq -r '.name' | tr ' ' '_')
ORG=$(echo "$cred" | jq -r '.organization')
echo "Processing: $ORG/$NAME"
# Download SD-JWT VC Type Metadata (vctm)
VCTM_URL=$(echo "$cred" | jq -r '.formats.vctm.url // empty')
if [ -n "$VCTM_URL" ]; then
curl -s "$VCTM_URL" -o "$OUTPUT_DIR/vctm/${ORG}_${NAME}.vctm.json"
echo " Downloaded: vctm"
fi
# Download mso_mdoc configuration
MDOC_URL=$(echo "$cred" | jq -r '.formats.mdoc.url // empty')
if [ -n "$MDOC_URL" ]; then
curl -s "$MDOC_URL" -o "$OUTPUT_DIR/mdoc/${ORG}_${NAME}.mdoc.json"
echo " Downloaded: mdoc"
fi
# Download W3C VC JSON Schema
VC_URL=$(echo "$cred" | jq -r '.formats.vc.url // empty')
if [ -n "$VC_URL" ]; then
curl -s "$VC_URL" -o "$OUTPUT_DIR/vc/${ORG}_${NAME}.vc.json"
echo " Downloaded: vc"
fi
done
# Generate summary
TOTAL=$(echo "$REGISTRY" | jq '.totalCredentials')
echo ""
echo "Download complete!"
echo " Total credentials: $TOTAL"
echo " Output directory: $OUTPUT_DIR/"
ls -la "$OUTPUT_DIR"/*/ 2>/dev/null | grep -c ".json$" | xargs -I{} echo " Files downloaded: {}"
Save this script as download-registry.sh and run:
chmod +x download-registry.sh
./download-registry.sh ./my-credentials
Using with jq
Query the registry directly with jq:
List all credential VCT URIs
curl -s https://registry.siros.org/.well-known/vctm-registry.json | \
jq -r '.credentials[].vct'
Get all mDOC document types
curl -s https://registry.siros.org/.well-known/vctm-registry.json | \
jq -r '.credentials[].formats.mdoc.doctype // empty' | grep -v '^$'
Find credentials by organization
curl -s https://registry.siros.org/.well-known/vctm-registry.json | \
jq '.credentials[] | select(.organization == "leifj")'
List SD-JWT VC URLs only
curl -s https://registry.siros.org/.well-known/vctm-registry.json | \
jq -r '.credentials[].formats.vctm.url'
Programmatic Access
The registry index can be fetched programmatically from any language:
JavaScript/Node.js
const response = await fetch(
'https://registry.siros.org/.well-known/vctm-registry.json'
);
const registry = await response.json();
// Iterate credentials
for (const cred of registry.credentials) {
console.log(`${cred.name}: ${cred.vct}`);
// Download SD-JWT VC type metadata format
if (cred.formats.vctm) {
const vctm = await fetch(cred.formats.vctm.url).then(r => r.json());
// Use credential type metadata...
}
}
Python
import requests
registry = requests.get(
'https://registry.siros.org/.well-known/vctm-registry.json'
).json()
# Iterate credentials
for cred in registry['credentials']:
print(f"{cred['name']}: {cred['vct']}")
# Download SD-JWT VC type metadata format
if 'vctm' in cred['formats']:
vctm = requests.get(cred['formats']['vctm']['url']).json()
# Use credential type metadata...
Go
resp, _ := http.Get(
"https://registry.siros.org/.well-known/vctm-registry.json",
)
defer resp.Body.Close()
var registry struct {
Credentials []struct {
VCT string `json:"vct"`
Name string `json:"name"`
Formats map[string]struct {
URL string `json:"url"`
} `json:"formats"`
} `json:"credentials"`
}
json.NewDecoder(resp.Body).Decode(®istry)
for _, cred := range registry.Credentials {
fmt.Printf("%s: %s\n", cred.Name, cred.VCT)
}
Use Cases
- Issuer Configuration - Automatically configure credential issuance endpoints with display metadata and claim definitions
- Verifier Setup - Pre-populate verifier applications with known credential types and their validation schemas
- Wallet Integration - Enable wallets to discover and properly render credentials from multiple issuers
- CI/CD Pipelines - Fetch latest credential definitions during deployment to keep systems synchronized
-
Monitoring - Track changes to credential definitions
across the ecosystem using the
buildTimefield
Caching Considerations
The registry is rebuilt periodically. When integrating:
- Cache responses locally to reduce API calls
- Use the
buildTimefield to detect updates - Consider polling at reasonable intervals (e.g., hourly or daily)
- The registry is served via GitHub Pages CDN with standard caching headers
Related Documentation
- Publish Your Credentials - Add your credentials to the registry
- GitHub Action Setup - Automate credential metadata generation
- Markdown Format - Define credentials in Markdown
- Support - Get help and report issues