Flow Studio
DID Resolution
How the platform resolves DID documents — the IDidResolver interface, supported DID methods, and the DID resolution node for workflow-level DID lookups.
IDidResolver
public interface IDidResolver
{
Task<DidDocument?> ResolveAsync(string did, CancellationToken ct = default);
}
public record DidDocument
{
public string Id { get; init; } = default!; // the DID
public VerificationMethod[] VerificationMethods { get; init; } = [];
public ServiceEndpoint[] Services { get; init; } = [];
public string[] Authentication { get; init; } = [];
public string[] KeyAgreement { get; init; } = [];
}
Supported DID Methods
| DID Method | Example | Resolution Mechanism |
|---|---|---|
did:web | did:web:partner.example.com | Fetches https://partner.example.com/.well-known/did.json |
did:key | did:key:z6Mk... | Derives DID document from the public key encoded in the DID itself |
did:ion | did:ion:EiA... | Queries the ION network (Microsoft/Bitcoin anchored) |
did:peer | did:peer:2... | Resolved from local peer DID storage for pairwise DIDs |
DID Resolution Node
{
"nodeType": "DIDResolve",
"name": "resolvePartner",
"config": {
"did": "$json.partnerDid",
"failOnNotFound": true
}
}
// Output:
{
"did": "did:web:partner.example.com",
"document": { "id": "...", "verificationMethods": [...], "services": [...] },
"resolvedAt": "2026-05-25T10:00:00Z"
}
Caching: The
IDidResolver implementation caches resolved DID documents for 5 minutes. Frequently-used partner DIDs are resolved from cache, not the network. Cache is invalidated on cache expiry or explicit invalidation via the admin API.