DID Resolution Extensions

Known Extensions for DID Resolution and Dereferencing

W3C Group Note

More details about this document
This version:
https://www.w3.org/TR/2024/NOTE-did-extensions-resolution-20241119/
Latest published version:
https://www.w3.org/TR/did-extensions-resolution/
Latest editor's draft:
https://w3c.github.io/did-extensions/resolution/
History:
https://www.w3.org/standards/history/did-extensions-resolution/
Commit history
Editors:
Manu Sporny (Digital Bazaar) (2017-present)
Markus Sabadello (Danube Tech) (2020-present)
Former editors:
Orie Steele (Transmute) (2020-2022)
Amy Guy (Digital Bazaar) (2020-2022)
Ivan Herman (W3C) (2020-2022)
Author:
The Decentralized Identifier Working Group (W3C)
Feedback:
GitHub w3c/did-extensions (pull requests, new issue, open issues)
[email protected] with subject line [did-extensions-resolution] … message topic … (archives)
Related Documents
DID Core
DID Core Implementation Report
DID Use Cases and Requirements

Abstract

This document serves as a collection of known DID Resolution and Dereferencing extensions.

Status of This Document

This section describes the status of this document at the time of its publication. A list of current W3C publications and the latest revision of this technical report can be found in the W3C technical reports index at https://www.w3.org/TR/.

Comments regarding this document are welcome. Please file issues directly on GitHub, or send them to [email protected] ( subscribe, archives).

Portions of the work on this specification have been funded by the United States Department of Homeland Security's Science and Technology Directorate under contracts HSHQDC-16-R00012-H-SB2016-1-002, 70RSAT20T00000010, and HSHQDC-17-C-00019. The content of this specification does not necessarily reflect the position or the policy of the U.S. Government and no official endorsement should be inferred.

Work on this registry has also been supported by the Rebooting the Web of Trust community facilitated by Christopher Allen, Shannon Appelcline, Kiara Robles, Brian Weller, Betty Dhamers, Kaliya Young, Kim Hamilton Duffy, Manu Sporny, Drummond Reed, Joe Andrieu, and Heather Vescent, Dmitri Zagidulin, and Dan Burnett.

This document was published by the Decentralized Identifier Working Group as a Group Note using the Note track.

This Group Note is endorsed by the Decentralized Identifier Working Group, but is not endorsed by W3C itself nor its Members.

This is a draft document and may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to cite this document as other than work in progress.

The W3C Patent Policy does not carry any licensing requirements or commitments on this document.

This document is governed by the 03 November 2023 W3C Process Document.

1. Introduction

This section is non-normative.

This document serves as a collection of known DID Resolution and Dereferencing extensions.

1.1 The Registration Process

The registration process is described in the Decentralized Identifier Extensions.

1.2 Conformance

As well as sections marked as non-normative, all authoring guidelines, diagrams, examples, and notes in this specification are non-normative. Everything else in this specification is normative.

2. Representations

This table provides a reference for media types and the associated specifications for producing and consuming those representations.

Media Type Specification
application/did+json DID Core
application/did+ld+json DID Core
application/did+cbor The Plain CBOR Representation

3. Representation-Specific Entries

3.1 JSON

These are entries in DID documents that are specific to the JSON representation.

(No entries yet)

3.2 JSON-LD

These are entries in DID documents that are specific to the JSON-LD representation.

3.2.1 @context

Normative Definition
DID Core

The following values are acceptable values for the @context entry as a JSON String or first item of a JSON Array, represented as a JSON String.

@context Values Specification Version
https://www.w3.org/ns/did/v1 DID Core 1.0 Working draft
Example 1: Example of @context in the JSON-LD representation
{
  "@context": [
    "https://www.w3.org/ns/did/v1",
    "https://example.com/blockchain-identity/v1"
  ],
  ...
}

3.3 CBOR

These are entries in DID documents that are specific to the CBOR representation.

(No entries yet)

4. DID Resolution Options

These properties contain information pertaining to the DID resolution request.

4.1 accept

Normative Definition
DID Core
Example 2: Example of accept metadata property
{
  "accept": "application/did+ld+json"
}

5. DID Resolution Metadata

These properties contain information pertaining to the DID resolution response.

5.1 contentType

Normative Definition
DID Core
Example 3: Example of contentType metadata property
{
  "contentType": "application/did+ld+json"
}

5.2 error

Normative Definition
DID Core
Example 4: Example of error metadata property
{
  "error": "notFound"
}

5.2.1 invalidDid

Normative Definition
DID Core
Example 5: Example of invalidDid error value
{
  "error": "invalidDid"
}

5.2.2 notFound

Normative Definition
DID Core
Example 6: Example of notFound error value
{
  "error": "notFound"
}

5.2.3 representationNotSupported

Normative Definition
DID Core
Example 7: Example of representationNotSupported error value
{
  "error": "representationNotSupported"
}

5.2.4 methodNotSupported

Normative Definition
DID Resolution
Example 8: Example of methodNotSupported error value
{
  "error": "methodNotSupported"
}

5.2.5 internalError

Normative Definition
DID Resolution
Example 9: Example of internalError error value
{
  "error": "internalError"
}

5.2.6 invalidPublicKey

Normative Definition
DID Resolution
Example 10: Example of invalidPublicKey error value
{
  "error": "invalidPublicKey"
}

5.2.7 invalidPublicKeyLength

Normative Definition
DID Resolution
Example 11: Example of invalidPublicKeyLength error value
{
  "error": "invalidPublicKeyLength"
}

5.2.8 invalidPublicKeyType

Normative Definition
DID Resolution
Example 12: Example of invalidPublicKeyType error value
{
  "error": "invalidPublicKeyType"
}

5.2.9 unsupportedPublicKeyType

Normative Definition
DID Resolution
Example 13: Example of unsupportedPublicKeyType error value
{
  "error": "unsupportedPublicKeyType"
}

5.2.10 notAllowedVerificationMethodType

Normative Definition
DID Spec Extension: notAllowedVerificationMethodType
Example 14: Example of notAllowedVerificationMethodType error value
{
  "error": "notAllowedVerificationMethodType"
}

5.2.11 notAllowedKeyType

Normative Definition
DID Spec Extension: notAllowedKeyType
Example 15: Example of notAllowedKeyType error value
{
  "error": "notAllowedKeyType"
}

5.2.12 notAllowedMethod

Normative Definition
DID Spec Extension: notAllowedMethod
Example 16: Example of notAllowedMethod error value
{
  "error": "notAllowedMethod"
}

5.2.13 notAllowedCertificate

Normative Definition
DID Spec Extension: notAllowedCertificate
Example 17: Example of notAllowedCertificate error value
{
  "error": "notAllowedCertificate"
}

5.2.14 notAllowedLocalDuplicateKey

Normative Definition
DID Spec Extension: notAllowedLocalDuplicateKey
Example 18: Example of notAllowedLocalDuplicateKey error value
{
  "error": "notAllowedLocalDuplicateKey"
}

5.2.15 notAllowedLocalDerivedKey

Normative Definition
DID Spec Extension: notAllowedLocalDerivedKey
Example 19: Example of notAllowedLocalDerivedKey error value
{
  "error": "notAllowedLocalDerivedKey"
}

5.2.16 notAllowedGlobalDuplicateKey

Normative Definition
DID Spec Extension: notAllowedGlobalDuplicateKey
Example 20: Example of notAllowedGlobalDuplicateKey error value
{
  "error": "notAllowedGlobalDuplicateKey"
}

6. DID Dereferencing Metadata

These properties contain information pertaining to the DID dereferencing response.

6.1 error

Normative Definition
DID Core
Example 21: Example of error metadata property
{
  "error": "notFound"
}

6.1.1 invalidDidUrl

Normative Definition
DID Core
Example 22: Example of invalidDidUrl error value
{
  "error": "invalidDidUrl"
}

6.1.2 notFound

Normative Definition
DID Core
Example 23: Example of notFound error value
{
  "error": "notFound"
}

7. DID Document Metadata

These properties contain information pertaining to the DID document itself, rather than the DID subject.

7.1 created

Issue 1

See DID Core #203.

Normative Definition JSON-LD
DID Core DID Core
Example 24: Example of created property
{
  "created": "2019-03-23T06:35:22Z"
}

7.2 updated

Issue 2

See DID Core #203.

Normative Definition JSON-LD
DID Core DID Core
Example 25: Example of updated property
{
  "updated": "2023-08-10T13:40:06Z"
}

7.3 deactivated

Normative Definition JSON-LD
DID Core DID Core
Example 26: Example of deactivated property
{
  "deactivated": true
}

7.4 nextUpdate

Normative Definition JSON-LD
DID Core DID Core
Example 27: Example of nextUpdate property
{
  "nextUpdate": "2023-08-10T13:40:06Z"
}

7.5 versionId

Normative Definition JSON-LD
DID Core DID Core
Example 28: Example of versionId property
{
  "versionId": "bafyreifederejlobaec6kwpl2mc3tw7qk3j3ey4uytkbiw2qw7dzylud6i"
}

7.6 nextVersionId

Normative Definition JSON-LD
DID Core DID Core
Example 29: Example of nextVersionId property
{
  "nextVersionId": "bafyreifederejlobaec6kwpl2mc3tw7qk3j3ey4uytkbiw2qw7dzylud6i"
}

7.7 equivalentId

Normative Definition JSON-LD
DID Core DID Core
Example 30: Example of equivalentId property
{
  "equivalentId": ["did:example:ABC", "did:example:Abc"]
}

7.8 canonicalId

Normative Definition JSON-LD
DID Core DID Core
Example 31: Example of canonicalId property
{
  "canonicalId": "did:example:ABC"
}

8. Parameters

8.1 hl

Normative Definition
DID Core
Example 32: Example of hl parameter
did:example:123?hl=zQmWvQxTqbG2Z9HPJgG57jjwR154cKhbtJenbyYTWkjgF3e

8.2 service

Normative Definition
DID Core
Example 33: Example of service parameter
did:example:123?service=agent

8.3 versionId

Normative Definition
DID Core
Example 34: Example of versionId parameter
did:example:123?versionId=4

8.4 versionTime

Normative Definition
DID Core
Example 35: Example of versionTime parameter
did:example:123?versionTime=2016-10-17T02:41:00Z

8.5 relativeRef

Normative Definition
DID Core
Example 36: Example of relativeRef parameter
did:example:123?service=files&relativeRef=%2Fmyresume%2Fdoc%3Fversion%3Dlatest%23intro

8.6 initialState

Normative Definition
DID Spec Extensions by DIF
Example 37: Example of initialState parameter
did:example:123?initialState=eyJkZWx0YV9oYXNoIjoiRWlDUlRKZ2Q0U0V2YUZDLW9fNUZjQnZJUkRtWF94Z3RLX3g...

8.7 transformKeys

Normative Definition
DID Spec Extensions by DIF
Example 38: Example of transformKeys parameter
did:example:123?transformKeys=jwk

8.8 signedIetfJsonPatch

Normative Definition
DID Spec Extensions by DIF
Example 39: Example of signedIetfJsonPatch parameter
did:example:123?signedIetfJsonPatch=eyJraWQiOiJkaWQ6ZXhhbXBsZTo0NTYjX1FxMFVMMkZxNjUxUTBGamQ2VH...

8.9 resource

Normative Definition
DID URL Resource Parameter Specification
Example 40: A DID URL with a 'resource' DID parameter
did:foo:21tDAKCERh95uGgKbJNHYp?resource=true

A. References

A.1 Informative references

[DID-EXTENSIONS]
Decentralized Identifier Extensions. Manu Sporny. Decentralized Identifier Working Group. W3C Working Group Note. URL: https://www.w3.org/TR/did-extensions/