DID Method Registration - Quick Reference

JSON Structure → DidMethod Implementation

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
┌─────────────────────────────────────────────────────────────┐
│                    JSON Registration File                   │
│                                                             │
│  {                                                          │
│    "name": "web",          ───────────────┐                 │
│    "driver": {                            │                 │
│      "type": "universal-resolver",        │                 │
│      "baseUrl": "https://...",            │                 │
│      "protocolAdapter": "standard"        │                 │
│    },                                     │                 │
│    "capabilities": {                      │                 │
│      "resolve": true                      │                 │
│    }                                      │                 │
│  }                                        │                 │
└───────────────────────────────────────────┼─────────────────┘
                                            │
                                            │ Parsed by
                                            │ DidRegistrationSpecParser
                                            ▼
┌─────────────────────────────────────────────────────────────┐
│              DidRegistrationSpec (Data Class)                │
│                                                               │
│  - name: String                    → method property        │
│  - driver: DriverConfig            → UniversalResolver       │
│  - capabilities: MethodCapabilities → Method implementations│
└───────────────────────────────────────────┼─────────────────┘
                                            │
                                            │ Used to create
                                            ▼
┌─────────────────────────────────────────────────────────────┐
│     HttpDidMethod (org.trustweave.did.registrar.method)       │
│                                                               │
│  HttpDidMethod(                                               │
│    registrationSpec: DidRegistrationSpec,                   │
│    registrar: DidRegistrar? = null,                         │
│    additionalAdapters: Map<...> = emptyMap()                │
│  ) : DidMethod                                                │
│                                                               │
│  - method == registrationSpec.name  (e.g. "web")            │
│  - resolveDid(Did) → DefaultUniversalResolver (HTTP)        │
│  - create/update/deactivate → registrar when configured     │
└─────────────────────────────────────────────────────────────┘

Field Mappings

JSON Field Path Maps To Type
name root.name DidMethod.method String
driver.type root.driver.type Driver selection “universal-resolver”
driver.baseUrl root.driver.baseUrl DefaultUniversalResolver.baseUrl URI String
driver.protocolAdapter root.driver.protocolAdapter Protocol adapter instance “standard” | “godiddy”
driver.timeout root.driver.timeout DefaultUniversalResolver.timeout Integer (seconds)
capabilities.resolve root.capabilities.resolve resolveDid() implementation Boolean
capabilities.create root.capabilities.create createDid() implementation Boolean
capabilities.update root.capabilities.update updateDid() implementation Boolean
capabilities.deactivate root.capabilities.deactivate deactivateDid() implementation Boolean

Code Flow

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// 1. Load JSON
val json = """
{
  "name": "web",
  "driver": { "type": "universal-resolver", "baseUrl": "https://..." },
  "capabilities": { "resolve": true }
}
"""

// 2. Parse to Data Class
val spec = DidRegistrationSpecParser.parse(json)
// → DidRegistrationSpec(name="web", driver=..., capabilities=...)

// 3. Create DidMethod
val method = HttpDidMethod(registrationSpec = spec)
// → HttpDidMethod with method="web"

// 4. Register
registry.register(method)

// 5. Use
registry.resolve("did:web:example.com")
// → method.resolveDid(Did("did:web:example.com"))
// → DefaultUniversalResolver (HTTP)
// → HTTP GET https://.../1.0/identifiers/did:web:example.com

Minimal JSON Example

1
2
3
4
5
6
7
{
  "name": "example",
  "driver": {
    "type": "universal-resolver",
    "baseUrl": "https://dev.uniresolver.io"
  }
}

This creates a DidMethod that:

  • Has method name “example”
  • Resolves DIDs via Universal Resolver at https://dev.uniresolver.io
  • Uses standard protocol adapter
  • Only supports resolveDid() (default capabilities)

Full JSON Example

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
{
  "name": "web",
  "status": "implemented",
  "specification": "https://w3c-ccg.github.io/did-method-web/",
  "contact": {
    "name": "W3C CCG",
    "email": "contact@example.com"
  },
  "driver": {
    "type": "universal-resolver",
    "baseUrl": "https://dev.uniresolver.io",
    "protocolAdapter": "standard",
    "timeout": 30,
    "apiKey": "optional-key"
  },
  "capabilities": {
    "create": false,
    "resolve": true,
    "update": false,
    "deactivate": false
  }
}

Validation Rules

  • name: Required, must match pattern ^[a-z0-9]+$, 1-50 characters
  • driver.type: Required, must be “universal-resolver” (for JSON registration)
  • driver.baseUrl: Required if type is “universal-resolver”, must be valid URI
  • driver.protocolAdapter: Optional, defaults to “standard”
  • driver.timeout: Optional, 1-300 seconds, defaults to 30
  • capabilities: Optional, defaults to { "resolve": true } only

See Also

  • SPECIFICATION.md - Detailed specification
  • schema.json - JSON Schema definition
  • README.md - Usage guide

This site uses Just the Docs, a documentation theme for Jekyll.